diff --git a/.csharpierrc.json b/.csharpierrc.json new file mode 100644 index 00000000..28cdbc66 --- /dev/null +++ b/.csharpierrc.json @@ -0,0 +1,6 @@ +{ + "printWidth": 200, + "useTabs": false, + "tabWidth": 4, + "preprocessorSymbolSets": ["", "DEBUG", "DEBUG,CODE_STYLE"] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..20e2760b --- /dev/null +++ b/.gitignore @@ -0,0 +1,82 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Oo]ut/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Asset meta data should only be ignored when the corresponding asset is also ignored +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.csproj.meta +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk + +Assets/StreamingAssets/ + +# Crashlytics generated file +crashlytics-build.properties +.DS_Store + +build/ +releases/ +Documentation/ + +!docs/** +Assets/Tests/config.json +Assets/Tests/config.json.meta +Assets/Tests/Resources.meta +Assets/Tests/Resources/config.json +Assets/Tests/Resources/config.json.meta + +# Ignore temporaries from GameCI +/[Aa]rtifacts/ +/[Cc]odeCoverage/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..ddb6ff85 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "visualstudiotoolsforunity.vstuc" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..c0116f94 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,10 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Unity", + "type": "vstuc", + "request": "attach", + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..6227e99c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,55 @@ +{ + "files.exclude": { + "**/.DS_Store": true, + "**/.git": true, + "**/.gitmodules": true, + "**/*.booproj": true, + "**/*.pidb": true, + "**/*.suo": true, + "**/*.user": true, + "**/*.userprefs": true, + "**/*.unityproj": true, + "**/*.dll": true, + "**/*.exe": true, + "**/*.pdf": true, + "**/*.mid": true, + "**/*.midi": true, + "**/*.wav": true, + "**/*.gif": true, + "**/*.ico": true, + "**/*.jpg": true, + "**/*.jpeg": true, + "**/*.png": true, + "**/*.psd": true, + "**/*.tga": true, + "**/*.tif": true, + "**/*.tiff": true, + "**/*.3ds": true, + "**/*.3DS": true, + "**/*.fbx": true, + "**/*.FBX": true, + "**/*.lxo": true, + "**/*.LXO": true, + "**/*.ma": true, + "**/*.MA": true, + "**/*.obj": true, + "**/*.OBJ": true, + "**/*.asset": true, + "**/*.cubemap": true, + "**/*.flare": true, + "**/*.mat": true, + "**/*.meta": true, + "**/*.prefab": true, + "**/*.unity": true, + "build/": true, + "Build/": true, + "Library/": true, + "library/": true, + "obj/": true, + "Obj/": true, + "ProjectSettings/": true, + "temp/": true, + "Temp/": true + }, + "dotnet.defaultSolution": "unity-sdk.sln" +} \ No newline at end of file diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 00000000..d70cd98b --- /dev/null +++ b/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 00000000..b3fad8ee --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c47445d159f11d438e4bc11127ec298 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta new file mode 100644 index 00000000..a4dbef10 --- /dev/null +++ b/Assets/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0d5a44d706bd964d9d19a7171839fc9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/Linker.java b/Assets/Plugins/Android/Linker.java new file mode 100644 index 00000000..fde02e17 --- /dev/null +++ b/Assets/Plugins/Android/Linker.java @@ -0,0 +1,12 @@ +package com.walletconnect.unity; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; + +public class Linker { + public static boolean canOpenURL(Context context, String url) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + return intent.resolveActivity(context.getPackageManager()) != null; + } +} diff --git a/Assets/Plugins/Android/Linker.java.meta b/Assets/Plugins/Android/Linker.java.meta new file mode 100644 index 00000000..9bb928cc --- /dev/null +++ b/Assets/Plugins/Android/Linker.java.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 24e3bdf4c0084319b86b42cabae35273 +timeCreated: 1704963900 \ No newline at end of file diff --git a/Assets/Plugins/Android/ThirdwebActivity.java b/Assets/Plugins/Android/ThirdwebActivity.java new file mode 100644 index 00000000..832ba43c --- /dev/null +++ b/Assets/Plugins/Android/ThirdwebActivity.java @@ -0,0 +1,32 @@ +package com.unity3d.player; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import androidx.browser.customtabs.CustomTabsIntent; + +public class ThirdwebActivity extends UnityPlayerActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public void onNewIntent(Intent intent) { + super.onNewIntent(intent); + setIntent(intent); + } + + @Override + protected void onResume() { + super.onResume(); + } + + public void OpenCustomTab(String url) { + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); + builder.setUrlBarHidingEnabled(true); + CustomTabsIntent customTabsIntent = builder.build(); + customTabsIntent.launchUrl(this, Uri.parse(url)); + } +} diff --git a/Assets/Plugins/Android/ThirdwebActivity.java.meta b/Assets/Plugins/Android/ThirdwebActivity.java.meta new file mode 100644 index 00000000..631f5983 --- /dev/null +++ b/Assets/Plugins/Android/ThirdwebActivity.java.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 2004628aa4e550c4f9b645e0f1d4e43a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar b/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar new file mode 100644 index 00000000..06695124 Binary files /dev/null and b/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar differ diff --git a/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar.meta b/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar.meta new file mode 100644 index 00000000..97054200 --- /dev/null +++ b/Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 3e8b209220ff20a4fb897d91169323d9 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar b/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar new file mode 100644 index 00000000..98ec8865 Binary files /dev/null and b/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar differ diff --git a/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar.meta b/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar.meta new file mode 100644 index 00000000..964e629b --- /dev/null +++ b/Assets/Plugins/Android/androidx.arch.core.core-common-2.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: d6c8f2753ac1a564aa3384ba71ae0ea4 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar new file mode 100644 index 00000000..d32a985c Binary files /dev/null and b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar differ diff --git a/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta new file mode 100644 index 00000000..c1a94fff --- /dev/null +++ b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 5aa487f72f205144b9995e1f3b0f2adc +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar new file mode 100644 index 00000000..761fe3bf Binary files /dev/null and b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar differ diff --git a/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta new file mode 100644 index 00000000..c313803b --- /dev/null +++ b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 8237ff8324191b14f8e2f6f388030b82 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar new file mode 100644 index 00000000..7fefd793 Binary files /dev/null and b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar differ diff --git a/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta new file mode 100644 index 00000000..dd34220f --- /dev/null +++ b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: bc640d47878056647957326ee35652b6 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.core.core-1.1.0.aar b/Assets/Plugins/Android/androidx.core.core-1.1.0.aar new file mode 100644 index 00000000..01c83a3e Binary files /dev/null and b/Assets/Plugins/Android/androidx.core.core-1.1.0.aar differ diff --git a/Assets/Plugins/Android/androidx.core.core-1.1.0.aar.meta b/Assets/Plugins/Android/androidx.core.core-1.1.0.aar.meta new file mode 100644 index 00000000..85c13f5c --- /dev/null +++ b/Assets/Plugins/Android/androidx.core.core-1.1.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 9bca357aaac47ba49a52129e122ce580 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar new file mode 100644 index 00000000..bccf86f7 Binary files /dev/null and b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar differ diff --git a/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta new file mode 100644 index 00000000..e301332c --- /dev/null +++ b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 9318114c91525584f93f122e0e003b16 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar new file mode 100644 index 00000000..6c3f095c Binary files /dev/null and b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar differ diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar.meta new file mode 100644 index 00000000..25cba4ee --- /dev/null +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 86cb382b353d2344295fbb744692c55e +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar new file mode 100644 index 00000000..0809d720 Binary files /dev/null and b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar differ diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar.meta new file mode 100644 index 00000000..6748aadc --- /dev/null +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 82461ea5aa2e98d47b366a4552fb3224 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar new file mode 100644 index 00000000..d4792e06 Binary files /dev/null and b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar differ diff --git a/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar.meta b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar.meta new file mode 100644 index 00000000..00eb9638 --- /dev/null +++ b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 3f56dcc615fa07046b5bfa2ba7996119 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar b/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar new file mode 100644 index 00000000..5e676925 Binary files /dev/null and b/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar differ diff --git a/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar.meta b/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar.meta new file mode 100644 index 00000000..e8e91aae --- /dev/null +++ b/Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 4a27b0d19ad21a948b2ed406da063534 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar b/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar new file mode 100644 index 00000000..020be6e3 Binary files /dev/null and b/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar differ diff --git a/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar.meta b/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar.meta new file mode 100644 index 00000000..0f4358b4 --- /dev/null +++ b/Assets/Plugins/Android/com.squareup.okhttp3.okhttp-4.10.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: b1e2e457d078d284faffefa8bfbcf57a +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar b/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar new file mode 100644 index 00000000..66eca5ed Binary files /dev/null and b/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar differ diff --git a/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar.meta b/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar.meta new file mode 100644 index 00000000..acb63a38 --- /dev/null +++ b/Assets/Plugins/Android/com.squareup.okio.okio-jvm-3.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ec40fcb0dae7a0c4dbf50f404b1f1090 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar b/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar new file mode 100644 index 00000000..fb794be9 Binary files /dev/null and b/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar differ diff --git a/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar.meta b/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar.meta new file mode 100644 index 00000000..f16b6d61 --- /dev/null +++ b/Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 68e2f5aa61142a247b5102cf59d46f27 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar new file mode 100644 index 00000000..222a076a Binary files /dev/null and b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar differ diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar.meta b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar.meta new file mode 100644 index 00000000..ac475049 --- /dev/null +++ b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.6.20.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 1f387d7e8a27a414699516a4118b62f0 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar new file mode 100644 index 00000000..dbd2ed6f Binary files /dev/null and b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar differ diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar.meta b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar.meta new file mode 100644 index 00000000..94615c48 --- /dev/null +++ b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.6.20.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: b8af869c544f5c846b790b03598effe0 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar new file mode 100644 index 00000000..ce217dbd Binary files /dev/null and b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar differ diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar.meta b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar.meta new file mode 100644 index 00000000..54393e66 --- /dev/null +++ b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.5.31.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 127072ead8b734144b407395a1e9f980 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar new file mode 100644 index 00000000..661b6614 Binary files /dev/null and b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar differ diff --git a/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar.meta b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar.meta new file mode 100644 index 00000000..89341f77 --- /dev/null +++ b/Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.5.31.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 52123b207d9dd154088b31c22370e3a2 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS.meta b/Assets/Plugins/iOS.meta new file mode 100644 index 00000000..4ccac03a --- /dev/null +++ b/Assets/Plugins/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 822f9dda6348e3b46a3099bf0727052f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/CanOpenUrl.m b/Assets/Plugins/iOS/CanOpenUrl.m new file mode 100644 index 00000000..95d6ee78 --- /dev/null +++ b/Assets/Plugins/iOS/CanOpenUrl.m @@ -0,0 +1,10 @@ +#import +#import + +NSString *ToNSString(char* string) { + return [NSString stringWithUTF8String:string]; +} + +bool _CanOpenURL (char* url) { + return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:ToNSString(url)]]; +} diff --git a/Assets/Plugins/iOS/CanOpenUrl.m.meta b/Assets/Plugins/iOS/CanOpenUrl.m.meta new file mode 100644 index 00000000..83f252a4 --- /dev/null +++ b/Assets/Plugins/iOS/CanOpenUrl.m.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b9518d2c329a4d8fb989081d2d037976 +timeCreated: 1704959767 \ No newline at end of file diff --git a/Assets/Plugins/iOS/Common.h b/Assets/Plugins/iOS/Common.h new file mode 100644 index 00000000..d4a73fcb --- /dev/null +++ b/Assets/Plugins/iOS/Common.h @@ -0,0 +1,40 @@ +#ifndef Common_h +#define Common_h + +typedef int bool_t; + +inline bool_t toBool(bool v) +{ + return v ? 1 : 0; +} + +inline bool toBool(bool_t v) +{ + return v != 0; +} + +inline NSString* toString(const char* string) +{ + if (string != NULL) + { + return [NSString stringWithUTF8String:string]; + } + else + { + return [NSString stringWithUTF8String:""]; + } +} + +inline char* toString(NSString* string) +{ + const char* cstr = [string UTF8String]; + + if (cstr == NULL) + return NULL; + + char* copy = (char*)malloc(strlen(cstr) + 1); + strcpy(copy, cstr); + return copy; +} + +#endif /* Common_h */ diff --git a/Assets/Plugins/iOS/Common.h.meta b/Assets/Plugins/iOS/Common.h.meta new file mode 100644 index 00000000..c71d5883 --- /dev/null +++ b/Assets/Plugins/iOS/Common.h.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 933a67f10ef30d144a6f715bc79a4b5b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/iOSBrowser.mm b/Assets/Plugins/iOS/iOSBrowser.mm new file mode 100644 index 00000000..536f61a2 --- /dev/null +++ b/Assets/Plugins/iOS/iOSBrowser.mm @@ -0,0 +1,97 @@ +#import + +#include "Common.h" + +extern UIViewController* UnityGetGLViewController(); + +typedef void (*ASWebAuthenticationSessionCompletionCallback)(void* sessionPtr, const char* callbackUrl, int errorCode, const char* errorMessage); + +@interface Thirdweb_ASWebAuthenticationSession : NSObject + +@property (readonly, nonatomic)ASWebAuthenticationSession* session; + +@end + +@implementation Thirdweb_ASWebAuthenticationSession + +- (instancetype)initWithURL:(NSURL *)URL callbackURLScheme:(nullable NSString *)callbackURLScheme completionCallback:(ASWebAuthenticationSessionCompletionCallback)completionCallback +{ + _session = [[ASWebAuthenticationSession alloc] initWithURL:URL + callbackURLScheme: callbackURLScheme + completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) + { + if (error != nil) + { + NSLog(@"[ASWebAuthenticationSession:CompletionHandler] %@", error.description); + } + else + { + //NSLog(@"[ASWebAuthenticationSession:CompletionHandler] Callback URL: %@", callbackURL); + } + + completionCallback((__bridge void*)self, toString(callbackURL.absoluteString), (int)error.code, toString(error.localizedDescription)); + }]; + + [_session setPresentationContextProvider:self]; + return self; +} + +- (nonnull ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(nonnull ASWebAuthenticationSession *)session +{ + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 || __TV_OS_VERSION_MAX_ALLOWED >= 130000 + return [[[UIApplication sharedApplication] delegate] window]; + #elif __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500 + return [[NSApplication sharedApplication] mainWindow]; + #else + return nil; + #endif +} + +@end + +extern "C" +{ + Thirdweb_ASWebAuthenticationSession* Thirdweb_ASWebAuthenticationSession_InitWithURL( + const char* urlStr, const char* urlSchemeStr, ASWebAuthenticationSessionCompletionCallback completionCallback) + { + //NSLog(@"[ASWebAuthenticationSession:InitWithURL] initWithURL: %s callbackURLScheme:%s", urlStr, urlSchemeStr); + + NSURL* url = [NSURL URLWithString: toString(urlStr)]; + NSString* urlScheme = toString(urlSchemeStr); + + Thirdweb_ASWebAuthenticationSession* session = [[Thirdweb_ASWebAuthenticationSession alloc] initWithURL:url + callbackURLScheme: urlScheme + completionCallback:completionCallback]; + return session; + } + + int Thirdweb_ASWebAuthenticationSession_Start(void* sessionPtr) + { + Thirdweb_ASWebAuthenticationSession* session = (__bridge Thirdweb_ASWebAuthenticationSession*) sessionPtr; + BOOL started = [[session session] start]; + + //NSLog(@"[ASWebAuthenticationSession:Start]: %s", (started ? "YES" : "NO")); + + return toBool(started); + } + + void Thirdweb_ASWebAuthenticationSession_Cancel(void* sessionPtr) + { + //NSLog(@"[ASWebAuthenticationSession:Cancel]"); + + Thirdweb_ASWebAuthenticationSession* session = (__bridge Thirdweb_ASWebAuthenticationSession*) sessionPtr; + [[session session] cancel]; + } + + int Thirdweb_ASWebAuthenticationSession_GetPrefersEphemeralWebBrowserSession(void* sessionPtr) + { + Thirdweb_ASWebAuthenticationSession* session = (__bridge Thirdweb_ASWebAuthenticationSession*) sessionPtr; + return toBool([[session session] prefersEphemeralWebBrowserSession]); + } + + void Thirdweb_ASWebAuthenticationSession_SetPrefersEphemeralWebBrowserSession(void* sessionPtr, int enable) + { + Thirdweb_ASWebAuthenticationSession* session = (__bridge Thirdweb_ASWebAuthenticationSession*) sessionPtr; + [[session session] setPrefersEphemeralWebBrowserSession:toBool(enable)]; + } +} diff --git a/Assets/Plugins/iOS/iOSBrowser.mm.meta b/Assets/Plugins/iOS/iOSBrowser.mm.meta new file mode 100644 index 00000000..da64cf9b --- /dev/null +++ b/Assets/Plugins/iOS/iOSBrowser.mm.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 2fcb14eac0784fc4290686f8b11245f6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + AndroidSharedLibraryType: Executable + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: AuthenticationServices; + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests.meta b/Assets/Tests.meta new file mode 100644 index 00000000..fb111d5b --- /dev/null +++ b/Assets/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 110ec0d043e86114ca96ebd6128496c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ConfigManager.cs b/Assets/Tests/ConfigManager.cs new file mode 100644 index 00000000..de45105e --- /dev/null +++ b/Assets/Tests/ConfigManager.cs @@ -0,0 +1,30 @@ +using System.IO; +using UnityEngine; + +public class ConfigManager +{ + [System.Serializable] + private class ConfigData + { + public string clientId; + } + + private ConfigData _config; + + internal string GetClientId() + { + if (_config != null) + return _config.clientId; + + try + { + string jsonContents = Resources.Load("config").text; + _config = JsonUtility.FromJson(jsonContents); + return _config?.clientId; + } + catch (System.Exception e) + { + throw new System.Exception("Failed to load config file from Resources: " + e.Message); + } + } +} diff --git a/Assets/Tests/ConfigManager.cs.meta b/Assets/Tests/ConfigManager.cs.meta new file mode 100644 index 00000000..04f437db --- /dev/null +++ b/Assets/Tests/ConfigManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1795d504344f63d418a1fbdb32226897 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/CustomReadTests.cs b/Assets/Tests/CustomReadTests.cs new file mode 100644 index 00000000..3e108b60 --- /dev/null +++ b/Assets/Tests/CustomReadTests.cs @@ -0,0 +1,91 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class CustomReadTests : ConfigManager +{ + private GameObject _go; + private string _dropErc20Address = "0xEBB8a39D865465F289fa349A67B3391d8f910da9"; + private string _dropErc20Abi = + "[{\"type\": \"constructor\",\"name\": \"\",\"inputs\": [],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"event\",\"name\": \"Approval\",\"inputs\": [{\"type\": \"address\",\"name\": \"owner\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"spender\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"value\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"ClaimConditionsUpdated\",\"inputs\": [{\"type\": \"tuple[]\",\"name\": \"claimConditions\",\"components\": [{\"type\": \"uint256\",\"name\": \"startTimestamp\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"maxClaimableSupply\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"supplyClaimed\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"quantityLimitPerWallet\",\"internalType\": \"uint256\"},{\"type\": \"bytes32\",\"name\": \"merkleRoot\",\"internalType\": \"bytes32\"},{\"type\": \"uint256\",\"name\": \"pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"currency\",\"internalType\": \"address\"},{\"type\": \"string\",\"name\": \"metadata\",\"internalType\": \"string\"}],\"indexed\": false,\"internalType\": \"struct IClaimCondition.ClaimCondition[]\"},{\"type\": \"bool\",\"name\": \"resetEligibility\",\"indexed\": false,\"internalType\": \"bool\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"ContractURIUpdated\",\"inputs\": [{\"type\": \"string\",\"name\": \"prevURI\",\"indexed\": false,\"internalType\": \"string\"},{\"type\": \"string\",\"name\": \"newURI\",\"indexed\": false,\"internalType\": \"string\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"DelegateChanged\",\"inputs\": [{\"type\": \"address\",\"name\": \"delegator\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"fromDelegate\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"toDelegate\",\"indexed\": true,\"internalType\": \"address\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"DelegateVotesChanged\",\"inputs\": [{\"type\": \"address\",\"name\": \"delegate\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"previousBalance\",\"indexed\": false,\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"newBalance\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"EIP712DomainChanged\",\"inputs\": [],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"FlatPlatformFeeUpdated\",\"inputs\": [{\"type\": \"address\",\"name\": \"platformFeeRecipient\",\"indexed\": false,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"flatFee\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"Initialized\",\"inputs\": [{\"type\": \"uint8\",\"name\": \"version\",\"indexed\": false,\"internalType\": \"uint8\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"MaxTotalSupplyUpdated\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"maxTotalSupply\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"PlatformFeeInfoUpdated\",\"inputs\": [{\"type\": \"address\",\"name\": \"platformFeeRecipient\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"platformFeeBps\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"PlatformFeeTypeUpdated\",\"inputs\": [{\"type\": \"uint8\",\"name\": \"feeType\",\"indexed\": false,\"internalType\": \"enum IPlatformFee.PlatformFeeType\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"PrimarySaleRecipientUpdated\",\"inputs\": [{\"type\": \"address\",\"name\": \"recipient\",\"indexed\": true,\"internalType\": \"address\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"RoleAdminChanged\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"indexed\": true,\"internalType\": \"bytes32\"},{\"type\": \"bytes32\",\"name\": \"previousAdminRole\",\"indexed\": true,\"internalType\": \"bytes32\"},{\"type\": \"bytes32\",\"name\": \"newAdminRole\",\"indexed\": true,\"internalType\": \"bytes32\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"RoleGranted\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"indexed\": true,\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"sender\",\"indexed\": true,\"internalType\": \"address\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"RoleRevoked\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"indexed\": true,\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"sender\",\"indexed\": true,\"internalType\": \"address\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"TokensClaimed\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"claimConditionIndex\",\"indexed\": true,\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"claimer\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"receiver\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"startTokenId\",\"indexed\": false,\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"quantityClaimed\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"event\",\"name\": \"Transfer\",\"inputs\": [{\"type\": \"address\",\"name\": \"from\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"to\",\"indexed\": true,\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"value\",\"indexed\": false,\"internalType\": \"uint256\"}],\"outputs\": [],\"anonymous\": false},{\"type\": \"function\",\"name\": \"CLOCK_MODE\",\"inputs\": [],\"outputs\": [{\"type\": \"string\",\"name\": \"\",\"internalType\": \"string\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"DEFAULT_ADMIN_ROLE\",\"inputs\": [],\"outputs\": [{\"type\": \"bytes32\",\"name\": \"\",\"internalType\": \"bytes32\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"DOMAIN_SEPARATOR\",\"inputs\": [],\"outputs\": [{\"type\": \"bytes32\",\"name\": \"\",\"internalType\": \"bytes32\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"allowance\",\"inputs\": [{\"type\": \"address\",\"name\": \"owner\",\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"spender\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"approve\",\"inputs\": [{\"type\": \"address\",\"name\": \"spender\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"amount\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"balanceOf\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"burn\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"amount\",\"internalType\": \"uint256\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"burnFrom\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"amount\",\"internalType\": \"uint256\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"checkpoints\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"},{\"type\": \"uint32\",\"name\": \"pos\",\"internalType\": \"uint32\"}],\"outputs\": [{\"type\": \"tuple\",\"name\": \"\",\"components\": [{\"type\": \"uint32\",\"name\": \"fromBlock\",\"internalType\": \"uint32\"},{\"type\": \"uint224\",\"name\": \"votes\",\"internalType\": \"uint224\"}],\"internalType\": \"struct ERC20VotesUpgradeable.Checkpoint\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"claim\",\"inputs\": [{\"type\": \"address\",\"name\": \"_receiver\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_quantity\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"_currency\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"tuple\",\"name\": \"_allowlistProof\",\"components\": [{\"type\": \"bytes32[]\",\"name\": \"proof\",\"internalType\": \"bytes32[]\"},{\"type\": \"uint256\",\"name\": \"quantityLimitPerWallet\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"currency\",\"internalType\": \"address\"}],\"internalType\": \"struct IDrop.AllowlistProof\"},{\"type\": \"bytes\",\"name\": \"_data\",\"internalType\": \"bytes\"}],\"outputs\": [],\"stateMutability\": \"payable\"},{\"type\": \"function\",\"name\": \"claimCondition\",\"inputs\": [],\"outputs\": [{\"type\": \"uint256\",\"name\": \"currentStartId\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"count\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"clock\",\"inputs\": [],\"outputs\": [{\"type\": \"uint48\",\"name\": \"\",\"internalType\": \"uint48\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"contractType\",\"inputs\": [],\"outputs\": [{\"type\": \"bytes32\",\"name\": \"\",\"internalType\": \"bytes32\"}],\"stateMutability\": \"pure\"},{\"type\": \"function\",\"name\": \"contractURI\",\"inputs\": [],\"outputs\": [{\"type\": \"string\",\"name\": \"\",\"internalType\": \"string\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"contractVersion\",\"inputs\": [],\"outputs\": [{\"type\": \"uint8\",\"name\": \"\",\"internalType\": \"uint8\"}],\"stateMutability\": \"pure\"},{\"type\": \"function\",\"name\": \"decimals\",\"inputs\": [],\"outputs\": [{\"type\": \"uint8\",\"name\": \"\",\"internalType\": \"uint8\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"decreaseAllowance\",\"inputs\": [{\"type\": \"address\",\"name\": \"spender\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"subtractedValue\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"delegate\",\"inputs\": [{\"type\": \"address\",\"name\": \"delegatee\",\"internalType\": \"address\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"delegateBySig\",\"inputs\": [{\"type\": \"address\",\"name\": \"delegatee\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"nonce\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"expiry\",\"internalType\": \"uint256\"},{\"type\": \"uint8\",\"name\": \"v\",\"internalType\": \"uint8\"},{\"type\": \"bytes32\",\"name\": \"r\",\"internalType\": \"bytes32\"},{\"type\": \"bytes32\",\"name\": \"s\",\"internalType\": \"bytes32\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"delegates\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"address\",\"name\": \"\",\"internalType\": \"address\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"eip712Domain\",\"inputs\": [],\"outputs\": [{\"type\": \"bytes1\",\"name\": \"fields\",\"internalType\": \"bytes1\"},{\"type\": \"string\",\"name\": \"name\",\"internalType\": \"string\"},{\"type\": \"string\",\"name\": \"version\",\"internalType\": \"string\"},{\"type\": \"uint256\",\"name\": \"chainId\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"verifyingContract\",\"internalType\": \"address\"},{\"type\": \"bytes32\",\"name\": \"salt\",\"internalType\": \"bytes32\"},{\"type\": \"uint256[]\",\"name\": \"extensions\",\"internalType\": \"uint256[]\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getActiveClaimConditionId\",\"inputs\": [],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getClaimConditionById\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"_conditionId\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"tuple\",\"name\": \"condition\",\"components\": [{\"type\": \"uint256\",\"name\": \"startTimestamp\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"maxClaimableSupply\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"supplyClaimed\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"quantityLimitPerWallet\",\"internalType\": \"uint256\"},{\"type\": \"bytes32\",\"name\": \"merkleRoot\",\"internalType\": \"bytes32\"},{\"type\": \"uint256\",\"name\": \"pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"currency\",\"internalType\": \"address\"},{\"type\": \"string\",\"name\": \"metadata\",\"internalType\": \"string\"}],\"internalType\": \"struct IClaimCondition.ClaimCondition\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getFlatPlatformFeeInfo\",\"inputs\": [],\"outputs\": [{\"type\": \"address\",\"name\": \"\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getPastTotalSupply\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"timepoint\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getPastVotes\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"timepoint\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getPlatformFeeInfo\",\"inputs\": [],\"outputs\": [{\"type\": \"address\",\"name\": \"\",\"internalType\": \"address\"},{\"type\": \"uint16\",\"name\": \"\",\"internalType\": \"uint16\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getPlatformFeeType\",\"inputs\": [],\"outputs\": [{\"type\": \"uint8\",\"name\": \"\",\"internalType\": \"enum IPlatformFee.PlatformFeeType\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getRoleAdmin\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"}],\"outputs\": [{\"type\": \"bytes32\",\"name\": \"\",\"internalType\": \"bytes32\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getRoleMember\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"uint256\",\"name\": \"index\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"address\",\"name\": \"member\",\"internalType\": \"address\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getRoleMemberCount\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"count\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getSupplyClaimedByWallet\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"_conditionId\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"_claimer\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"supplyClaimedByWallet\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"getVotes\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"grantRole\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"hasRole\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"hasRoleWithSwitch\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"increaseAllowance\",\"inputs\": [{\"type\": \"address\",\"name\": \"spender\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"addedValue\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"initialize\",\"inputs\": [{\"type\": \"address\",\"name\": \"_defaultAdmin\",\"internalType\": \"address\"},{\"type\": \"string\",\"name\": \"_name\",\"internalType\": \"string\"},{\"type\": \"string\",\"name\": \"_symbol\",\"internalType\": \"string\"},{\"type\": \"string\",\"name\": \"_contractURI\",\"internalType\": \"string\"},{\"type\": \"address[]\",\"name\": \"_trustedForwarders\",\"internalType\": \"address[]\"},{\"type\": \"address\",\"name\": \"_saleRecipient\",\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"_platformFeeRecipient\",\"internalType\": \"address\"},{\"type\": \"uint128\",\"name\": \"_platformFeeBps\",\"internalType\": \"uint128\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"isTrustedForwarder\",\"inputs\": [{\"type\": \"address\",\"name\": \"forwarder\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"maxTotalSupply\",\"inputs\": [],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"multicall\",\"inputs\": [{\"type\": \"bytes[]\",\"name\": \"data\",\"internalType\": \"bytes[]\"}],\"outputs\": [{\"type\": \"bytes[]\",\"name\": \"results\",\"internalType\": \"bytes[]\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"name\",\"inputs\": [],\"outputs\": [{\"type\": \"string\",\"name\": \"\",\"internalType\": \"string\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"nonces\",\"inputs\": [{\"type\": \"address\",\"name\": \"owner\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"numCheckpoints\",\"inputs\": [{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [{\"type\": \"uint32\",\"name\": \"\",\"internalType\": \"uint32\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"permit\",\"inputs\": [{\"type\": \"address\",\"name\": \"owner\",\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"spender\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"value\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"deadline\",\"internalType\": \"uint256\"},{\"type\": \"uint8\",\"name\": \"v\",\"internalType\": \"uint8\"},{\"type\": \"bytes32\",\"name\": \"r\",\"internalType\": \"bytes32\"},{\"type\": \"bytes32\",\"name\": \"s\",\"internalType\": \"bytes32\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"primarySaleRecipient\",\"inputs\": [],\"outputs\": [{\"type\": \"address\",\"name\": \"\",\"internalType\": \"address\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"renounceRole\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"revokeRole\",\"inputs\": [{\"type\": \"bytes32\",\"name\": \"role\",\"internalType\": \"bytes32\"},{\"type\": \"address\",\"name\": \"account\",\"internalType\": \"address\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setClaimConditions\",\"inputs\": [{\"type\": \"tuple[]\",\"name\": \"_conditions\",\"components\": [{\"type\": \"uint256\",\"name\": \"startTimestamp\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"maxClaimableSupply\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"supplyClaimed\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"quantityLimitPerWallet\",\"internalType\": \"uint256\"},{\"type\": \"bytes32\",\"name\": \"merkleRoot\",\"internalType\": \"bytes32\"},{\"type\": \"uint256\",\"name\": \"pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"currency\",\"internalType\": \"address\"},{\"type\": \"string\",\"name\": \"metadata\",\"internalType\": \"string\"}],\"internalType\": \"struct IClaimCondition.ClaimCondition[]\"},{\"type\": \"bool\",\"name\": \"_resetClaimEligibility\",\"internalType\": \"bool\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setContractURI\",\"inputs\": [{\"type\": \"string\",\"name\": \"_uri\",\"internalType\": \"string\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setFlatPlatformFeeInfo\",\"inputs\": [{\"type\": \"address\",\"name\": \"_platformFeeRecipient\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_flatFee\",\"internalType\": \"uint256\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setMaxTotalSupply\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"_maxTotalSupply\",\"internalType\": \"uint256\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setPlatformFeeInfo\",\"inputs\": [{\"type\": \"address\",\"name\": \"_platformFeeRecipient\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_platformFeeBps\",\"internalType\": \"uint256\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setPlatformFeeType\",\"inputs\": [{\"type\": \"uint8\",\"name\": \"_feeType\",\"internalType\": \"enum IPlatformFee.PlatformFeeType\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"setPrimarySaleRecipient\",\"inputs\": [{\"type\": \"address\",\"name\": \"_saleRecipient\",\"internalType\": \"address\"}],\"outputs\": [],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"symbol\",\"inputs\": [],\"outputs\": [{\"type\": \"string\",\"name\": \"\",\"internalType\": \"string\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"totalSupply\",\"inputs\": [],\"outputs\": [{\"type\": \"uint256\",\"name\": \"\",\"internalType\": \"uint256\"}],\"stateMutability\": \"view\"},{\"type\": \"function\",\"name\": \"transfer\",\"inputs\": [{\"type\": \"address\",\"name\": \"to\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"amount\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"transferFrom\",\"inputs\": [{\"type\": \"address\",\"name\": \"from\",\"internalType\": \"address\"},{\"type\": \"address\",\"name\": \"to\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"amount\",\"internalType\": \"uint256\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"\",\"internalType\": \"bool\"}],\"stateMutability\": \"nonpayable\"},{\"type\": \"function\",\"name\": \"verifyClaim\",\"inputs\": [{\"type\": \"uint256\",\"name\": \"_conditionId\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"_claimer\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_quantity\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"_currency\",\"internalType\": \"address\"},{\"type\": \"uint256\",\"name\": \"_pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"tuple\",\"name\": \"_allowlistProof\",\"components\": [{\"type\": \"bytes32[]\",\"name\": \"proof\",\"internalType\": \"bytes32[]\"},{\"type\": \"uint256\",\"name\": \"quantityLimitPerWallet\",\"internalType\": \"uint256\"},{\"type\": \"uint256\",\"name\": \"pricePerToken\",\"internalType\": \"uint256\"},{\"type\": \"address\",\"name\": \"currency\",\"internalType\": \"address\"}],\"internalType\": \"struct IDrop.AllowlistProof\"}],\"outputs\": [{\"type\": \"bool\",\"name\": \"isOverride\",\"internalType\": \"bool\"}],\"stateMutability\": \"view\"}]"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetContract_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract("0x"); + Assert.IsNotNull(contract); + Assert.AreEqual("0x", contract.address); + yield return null; + } + + [UnityTest] + public IEnumerator Custom_WithoutAbi_FailNativeSucceedWebGL() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var readTask = contract.Read("balanceOf", _dropErc20Address); + yield return new WaitUntil(() => readTask.IsCompleted); + if (Utils.IsWebGLBuild()) + { + if (readTask.IsFaulted) + throw readTask.Exception; + Assert.IsTrue(readTask.IsCompletedSuccessfully); + Assert.NotNull(readTask.Result); + } + else + { + Assert.IsTrue(readTask.IsFaulted); + Assert.AreEqual("You must pass an ABI for native platform custom calls", readTask.Exception.InnerException.Message); + } + } + + [UnityTest] + public IEnumerator Custom_WithAbi_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address, _dropErc20Abi); + var readTask = contract.Read("balanceOf", _dropErc20Address); + yield return new WaitUntil(() => readTask.IsCompleted); + if (readTask.IsFaulted) + throw readTask.Exception; + Assert.IsTrue(readTask.IsCompletedSuccessfully); + Assert.NotNull(readTask.Result); + } + + [UnityTest] + public IEnumerator Custom_WithString_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address, _dropErc20Abi); + var readTask = contract.Read("symbol"); + yield return new WaitUntil(() => readTask.IsCompleted); + if (readTask.IsFaulted) + throw readTask.Exception; + Assert.IsTrue(readTask.IsCompletedSuccessfully); + Assert.NotNull(readTask.Result); + } +} diff --git a/Assets/Tests/CustomReadTests.cs.meta b/Assets/Tests/CustomReadTests.cs.meta new file mode 100644 index 00000000..7065efa1 --- /dev/null +++ b/Assets/Tests/CustomReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e519aba843f5a5540856f4b5bb8833bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC1155ReadTests.cs b/Assets/Tests/ERC1155ReadTests.cs new file mode 100644 index 00000000..ebeeddb5 --- /dev/null +++ b/Assets/Tests/ERC1155ReadTests.cs @@ -0,0 +1,143 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC1155ReadTests : ConfigManager +{ + private GameObject _go; + private string _dropErc1155Address = "0x6A7a26c9a595E6893C255C9dF0b593e77518e0c3"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetContract_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + Assert.IsNotNull(contract); + Assert.AreEqual(_dropErc1155Address, contract.address); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_Get_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var currencyInfoTask = contract.ERC1155.Get("1"); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.AreEqual("1", currencyInfoTask.Result.metadata.id); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_GetAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var currencyInfoTask = contract.ERC1155.GetAll(); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.GreaterOrEqual(currencyInfoTask.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_GetOwned_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var currencyInfoTask = contract.ERC1155.GetOwned(_dropErc1155Address); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.GreaterOrEqual(currencyInfoTask.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_BalanceOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var balanceTask = contract.ERC1155.BalanceOf(_dropErc1155Address, "1"); + yield return new WaitUntil(() => balanceTask.IsCompleted); + if (balanceTask.IsFaulted) + throw balanceTask.Exception; + Assert.IsTrue(balanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(balanceTask.Result); + Assert.GreaterOrEqual(balanceTask.Result, BigInteger.Zero); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_IsApprovedForAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var allowanceTask = contract.ERC1155.IsApprovedForAll(_dropErc1155Address, _dropErc1155Address); + yield return new WaitUntil(() => allowanceTask.IsCompleted); + if (allowanceTask.IsFaulted) + throw allowanceTask.Exception; + Assert.IsTrue(allowanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(allowanceTask.Result); + Assert.IsTrue(allowanceTask.Result == true || allowanceTask.Result == false); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_TotalCount_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var totalSupplyTask = contract.ERC1155.TotalCount(); + yield return new WaitUntil(() => totalSupplyTask.IsCompleted); + if (totalSupplyTask.IsFaulted) + throw totalSupplyTask.Exception; + Assert.IsTrue(totalSupplyTask.IsCompletedSuccessfully); + Assert.IsNotNull(totalSupplyTask.Result); + Assert.GreaterOrEqual(totalSupplyTask.Result, BigInteger.Zero); + yield return null; + } + + [UnityTest] + public IEnumerator ERC1155_TotalSupply_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var totalSupplyTask = contract.ERC1155.TotalSupply("1"); + yield return new WaitUntil(() => totalSupplyTask.IsCompleted); + if (totalSupplyTask.IsFaulted) + throw totalSupplyTask.Exception; + Assert.IsTrue(totalSupplyTask.IsCompletedSuccessfully); + Assert.IsNotNull(totalSupplyTask.Result); + Assert.GreaterOrEqual(totalSupplyTask.Result, BigInteger.Zero); + yield return null; + } +} diff --git a/Assets/Tests/ERC1155ReadTests.cs.meta b/Assets/Tests/ERC1155ReadTests.cs.meta new file mode 100644 index 00000000..07ab0303 --- /dev/null +++ b/Assets/Tests/ERC1155ReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9d435e3fb45bfe4e8a3e2dffbc263d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC1155WriteTests.cs b/Assets/Tests/ERC1155WriteTests.cs new file mode 100644 index 00000000..484615f6 --- /dev/null +++ b/Assets/Tests/ERC1155WriteTests.cs @@ -0,0 +1,115 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC1155WriteTests : ConfigManager +{ + private GameObject _go; + private string _dropErc1155Address = "0x6A7a26c9a595E6893C255C9dF0b593e77518e0c3"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.factoryAddress = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052"; // ManagedAccountFactory + ThirdwebManager.Instance.gasless = true; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + private IEnumerator ConnectSmartWallet() + { + Utils.DeleteLocalAccount(); + var connection = new WalletConnection(provider: WalletProvider.SmartWallet, chainId: 421614, personalWallet: WalletProvider.LocalWallet); + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + if (connectTask.IsFaulted) + throw connectTask.Exception; + Assert.IsTrue(connectTask.IsCompletedSuccessfully); + } + + [UnityTest] + public IEnumerator ERC1155_SetApprovalForAll_Success() + { + yield return ConnectSmartWallet(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var task = contract.ERC1155.SetApprovalForAll(_dropErc1155Address, true); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC1155_Claim_Success() + { + yield return ConnectSmartWallet(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var task = contract.ERC1155.Claim("1", 1); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC1155_Transfer_Success() + { + yield return ERC1155_Claim_Success(); + + var addressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => addressTask.IsCompleted); + if (addressTask.IsFaulted) + throw addressTask.Exception; + Assert.IsTrue(addressTask.IsCompletedSuccessfully); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var task = contract.ERC1155.Transfer(addressTask.Result, "1", 1); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC1155_Burn_Success() + { + yield return ERC1155_Claim_Success(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc1155Address); + var task = contract.ERC1155.Burn("1", 1); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } +} diff --git a/Assets/Tests/ERC1155WriteTests.cs.meta b/Assets/Tests/ERC1155WriteTests.cs.meta new file mode 100644 index 00000000..1f3d1a2f --- /dev/null +++ b/Assets/Tests/ERC1155WriteTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 053e32d04d7ca4c4ba8f1090943c2a90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC20ReadTests.cs b/Assets/Tests/ERC20ReadTests.cs new file mode 100644 index 00000000..c7b7421e --- /dev/null +++ b/Assets/Tests/ERC20ReadTests.cs @@ -0,0 +1,104 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC20ReadTests : ConfigManager +{ + private GameObject _go; + private string _dropErc20Address = "0xEBB8a39D865465F289fa349A67B3391d8f910da9"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetContract_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + Assert.IsNotNull(contract); + Assert.AreEqual(_dropErc20Address, contract.address); + yield return null; + } + + [UnityTest] + public IEnumerator ERC20_Get_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var currencyInfoTask = contract.ERC20.Get(); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.AreEqual("18", currencyInfoTask.Result.decimals); + yield return null; + } + + [UnityTest] + public IEnumerator ERC20_BalanceOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var balanceTask = contract.ERC20.BalanceOf(_dropErc20Address); + yield return new WaitUntil(() => balanceTask.IsCompleted); + if (balanceTask.IsFaulted) + throw balanceTask.Exception; + Assert.IsTrue(balanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(balanceTask.Result); + Assert.IsNotNull(balanceTask.Result.value); + Assert.GreaterOrEqual(BigInteger.Parse(balanceTask.Result.value), BigInteger.Zero); + yield return null; + } + + [UnityTest] + public IEnumerator ERC20_AllowanceOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var allowanceTask = contract.ERC20.AllowanceOf(_dropErc20Address, _dropErc20Address); + yield return new WaitUntil(() => allowanceTask.IsCompleted); + if (allowanceTask.IsFaulted) + throw allowanceTask.Exception; + Assert.IsTrue(allowanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(allowanceTask.Result); + Assert.IsNotNull(allowanceTask.Result.value); + Assert.GreaterOrEqual(BigInteger.Parse(allowanceTask.Result.value), BigInteger.Zero); + yield return null; + } + + [UnityTest] + public IEnumerator ERC20_TotalSupply_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var totalSupplyTask = contract.ERC20.TotalSupply(); + yield return new WaitUntil(() => totalSupplyTask.IsCompleted); + if (totalSupplyTask.IsFaulted) + throw totalSupplyTask.Exception; + Assert.IsTrue(totalSupplyTask.IsCompletedSuccessfully); + Assert.IsNotNull(totalSupplyTask.Result); + Assert.IsNotNull(totalSupplyTask.Result.value); + Assert.GreaterOrEqual(BigInteger.Parse(totalSupplyTask.Result.value), BigInteger.Zero); + yield return null; + } +} diff --git a/Assets/Tests/ERC20ReadTests.cs.meta b/Assets/Tests/ERC20ReadTests.cs.meta new file mode 100644 index 00000000..9aa6b99d --- /dev/null +++ b/Assets/Tests/ERC20ReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27d03dc46e25a134aa055653971dd174 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC20WriteTests.cs b/Assets/Tests/ERC20WriteTests.cs new file mode 100644 index 00000000..8fbac599 --- /dev/null +++ b/Assets/Tests/ERC20WriteTests.cs @@ -0,0 +1,109 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC20WriteTests : ConfigManager +{ + private GameObject _go; + private string _dropErc20Address = "0xEBB8a39D865465F289fa349A67B3391d8f910da9"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.factoryAddress = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052"; // ManagedAccountFactory + ThirdwebManager.Instance.gasless = true; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + private IEnumerator ConnectSmartWallet() + { + Utils.DeleteLocalAccount(); + var connection = new WalletConnection(provider: WalletProvider.SmartWallet, chainId: 421614, personalWallet: WalletProvider.LocalWallet); + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + if (connectTask.IsFaulted) + throw connectTask.Exception; + Assert.IsTrue(connectTask.IsCompletedSuccessfully); + } + + [UnityTest] + public IEnumerator ERC20_SetAllowance_Success() + { + yield return ConnectSmartWallet(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var task = contract.ERC20.SetAllowance(_dropErc20Address, "42"); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC20_Claim_Success() + { + yield return ConnectSmartWallet(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var task = contract.ERC20.Claim("42"); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC20_Transfer_Success() + { + yield return ERC20_Claim_Success(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var task = contract.ERC20.Transfer(_dropErc20Address, "4.2"); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + [UnityTest] + public IEnumerator ERC20_Burn_Success() + { + yield return ERC20_Claim_Success(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc20Address); + var task = contract.ERC20.Burn("4.2"); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } +} diff --git a/Assets/Tests/ERC20WriteTests.cs.meta b/Assets/Tests/ERC20WriteTests.cs.meta new file mode 100644 index 00000000..8dbcce42 --- /dev/null +++ b/Assets/Tests/ERC20WriteTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 853b7145382b16c4f897e504442da63a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC721ReadTests.cs b/Assets/Tests/ERC721ReadTests.cs new file mode 100644 index 00000000..adcb779d --- /dev/null +++ b/Assets/Tests/ERC721ReadTests.cs @@ -0,0 +1,143 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC721ReadTests : ConfigManager +{ + private GameObject _go; + private string _dropErc721Address = "0xD811CB13169C175b64bf8897e2Fd6a69C6343f5C"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetContract_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + Assert.IsNotNull(contract); + Assert.AreEqual(_dropErc721Address, contract.address); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_Get_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var currencyInfoTask = contract.ERC721.Get("1"); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.AreEqual("1", currencyInfoTask.Result.metadata.id); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_GetAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var currencyInfoTask = contract.ERC721.GetAll(); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.GreaterOrEqual(currencyInfoTask.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_GetOwned_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var currencyInfoTask = contract.ERC721.GetOwned(_dropErc721Address); + yield return new WaitUntil(() => currencyInfoTask.IsCompleted); + if (currencyInfoTask.IsFaulted) + throw currencyInfoTask.Exception; + Assert.IsTrue(currencyInfoTask.IsCompletedSuccessfully); + Assert.IsNotNull(currencyInfoTask.Result); + Assert.GreaterOrEqual(currencyInfoTask.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_OwnerOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var ownerTask = contract.ERC721.OwnerOf("1"); + yield return new WaitUntil(() => ownerTask.IsCompleted); + if (ownerTask.IsFaulted) + throw ownerTask.Exception; + Assert.IsTrue(ownerTask.IsCompletedSuccessfully); + Assert.IsNotNull(ownerTask.Result); + Assert.IsTrue(ownerTask.Result.Length == 42); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_BalanceOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var balanceTask = contract.ERC721.BalanceOf(_dropErc721Address); + yield return new WaitUntil(() => balanceTask.IsCompleted); + if (balanceTask.IsFaulted) + throw balanceTask.Exception; + Assert.IsTrue(balanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(balanceTask.Result); + Assert.GreaterOrEqual(balanceTask.Result, BigInteger.Zero); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_IsApprovedForAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var allowanceTask = contract.ERC721.IsApprovedForAll(_dropErc721Address, _dropErc721Address); + yield return new WaitUntil(() => allowanceTask.IsCompleted); + if (allowanceTask.IsFaulted) + throw allowanceTask.Exception; + Assert.IsTrue(allowanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(allowanceTask.Result); + Assert.IsTrue(allowanceTask.Result == true || allowanceTask.Result == false); + yield return null; + } + + [UnityTest] + public IEnumerator ERC721_TotalCount_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + var totalSupplyTask = contract.ERC721.TotalCount(); + yield return new WaitUntil(() => totalSupplyTask.IsCompleted); + if (totalSupplyTask.IsFaulted) + throw totalSupplyTask.Exception; + Assert.IsTrue(totalSupplyTask.IsCompletedSuccessfully); + Assert.IsNotNull(totalSupplyTask.Result); + Assert.GreaterOrEqual(totalSupplyTask.Result, BigInteger.Zero); + yield return null; + } +} diff --git a/Assets/Tests/ERC721ReadTests.cs.meta b/Assets/Tests/ERC721ReadTests.cs.meta new file mode 100644 index 00000000..180a95a0 --- /dev/null +++ b/Assets/Tests/ERC721ReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09deaad635943c248bd33603253162a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ERC721WriteTests.cs b/Assets/Tests/ERC721WriteTests.cs new file mode 100644 index 00000000..b9741aea --- /dev/null +++ b/Assets/Tests/ERC721WriteTests.cs @@ -0,0 +1,133 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ERC721WriteTests : ConfigManager +{ + private GameObject _go; + private string _dropErc712Address = "0xD811CB13169C175b64bf8897e2Fd6a69C6343f5C"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.factoryAddress = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052"; // ManagedAccountFactory + ThirdwebManager.Instance.gasless = true; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + private IEnumerator ConnectSmartWallet() + { + Utils.DeleteLocalAccount(); + var connection = new WalletConnection(provider: WalletProvider.SmartWallet, chainId: 421614, personalWallet: WalletProvider.LocalWallet); + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + if (connectTask.IsFaulted) + throw connectTask.Exception; + Assert.IsTrue(connectTask.IsCompletedSuccessfully); + } + + [UnityTest] + public IEnumerator ERC721_SetApprovalForAll_Success() + { + yield return ConnectSmartWallet(); + + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc712Address); + var task = contract.ERC721.SetApprovalForAll(_dropErc712Address, false); + yield return new WaitUntil(() => task.IsCompleted); + if (task.IsFaulted) + throw task.Exception; + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + } + + // [UnityTest] + // public IEnumerator ERC721_Claim_Success() + // { + // yield return ConnectSmartWallet(); + + // var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc712Address); + // var task = contract.ERC721.Claim(1); + // yield return new WaitUntil(() => task.IsCompleted); + // if (task.IsFaulted) + // throw task.Exception; + // Assert.IsTrue(task.IsCompletedSuccessfully); + // Assert.IsNotNull(task.Result); + // Assert.IsTrue(task.Result[0].receipt.transactionHash.Length == 66); + // } + + // [UnityTest] + // public IEnumerator ERC721_Transfer_Success() + // { + // yield return ERC721_Claim_Success(); + + // var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc712Address); + + // var addressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + // yield return new WaitUntil(() => addressTask.IsCompleted); + // if (addressTask.IsFaulted) + // throw addressTask.Exception; + // Assert.IsTrue(addressTask.IsCompletedSuccessfully); + + // var latestTokenIdTask = contract.ERC721.TotalCount(); + // yield return new WaitUntil(() => latestTokenIdTask.IsCompleted); + // if (latestTokenIdTask.IsFaulted) + // throw latestTokenIdTask.Exception; + // Assert.IsTrue(latestTokenIdTask.IsCompletedSuccessfully); + // Assert.IsNotNull(latestTokenIdTask.Result); + // var latestTokenId = latestTokenIdTask.Result - 1; + + // var task = contract.ERC721.Transfer(addressTask.Result, latestTokenId.ToString()); + // yield return new WaitUntil(() => task.IsCompleted); + // if (task.IsFaulted) + // throw task.Exception; + // Assert.IsTrue(task.IsCompletedSuccessfully); + // Assert.IsNotNull(task.Result); + // Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + // } + + // [UnityTest] + // public IEnumerator ERC721_Burn_Success() + // { + // yield return ERC721_Claim_Success(); + + // var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc712Address); + + // var latestTokenIdTask = contract.ERC721.TotalCount(); + // yield return new WaitUntil(() => latestTokenIdTask.IsCompleted); + // if (latestTokenIdTask.IsFaulted) + // throw latestTokenIdTask.Exception; + // Assert.IsTrue(latestTokenIdTask.IsCompletedSuccessfully); + // Assert.IsNotNull(latestTokenIdTask.Result); + // var latestTokenId = latestTokenIdTask.Result - 1; + + // var task = contract.ERC721.Burn(latestTokenId.ToString()); + // yield return new WaitUntil(() => task.IsCompleted); + // if (task.IsFaulted) + // throw task.Exception; + // Assert.IsTrue(task.IsCompletedSuccessfully); + // Assert.IsNotNull(task.Result); + // Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + // } +} diff --git a/Assets/Tests/ERC721WriteTests.cs.meta b/Assets/Tests/ERC721WriteTests.cs.meta new file mode 100644 index 00000000..e311795b --- /dev/null +++ b/Assets/Tests/ERC721WriteTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fe18cf51bac6684482735a3c1cb6daa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/EventsTests.cs b/Assets/Tests/EventsTests.cs new file mode 100644 index 00000000..c2db33c8 --- /dev/null +++ b/Assets/Tests/EventsTests.cs @@ -0,0 +1,85 @@ +using System.Collections; +using System.Numerics; +using Nethereum.ABI.FunctionEncoding.Attributes; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class EventsTests : ConfigManager +{ + [Event("Transfer")] + public class TransferEventDTO : IEventDTO + { + [Parameter("address", "from", 1, true)] + public string From { get; set; } + + [Parameter("address", "to", 2, true)] + public string To { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public BigInteger TokenId { get; set; } + } + + public struct TransferEvent + { + public string from; + public string to; + public string tokenId; + } + + private GameObject _go; + private string _dropErc721Address = "0xD811CB13169C175b64bf8897e2Fd6a69C6343f5C"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetEventLogs_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_dropErc721Address); + if (Utils.IsWebGLBuild()) + { + var transferEvents = contract.events.Get("Transfer"); + yield return new WaitUntil(() => transferEvents.IsCompleted); + if (transferEvents.IsFaulted) + throw transferEvents.Exception; + Assert.IsTrue(transferEvents.IsCompletedSuccessfully); + Assert.IsNotNull(transferEvents.Result); + Assert.Greater(transferEvents.Result.Count, 0); + yield return null; + } + else + { + var transferEvents = contract.GetEventLogs(); + yield return new WaitUntil(() => transferEvents.IsCompleted); + if (transferEvents.IsFaulted) + throw transferEvents.Exception; + Assert.IsTrue(transferEvents.IsCompletedSuccessfully); + Assert.IsNotNull(transferEvents.Result); + Assert.Greater(transferEvents.Result.Count, 0); + yield return null; + } + } +} diff --git a/Assets/Tests/EventsTests.cs.meta b/Assets/Tests/EventsTests.cs.meta new file mode 100644 index 00000000..94ddb407 --- /dev/null +++ b/Assets/Tests/EventsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 446f5754bcd0bd746b336f56d719e046 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/MarketplaceReadTests.cs b/Assets/Tests/MarketplaceReadTests.cs new file mode 100644 index 00000000..9b8b6930 --- /dev/null +++ b/Assets/Tests/MarketplaceReadTests.cs @@ -0,0 +1,293 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class MarketplaceReadTests : ConfigManager +{ + private GameObject _go; + private string _marketplaceAddress = "0xc9671F631E8313D53ec0b5358e1a499c574fCe6A"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator GetContract_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + Assert.IsNotNull(contract); + Assert.AreEqual(_marketplaceAddress, contract.address); + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_GetAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.GetAll(); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_GetAllValid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.GetAllValid(); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.GreaterOrEqual(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_GetListing_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.GetListing("1"); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_GetTotalCount_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.GetTotalCount(); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(int.Parse(result.Result), 0); + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_IsBuyerApprovedForListing_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.IsBuyerApprovedForListing("1", _marketplaceAddress); + yield return new WaitUntil(() => result.IsCompleted); + if (Utils.IsWebGLBuild()) + { + Assert.IsTrue(result.IsFaulted); + } + else + { + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + } + yield return null; + } + + [UnityTest] + public IEnumerator DirectListings_IsCurrencyApprovedForListing_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.directListings.IsCurrencyApprovedForListing("1", _marketplaceAddress); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetAll(); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetAllValid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetAllValid(); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.GreaterOrEqual(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetAuction_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetAuction("0"); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetBidBufferBps_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetBidBufferBps("0"); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetMinimumNextBid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetMinimumNextBid("0"); + yield return new WaitUntil(() => result.IsCompleted); + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetTotalCount_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetTotalCount(); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(int.Parse(result.Result), 0); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetWinner_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetWinner("0"); + yield return new WaitUntil(() => result.IsCompleted); + if (Utils.IsWebGLBuild()) + { + Assert.IsTrue(result.IsFaulted); + } + else + { + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + } + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_GetWinningBid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.GetWinningBid("0"); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator EnglishAuctions_IsWinningBid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.englishAuctions.IsWinningBid("0", "1"); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator Offers_GetAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.offers.GetAll(); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator Offers_GetAllValid_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.offers.GetAllValid(); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.GreaterOrEqual(result.Result.Count, 0); + yield return null; + } + + [UnityTest] + public IEnumerator Offers_GetOffer_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.offers.GetOffer("0"); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + yield return null; + } + + [UnityTest] + public IEnumerator Offers_GetTotalCount_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_marketplaceAddress); + var result = contract.marketplace.offers.GetTotalCount(); + yield return new WaitUntil(() => result.IsCompleted); + if (result.IsFaulted) + throw result.Exception; + Assert.IsTrue(result.IsCompletedSuccessfully); + Assert.IsNotNull(result.Result); + Assert.Greater(int.Parse(result.Result), 0); + yield return null; + } +} diff --git a/Assets/Tests/MarketplaceReadTests.cs.meta b/Assets/Tests/MarketplaceReadTests.cs.meta new file mode 100644 index 00000000..65c5fe9f --- /dev/null +++ b/Assets/Tests/MarketplaceReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc2db92e25fbf764288457a631a76ef4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PackReadTests.cs b/Assets/Tests/PackReadTests.cs new file mode 100644 index 00000000..4e1cc582 --- /dev/null +++ b/Assets/Tests/PackReadTests.cs @@ -0,0 +1,93 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class PackReadTests : ConfigManager +{ + private GameObject _go; + private string _packAddress = "0xE33653ce510Ee767d8824b5EcDeD27125D49889D"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator Get_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_packAddress); + var packTask = contract.pack.Get("0"); + yield return new WaitUntil(() => packTask.IsCompleted); + Assert.IsTrue(packTask.IsCompletedSuccessfully); + Assert.IsNotNull(packTask.Result); + } + + [UnityTest] + public IEnumerator BalanceOf_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_packAddress); + var packTask = contract.pack.BalanceOf(_packAddress, "0"); + yield return new WaitUntil(() => packTask.IsCompleted); + Assert.IsTrue(packTask.IsCompletedSuccessfully); + Assert.IsNotNull(packTask.Result); + } + + [UnityTest] + public IEnumerator IsApprovedForAll_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_packAddress); + var packTask = contract.pack.IsApprovedForAll(_packAddress, _packAddress); + yield return new WaitUntil(() => packTask.IsCompleted); + Assert.IsTrue(packTask.IsCompletedSuccessfully); + Assert.IsNotNull(packTask.Result); + } + + [UnityTest] + public IEnumerator TotalSupply_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_packAddress); + var packTask = contract.pack.TotalSupply("0"); + yield return new WaitUntil(() => packTask.IsCompleted); + Assert.IsTrue(packTask.IsCompletedSuccessfully); + Assert.IsNotNull(packTask.Result); + Assert.GreaterOrEqual(packTask.Result, BigInteger.Zero); + } + + [UnityTest] + public IEnumerator GetPackContents_Success() + { + var contract = ThirdwebManager.Instance.SDK.GetContract(_packAddress); + var packTask = contract.pack.GetPackContents("0"); + yield return new WaitUntil(() => packTask.IsCompleted); + Assert.IsTrue(packTask.IsCompletedSuccessfully); + Assert.IsNotNull(packTask.Result); + Assert.IsNotNull(packTask.Result.erc20Rewards); + Assert.IsNotNull(packTask.Result.erc721Rewards); + Assert.IsNotNull(packTask.Result.erc1155Rewards); + Assert.GreaterOrEqual(packTask.Result.erc20Rewards.Count, 0); + Assert.GreaterOrEqual(packTask.Result.erc721Rewards.Count, 0); + Assert.GreaterOrEqual(packTask.Result.erc1155Rewards.Count, 0); + } +} diff --git a/Assets/Tests/PackReadTests.cs.meta b/Assets/Tests/PackReadTests.cs.meta new file mode 100644 index 00000000..c0cbb7f4 --- /dev/null +++ b/Assets/Tests/PackReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59574a1c274814d49bb683870842320d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/SmartWalletTests.cs b/Assets/Tests/SmartWalletTests.cs new file mode 100644 index 00000000..74b495ae --- /dev/null +++ b/Assets/Tests/SmartWalletTests.cs @@ -0,0 +1,138 @@ +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class SmartWalletTests : ConfigManager +{ + private GameObject _go; + private string _managedAccountFactory = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052"; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator Connect_WithGaslessManagedAccountFactory_Success() + { + Utils.DeleteLocalAccount(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.factoryAddress = _managedAccountFactory; + ThirdwebManager.Instance.gasless = true; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + var connection = new WalletConnection(provider: WalletProvider.SmartWallet, chainId: 421614, personalWallet: WalletProvider.LocalWallet); + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + Assert.IsTrue(connectTask.IsCompletedSuccessfully); + } + + [UnityTest] + public IEnumerator Deploy_WithSign_Success() + { + yield return Connect_WithGaslessManagedAccountFactory_Success(); + + var task = ThirdwebManager.Instance.SDK.wallet.Sign("Hello World"); + yield return new WaitUntil(() => task.IsCompleted); + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.Length == 132); + } + + [UnityTest] + public IEnumerator CreateSessionKey_WithValidSignerCheck_Success() + { + yield return Connect_WithGaslessManagedAccountFactory_Success(); + + var task = ThirdwebManager.Instance.SDK.wallet.CreateSessionKey( + signerAddress: "0x22b79AD6c6009525933ac2FF40bC9F30dF14Ecfb", + approvedTargets: new List() { "0x450b943729Ddba196Ab58b589Cea545551DF71CC" }, + nativeTokenLimitPerTransactionInWei: "0", + permissionStartTimestamp: "0", + permissionEndTimestamp: (Utils.GetUnixTimeStampNow() + 86400).ToString(), + reqValidityStartTimestamp: "0", + reqValidityEndTimestamp: Utils.GetUnixTimeStampIn10Years().ToString() + ); + yield return new WaitUntil(() => task.IsCompleted); + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + + var getAllActiveSignersTask = ThirdwebManager.Instance.SDK.wallet.GetAllActiveSigners(); + yield return new WaitUntil(() => getAllActiveSignersTask.IsCompleted); + Assert.IsTrue(getAllActiveSignersTask.IsCompletedSuccessfully); + Assert.IsNotNull(getAllActiveSignersTask.Result); + Assert.IsTrue(getAllActiveSignersTask.Result.Count > 0); + + bool exists = false; + foreach (var signer in getAllActiveSignersTask.Result) + { + if (signer.signer == "0x22b79AD6c6009525933ac2FF40bC9F30dF14Ecfb") + { + exists = true; + break; + } + } + Assert.IsTrue(exists); + } + + [UnityTest] + public IEnumerator RevokeSessionKey_WithValidSignerCheck_Success() + { + yield return CreateSessionKey_WithValidSignerCheck_Success(); + + var task = ThirdwebManager.Instance.SDK.wallet.RevokeSessionKey(signerAddress: "0x22b79AD6c6009525933ac2FF40bC9F30dF14Ecfb"); + yield return new WaitUntil(() => task.IsCompleted); + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsTrue(task.Result.receipt.transactionHash.Length == 66); + + var getAllActiveSignersTask = ThirdwebManager.Instance.SDK.wallet.GetAllActiveSigners(); + yield return new WaitUntil(() => getAllActiveSignersTask.IsCompleted); + Assert.IsTrue(getAllActiveSignersTask.IsCompletedSuccessfully); + Assert.IsNotNull(getAllActiveSignersTask.Result); + + bool exists = false; + foreach (var signer in getAllActiveSignersTask.Result) + { + if (signer.signer == "0x22b79AD6c6009525933ac2FF40bC9F30dF14Ecfb") + { + exists = true; + break; + } + } + Assert.IsFalse(exists); + } + + [UnityTest] + public IEnumerator IsDeployed_Success() + { + yield return Deploy_WithSign_Success(); + + var task = ThirdwebManager.Instance.SDK.wallet.IsDeployed(); + yield return new WaitUntil(() => task.IsCompleted); + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsTrue(task.Result); + } +} diff --git a/Assets/Tests/SmartWalletTests.cs.meta b/Assets/Tests/SmartWalletTests.cs.meta new file mode 100644 index 00000000..69d84804 --- /dev/null +++ b/Assets/Tests/SmartWalletTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ca0b4d50a497b7468bcd0961703d3de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/StorageTests.cs b/Assets/Tests/StorageTests.cs new file mode 100644 index 00000000..9834609c --- /dev/null +++ b/Assets/Tests/StorageTests.cs @@ -0,0 +1,203 @@ +using System.Collections; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class StorageTests : ConfigManager +{ + private GameObject _go; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator Gateway_WithoutClientId_Success() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.storage); + Assert.AreEqual(ThirdwebManager.Instance.SDK.storage.IPFSGateway, "https://cloudflare-ipfs.com/ipfs/"); + + string testIpfsRawUrl = "ipfs://Qblabla"; + Assert.AreEqual(Utils.ReplaceIPFS(testIpfsRawUrl), "https://cloudflare-ipfs.com/ipfs/Qblabla"); + + yield return null; + } + + [UnityTest] + public IEnumerator Gateway_WithClientId_Success() + { + string clientId = "hello"; + ThirdwebManager.Instance.clientId = clientId; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.storage); + Assert.AreEqual(ThirdwebManager.Instance.SDK.storage.IPFSGateway, $"https://{clientId}.ipfscdn.io/ipfs/"); + + string testIpfsRawUrl = "ipfs://Qblabla"; + Assert.AreEqual(Utils.ReplaceIPFS(testIpfsRawUrl), $"https://{clientId}.ipfscdn.io/ipfs/Qblabla"); + + yield return null; + } + + [UnityTest] + public IEnumerator Gateway_WithOverride_Success() + { + string ipfsGatewayUrl = "https://ipfs.io/ipfs/"; + ThirdwebManager.Instance.storageIpfsGatewayUrl = ipfsGatewayUrl; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.storage); + Assert.AreEqual(ThirdwebManager.Instance.SDK.storage.IPFSGateway, ipfsGatewayUrl); + + string testIpfsRawUrl = "ipfs://Qblabla"; + Assert.AreEqual(Utils.ReplaceIPFS(testIpfsRawUrl), "https://ipfs.io/ipfs/Qblabla"); + + yield return null; + } + + [UnityTest] + public IEnumerator DownloadText_WithoutIPFS_Success() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string url = "https://www.gutenberg.org/files/11/11-0.txt"; + if (Utils.IsWebGLBuild()) + url = "https://thingproxy.freeboard.io/fetch/" + url; + + var downloadTask = ThirdwebManager.Instance.SDK.storage.DownloadText(url); + yield return new WaitUntil(() => downloadTask.IsCompleted); + Assert.IsTrue(downloadTask.IsCompletedSuccessfully); + Assert.IsNotNull(downloadTask.Result); + Assert.IsTrue(downloadTask.Result.Length > 0); + Assert.IsTrue(downloadTask.Result.Contains("*** START OF THE PROJECT GUTENBERG EBOOK")); + } + + [UnityTest] + public IEnumerator DownloadImage_WithoutIPFS_Success() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string url = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"; + + var downloadTask = ThirdwebManager.Instance.SDK.storage.DownloadImage(url); + yield return new WaitUntil(() => downloadTask.IsCompleted); + Assert.IsTrue(downloadTask.IsCompletedSuccessfully); + Assert.IsNotNull(downloadTask.Result); + Assert.IsTrue(downloadTask.Result.texture.width > 0); + Assert.IsTrue(downloadTask.Result.texture.height > 0); + } + + [UnityTest] + public IEnumerator DownloadText_WithIPFS_Success() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string url = "ipfs://QmNQ2djT2u4my5xpKPgJMnQEpoNjYZE8ugpLndvgEJBb3X"; + + var downloadTask = ThirdwebManager.Instance.SDK.storage.DownloadText(url); + yield return new WaitUntil(() => downloadTask.IsCompleted); + Assert.IsTrue(downloadTask.IsCompletedSuccessfully); + Assert.IsNotNull(downloadTask.Result); + Assert.IsTrue(downloadTask.Result.Length > 0); + Assert.IsTrue(downloadTask.Result.StartsWith("{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\"")); + } + + [UnityTest] + public IEnumerator DownloadImage_WithIPFS_Success() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string url = "ipfs://QmfNyxShuV6Nrt3CLLdgaBPXfVr5MAbeWTHFCt8TZFsxgW/6.png"; + + var downloadTask = ThirdwebManager.Instance.SDK.storage.DownloadImage(url); + yield return new WaitUntil(() => downloadTask.IsCompleted); + Assert.IsTrue(downloadTask.IsCompletedSuccessfully); + Assert.IsNotNull(downloadTask.Result); + Assert.IsTrue(downloadTask.Result.texture.width > 0); + Assert.IsTrue(downloadTask.Result.texture.height > 0); + } + + [UnityTest] + public IEnumerator UploadText_WithoutClientId_Fail() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string text = "Hello World!"; + var uploadTask = ThirdwebManager.Instance.SDK.storage.UploadText(text); + yield return new WaitUntil(() => uploadTask.IsCompleted); + Assert.IsTrue(uploadTask.IsFaulted); + } + + [UnityTest] + public IEnumerator UploadText_WithClientId_Success() + { + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string text = "Hello World!"; + var uploadTask = ThirdwebManager.Instance.SDK.storage.UploadText(text); + yield return new WaitUntil(() => uploadTask.IsCompleted); + Assert.IsTrue(uploadTask.IsCompletedSuccessfully); + Assert.IsNotNull(uploadTask.Result); + Assert.IsNotNull(uploadTask.Result.IpfsHash); + + string url = "ipfs://" + uploadTask.Result.IpfsHash; + var downloadTask = ThirdwebManager.Instance.SDK.storage.DownloadText(url); + yield return new WaitUntil(() => downloadTask.IsCompleted); + Assert.IsTrue(downloadTask.IsCompletedSuccessfully); + Assert.IsNotNull(downloadTask.Result); + Assert.AreEqual(downloadTask.Result, text); + } + + [UnityTest] + public IEnumerator UploadFromPath_WithoutClientId_Fail() + { + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string path = Application.persistentDataPath + "/myObject.json"; + if (System.IO.File.Exists(path)) + System.IO.File.Delete(path); + System.IO.File.WriteAllText(path, "{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\"}"); + + yield return new WaitForSeconds(3f); + + var uploadTask = ThirdwebManager.Instance.SDK.storage.UploadFromPath(path); + yield return new WaitUntil(() => uploadTask.IsCompleted); + Assert.IsTrue(uploadTask.IsFaulted); + } + + [UnityTest] + public IEnumerator UploadFromPath_WithClientId_Success() + { + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + + string path = Application.persistentDataPath + "/myObject.json"; + if (System.IO.File.Exists(path)) + System.IO.File.Delete(path); + System.IO.File.WriteAllText(path, "{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\"}"); + + var uploadTask = ThirdwebManager.Instance.SDK.storage.UploadFromPath(path); + yield return new WaitUntil(() => uploadTask.IsCompleted); + Assert.IsTrue(uploadTask.IsCompletedSuccessfully); + Assert.IsNotNull(uploadTask.Result); + Assert.IsNotNull(uploadTask.Result.IpfsHash); + } +} diff --git a/Assets/Tests/StorageTests.cs.meta b/Assets/Tests/StorageTests.cs.meta new file mode 100644 index 00000000..7ce16edb --- /dev/null +++ b/Assets/Tests/StorageTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d66ce0994e30438439de11ed8635105d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Thirdweb.Test.asmdef b/Assets/Tests/Thirdweb.Test.asmdef new file mode 100644 index 00000000..fa66fd9b --- /dev/null +++ b/Assets/Tests/Thirdweb.Test.asmdef @@ -0,0 +1,24 @@ +{ + "name": "Thirdweb.Test", + "rootNamespace": "Thirdweb.Test", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "Thirdweb.Core" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll", + "Nethereum.ABI.dll", + "Nethereum.Contracts.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Tests/Thirdweb.Test.asmdef.meta b/Assets/Tests/Thirdweb.Test.asmdef.meta new file mode 100644 index 00000000..297e8987 --- /dev/null +++ b/Assets/Tests/Thirdweb.Test.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d4ebc967d146d1a4f9344bfc46aeab76 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/ThirdwebManagerTests.cs b/Assets/Tests/ThirdwebManagerTests.cs new file mode 100644 index 00000000..1acd0908 --- /dev/null +++ b/Assets/Tests/ThirdwebManagerTests.cs @@ -0,0 +1,199 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class ThirdwebManagerTests : ConfigManager +{ + private GameObject _go; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator SingletonPattern_Enforcement_Success() + { + var go2 = new GameObject("ThirdwebManagerSecond"); + go2.AddComponent(); + yield return null; + + Assert.IsTrue(go2 == null || go2.Equals(null)); + Assert.IsNotNull(ThirdwebManager.Instance); + } + + [UnityTest] + public IEnumerator Initialization_HappyPath() + { + Assert.IsNotNull(ThirdwebManager.Instance); + Assert.IsNull(ThirdwebManager.Instance.SDK); + + string chain = "Arbitrum Sepolia"; + BigInteger chainId = 421614; + string chainIdHex = chainId.BigIntToHex(); + string rpc = null; + ThirdwebManager.Instance.supportedChains = new List { new(chain, chainId.ToString(), rpc), }; + ThirdwebManager.Instance.Initialize(chain); + yield return null; + + string expectedRpc = $"https://{chainId}.rpc.thirdweb.com/"; + Assert.IsNotNull(ThirdwebManager.Instance.SDK); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.Options); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.ChainId); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.RPC); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.CurrentChainData); + + Assert.IsNull(ThirdwebManager.Instance.SDK.session.ActiveWallet); + Assert.GreaterOrEqual(ThirdwebSession.Nonce, 0); + + Assert.AreEqual(chainId, ThirdwebManager.Instance.SDK.session.ChainId); + Assert.AreEqual(chainIdHex, ThirdwebManager.Instance.SDK.session.CurrentChainData.chainId); + + Assert.AreEqual(expectedRpc, ThirdwebManager.Instance.SDK.session.RPC); + Assert.AreEqual(expectedRpc, ThirdwebManager.Instance.SDK.session.CurrentChainData.rpcUrls[0]); + + Assert.AreEqual(chain, ThirdwebManager.Instance.SDK.session.CurrentChainData.chainName); + } + + [UnityTest] + public IEnumerator Initialization_WithDefaultChain_Success() + { + ThirdwebManager.Instance.Initialize(ThirdwebManager.Instance.activeChain); + yield return null; + + Assert.IsNotNull(ThirdwebManager.Instance.SDK); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.Options); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.ChainId); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.RPC); + Assert.IsNotNull(ThirdwebManager.Instance.SDK.session.CurrentChainData); + Assert.IsNull(ThirdwebManager.Instance.SDK.session.ActiveWallet); + + var chainData = ThirdwebManager.Instance.supportedChains.Find(c => c.identifier == ThirdwebManager.Instance.activeChain); + Assert.AreEqual(chainData.chainId, ThirdwebManager.Instance.SDK.session.ChainId.ToString()); + Assert.AreEqual(BigInteger.Parse(chainData.chainId).BigIntToHex(), ThirdwebManager.Instance.SDK.session.CurrentChainData.chainId); + } + + [UnityTest] + public IEnumerator Initialization_WithRpcOverride_AppliesCorrectly() + { + string chain = "ethereum"; + string customRpc = "https://custom.rpc.url/"; + ThirdwebManager.Instance.supportedChains = new List { new ChainData(chain, "1", customRpc), }; + ThirdwebManager.Instance.Initialize(chain); + yield return null; + + Assert.AreEqual(customRpc, ThirdwebManager.Instance.SDK.session.RPC); + Assert.AreEqual(customRpc, ThirdwebManager.Instance.SDK.session.CurrentChainData.rpcUrls[0]); + } + + [UnityTest] + public IEnumerator Initialization_WithUnsupportedActiveChain_Throws() + { + string unsupportedChain = "unsupported-chain"; + Exception caughtException = null; + + try + { + ThirdwebManager.Instance.Initialize(unsupportedChain); + } + catch (Exception ex) + { + caughtException = ex; + } + + Assert.IsNotNull(caughtException); + Assert.IsInstanceOf(caughtException); + Assert.AreEqual(caughtException.Message, "Please add your active chain to the supported chains list! See https://thirdweb.com/dashboard/rpc for a list of supported chains."); + yield return null; + } + + [UnityTest] + public IEnumerator Initialization_WithUnknownChain_ConnectsButFails() + { + string chain = "Invalid Chain"; + BigInteger chainId = 1928347172371129831; + ThirdwebManager.Instance.supportedChains = new List { new(chain, chainId.ToString(), null), }; + ThirdwebManager.Instance.Initialize(chain); + Assert.IsTrue(ThirdwebManager.Instance.SDK.session.CurrentChainData.chainName.Contains("Unknown Chain")); + + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(new WalletConnection(provider: WalletProvider.LocalWallet, chainId: chainId)); + yield return new WaitUntil(() => connectTask.IsCompleted); + Assert.IsTrue(Utils.IsWebGLBuild() ? connectTask.IsFaulted : connectTask.IsCompletedSuccessfully); + + var rpcTask = ThirdwebManager.Instance.SDK.wallet.GetBalance(); + yield return new WaitUntil(() => rpcTask.IsCompleted); + Assert.IsTrue(rpcTask.IsFaulted); + } + + [UnityTest] + public IEnumerator Initialization_WithClientIdNoBundleIdOverride_AppliesCorrectly() + { + ThirdwebManager.Instance.clientId = "testClientId"; + Assert.IsNull(ThirdwebManager.Instance.bundleIdOverride); + + string bundleId = Utils.GetBundleId(); + Assert.IsNotNull(bundleId); + + ThirdwebManager.Instance.supportedChains = new List { new("arbitrum-sepolia", "421614", null), }; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + yield return null; + + Assert.AreEqual(ThirdwebManager.Instance.clientId, ThirdwebManager.Instance.SDK.session.Options.clientId); + Assert.AreEqual(bundleId, ThirdwebManager.Instance.SDK.session.Options.bundleId); + if (Utils.IsWebGLBuild()) + { + Assert.AreEqual(ThirdwebManager.Instance.SDK.session.RPC, $"https://421614.rpc.thirdweb.com/{ThirdwebManager.Instance.clientId}"); + } + else + { + Assert.AreEqual(ThirdwebManager.Instance.SDK.session.RPC, $"https://421614.rpc.thirdweb.com/{ThirdwebManager.Instance.clientId}?bundleId={bundleId}"); + } + } + + [UnityTest] + public IEnumerator Initialization_WithClientIdAndBundleIdOverride_AppliesCorrectly() + { + ThirdwebManager.Instance.clientId = "testClientId"; + ThirdwebManager.Instance.bundleIdOverride = "com.example.test"; + + ThirdwebManager.Instance.supportedChains = new List { new("arbitrum-sepolia", "421614", null), }; + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + yield return null; + + // Validate that the SDK session has correctly applied clientId and bundleId + Assert.AreEqual(ThirdwebManager.Instance.clientId, ThirdwebManager.Instance.SDK.session.Options.clientId); + Assert.AreEqual("com.example.test", ThirdwebManager.Instance.SDK.session.Options.bundleId); + + if (Utils.IsWebGLBuild()) + { + Assert.AreEqual(ThirdwebManager.Instance.SDK.session.RPC, $"https://421614.rpc.thirdweb.com/{ThirdwebManager.Instance.clientId}"); + } + else + { + Assert.AreEqual(ThirdwebManager.Instance.SDK.session.RPC, $"https://421614.rpc.thirdweb.com/{ThirdwebManager.Instance.clientId}?bundleId={ThirdwebManager.Instance.bundleIdOverride}"); + } + } +} diff --git a/Assets/Tests/ThirdwebManagerTests.cs.meta b/Assets/Tests/ThirdwebManagerTests.cs.meta new file mode 100644 index 00000000..4784e08f --- /dev/null +++ b/Assets/Tests/ThirdwebManagerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8385e785f9f77e04687fd39d3133b0f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/TransactionReadTests.cs b/Assets/Tests/TransactionReadTests.cs new file mode 100644 index 00000000..22c59e8b --- /dev/null +++ b/Assets/Tests/TransactionReadTests.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class TransactionReadTests : ConfigManager +{ + private GameObject _go; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize("arbitrum-sepolia"); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator Static_WaitForTransactionResult_Success() + { + string txHash = "0x52b79681f549d7b01b12b8be5fa9dd88f7fee1411f965cbe7ec6e157ccb48af1"; + var task = Transaction.WaitForTransactionResult(txHash); + yield return new WaitUntil(() => task.IsCompleted); + Assert.IsTrue(task.IsCompletedSuccessfully); + Assert.IsNotNull(task.Result); + Assert.IsNotNull(task.Result.receipt.blockNumber); + Assert.Greater(task.Result.receipt.blockNumber, BigInteger.Zero); + } +} diff --git a/Assets/Tests/TransactionReadTests.cs.meta b/Assets/Tests/TransactionReadTests.cs.meta new file mode 100644 index 00000000..0a9feb8c --- /dev/null +++ b/Assets/Tests/TransactionReadTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05e167cd9e2be604e9d5028059e7142a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/WalletTests.cs b/Assets/Tests/WalletTests.cs new file mode 100644 index 00000000..242cbbca --- /dev/null +++ b/Assets/Tests/WalletTests.cs @@ -0,0 +1,244 @@ +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +using NUnit.Framework; +using Thirdweb; +using UnityEngine; +using UnityEngine.TestTools; + +public class WalletTests : ConfigManager +{ + private GameObject _go; + private string _chain = "arbitrum-sepolia"; + private BigInteger _chainId = 421614; + + [SetUp] + public void SetUp() + { + var existingManager = GameObject.FindObjectOfType(); + if (existingManager != null) + GameObject.DestroyImmediate(existingManager.gameObject); + + _go = new GameObject("ThirdwebManager"); + _go.AddComponent(); + + ThirdwebManager.Instance.clientId = GetClientId(); + ThirdwebManager.Instance.Initialize(_chain); + } + + [TearDown] + public void TearDown() + { + if (_go != null) + { + GameObject.DestroyImmediate(_go); + _go = null; + } + } + + [UnityTest] + public IEnumerator Connect_WithLocalWallet_Success() + { + Utils.DeleteLocalAccount(); + var connection = new WalletConnection(provider: WalletProvider.LocalWallet, chainId: _chainId, password: null); // device uid + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + Assert.IsTrue(connectTask.IsCompletedSuccessfully); + Assert.IsNotNull(connectTask.Result); + Assert.IsTrue(connectTask.Result.Length == 42); + } + + [UnityTest] + public IEnumerator Connect_WithLocalWallet_Fail() + { + yield return Connect_WithLocalWallet_Success(); + + var disconnectTask = ThirdwebManager.Instance.SDK.wallet.Disconnect(); + yield return new WaitUntil(() => disconnectTask.IsCompleted); + if (disconnectTask.IsFaulted) + throw disconnectTask.Exception; + Assert.IsTrue(disconnectTask.IsCompletedSuccessfully); + + var connection = new WalletConnection(provider: WalletProvider.LocalWallet, chainId: _chainId, password: "wrongpassword"); + var connectTask = ThirdwebManager.Instance.SDK.wallet.Connect(connection); + yield return new WaitUntil(() => connectTask.IsCompleted); + Assert.IsTrue(connectTask.IsFaulted); + } + + [UnityTest] + public IEnumerator Disconnect_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var disconnectTask = ThirdwebManager.Instance.SDK.wallet.Disconnect(); + yield return new WaitUntil(() => disconnectTask.IsCompleted); + Assert.IsTrue(disconnectTask.IsCompletedSuccessfully); + + var getAddressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => getAddressTask.IsCompleted); + Assert.IsTrue(getAddressTask.IsFaulted); + } + + [UnityTest] + public IEnumerator Export_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var exportTask = ThirdwebManager.Instance.SDK.wallet.Export(null); + yield return new WaitUntil(() => exportTask.IsCompleted); + Assert.IsTrue(exportTask.IsCompletedSuccessfully); + Assert.IsNotNull(exportTask.Result); + Assert.IsTrue(exportTask.Result.Length > 0); + } + + [UnityTest] + public IEnumerator Authenticate_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var authenticateTask = ThirdwebManager.Instance.SDK.wallet.Authenticate("example.com"); + yield return new WaitUntil(() => authenticateTask.IsCompleted); + Assert.IsTrue(authenticateTask.IsCompletedSuccessfully); + Assert.IsNotNull(authenticateTask.Result); + Assert.IsTrue(authenticateTask.Result.signature.Length == 132); + } + + [UnityTest] + public IEnumerator Verify_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var authenticateTask = ThirdwebManager.Instance.SDK.wallet.Authenticate("example.com"); + yield return new WaitUntil(() => authenticateTask.IsCompleted); + Assert.IsTrue(authenticateTask.IsCompletedSuccessfully); + Assert.IsNotNull(authenticateTask.Result); + Assert.IsTrue(authenticateTask.Result.signature.Length == 132); + + var verifyTask = ThirdwebManager.Instance.SDK.wallet.Verify(authenticateTask.Result); + yield return new WaitUntil(() => verifyTask.IsCompleted); + Assert.IsTrue(verifyTask.IsCompletedSuccessfully); + + var getAddressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => getAddressTask.IsCompleted); + Assert.IsTrue(getAddressTask.IsCompletedSuccessfully); + Assert.AreEqual(verifyTask.Result, getAddressTask.Result); + } + + [UnityTest] + public IEnumerator GetBalance_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var getBalanceTask = ThirdwebManager.Instance.SDK.wallet.GetBalance(); + yield return new WaitUntil(() => getBalanceTask.IsCompleted); + Assert.IsTrue(getBalanceTask.IsCompletedSuccessfully); + Assert.IsNotNull(getBalanceTask.Result); + Assert.IsTrue(getBalanceTask.Result.value == "0"); + } + + [UnityTest] + public IEnumerator GetAddress_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var getAddressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => getAddressTask.IsCompleted); + Assert.IsTrue(getAddressTask.IsCompletedSuccessfully); + Assert.IsNotNull(getAddressTask.Result); + Assert.IsTrue(getAddressTask.Result.Length == 42); + } + + [UnityTest] + public IEnumerator GetAddress_WithLocalWallet_Fail() + { + yield return Connect_WithLocalWallet_Success(); + + var disconnectTask = ThirdwebManager.Instance.SDK.wallet.Disconnect(); + yield return new WaitUntil(() => disconnectTask.IsCompleted); + Assert.IsTrue(disconnectTask.IsCompletedSuccessfully); + + var getAddressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => getAddressTask.IsCompleted); + Assert.IsTrue(getAddressTask.IsFaulted); + } + + [UnityTest] + public IEnumerator IsConnected_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var isConnectedTask = ThirdwebManager.Instance.SDK.wallet.IsConnected(); + yield return new WaitUntil(() => isConnectedTask.IsCompleted); + Assert.IsTrue(isConnectedTask.IsCompletedSuccessfully); + Assert.IsTrue(isConnectedTask.Result); + } + + [UnityTest] + public IEnumerator IsConnected_WithLocalWallet_Fail() + { + var isConnectedTask = ThirdwebManager.Instance.SDK.wallet.IsConnected(); + yield return new WaitUntil(() => isConnectedTask.IsCompleted); + Assert.IsTrue(isConnectedTask.IsCompletedSuccessfully); + Assert.IsFalse(isConnectedTask.Result); + } + + [UnityTest] + public IEnumerator GetChainId_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var getChainIdTask = ThirdwebManager.Instance.SDK.wallet.GetChainId(); + yield return new WaitUntil(() => getChainIdTask.IsCompleted); + Assert.IsTrue(getChainIdTask.IsCompletedSuccessfully); + Assert.AreEqual(getChainIdTask.Result, _chainId); + } + + [UnityTest] + public IEnumerator Transfer_WithLocalWallet_Fail() + { + yield return Connect_WithLocalWallet_Success(); + + var randomAddress = "0x0C741CBb712708b866764C82096dDfA7976B8e0c"; + var transferTask = ThirdwebManager.Instance.SDK.wallet.Transfer(to: randomAddress, amount: "0"); + yield return new WaitUntil(() => transferTask.IsCompleted); + Assert.IsTrue(transferTask.IsFaulted); + } + + [UnityTest] + public IEnumerator Sign_WithLocalWallet_Success() + { + yield return Connect_WithLocalWallet_Success(); + + var message = "Hello World!"; + var signTask = ThirdwebManager.Instance.SDK.wallet.Sign(message); + yield return new WaitUntil(() => signTask.IsCompleted); + Assert.IsTrue(signTask.IsCompletedSuccessfully); + Assert.IsNotNull(signTask.Result); + Assert.IsTrue(signTask.Result.Length == 132); + } + + [UnityTest] + public IEnumerator SendRawTransaction_WithLocalWallet_Fail() + { + yield return Connect_WithLocalWallet_Success(); + + var randomAddress = "0x0C741CBb712708b866764C82096dDfA7976B8e0c"; + + var addressTask = ThirdwebManager.Instance.SDK.wallet.GetAddress(); + yield return new WaitUntil(() => addressTask.IsCompleted); + Assert.IsTrue(addressTask.IsCompletedSuccessfully); + + var sendRawTransactionTask = ThirdwebManager.Instance.SDK.wallet.SendRawTransaction( + new TransactionRequest() + { + from = addressTask.Result, + to = randomAddress, + data = "0x", + value = "0", + gasLimit = "0", + } + ); + yield return new WaitUntil(() => sendRawTransactionTask.IsCompleted); + Assert.IsTrue(sendRawTransactionTask.IsFaulted); + } +} diff --git a/Assets/Tests/WalletTests.cs.meta b/Assets/Tests/WalletTests.cs.meta new file mode 100644 index 00000000..d848e259 --- /dev/null +++ b/Assets/Tests/WalletTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd1dfbb369a90584387d11fafa572fab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb.meta b/Assets/Thirdweb.meta new file mode 100644 index 00000000..eca29c68 --- /dev/null +++ b/Assets/Thirdweb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7466a5cd73d0c4e70ac7228d304de949 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core.meta b/Assets/Thirdweb/Core.meta new file mode 100644 index 00000000..a0de06ae --- /dev/null +++ b/Assets/Thirdweb/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a2641208cc1eaa41bb5bebbf39dc085 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Config.meta b/Assets/Thirdweb/Core/Config.meta new file mode 100644 index 00000000..cfb679eb --- /dev/null +++ b/Assets/Thirdweb/Core/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5388e7fbcd21c64590dc1def16b8eb6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs b/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs new file mode 100644 index 00000000..6ee4eb01 --- /dev/null +++ b/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace Thirdweb +{ + [CreateAssetMenu(fileName = "ThirdwebConfig", menuName = "Thirdweb/Configuration", order = 1)] + public class ThirdwebConfig : ScriptableObject + { + [Header("When using OAuth2 (e.g. Google) to login on mobile, you can provide a redirect URL such as 'myapp://'.\nMake sure you do a Clean Build every time you update it.")] + public string customScheme; + } +} diff --git a/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs.meta b/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs.meta new file mode 100644 index 00000000..e1260e68 --- /dev/null +++ b/Assets/Thirdweb/Core/Config/ThirdwebConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c12f2a63ad594847be573f9dd0877ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions.meta b/Assets/Thirdweb/Core/Contract Definitions.meta new file mode 100644 index 00000000..74585577 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56231ce9edc36c34db2e808a0189353b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account.meta b/Assets/Thirdweb/Core/Contract Definitions/Account.meta new file mode 100644 index 00000000..c941b61b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 061ebfd316f91fe4582b783ba02fdc87 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs b/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs new file mode 100644 index 00000000..1f6b7c01 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs @@ -0,0 +1,647 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.Account.ContractDefinition; + +namespace Thirdweb.Contracts.Account +{ + public partial class AccountService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + AccountDeployment accountDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(accountDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, AccountDeployment accountDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(accountDeployment); + } + + public static async Task DeployContractAndGetServiceAsync(Nethereum.Web3.Web3 web3, AccountDeployment accountDeployment, CancellationTokenSource cancellationTokenSource = null) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, accountDeployment, cancellationTokenSource); + return new AccountService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.IWeb3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public AccountService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public AccountService(Nethereum.Web3.IWeb3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task AddDepositRequestAsync(AddDepositFunction addDepositFunction) + { + return ContractHandler.SendRequestAsync(addDepositFunction); + } + + public Task AddDepositRequestAsync() + { + return ContractHandler.SendRequestAsync(); + } + + public Task AddDepositRequestAndWaitForReceiptAsync(AddDepositFunction addDepositFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(addDepositFunction, cancellationToken); + } + + public Task AddDepositRequestAndWaitForReceiptAsync(CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(null, cancellationToken); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task EntryPointQueryAsync(EntryPointFunction entryPointFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(entryPointFunction, blockParameter); + } + + public Task EntryPointQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ExecuteRequestAsync(ExecuteFunction executeFunction) + { + return ContractHandler.SendRequestAsync(executeFunction); + } + + public Task ExecuteRequestAndWaitForReceiptAsync(ExecuteFunction executeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeFunction, cancellationToken); + } + + public Task ExecuteRequestAsync(string target, BigInteger value, byte[] calldata) + { + var executeFunction = new ExecuteFunction(); + executeFunction.Target = target; + executeFunction.Value = value; + executeFunction.Calldata = calldata; + + return ContractHandler.SendRequestAsync(executeFunction); + } + + public Task ExecuteRequestAndWaitForReceiptAsync(string target, BigInteger value, byte[] calldata, CancellationTokenSource cancellationToken = null) + { + var executeFunction = new ExecuteFunction(); + executeFunction.Target = target; + executeFunction.Value = value; + executeFunction.Calldata = calldata; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeFunction, cancellationToken); + } + + public Task ExecuteBatchRequestAsync(ExecuteBatchFunction executeBatchFunction) + { + return ContractHandler.SendRequestAsync(executeBatchFunction); + } + + public Task ExecuteBatchRequestAndWaitForReceiptAsync(ExecuteBatchFunction executeBatchFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeBatchFunction, cancellationToken); + } + + public Task ExecuteBatchRequestAsync(List target, List value, List calldata) + { + var executeBatchFunction = new ExecuteBatchFunction(); + executeBatchFunction.Target = target; + executeBatchFunction.Value = value; + executeBatchFunction.Calldata = calldata; + + return ContractHandler.SendRequestAsync(executeBatchFunction); + } + + public Task ExecuteBatchRequestAndWaitForReceiptAsync(List target, List value, List calldata, CancellationTokenSource cancellationToken = null) + { + var executeBatchFunction = new ExecuteBatchFunction(); + executeBatchFunction.Target = target; + executeBatchFunction.Value = value; + executeBatchFunction.Calldata = calldata; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeBatchFunction, cancellationToken); + } + + public Task FactoryQueryAsync(FactoryFunction factoryFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(factoryFunction, blockParameter); + } + + public Task FactoryQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetAllActiveSignersQueryAsync(GetAllActiveSignersFunction getAllActiveSignersFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getAllActiveSignersFunction, blockParameter); + } + + public Task GetAllActiveSignersQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task> GetAllAdminsQueryAsync(GetAllAdminsFunction getAllAdminsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(getAllAdminsFunction, blockParameter); + } + + public Task> GetAllAdminsQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(null, blockParameter); + } + + public Task GetAllSignersQueryAsync(GetAllSignersFunction getAllSignersFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getAllSignersFunction, blockParameter); + } + + public Task GetAllSignersQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetMessageHashQueryAsync(GetMessageHashFunction getMessageHashFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getMessageHashFunction, blockParameter); + } + + public Task GetMessageHashQueryAsync(byte[] hash, BlockParameter blockParameter = null) + { + var getMessageHashFunction = new GetMessageHashFunction(); + getMessageHashFunction.Hash = hash; + + return ContractHandler.QueryAsync(getMessageHashFunction, blockParameter); + } + + public Task GetNonceQueryAsync(GetNonceFunction getNonceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getNonceFunction, blockParameter); + } + + public Task GetNonceQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetPermissionsForSignerQueryAsync(GetPermissionsForSignerFunction getPermissionsForSignerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPermissionsForSignerFunction, blockParameter); + } + + public Task GetPermissionsForSignerQueryAsync(string signer, BlockParameter blockParameter = null) + { + var getPermissionsForSignerFunction = new GetPermissionsForSignerFunction(); + getPermissionsForSignerFunction.Signer = signer; + + return ContractHandler.QueryDeserializingToObjectAsync(getPermissionsForSignerFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync(string defaultAdmin, byte[] data) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Data = data; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(string defaultAdmin, byte[] data, CancellationTokenSource cancellationToken = null) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsActiveSignerQueryAsync(IsActiveSignerFunction isActiveSignerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isActiveSignerFunction, blockParameter); + } + + public Task IsActiveSignerQueryAsync(string signer, BlockParameter blockParameter = null) + { + var isActiveSignerFunction = new IsActiveSignerFunction(); + isActiveSignerFunction.Signer = signer; + + return ContractHandler.QueryAsync(isActiveSignerFunction, blockParameter); + } + + public Task IsAdminQueryAsync(IsAdminFunction isAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isAdminFunction, blockParameter); + } + + public Task IsAdminQueryAsync(string account, BlockParameter blockParameter = null) + { + var isAdminFunction = new IsAdminFunction(); + isAdminFunction.Account = account; + + return ContractHandler.QueryAsync(isAdminFunction, blockParameter); + } + + public Task IsValidSignatureQueryAsync(IsValidSignatureFunction isValidSignatureFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isValidSignatureFunction, blockParameter); + } + + public Task IsValidSignatureQueryAsync(byte[] hash, byte[] signature, BlockParameter blockParameter = null) + { + var isValidSignatureFunction = new IsValidSignatureFunction(); + isValidSignatureFunction.Hash = hash; + isValidSignatureFunction.Signature = signature; + + return ContractHandler.QueryAsync(isValidSignatureFunction, blockParameter); + } + + public Task IsValidSignerQueryAsync(IsValidSignerFunction isValidSignerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isValidSignerFunction, blockParameter); + } + + public Task IsValidSignerQueryAsync(string signer, UserOperation userOp, BlockParameter blockParameter = null) + { + var isValidSignerFunction = new IsValidSignerFunction(); + isValidSignerFunction.Signer = signer; + isValidSignerFunction.UserOp = userOp; + + return ContractHandler.QueryAsync(isValidSignerFunction, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task OnERC1155BatchReceivedRequestAsync(OnERC1155BatchReceivedFunction onERC1155BatchReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC1155BatchReceivedFunction); + } + + public Task OnERC1155BatchReceivedRequestAndWaitForReceiptAsync( + OnERC1155BatchReceivedFunction onERC1155BatchReceivedFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155BatchReceivedFunction, cancellationToken); + } + + public Task OnERC1155BatchReceivedRequestAsync(string returnValue1, string returnValue2, List returnValue3, List returnValue4, byte[] returnValue5) + { + var onERC1155BatchReceivedFunction = new OnERC1155BatchReceivedFunction(); + onERC1155BatchReceivedFunction.ReturnValue1 = returnValue1; + onERC1155BatchReceivedFunction.ReturnValue2 = returnValue2; + onERC1155BatchReceivedFunction.ReturnValue3 = returnValue3; + onERC1155BatchReceivedFunction.ReturnValue4 = returnValue4; + onERC1155BatchReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAsync(onERC1155BatchReceivedFunction); + } + + public Task OnERC1155BatchReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + List returnValue3, + List returnValue4, + byte[] returnValue5, + CancellationTokenSource cancellationToken = null + ) + { + var onERC1155BatchReceivedFunction = new OnERC1155BatchReceivedFunction(); + onERC1155BatchReceivedFunction.ReturnValue1 = returnValue1; + onERC1155BatchReceivedFunction.ReturnValue2 = returnValue2; + onERC1155BatchReceivedFunction.ReturnValue3 = returnValue3; + onERC1155BatchReceivedFunction.ReturnValue4 = returnValue4; + onERC1155BatchReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155BatchReceivedFunction, cancellationToken); + } + + public Task OnERC1155ReceivedRequestAsync(OnERC1155ReceivedFunction onERC1155ReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC1155ReceivedFunction); + } + + public Task OnERC1155ReceivedRequestAndWaitForReceiptAsync(OnERC1155ReceivedFunction onERC1155ReceivedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155ReceivedFunction, cancellationToken); + } + + public Task OnERC1155ReceivedRequestAsync(string returnValue1, string returnValue2, BigInteger returnValue3, BigInteger returnValue4, byte[] returnValue5) + { + var onERC1155ReceivedFunction = new OnERC1155ReceivedFunction(); + onERC1155ReceivedFunction.ReturnValue1 = returnValue1; + onERC1155ReceivedFunction.ReturnValue2 = returnValue2; + onERC1155ReceivedFunction.ReturnValue3 = returnValue3; + onERC1155ReceivedFunction.ReturnValue4 = returnValue4; + onERC1155ReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAsync(onERC1155ReceivedFunction); + } + + public Task OnERC1155ReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + BigInteger returnValue3, + BigInteger returnValue4, + byte[] returnValue5, + CancellationTokenSource cancellationToken = null + ) + { + var onERC1155ReceivedFunction = new OnERC1155ReceivedFunction(); + onERC1155ReceivedFunction.ReturnValue1 = returnValue1; + onERC1155ReceivedFunction.ReturnValue2 = returnValue2; + onERC1155ReceivedFunction.ReturnValue3 = returnValue3; + onERC1155ReceivedFunction.ReturnValue4 = returnValue4; + onERC1155ReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155ReceivedFunction, cancellationToken); + } + + public Task OnERC721ReceivedRequestAsync(OnERC721ReceivedFunction onERC721ReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC721ReceivedFunction); + } + + public Task OnERC721ReceivedRequestAndWaitForReceiptAsync(OnERC721ReceivedFunction onERC721ReceivedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC721ReceivedFunction, cancellationToken); + } + + public Task OnERC721ReceivedRequestAsync(string returnValue1, string returnValue2, BigInteger returnValue3, byte[] returnValue4) + { + var onERC721ReceivedFunction = new OnERC721ReceivedFunction(); + onERC721ReceivedFunction.ReturnValue1 = returnValue1; + onERC721ReceivedFunction.ReturnValue2 = returnValue2; + onERC721ReceivedFunction.ReturnValue3 = returnValue3; + onERC721ReceivedFunction.ReturnValue4 = returnValue4; + + return ContractHandler.SendRequestAsync(onERC721ReceivedFunction); + } + + public Task OnERC721ReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + BigInteger returnValue3, + byte[] returnValue4, + CancellationTokenSource cancellationToken = null + ) + { + var onERC721ReceivedFunction = new OnERC721ReceivedFunction(); + onERC721ReceivedFunction.ReturnValue1 = returnValue1; + onERC721ReceivedFunction.ReturnValue2 = returnValue2; + onERC721ReceivedFunction.ReturnValue3 = returnValue3; + onERC721ReceivedFunction.ReturnValue4 = returnValue4; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC721ReceivedFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetEntrypointOverrideRequestAsync(SetEntrypointOverrideFunction setEntrypointOverrideFunction) + { + return ContractHandler.SendRequestAsync(setEntrypointOverrideFunction); + } + + public Task SetEntrypointOverrideRequestAndWaitForReceiptAsync( + SetEntrypointOverrideFunction setEntrypointOverrideFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setEntrypointOverrideFunction, cancellationToken); + } + + public Task SetEntrypointOverrideRequestAsync(string entrypointOverride) + { + var setEntrypointOverrideFunction = new SetEntrypointOverrideFunction(); + setEntrypointOverrideFunction.EntrypointOverride = entrypointOverride; + + return ContractHandler.SendRequestAsync(setEntrypointOverrideFunction); + } + + public Task SetEntrypointOverrideRequestAndWaitForReceiptAsync(string entrypointOverride, CancellationTokenSource cancellationToken = null) + { + var setEntrypointOverrideFunction = new SetEntrypointOverrideFunction(); + setEntrypointOverrideFunction.EntrypointOverride = entrypointOverride; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setEntrypointOverrideFunction, cancellationToken); + } + + public Task SetPermissionsForSignerRequestAsync(SetPermissionsForSignerFunction setPermissionsForSignerFunction) + { + return ContractHandler.SendRequestAsync(setPermissionsForSignerFunction); + } + + public Task SetPermissionsForSignerRequestAndWaitForReceiptAsync( + SetPermissionsForSignerFunction setPermissionsForSignerFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPermissionsForSignerFunction, cancellationToken); + } + + public Task SetPermissionsForSignerRequestAsync(SignerPermissionRequest req, byte[] signature) + { + var setPermissionsForSignerFunction = new SetPermissionsForSignerFunction(); + setPermissionsForSignerFunction.Req = req; + setPermissionsForSignerFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(setPermissionsForSignerFunction); + } + + public Task SetPermissionsForSignerRequestAndWaitForReceiptAsync(SignerPermissionRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var setPermissionsForSignerFunction = new SetPermissionsForSignerFunction(); + setPermissionsForSignerFunction.Req = req; + setPermissionsForSignerFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPermissionsForSignerFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task ValidateUserOpRequestAsync(ValidateUserOpFunction validateUserOpFunction) + { + return ContractHandler.SendRequestAsync(validateUserOpFunction); + } + + public Task ValidateUserOpRequestAndWaitForReceiptAsync(ValidateUserOpFunction validateUserOpFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(validateUserOpFunction, cancellationToken); + } + + public Task ValidateUserOpRequestAsync(UserOperation userOp, byte[] userOpHash, BigInteger missingAccountFunds) + { + var validateUserOpFunction = new ValidateUserOpFunction(); + validateUserOpFunction.UserOp = userOp; + validateUserOpFunction.UserOpHash = userOpHash; + validateUserOpFunction.MissingAccountFunds = missingAccountFunds; + + return ContractHandler.SendRequestAsync(validateUserOpFunction); + } + + public Task ValidateUserOpRequestAndWaitForReceiptAsync( + UserOperation userOp, + byte[] userOpHash, + BigInteger missingAccountFunds, + CancellationTokenSource cancellationToken = null + ) + { + var validateUserOpFunction = new ValidateUserOpFunction(); + validateUserOpFunction.UserOp = userOp; + validateUserOpFunction.UserOpHash = userOpHash; + validateUserOpFunction.MissingAccountFunds = missingAccountFunds; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(validateUserOpFunction, cancellationToken); + } + + public Task VerifySignerPermissionRequestQueryAsync( + VerifySignerPermissionRequestFunction verifySignerPermissionRequestFunction, + BlockParameter blockParameter = null + ) + { + return ContractHandler.QueryDeserializingToObjectAsync( + verifySignerPermissionRequestFunction, + blockParameter + ); + } + + public Task VerifySignerPermissionRequestQueryAsync(SignerPermissionRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifySignerPermissionRequestFunction = new VerifySignerPermissionRequestFunction(); + verifySignerPermissionRequestFunction.Req = req; + verifySignerPermissionRequestFunction.Signature = signature; + + return ContractHandler.QueryDeserializingToObjectAsync( + verifySignerPermissionRequestFunction, + blockParameter + ); + } + + public Task WithdrawDepositToRequestAsync(WithdrawDepositToFunction withdrawDepositToFunction) + { + return ContractHandler.SendRequestAsync(withdrawDepositToFunction); + } + + public Task WithdrawDepositToRequestAndWaitForReceiptAsync(WithdrawDepositToFunction withdrawDepositToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawDepositToFunction, cancellationToken); + } + + public Task WithdrawDepositToRequestAsync(string withdrawAddress, BigInteger amount) + { + var withdrawDepositToFunction = new WithdrawDepositToFunction(); + withdrawDepositToFunction.WithdrawAddress = withdrawAddress; + withdrawDepositToFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(withdrawDepositToFunction); + } + + public Task WithdrawDepositToRequestAndWaitForReceiptAsync(string withdrawAddress, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var withdrawDepositToFunction = new WithdrawDepositToFunction(); + withdrawDepositToFunction.WithdrawAddress = withdrawAddress; + withdrawDepositToFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawDepositToFunction, cancellationToken); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs.meta new file mode 100644 index 00000000..e5a59cdd --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/AccountService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf432ce3c57a422408ef9d18836d0039 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition.meta new file mode 100644 index 00000000..e368a1a9 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ffb70d7a1308194da07d567f58477d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs new file mode 100644 index 00000000..fc8967d7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs @@ -0,0 +1,515 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.Account.ContractDefinition +{ + public partial class AccountDeployment : AccountDeploymentBase + { + public AccountDeployment() + : base(BYTECODE) { } + + public AccountDeployment(string byteCode) + : base(byteCode) { } + } + + public class AccountDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "6101806040523480156200001257600080fd5b506040516200433d3803806200433d833981016040819052620000359162000250565b60408051808201825260078152661058d8dbdd5b9d60ca1b60208083019182528351808501855260018152603160f81b908201529151902060e08190527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c093840190965280519401939093209092529190526101205281816200011762000134565b6001600160a01b03908116610140521661016052506200028f9050565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee03005460ff808216916101009004168015620001c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60ff828116101562000233577f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300805460ff191660ff90811790915560408051918252517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a15b5050565b6001600160a01b03811681146200024d57600080fd5b50565b600080604083850312156200026457600080fd5b8251620002718162000237565b6020840151909250620002848162000237565b809150509250929050565b60805160a05160c05160e0516101005161012051610140516101605161401e6200031f600039600061169d0152600081816104c60152818161219c0152818161232c015281816123620152818161242a015281816124a001526124d001526000611eed01526000611f3c01526000611f1701526000611e7001526000611e9a01526000611ec4015261401e6000f3fe6080604052600436106101bb5760003560e01c8063a9082d84116100ec578063d087d2881161008a578063e8a3d48511610064578063e8a3d48514610532578063e9523c9714610554578063f15d424e14610576578063f23a6e61146105a357600080fd5b8063d087d288146104e8578063d1f57894146104fd578063d42f2f351461051d57600080fd5b8063b61d27f6116100c6578063b61d27f614610448578063b76464d514610468578063bc197c8114610488578063c45a0155146104b457600080fd5b8063a9082d84146103af578063ac9650d8146103ee578063b0d691fe1461041b57600080fd5b806347e1da2a116101595780635892e236116101335780635892e2361461032d5780637dff5a791461034d5780638b52d7231461036d578063938e3d7b1461038f57600080fd5b806347e1da2a146102e35780634a58db19146103055780634d44560d1461030d57600080fd5b80631dd756c5116101955780631dd756c51461025557806324d7806c14610275578063399b77da146102955780633a871cdd146102c357600080fd5b806301ffc9a7146101c7578063150b7a02146101fc5780631626ba7e1461023557600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004612ec0565b6105cf565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5061021c610217366004612fcc565b610615565b6040516001600160e01b031990911681526020016101f3565b34801561024157600080fd5b5061021c610250366004613037565b610626565b34801561026157600080fd5b506101e7610270366004613096565b610745565b34801561028157600080fd5b506101e76102903660046130db565b610a1d565b3480156102a157600080fd5b506102b56102b03660046130f8565b610a4c565b6040519081526020016101f3565b3480156102cf57600080fd5b506102b56102de366004613111565b610b17565b3480156102ef57600080fd5b506103036102fe3660046131a2565b610b3d565b005b610303610cae565b34801561031957600080fd5b5061030361032836600461323b565b610d15565b34801561033957600080fd5b506103036103483660046132a8565b610d8e565b34801561035957600080fd5b506101e76103683660046130db565b61114b565b34801561037957600080fd5b50610382611204565b6040516101f391906133be565b34801561039b57600080fd5b506103036103aa366004613420565b61144b565b3480156103bb57600080fd5b506103cf6103ca3660046132a8565b61149c565b6040805192151583526001600160a01b039091166020830152016101f3565b3480156103fa57600080fd5b5061040e610409366004613468565b6114f3565b6040516101f391906134f9565b34801561042757600080fd5b50610430611662565b6040516001600160a01b0390911681526020016101f3565b34801561045457600080fd5b5061030361046336600461354e565b6116c2565b34801561047457600080fd5b506103036104833660046130db565b611752565b34801561049457600080fd5b5061021c6104a3366004613637565b63bc197c8160e01b95945050505050565b3480156104c057600080fd5b506104307f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f457600080fd5b506102b561179b565b34801561050957600080fd5b506103036105183660046136e4565b61181b565b34801561052957600080fd5b506103826119b6565b34801561053e57600080fd5b50610547611b27565b6040516101f3919061372b565b34801561056057600080fd5b50610569611bd8565b6040516101f3919061373e565b34801561058257600080fd5b506105966105913660046130db565b611bea565b6040516101f3919061378b565b3480156105af57600080fd5b5061021c6105be36600461379e565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b148061060057506001600160e01b03198216630a85bd0160e11b145b8061060f575061060f82611cc2565b92915050565b630a85bd0160e11b5b949350505050565b60008061063284610a4c565b905060006106408285611cf7565b905061064b81610a1d565b156106625750630b135d3f60e11b915061060f9050565b33600061066d611d1b565b6001600160a01b03841660009081526006919091016020526040902090506106958183611d3f565b806106c557506106a481611d61565b60011480156106c5575060006106ba8282611d6b565b6001600160a01b0316145b6107225760405162461bcd60e51b8152602060048201526024808201527f4163636f756e743a2063616c6c6572206e6f7420617070726f7665642074617260448201526333b2ba1760e11b60648201526084015b60405180910390fd5b61072b8361114b565b1561073b57630b135d3f60e11b94505b5050505092915050565b600061074f611d1b565b6001600160a01b0384166000908152600491909101602052604090205460ff161561077c5750600161060f565b6000610786611d1b565b6001600160a01b0385166000908152600591909101602090815260408083208151606081018352815481526001909101546001600160801b0380821694830194909452600160801b90049092169082015291506107e1611d1b565b6006016000866001600160a01b03166001600160a01b0316815260200190815260200160002090504282602001516001600160801b03161180610831575081604001516001600160801b03164210155b80610842575061084081611d61565b155b156108525760009250505061060f565b60006108696108646060870187613806565b611d77565b9050600061087683611d61565b60011480156108975750600061088c8482611d6b565b6001600160a01b0316145b90506324f16c0560e11b6001600160e01b031983160161090e576000806108c96108c460608a018a613806565b611db1565b91509150826108ef576108dc8583611d3f565b6108ef576000965050505050505061060f565b8551811115610907576000965050505050505061060f565b5050610a10565b635c0f12eb60e11b6001600160e01b0319831601610a035760008061093e61093960608a018a613806565b611e16565b5091509150826109a85760005b82518110156109a6576109808382815181106109695761096961384c565b602002602001015187611d3f90919063ffffffff16565b61099457600097505050505050505061060f565b8061099e81613878565b91505061094b565b505b60005b82518110156109fb578181815181106109c6576109c661384c565b6020026020010151876000015110156109e957600097505050505050505061060f565b806109f381613878565b9150506109ab565b505050610a10565b600094505050505061060f565b5060019695505050505050565b6000610a27611d1b565b6001600160a01b03909216600090815260049290920160205250604090205460ff1690565b60008082604051602001610a6291815260200190565b60405160208183030381529060405280519060200120905060007f82cac545155fcbf147f2a9013809613677ac7d65498556e6d19ce43bcbf6c28482604051602001610ab8929190918252602082015260400190565b604051602081830303815290604052805190602001209050610ad8611e63565b60405161190160f01b60208201526022810191909152604281018290526062016040516020818303038152906040528051906020012092505050919050565b6000610b21611f8a565b610b2b8484611ff4565b9050610b368261213a565b9392505050565b610b45611662565b6001600160a01b0316336001600160a01b03161480610b685750610b6833610a1d565b610b845760405162461bcd60e51b815260040161071990613891565b610b8c612187565b8481148015610b9a57508483145b610be65760405162461bcd60e51b815260206004820152601d60248201527f4163636f756e743a2077726f6e67206172726179206c656e677468732e0000006044820152606401610719565b60005b85811015610ca557610c92878783818110610c0657610c0661384c565b9050602002016020810190610c1b91906130db565b868684818110610c2d57610c2d61384c565b90506020020135858585818110610c4657610c4661384c565b9050602002810190610c589190613806565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061226992505050565b5080610c9d81613878565b915050610be9565b50505050505050565b610cb6611662565b60405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024016000604051808303818588803b158015610cfa57600080fd5b505af1158015610d0e573d6000803e3d6000fd5b5050505050565b610d1d6122da565b610d25611662565b60405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015b600060405180830381600087803b158015610d7257600080fd5b505af1158015610d86573d6000803e3d6000fd5b505050505050565b6000610d9d60208501856130db565b905042610db060e0860160c087016138e9565b6001600160801b031611158015610ddf5750610dd3610100850160e086016138e9565b6001600160801b031642105b610e155760405162461bcd60e51b8152602060048201526007602482015266085c195c9a5bd960ca1b6044820152606401610719565b600080610e2386868661149c565b9150915081610e5d5760405162461bcd60e51b8152600401610719906020808252600490820152632173696760e01b604082015260600190565b6001610e67611d1b565b610100880135600090815260079190910160209081526040808320805460ff1916941515949094179093559091610ea391908901908901613915565b60ff161115610ed0576000610ebe6040880160208901613915565b60ff166001149050610ca58482612318565b610ed983610a1d565b15610f0e5760405162461bcd60e51b815260206004820152600560248201526430b236b4b760d91b6044820152606401610719565b610f2383610f1a611d1b565b6002019061245f565b50604051806060016040528087606001358152602001876080016020810190610f4c91906138e9565b6001600160801b03168152602001610f6a60c0890160a08a016138e9565b6001600160801b03169052610f7d611d1b565b6001600160a01b03851660009081526005919091016020908152604080832084518155918401519301516001600160801b03908116600160801b02931692909217600190920191909155610ff3610fd2611d1b565b6001600160a01b038616600090815260069190910160205260409020612474565b805190915060005b8181101561105d5761104a8382815181106110185761101861384c565b6020026020010151611028611d1b565b6001600160a01b03891660009081526006919091016020526040902090612481565b50611056600182613930565b9050610ffb565b5061106b6040890189613943565b9050905060005b818110156110ec576110d961108a60408b018b613943565b8381811061109a5761109a61384c565b90506020020160208101906110af91906130db565b6110b7611d1b565b6001600160a01b0389166000908152600691909101602052604090209061245f565b506110e5600182613930565b9050611072565b506110f688612496565b846001600160a01b0316836001600160a01b03167ff21d10c26e35863a8df291aca54181ee8c4a3bc8e00246c3f7a5a14b69d826a78a6040516111399190613a1d565b60405180910390a35050505050505050565b600080611156611d1b565b6001600160a01b038416600090815260059190910160209081526040918290208251606081018452815481526001909101546001600160801b03808216938301849052600160801b909104169281019290925290915042108015906111c7575080604001516001600160801b031642105b8015610b36575060006111fc6111db611d1b565b6001600160a01b038616600090815260069190910160205260409020611d61565b119392505050565b6060600061121b611213611d1b565b600201612474565b80519091506000805b828110156112ac5761124e8482815181106112415761124161384c565b602002602001015161114b565b15611265578161125d81613878565b92505061129a565b60008482815181106112795761127961384c565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6112a5600182613930565b9050611224565b50806001600160401b038111156112c5576112c5612f0f565b6040519080825280602002602001820160405280156112fe57816020015b6112eb612e76565b8152602001906001900390816112e35790505b5093506000805b838110156114435760006001600160a01b031685828151811061132a5761132a61384c565b60200260200101516001600160a01b0316146114315760008582815181106113545761135461384c565b602002602001015190506000611368611d1b565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a0810190945291835290925081016113d2610fd2611d1b565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b031681525088858061141190613878565b9650815181106114235761142361384c565b602002602001018190525050505b61143c600182613930565b9050611305565b505050505090565b611453612544565b6114905760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610719565b6114998161255c565b50565b6000806114b26114ab8661267b565b85856127bf565b90506114bc611d1b565b6101008601356000908152600791909101602052604090205460ff161580156114e957506114e981610a1d565b9150935093915050565b6060816001600160401b0381111561150d5761150d612f0f565b60405190808252806020026020018201604052801561154057816020015b606081526020019060019003908161152b5790505b509050336000805b848110156116595781156115c7576115a53087878481811061156c5761156c61384c565b905060200281019061157e9190613806565b8660405160200161159193929190613b16565b604051602081830303815290604052612811565b8482815181106115b7576115b761384c565b6020026020010181905250611647565b611629308787848181106115dd576115dd61384c565b90506020028101906115ef9190613806565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061281192505050565b84828151811061163b5761163b61384c565b60200260200101819052505b8061165181613878565b915050611548565b50505092915050565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548300546000906001600160a01b0316801561169b57919050565b7f000000000000000000000000000000000000000000000000000000000000000091505090565b6116ca611662565b6001600160a01b0316336001600160a01b031614806116ed57506116ed33610a1d565b6117095760405162461bcd60e51b815260040161071990613891565b611711612187565b610d0e848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061226992505050565b61175a6122da565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b54830080546001600160a01b0319166001600160a01b0392909216919091179055565b60006117a5611662565b604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190613b3c565b905090565b600080516020613fa28339815191525460ff808216916101009004168015808015611849575060018360ff16105b806118615750303b15801561186157508260ff166001145b6118c45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610719565b600080516020613fa2833981519152805460ff19166001179055801561190157600080516020613fa2833981519152805461ff0019166101001790555b6119418686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061283692505050565b600080516020613f828339815191525561195c866001612318565b8015610d8657600080516020613fa2833981519152805461ff0019169055604080516001815290517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a1505050505050565b606060006119c5611213611d1b565b8051909150806001600160401b038111156119e2576119e2612f0f565b604051908082528060200260200182016040528015611a1b57816020015b611a08612e76565b815260200190600190039081611a005790505b50925060005b81811015611b21576000838281518110611a3d57611a3d61384c565b602002602001015190506000611a51611d1b565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611abb610fd2611d1b565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250868481518110611b0057611b0061384c565b60200260200101819052505050600181611b1a9190613930565b9050611a21565b50505090565b60607f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da9008054611b5590613b55565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8190613b55565b8015611bce5780601f10611ba357610100808354040283529160200191611bce565b820191906000526020600020905b815481529060010190602001808311611bb157829003601f168201915b5050505050905090565b6060611816611be5611d1b565b612474565b611bf2612e76565b6000611bfc611d1b565b6001600160a01b038416600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611c87611c66611d1b565b6001600160a01b038716600090815260069190910160205260409020612474565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250915050919050565b60006001600160e01b03198216630271189760e51b148061060f57506301ffc9a760e01b6001600160e01b031983161461060f565b6000806000611d068585612869565b91509150611d13816128ae565b509392505050565b7f3181e78fc1b109bc611fd2406150bf06e33faa75f71cba12c3e1fd670f2def0090565b6001600160a01b03811660009081526001830160205260408120541515610b36565b600061060f825490565b6000610b3683836129f8565b60006004821015611d9a5760405162461bcd60e51b815260040161071990613b89565b611da8600460008486613ba8565b610b3691613bd2565b6000806044831015611dd55760405162461bcd60e51b815260040161071990613b89565b611de3602460048587613ba8565b810190611df091906130db565b9150611e00604460248587613ba8565b810190611e0d91906130f8565b90509250929050565b606080806064841015611e3b5760405162461bcd60e51b815260040161071990613b89565b611e488460048188613ba8565b810190611e559190613c81565b919790965090945092505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611ebc57507f000000000000000000000000000000000000000000000000000000000000000046145b15611ee657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b611f92611662565b6001600160a01b0316336001600160a01b031614611ff25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610719565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c81206000612073612036610140870187613806565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611cf79050565b905061207f8186610745565b61208e5760019250505061060f565b6000612098611d1b565b6001600160a01b03929092166000908152600590920160209081526040808420815160608082018452825482526001909201546001600160801b0380821683870152600160801b8204908116928501929092528351928301845295825265ffffffffffff8087169483019490945292831691015260d09290921b6001600160d01b03191660a09290921b65ffffffffffff60a01b169190911795945050505050565b801561149957604051600090339060001990849084818181858888f193505050503d8060008114610d0e576040519150601f19603f3d011682016040523d82523d6000602084013e610d0e565b60405163c3c5a54760e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0382169063c3c5a54790602401602060405180830381865afa1580156121ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122119190613d66565b61149957600080516020613f82833981519152546040516320e80fe360e21b815260048101919091526001600160a01b038216906383a03f8c906024015b600060405180830381600087803b158015610cfa57600080fd5b60606000846001600160a01b031684846040516122869190613d88565b60006040518083038185875af1925050503d80600081146122c3576040519150601f19603f3d011682016040523d82523d6000602084013e6122c8565b606091505b509250905080611d1357815160208301fd5b6122e333610a1d565b611ff25760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b6044820152606401610719565b6123228282612a22565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561245b5780156123f3576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630b61e12b837f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548300600101546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610d7257600080fd5b600080516020613f82833981519152546040516301270f4760e71b81526001600160a01b03848116600483015260248201929092527f000000000000000000000000000000000000000000000000000000000000000090911690639387a38090604401610d58565b5050565b6000610b36836001600160a01b038416612ad1565b60606000610b3683612b20565b6000610b36836001600160a01b038416612b7c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15611499576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630b61e12b61250260208401846130db565b600080516020613f828339815191525460405160e084901b6001600160e01b03191681526001600160a01b03929092166004830152602482015260440161224f565b600061254f33610a1d565b8061181657505030331490565b60007f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da900805461258a90613b55565b80601f01602080910402602001604051908101604052809291908181526020018280546125b690613b55565b80156126035780601f106125d857610100808354040283529160200191612603565b820191906000526020600020905b8154815290600101906020018083116125e657829003601f168201915b50505050509050816126327f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b9061263d9082613def565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818360405161266f929190613eae565b60405180910390a15050565b60607f3fd4a1a1a267c84185e3b7eecd57c68783c0581d538b9d6e5f23e4670497c1e96126ab60208401846130db565b6126bb6040850160208601613915565b6126c86040860186613943565b6040516020016126d9929190613edc565b60408051601f198184030181529190528051602090910120606086013561270660a08801608089016138e9565b61271660c0890160a08a016138e9565b61272660e08a0160c08b016138e9565b6127376101008b0160e08c016138e9565b60408051602081019a909a526001600160a01b039098169789019790975260ff9095166060880152608087019390935260a08601919091526001600160801b0390811660c086015290811660e0850152908116610100848101919091529116610120830152830135610140820152610160016040516020818303038152906040529050919050565b600061061e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508751602089012061280b92509050612c6f565b90611cf7565b6060610b368383604051806060016040528060278152602001613fc260279139612c9c565b6000828260405160200161284b929190613f1e565b60405160208183030381529060405280519060200120905092915050565b600080825160410361289f5760208301516040840151606085015160001a61289387828585612d14565b945094505050506128a7565b506000905060025b9250929050565b60008160048111156128c2576128c2613f42565b036128ca5750565b60018160048111156128de576128de613f42565b0361292b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610719565b600281600481111561293f5761293f613f42565b0361298c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610719565b60038160048111156129a0576129a0613f42565b036114995760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610719565b6000826000018281548110612a0f57612a0f61384c565b9060005260206000200154905092915050565b80612a2b611d1b565b6001600160a01b038416600090815260049190910160205260409020805460ff19169115159190911790558015612a7457612a6e82612a68611d1b565b9061245f565b50612a88565b612a8682612a80611d1b565b90612481565b505b816001600160a01b03167f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a1113382604051612ac5911515815260200190565b60405180910390a25050565b6000818152600183016020526040812054612b185750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561060f565b50600061060f565b606081600001805480602002602001604051908101604052809291908181526020018280548015612b7057602002820191906000526020600020905b815481526020019060010190808311612b5c575b50505050509050919050565b60008181526001830160205260408120548015612c65576000612ba0600183613f58565b8554909150600090612bb490600190613f58565b9050818114612c19576000866000018281548110612bd457612bd461384c565b9060005260206000200154905080876000018481548110612bf757612bf761384c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612c2a57612c2a613f6b565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061060f565b600091505061060f565b600061060f612c7c611e63565b8360405161190160f01b8152600281019290925260228201526042902090565b6060600080856001600160a01b031685604051612cb99190613d88565b600060405180830381855af49150503d8060008114612cf4576040519150601f19603f3d011682016040523d82523d6000602084013e612cf9565b606091505b5091509150612d0a86838387612dd8565b9695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612d4b5750600090506003612dcf565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612d9f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612dc857600060019250925050612dcf565b9150600090505b94509492505050565b60608315612e47578251600003612e40576001600160a01b0385163b612e405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610719565b508161061e565b61061e8383815115612e5c5781518083602001fd5b8060405162461bcd60e51b8152600401610719919061372b565b6040518060a0016040528060006001600160a01b03168152602001606081526020016000815260200160006001600160801b0316815260200160006001600160801b031681525090565b600060208284031215612ed257600080fd5b81356001600160e01b031981168114610b3657600080fd5b6001600160a01b038116811461149957600080fd5b8035612f0a81612eea565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f4d57612f4d612f0f565b604052919050565b60006001600160401b03831115612f6e57612f6e612f0f565b612f81601f8401601f1916602001612f25565b9050828152838383011115612f9557600080fd5b828260208301376000602084830101529392505050565b600082601f830112612fbd57600080fd5b610b3683833560208501612f55565b60008060008060808587031215612fe257600080fd5b8435612fed81612eea565b93506020850135612ffd81612eea565b92506040850135915060608501356001600160401b0381111561301f57600080fd5b61302b87828801612fac565b91505092959194509250565b6000806040838503121561304a57600080fd5b8235915060208301356001600160401b0381111561306757600080fd5b61307385828601612fac565b9150509250929050565b6000610160828403121561309057600080fd5b50919050565b600080604083850312156130a957600080fd5b82356130b481612eea565b915060208301356001600160401b038111156130cf57600080fd5b6130738582860161307d565b6000602082840312156130ed57600080fd5b8135610b3681612eea565b60006020828403121561310a57600080fd5b5035919050565b60008060006060848603121561312657600080fd5b83356001600160401b0381111561313c57600080fd5b6131488682870161307d565b9660208601359650604090950135949350505050565b60008083601f84011261317057600080fd5b5081356001600160401b0381111561318757600080fd5b6020830191508360208260051b85010111156128a757600080fd5b600080600080600080606087890312156131bb57600080fd5b86356001600160401b03808211156131d257600080fd5b6131de8a838b0161315e565b909850965060208901359150808211156131f757600080fd5b6132038a838b0161315e565b9096509450604089013591508082111561321c57600080fd5b5061322989828a0161315e565b979a9699509497509295939492505050565b6000806040838503121561324e57600080fd5b823561325981612eea565b946020939093013593505050565b60008083601f84011261327957600080fd5b5081356001600160401b0381111561329057600080fd5b6020830191508360208285010111156128a757600080fd5b6000806000604084860312156132bd57600080fd5b83356001600160401b03808211156132d457600080fd5b9085019061012082880312156132e957600080fd5b909350602085013590808211156132ff57600080fd5b5061330c86828701613267565b9497909650939450505050565b80516001600160a01b03908116835260208083015160a082860181905281519086018190526000939183019290849060c08801905b808310156133705785518516825294830194600192909201919083019061334e565b50604087015160408901526060870151945061339760608901866001600160801b03169052565b608087015194506133b360808901866001600160801b03169052565b979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561341357603f19888603018452613401858351613319565b945092850192908501906001016133e5565b5092979650505050505050565b60006020828403121561343257600080fd5b81356001600160401b0381111561344857600080fd5b8201601f8101841361345957600080fd5b61061e84823560208401612f55565b6000806020838503121561347b57600080fd5b82356001600160401b0381111561349157600080fd5b61349d8582860161315e565b90969095509350505050565b60005b838110156134c45781810151838201526020016134ac565b50506000910152565b600081518084526134e58160208601602086016134a9565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561341357603f1988860301845261353c8583516134cd565b94509285019290850190600101613520565b6000806000806060858703121561356457600080fd5b843561356f81612eea565b93506020850135925060408501356001600160401b0381111561359157600080fd5b61359d87828801613267565b95989497509550505050565b60006001600160401b038211156135c2576135c2612f0f565b5060051b60200190565b600082601f8301126135dd57600080fd5b813560206135f26135ed836135a9565b612f25565b82815260059290921b8401810191818101908684111561361157600080fd5b8286015b8481101561362c5780358352918301918301613615565b509695505050505050565b600080600080600060a0868803121561364f57600080fd5b853561365a81612eea565b9450602086013561366a81612eea565b935060408601356001600160401b038082111561368657600080fd5b61369289838a016135cc565b945060608801359150808211156136a857600080fd5b6136b489838a016135cc565b935060808801359150808211156136ca57600080fd5b506136d788828901612fac565b9150509295509295909350565b6000806000604084860312156136f957600080fd5b833561370481612eea565b925060208401356001600160401b0381111561371f57600080fd5b61330c86828701613267565b602081526000610b3660208301846134cd565b6020808252825182820181905260009190848201906040850190845b8181101561377f5783516001600160a01b03168352928401929184019160010161375a565b50909695505050505050565b602081526000610b366020830184613319565b600080600080600060a086880312156137b657600080fd5b85356137c181612eea565b945060208601356137d181612eea565b9350604086013592506060860135915060808601356001600160401b038111156137fa57600080fd5b6136d788828901612fac565b6000808335601e1984360301811261381d57600080fd5b8301803591506001600160401b0382111561383757600080fd5b6020019150368190038213156128a757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161388a5761388a613862565b5060010190565b60208082526021908201527f4163636f756e743a206e6f742061646d696e206f7220456e747279506f696e746040820152601760f91b606082015260800190565b80356001600160801b0381168114612f0a57600080fd5b6000602082840312156138fb57600080fd5b610b36826138d2565b803560ff81168114612f0a57600080fd5b60006020828403121561392757600080fd5b610b3682613904565b8082018082111561060f5761060f613862565b6000808335601e1984360301811261395a57600080fd5b8301803591506001600160401b0382111561397457600080fd5b6020019150600581901b36038213156128a757600080fd5b6000808335601e198436030181126139a357600080fd5b83016020810192503590506001600160401b038111156139c257600080fd5b8060051b36038213156128a757600080fd5b8183526000602080850194508260005b85811015613a125781356139f781612eea565b6001600160a01b0316875295820195908201906001016139e4565b509495945050505050565b60208152613a3e60208201613a3184612eff565b6001600160a01b03169052565b6000613a4c60208401613904565b60ff8116604084015250613a63604084018461398c565b610120806060860152613a7b610140860183856139d4565b925060608601356080860152613a93608087016138d2565b6001600160801b03811660a08701529150613ab060a087016138d2565b6001600160801b03811660c08701529150613acd60c087016138d2565b6001600160801b03811660e08701529150613aea60e087016138d2565b9150610100613b03818701846001600160801b03169052565b9590950135939094019290925250919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600060208284031215613b4e57600080fd5b5051919050565b600181811c90821680613b6957607f821691505b60208210810361309057634e487b7160e01b600052602260045260246000fd5b602080825260059082015264214461746160d81b604082015260600190565b60008085851115613bb857600080fd5b83861115613bc557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613bfa5780818660040360031b1b83161692505b505092915050565b600082601f830112613c1357600080fd5b81356020613c236135ed836135a9565b82815260059290921b84018101918181019086841115613c4257600080fd5b8286015b8481101561362c5780356001600160401b03811115613c655760008081fd5b613c738986838b0101612fac565b845250918301918301613c46565b600080600060608486031215613c9657600080fd5b83356001600160401b0380821115613cad57600080fd5b818601915086601f830112613cc157600080fd5b81356020613cd16135ed836135a9565b82815260059290921b8401810191818101908a841115613cf057600080fd5b948201945b83861015613d17578535613d0881612eea565b82529482019490820190613cf5565b97505087013592505080821115613d2d57600080fd5b613d39878388016135cc565b93506040860135915080821115613d4f57600080fd5b50613d5c86828701613c02565b9150509250925092565b600060208284031215613d7857600080fd5b81518015158114610b3657600080fd5b60008251613d9a8184602087016134a9565b9190910192915050565b601f821115613dea57600081815260208120601f850160051c81016020861015613dcb5750805b601f850160051c820191505b81811015610d8657828155600101613dd7565b505050565b81516001600160401b03811115613e0857613e08612f0f565b613e1c81613e168454613b55565b84613da4565b602080601f831160018114613e515760008415613e395750858301515b600019600386901b1c1916600185901b178555610d86565b600085815260208120601f198616915b82811015613e8057888601518255948401946001909101908401613e61565b5085821015613e9e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613ec160408301856134cd565b8281036020840152613ed381856134cd565b95945050505050565b60008184825b85811015613f13578135613ef581612eea565b6001600160a01b031683526020928301929190910190600101613ee2565b509095945050505050565b6001600160a01b038316815260406020820181905260009061061e908301846134cd565b634e487b7160e01b600052602160045260246000fd5b8181038181111561060f5761060f613862565b634e487b7160e01b600052603160045260246000fdfe036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548301322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220404fbf56011dbc38893ab04f8a05772e5ee140db4d882143970e4546b970422a64736f6c63430008130033"; + + public AccountDeploymentBase() + : base(BYTECODE) { } + + public AccountDeploymentBase(string byteCode) + : base(byteCode) { } + + [Parameter("address", "_entrypoint", 1)] + public virtual string Entrypoint { get; set; } + + [Parameter("address", "_factory", 2)] + public virtual string Factory { get; set; } + } + + public partial class AddDepositFunction : AddDepositFunctionBase { } + + [Function("addDeposit")] + public class AddDepositFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class EntryPointFunction : EntryPointFunctionBase { } + + [Function("entryPoint", "address")] + public class EntryPointFunctionBase : FunctionMessage { } + + public partial class ExecuteFunction : ExecuteFunctionBase { } + + [Function("execute")] + public class ExecuteFunctionBase : FunctionMessage + { + [Parameter("address", "_target", 1)] + public virtual string Target { get; set; } + + [Parameter("uint256", "_value", 2)] + public virtual BigInteger Value { get; set; } + + [Parameter("bytes", "_calldata", 3)] + public virtual byte[] Calldata { get; set; } + } + + public partial class ExecuteBatchFunction : ExecuteBatchFunctionBase { } + + [Function("executeBatch")] + public class ExecuteBatchFunctionBase : FunctionMessage + { + [Parameter("address[]", "_target", 1)] + public virtual List Target { get; set; } + + [Parameter("uint256[]", "_value", 2)] + public virtual List Value { get; set; } + + [Parameter("bytes[]", "_calldata", 3)] + public virtual List Calldata { get; set; } + } + + public partial class FactoryFunction : FactoryFunctionBase { } + + [Function("factory", "address")] + public class FactoryFunctionBase : FunctionMessage { } + + public partial class GetAllActiveSignersFunction : GetAllActiveSignersFunctionBase { } + + [Function("getAllActiveSigners", typeof(GetAllActiveSignersOutputDTO))] + public class GetAllActiveSignersFunctionBase : FunctionMessage { } + + public partial class GetAllAdminsFunction : GetAllAdminsFunctionBase { } + + [Function("getAllAdmins", "address[]")] + public class GetAllAdminsFunctionBase : FunctionMessage { } + + public partial class GetAllSignersFunction : GetAllSignersFunctionBase { } + + [Function("getAllSigners", typeof(GetAllSignersOutputDTO))] + public class GetAllSignersFunctionBase : FunctionMessage { } + + public partial class GetMessageHashFunction : GetMessageHashFunctionBase { } + + [Function("getMessageHash", "bytes32")] + public class GetMessageHashFunctionBase : FunctionMessage + { + [Parameter("bytes32", "_hash", 1)] + public virtual byte[] Hash { get; set; } + } + + public partial class GetNonceFunction : GetNonceFunctionBase { } + + [Function("getNonce", "uint256")] + public class GetNonceFunctionBase : FunctionMessage { } + + public partial class GetPermissionsForSignerFunction : GetPermissionsForSignerFunctionBase { } + + [Function("getPermissionsForSigner", typeof(GetPermissionsForSignerOutputDTO))] + public class GetPermissionsForSignerFunctionBase : FunctionMessage + { + [Parameter("address", "signer", 1)] + public virtual string Signer { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("bytes", "_data", 2)] + public virtual byte[] Data { get; set; } + } + + public partial class IsActiveSignerFunction : IsActiveSignerFunctionBase { } + + [Function("isActiveSigner", "bool")] + public class IsActiveSignerFunctionBase : FunctionMessage + { + [Parameter("address", "signer", 1)] + public virtual string Signer { get; set; } + } + + public partial class IsAdminFunction : IsAdminFunctionBase { } + + [Function("isAdmin", "bool")] + public class IsAdminFunctionBase : FunctionMessage + { + [Parameter("address", "_account", 1)] + public virtual string Account { get; set; } + } + + public partial class IsValidSignatureFunction : IsValidSignatureFunctionBase { } + + [Function("isValidSignature", "bytes4")] + public class IsValidSignatureFunctionBase : FunctionMessage + { + [Parameter("bytes32", "_hash", 1)] + public virtual byte[] Hash { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class IsValidSignerFunction : IsValidSignerFunctionBase { } + + [Function("isValidSigner", "bool")] + public class IsValidSignerFunctionBase : FunctionMessage + { + [Parameter("address", "_signer", 1)] + public virtual string Signer { get; set; } + + [Parameter("tuple", "_userOp", 2)] + public virtual UserOperation UserOp { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class OnERC1155BatchReceivedFunction : OnERC1155BatchReceivedFunctionBase { } + + [Function("onERC1155BatchReceived", "bytes4")] + public class OnERC1155BatchReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256[]", "", 3)] + public virtual List ReturnValue3 { get; set; } + + [Parameter("uint256[]", "", 4)] + public virtual List ReturnValue4 { get; set; } + + [Parameter("bytes", "", 5)] + public virtual byte[] ReturnValue5 { get; set; } + } + + public partial class OnERC1155ReceivedFunction : OnERC1155ReceivedFunctionBase { } + + [Function("onERC1155Received", "bytes4")] + public class OnERC1155ReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256", "", 3)] + public virtual BigInteger ReturnValue3 { get; set; } + + [Parameter("uint256", "", 4)] + public virtual BigInteger ReturnValue4 { get; set; } + + [Parameter("bytes", "", 5)] + public virtual byte[] ReturnValue5 { get; set; } + } + + public partial class OnERC721ReceivedFunction : OnERC721ReceivedFunctionBase { } + + [Function("onERC721Received", "bytes4")] + public class OnERC721ReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256", "", 3)] + public virtual BigInteger ReturnValue3 { get; set; } + + [Parameter("bytes", "", 4)] + public virtual byte[] ReturnValue4 { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetEntrypointOverrideFunction : SetEntrypointOverrideFunctionBase { } + + [Function("setEntrypointOverride")] + public class SetEntrypointOverrideFunctionBase : FunctionMessage + { + [Parameter("address", "_entrypointOverride", 1)] + public virtual string EntrypointOverride { get; set; } + } + + public partial class SetPermissionsForSignerFunction : SetPermissionsForSignerFunctionBase { } + + [Function("setPermissionsForSigner")] + public class SetPermissionsForSignerFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual SignerPermissionRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class ValidateUserOpFunction : ValidateUserOpFunctionBase { } + + [Function("validateUserOp", "uint256")] + public class ValidateUserOpFunctionBase : FunctionMessage + { + [Parameter("tuple", "userOp", 1)] + public virtual UserOperation UserOp { get; set; } + + [Parameter("bytes32", "userOpHash", 2)] + public virtual byte[] UserOpHash { get; set; } + + [Parameter("uint256", "missingAccountFunds", 3)] + public virtual BigInteger MissingAccountFunds { get; set; } + } + + public partial class VerifySignerPermissionRequestFunction : VerifySignerPermissionRequestFunctionBase { } + + [Function("verifySignerPermissionRequest", typeof(VerifySignerPermissionRequestOutputDTO))] + public class VerifySignerPermissionRequestFunctionBase : FunctionMessage + { + [Parameter("tuple", "req", 1)] + public virtual SignerPermissionRequest Req { get; set; } + + [Parameter("bytes", "signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class WithdrawDepositToFunction : WithdrawDepositToFunctionBase { } + + [Function("withdrawDepositTo")] + public class WithdrawDepositToFunctionBase : FunctionMessage + { + [Parameter("address", "withdrawAddress", 1)] + public virtual string WithdrawAddress { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class AdminUpdatedEventDTO : AdminUpdatedEventDTOBase { } + + [Event("AdminUpdated")] + public class AdminUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "signer", 1, true)] + public virtual string Signer { get; set; } + + [Parameter("bool", "isAdmin", 2, false)] + public virtual bool IsAdmin { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class SignerPermissionsUpdatedEventDTO : SignerPermissionsUpdatedEventDTOBase { } + + [Event("SignerPermissionsUpdated")] + public class SignerPermissionsUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "authorizingSigner", 1, true)] + public virtual string AuthorizingSigner { get; set; } + + [Parameter("address", "targetSigner", 2, true)] + public virtual string TargetSigner { get; set; } + + [Parameter("tuple", "permissions", 3, false)] + public virtual SignerPermissionRequest Permissions { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class EntryPointOutputDTO : EntryPointOutputDTOBase { } + + [FunctionOutput] + public class EntryPointOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class FactoryOutputDTO : FactoryOutputDTOBase { } + + [FunctionOutput] + public class FactoryOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetAllActiveSignersOutputDTO : GetAllActiveSignersOutputDTOBase { } + + [FunctionOutput] + public class GetAllActiveSignersOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "signers", 1)] + public virtual List Signers { get; set; } + } + + public partial class GetAllAdminsOutputDTO : GetAllAdminsOutputDTOBase { } + + [FunctionOutput] + public class GetAllAdminsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class GetAllSignersOutputDTO : GetAllSignersOutputDTOBase { } + + [FunctionOutput] + public class GetAllSignersOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "signers", 1)] + public virtual List Signers { get; set; } + } + + public partial class GetMessageHashOutputDTO : GetMessageHashOutputDTOBase { } + + [FunctionOutput] + public class GetMessageHashOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetNonceOutputDTO : GetNonceOutputDTOBase { } + + [FunctionOutput] + public class GetNonceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetPermissionsForSignerOutputDTO : GetPermissionsForSignerOutputDTOBase { } + + [FunctionOutput] + public class GetPermissionsForSignerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "", 1)] + public virtual SignerPermissions ReturnValue1 { get; set; } + } + + public partial class IsActiveSignerOutputDTO : IsActiveSignerOutputDTOBase { } + + [FunctionOutput] + public class IsActiveSignerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsAdminOutputDTO : IsAdminOutputDTOBase { } + + [FunctionOutput] + public class IsAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsValidSignatureOutputDTO : IsValidSignatureOutputDTOBase { } + + [FunctionOutput] + public class IsValidSignatureOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes4", "magicValue", 1)] + public virtual byte[] MagicValue { get; set; } + } + + public partial class IsValidSignerOutputDTO : IsValidSignerOutputDTOBase { } + + [FunctionOutput] + public class IsValidSignerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class VerifySignerPermissionRequestOutputDTO : VerifySignerPermissionRequestOutputDTOBase { } + + [FunctionOutput] + public class VerifySignerPermissionRequestOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "success", 1)] + public virtual bool Success { get; set; } + + [Parameter("address", "signer", 2)] + public virtual string Signer { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs.meta new file mode 100644 index 00000000..6d369bc6 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/AccountDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc41365382a7e6140bfffcd06d426ed1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs new file mode 100644 index 00000000..cd1eaec1 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.Account.ContractDefinition +{ + public partial class SignerPermissionRequest : SignerPermissionRequestBase { } + + public class SignerPermissionRequestBase + { + [Parameter("address", "signer", 1)] + public virtual string Signer { get; set; } + + [Parameter("uint8", "isAdmin", 2)] + public virtual byte IsAdmin { get; set; } + + [Parameter("address[]", "approvedTargets", 3)] + public virtual List ApprovedTargets { get; set; } + + [Parameter("uint256", "nativeTokenLimitPerTransaction", 4)] + public virtual BigInteger NativeTokenLimitPerTransaction { get; set; } + + [Parameter("uint128", "permissionStartTimestamp", 5)] + public virtual BigInteger PermissionStartTimestamp { get; set; } + + [Parameter("uint128", "permissionEndTimestamp", 6)] + public virtual BigInteger PermissionEndTimestamp { get; set; } + + [Parameter("uint128", "reqValidityStartTimestamp", 7)] + public virtual BigInteger ReqValidityStartTimestamp { get; set; } + + [Parameter("uint128", "reqValidityEndTimestamp", 8)] + public virtual BigInteger ReqValidityEndTimestamp { get; set; } + + [Parameter("bytes32", "uid", 9)] + public virtual byte[] Uid { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs.meta new file mode 100644 index 00000000..e0d31b62 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissionRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0cb4bc79b5d8f854c84cca93103114a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs new file mode 100644 index 00000000..d4c2520d --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.Account.ContractDefinition +{ + public partial class SignerPermissions : SignerPermissionsBase { } + + public class SignerPermissionsBase + { + [Parameter("address", "signer", 1)] + public virtual string Signer { get; set; } + + [Parameter("address[]", "approvedTargets", 2)] + public virtual List ApprovedTargets { get; set; } + + [Parameter("uint256", "nativeTokenLimitPerTransaction", 3)] + public virtual BigInteger NativeTokenLimitPerTransaction { get; set; } + + [Parameter("uint128", "startTimestamp", 4)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint128", "endTimestamp", 5)] + public virtual BigInteger EndTimestamp { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs.meta new file mode 100644 index 00000000..81e07c51 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/SignerPermissions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c91e2042803f4044fbaae25163a27404 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs new file mode 100644 index 00000000..e1beb7f6 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.Account.ContractDefinition +{ + public partial class UserOperation : UserOperationBase { } + + public class UserOperationBase + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + + [Parameter("uint256", "nonce", 2)] + public virtual BigInteger Nonce { get; set; } + + [Parameter("bytes", "initCode", 3)] + public virtual byte[] InitCode { get; set; } + + [Parameter("bytes", "callData", 4)] + public virtual byte[] CallData { get; set; } + + [Parameter("uint256", "callGasLimit", 5)] + public virtual BigInteger CallGasLimit { get; set; } + + [Parameter("uint256", "verificationGasLimit", 6)] + public virtual BigInteger VerificationGasLimit { get; set; } + + [Parameter("uint256", "preVerificationGas", 7)] + public virtual BigInteger PreVerificationGas { get; set; } + + [Parameter("uint256", "maxFeePerGas", 8)] + public virtual BigInteger MaxFeePerGas { get; set; } + + [Parameter("uint256", "maxPriorityFeePerGas", 9)] + public virtual BigInteger MaxPriorityFeePerGas { get; set; } + + [Parameter("bytes", "paymasterAndData", 10)] + public virtual byte[] PaymasterAndData { get; set; } + + [Parameter("bytes", "signature", 11)] + public virtual byte[] Signature { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs.meta new file mode 100644 index 00000000..0c64d7b2 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Account/ContractDefinition/UserOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bec0a9892e198fd40b9be104bfaabdac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory.meta b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory.meta new file mode 100644 index 00000000..ea6a77f9 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53031392cbb1a3144bdaafa27e6c5135 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs new file mode 100644 index 00000000..a703ba73 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs @@ -0,0 +1,515 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.AccountFactory.ContractDefinition; + +namespace Thirdweb.Contracts.AccountFactory +{ + public partial class AccountFactoryService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + AccountFactoryDeployment accountFactoryDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(accountFactoryDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, AccountFactoryDeployment accountFactoryDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(accountFactoryDeployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + AccountFactoryDeployment accountFactoryDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, accountFactoryDeployment, cancellationTokenSource); + return new AccountFactoryService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.IWeb3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public AccountFactoryService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public AccountFactoryService(Nethereum.Web3.IWeb3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DefaultAdminRoleQueryAsync(DefaultAdminRoleFunction defaultAdminRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(defaultAdminRoleFunction, blockParameter); + } + + public Task DefaultAdminRoleQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task AccountImplementationQueryAsync(AccountImplementationFunction accountImplementationFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(accountImplementationFunction, blockParameter); + } + + public Task AccountImplementationQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task CreateAccountRequestAsync(CreateAccountFunction createAccountFunction) + { + return ContractHandler.SendRequestAsync(createAccountFunction); + } + + public Task CreateAccountRequestAndWaitForReceiptAsync(CreateAccountFunction createAccountFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(createAccountFunction, cancellationToken); + } + + public Task CreateAccountRequestAsync(string admin, byte[] data) + { + var createAccountFunction = new CreateAccountFunction(); + createAccountFunction.Admin = admin; + createAccountFunction.Data = data; + + return ContractHandler.SendRequestAsync(createAccountFunction); + } + + public Task CreateAccountRequestAndWaitForReceiptAsync(string admin, byte[] data, CancellationTokenSource cancellationToken = null) + { + var createAccountFunction = new CreateAccountFunction(); + createAccountFunction.Admin = admin; + createAccountFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(createAccountFunction, cancellationToken); + } + + public Task EntrypointQueryAsync(EntrypointFunction entrypointFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(entrypointFunction, blockParameter); + } + + public Task EntrypointQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task> GetAccountsQueryAsync(GetAccountsFunction getAccountsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(getAccountsFunction, blockParameter); + } + + public Task> GetAccountsQueryAsync(BigInteger start, BigInteger end, BlockParameter blockParameter = null) + { + var getAccountsFunction = new GetAccountsFunction(); + getAccountsFunction.Start = start; + getAccountsFunction.End = end; + + return ContractHandler.QueryAsync>(getAccountsFunction, blockParameter); + } + + public Task> GetAccountsOfSignerQueryAsync(GetAccountsOfSignerFunction getAccountsOfSignerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(getAccountsOfSignerFunction, blockParameter); + } + + public Task> GetAccountsOfSignerQueryAsync(string signer, BlockParameter blockParameter = null) + { + var getAccountsOfSignerFunction = new GetAccountsOfSignerFunction(); + getAccountsOfSignerFunction.Signer = signer; + + return ContractHandler.QueryAsync>(getAccountsOfSignerFunction, blockParameter); + } + + public Task GetAddressQueryAsync(GetAddressFunction getAddressFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getAddressFunction, blockParameter); + } + + public Task GetAddressQueryAsync(string adminSigner, byte[] data, BlockParameter blockParameter = null) + { + var getAddressFunction = new GetAddressFunction(); + getAddressFunction.AdminSigner = adminSigner; + getAddressFunction.Data = data; + + return ContractHandler.QueryAsync(getAddressFunction, blockParameter); + } + + public Task> GetAllAccountsQueryAsync(GetAllAccountsFunction getAllAccountsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(getAllAccountsFunction, blockParameter); + } + + public Task> GetAllAccountsQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync(string defaultAdmin, string contractURI) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.ContractURI = contractURI; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(string defaultAdmin, string contractURI, CancellationTokenSource cancellationToken = null) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.ContractURI = contractURI; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsRegisteredQueryAsync(IsRegisteredFunction isRegisteredFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isRegisteredFunction, blockParameter); + } + + public Task IsRegisteredQueryAsync(string account, BlockParameter blockParameter = null) + { + var isRegisteredFunction = new IsRegisteredFunction(); + isRegisteredFunction.Account = account; + + return ContractHandler.QueryAsync(isRegisteredFunction, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task OnRegisterRequestAsync(OnRegisterFunction onRegisterFunction) + { + return ContractHandler.SendRequestAsync(onRegisterFunction); + } + + public Task OnRegisterRequestAndWaitForReceiptAsync(OnRegisterFunction onRegisterFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onRegisterFunction, cancellationToken); + } + + public Task OnRegisterRequestAsync(byte[] salt) + { + var onRegisterFunction = new OnRegisterFunction(); + onRegisterFunction.Salt = salt; + + return ContractHandler.SendRequestAsync(onRegisterFunction); + } + + public Task OnRegisterRequestAndWaitForReceiptAsync(byte[] salt, CancellationTokenSource cancellationToken = null) + { + var onRegisterFunction = new OnRegisterFunction(); + onRegisterFunction.Salt = salt; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onRegisterFunction, cancellationToken); + } + + public Task OnSignerAddedRequestAsync(OnSignerAddedFunction onSignerAddedFunction) + { + return ContractHandler.SendRequestAsync(onSignerAddedFunction); + } + + public Task OnSignerAddedRequestAndWaitForReceiptAsync(OnSignerAddedFunction onSignerAddedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onSignerAddedFunction, cancellationToken); + } + + public Task OnSignerAddedRequestAsync(string signer, byte[] salt) + { + var onSignerAddedFunction = new OnSignerAddedFunction(); + onSignerAddedFunction.Signer = signer; + onSignerAddedFunction.Salt = salt; + + return ContractHandler.SendRequestAsync(onSignerAddedFunction); + } + + public Task OnSignerAddedRequestAndWaitForReceiptAsync(string signer, byte[] salt, CancellationTokenSource cancellationToken = null) + { + var onSignerAddedFunction = new OnSignerAddedFunction(); + onSignerAddedFunction.Signer = signer; + onSignerAddedFunction.Salt = salt; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onSignerAddedFunction, cancellationToken); + } + + public Task OnSignerRemovedRequestAsync(OnSignerRemovedFunction onSignerRemovedFunction) + { + return ContractHandler.SendRequestAsync(onSignerRemovedFunction); + } + + public Task OnSignerRemovedRequestAndWaitForReceiptAsync(OnSignerRemovedFunction onSignerRemovedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onSignerRemovedFunction, cancellationToken); + } + + public Task OnSignerRemovedRequestAsync(string signer, byte[] salt) + { + var onSignerRemovedFunction = new OnSignerRemovedFunction(); + onSignerRemovedFunction.Signer = signer; + onSignerRemovedFunction.Salt = salt; + + return ContractHandler.SendRequestAsync(onSignerRemovedFunction); + } + + public Task OnSignerRemovedRequestAndWaitForReceiptAsync(string signer, byte[] salt, CancellationTokenSource cancellationToken = null) + { + var onSignerRemovedFunction = new OnSignerRemovedFunction(); + onSignerRemovedFunction.Signer = signer; + onSignerRemovedFunction.Salt = salt; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onSignerRemovedFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task TotalAccountsQueryAsync(TotalAccountsFunction totalAccountsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalAccountsFunction, blockParameter); + } + + public Task TotalAccountsQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs.meta new file mode 100644 index 00000000..c8892050 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/AccountFactoryService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0213bb04a6b21d1409e58ee16c41d738 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition.meta new file mode 100644 index 00000000..329228f7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86173d2f5bb86484093a87f1f8964432 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs new file mode 100644 index 00000000..d98c17d2 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs @@ -0,0 +1,511 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.AccountFactory.ContractDefinition +{ + public partial class AccountFactoryDeployment : AccountFactoryDeploymentBase + { + public AccountFactoryDeployment() + : base(BYTECODE) { } + + public AccountFactoryDeployment(string byteCode) + : base(byteCode) { } + } + + public class AccountFactoryDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60c06040523480156200001157600080fd5b5060405162006766380380620067668339810160408190526200003491620001a6565b80604051620000439062000198565b6001600160a01b039091168152602001604051809103906000f08015801562000070573d6000803e3d6000fd5b506001600160a01b03908116608052811660a0526200008e62000095565b50620001d8565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee03005460ff808216916101009004168015620001265760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60ff828116101562000194577f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300805460ff191660ff90811790915560408051918252517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a15b5050565b614115806200265183390190565b600060208284031215620001b957600080fd5b81516001600160a01b0381168114620001d157600080fd5b9392505050565b60805160a0516124376200021a6000396000818161031a0152610c3f0152600081816101c3015281816106e501528181610b9b015261105401526124376000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80639387a380116100de578063c3c5a54711610097578063d8fd8f4411610071578063d8fd8f4414610395578063e68a7c3b146103a8578063e8a3d485146103bb578063f399e22e146103d057600080fd5b8063c3c5a5471461035c578063ca15c8731461036f578063d547741f1461038257600080fd5b80639387a380146102d4578063938e3d7b146102e7578063a217fddf146102fa578063a32fa5b314610302578063a65d69d414610315578063ac9650d81461033c57600080fd5b806336568abe1161013057806336568abe1461025d57806358451f971461027057806383a03f8c146102785780638878ed331461028b5780639010d07c1461029e57806391d14854146102b157600080fd5b806308e93d0a146101785780630b61e12b146101965780630e6254fd146101ab57806311464fbe146101be578063248a9ca3146101fd5780632f2ff15d1461024a575b600080fd5b6101806103e3565b60405161018d9190611b9b565b60405180910390f35b6101a96101a4366004611c04565b610401565b005b6101806101b9366004611c2e565b6104c1565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161018d565b61023c61020b366004611c49565b60009081527f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e501602052604090205490565b60405190815260200161018d565b6101a9610258366004611c62565b61050a565b6101a961026b366004611c62565b6105c3565b61023c610625565b6101a9610286366004611c49565b61063e565b6101e5610299366004611c8e565b61069b565b6101e56102ac366004611d11565b610715565b6102c46102bf366004611c62565b610823565b604051901515815260200161018d565b6101a96102e2366004611c04565b61085b565b6101a96102f5366004611dd6565b610911565b61023c600081565b6102c4610310366004611c62565b610962565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b61034f61034a366004611e13565b6109d3565b60405161018d9190611ed8565b6102c461036a366004611c2e565b610ac8565b61023c61037d366004611c49565b610ae2565b6101a9610390366004611c62565b610b7f565b6101e56103a3366004611c8e565b610b96565b6101806103b6366004611d11565b610cee565b6103c3610e3a565b60405161018d9190611f3a565b6101a96103de366004611f4d565b610eeb565b60606103fc60008051602061237b83398151915261103f565b905090565b3361040c818361104c565b6104315760405162461bcd60e51b815260040161042890611f9b565b60405180910390fd5b6001600160a01b03831660009081527f82f5b3e5f5ca1c04b70bced106a2c3b72d9cb53ebbafb3cad0740983db742902602052604081206104729083611090565b905080156104bb57836001600160a01b0316826001600160a01b03167f12146497b3b826918ec47f0cac7272a09ed06b30c16c030e99ec48ff5dd60b4760405160405180910390a35b50505050565b6001600160a01b03811660009081527f82f5b3e5f5ca1c04b70bced106a2c3b72d9cb53ebbafb3cad0740983db742902602052604090206060906105049061103f565b92915050565b6105366000805160206123e28339815191525b60008481526001919091016020526040902054336110a5565b6000805160206123e28339815191526000838152602091825260408082206001600160a01b0385168352909252205460ff16156105b55760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610428565b6105bf8282611131565b5050565b336001600160a01b0382161461061b5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610428565b6105bf8282611145565b60006103fc60008051602061237b833981519152611159565b33610649818361104c565b6106655760405162461bcd60e51b815260040161042890611f9b565b61067f8160008051602061237b8339815191525b90611090565b6105bf5760405162461bcd60e51b815260040161042890611fd2565b6000806106de8585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116392505050565b905061070a7f000000000000000000000000000000000000000000000000000000000000000082611196565b9150505b9392505050565b6000806107206111f6565b600085815260209190915260408120549150805b8281101561081a5760006107466111f6565b60008881526020918252604080822085835260010190925220546001600160a01b0316146107be578482036107ac5761077d6111f6565b600087815260209182526040808220938252600190930190915220546001600160a01b03169250610504915050565b6107b7600183612032565b9150610808565b6107c9866000610823565b80156107f557506107d86111f6565b600087815260209182526040808220828052600201909252205481145b1561080857610805600183612032565b91505b610813600182612032565b9050610734565b50505092915050565b60009182526000805160206123e2833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b33610866818361104c565b6108825760405162461bcd60e51b815260040161042890611f9b565b6001600160a01b03831660009081527f82f5b3e5f5ca1c04b70bced106a2c3b72d9cb53ebbafb3cad0740983db742902602052604081206108c39083611200565b905080156104bb57836001600160a01b0316826001600160a01b03167f98d1ebbe00ae92a5de96a0f49742a8afa89f42363592bc2e7cfaaed68b45e7a660405160405180910390a350505050565b610919611215565b6109565760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610428565b61095f81611221565b50565b60006000805160206123e2833981519152600084815260209182526040808220828052909252205460ff166109ca576000805160206123e28339815191526000848152602091825260408082206001600160a01b0386168352909252205460ff169050610504565b50600192915050565b60608167ffffffffffffffff8111156109ee576109ee611d33565b604051908082528060200260200182016040528015610a2157816020015b6060815260200190600190039081610a0c5790505b50905060005b82811015610ac157610a9130858584818110610a4557610a45612045565b9050602002810190610a57919061205b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061134092505050565b828281518110610aa357610aa3612045565b60200260200101819052508080610ab9906120a9565b915050610a27565b5092915050565b600061050460008051602061237b83398151915283611365565b600080610aed6111f6565b6000848152602091909152604081205491505b81811015610b5a576000610b126111f6565b60008681526020918252604080822085835260010190925220546001600160a01b031614610b4857610b45600184612032565b92505b610b53600182612032565b9050610b00565b50610b66836000610823565b15610b7957610b76600183612032565b91505b50919050565b61061b6000805160206123e283398151915261051d565b6000807f000000000000000000000000000000000000000000000000000000000000000090506000610bfe8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116392505050565b90506000610c0c8383611196565b90506001600160a01b0381163b15610c2857925061070e915050565b610c328383611387565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c9857610c7c8160008051602061237b833981519152610679565b610c985760405162461bcd60e51b815260040161042890611fd2565b610ca481888888611424565b866001600160a01b0316816001600160a01b03167fac631f3001b55ea1509cf3d7e74898f85392a61a76e8149181ae1259622dabc860405160405180910390a39695505050505050565b60608183108015610d155750610d1160008051602061237b833981519152611159565b8211155b610d6d5760405162461bcd60e51b815260206004820152602360248201527f426173654163636f756e74466163746f72793a20696e76616c696420696e646960448201526263657360e81b6064820152608401610428565b6000610d7984846120c2565b9050610d8584846120c2565b67ffffffffffffffff811115610d9d57610d9d611d33565b604051908082528060200260200182016040528015610dc6578160200160208202803683370190505b50915060005b81811015610e3257610df6610de18683612032565b60008051602061237b8339815191529061148e565b838281518110610e0857610e08612045565b6001600160a01b0390921660209283029190910190910152610e2b600182612032565b9050610dcc565b505092915050565b60607f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da9008054610e68906120d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e94906120d5565b8015610ee15780601f10610eb657610100808354040283529160200191610ee1565b820191906000526020600020905b815481529060010190602001808311610ec457829003601f168201915b5050505050905090565b60008051602061239b8339815191525460ff808216916101009004168015808015610f19575060018360ff16105b80610f315750303b158015610f3157508260ff166001145b610f945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610428565b60008051602061239b833981519152805460ff191660011790558015610fd15760008051602061239b833981519152805461ff0019166101001790555b610fdc600086611131565b610fe584611221565b80156110385760008051602061239b833981519152805461ff0019169055604080516001815290517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a15b5050505050565b6060600061070e8361149a565b6000806110797f000000000000000000000000000000000000000000000000000000000000000084611196565b6001600160a01b0385811691161491505092915050565b600061070e836001600160a01b0384166114f6565b6000805160206123e28339815191526000838152602091825260408082206001600160a01b0385168352909252205460ff166105bf576110ef816001600160a01b03166014611545565b6110fa836020611545565b60405160200161110b929190612109565b60408051601f198184030181529082905262461bcd60e51b825261042891600401611f3a565b61113b82826116e1565b6105bf8282611749565b61114f8282611808565b6105bf8282611877565b6000610504825490565b60008282604051602001611178929190612176565b60405160208183030381529060405280519060200120905092915050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c8201206078820152605560439091012060009061070e565b60006103fc611906565b600061070e836001600160a01b038416611968565b60006103fc8133610823565b60007f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da900805461124f906120d5565b80601f016020809104026020016040519081016040528092919081815260200182805461127b906120d5565b80156112c85780601f1061129d576101008083540402835291602001916112c8565b820191906000526020600020905b8154815290600101906020018083116112ab57829003601f168201915b50505050509050816112f77f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b9061130290826121e9565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516113349291906122a9565b60405180910390a15050565b606061070e83836040518060600160405280602781526020016123bb60279139611a5b565b6001600160a01b0381166000908152600183016020526040812054151561070e565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166105045760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610428565b60405163cf7a1d7760e01b81526001600160a01b0385169063cf7a1d77906114569086903090879087906004016122ce565b600060405180830381600087803b15801561147057600080fd5b505af1158015611484573d6000803e3d6000fd5b5050505050505050565b600061070e8383611b38565b6060816000018054806020026020016040519081016040528092919081815260200182805480156114ea57602002820191906000526020600020905b8154815260200190600101908083116114d6575b50505050509050919050565b600081815260018301602052604081205461153d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610504565b506000610504565b6060600061155483600261231a565b61155f906002612032565b67ffffffffffffffff81111561157757611577611d33565b6040519080825280601f01601f1916602001820160405280156115a1576020820181803683370190505b509050600360fc1b816000815181106115bc576115bc612045565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106115eb576115eb612045565b60200101906001600160f81b031916908160001a905350600061160f84600261231a565b61161a906001612032565b90505b6001811115611692576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061164e5761164e612045565b1a60f81b82828151811061166457611664612045565b60200101906001600160f81b031916908160001a90535060049490941c9361168b81612331565b905061161d565b50831561070e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610428565b60008281526000805160206123e2833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60006117536111f6565b600084815260209190915260409020549050600161176f6111f6565b600085815260209190915260408120805490919061178e908490612032565b9091555082905061179d6111f6565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b0392909216919091179055806117dd6111f6565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b61181282826110a5565b60008281526000805160206123e2833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006118816111f6565b6000848152602091825260408082206001600160a01b0386168352600201909252205490506118ae6111f6565b6000848152602091825260408082208483526001019092522080546001600160a01b03191690556118dd6111f6565b6000938452602090815260408085206001600160a01b0390941685526002909301905250812055565b60008060ff1961193760017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c6120c2565b60405160200161194991815260200190565b60408051601f1981840301815291905280516020909101201692915050565b60008181526001830160205260408120548015611a5157600061198c6001836120c2565b85549091506000906119a0906001906120c2565b9050818114611a055760008660000182815481106119c0576119c0612045565b90600052602060002001549050808760000184815481106119e3576119e3612045565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a1657611a16612348565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610504565b6000915050610504565b60606001600160a01b0384163b611ac35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610428565b600080856001600160a01b031685604051611ade919061235e565b600060405180830381855af49150503d8060008114611b19576040519150601f19603f3d011682016040523d82523d6000602084013e611b1e565b606091505b5091509150611b2e828286611b62565b9695505050505050565b6000826000018281548110611b4f57611b4f612045565b9060005260206000200154905092915050565b60608315611b7157508161070e565b825115611b815782518084602001fd5b8160405162461bcd60e51b81526004016104289190611f3a565b6020808252825182820181905260009190848201906040850190845b81811015611bdc5783516001600160a01b031683529284019291840191600101611bb7565b50909695505050505050565b80356001600160a01b0381168114611bff57600080fd5b919050565b60008060408385031215611c1757600080fd5b611c2083611be8565b946020939093013593505050565b600060208284031215611c4057600080fd5b61070e82611be8565b600060208284031215611c5b57600080fd5b5035919050565b60008060408385031215611c7557600080fd5b82359150611c8560208401611be8565b90509250929050565b600080600060408486031215611ca357600080fd5b611cac84611be8565b9250602084013567ffffffffffffffff80821115611cc957600080fd5b818601915086601f830112611cdd57600080fd5b813581811115611cec57600080fd5b876020828501011115611cfe57600080fd5b6020830194508093505050509250925092565b60008060408385031215611d2457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611d5a57600080fd5b813567ffffffffffffffff80821115611d7557611d75611d33565b604051601f8301601f19908116603f01168101908282118183101715611d9d57611d9d611d33565b81604052838152866020858801011115611db657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611de857600080fd5b813567ffffffffffffffff811115611dff57600080fd5b611e0b84828501611d49565b949350505050565b60008060208385031215611e2657600080fd5b823567ffffffffffffffff80821115611e3e57600080fd5b818501915085601f830112611e5257600080fd5b813581811115611e6157600080fd5b8660208260051b8501011115611e7657600080fd5b60209290920196919550909350505050565b60005b83811015611ea3578181015183820152602001611e8b565b50506000910152565b60008151808452611ec4816020860160208601611e88565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f2d57603f19888603018452611f1b858351611eac565b94509285019290850190600101611eff565b5092979650505050505050565b60208152600061070e6020830184611eac565b60008060408385031215611f6057600080fd5b611f6983611be8565b9150602083013567ffffffffffffffff811115611f8557600080fd5b611f9185828601611d49565b9150509250929050565b6020808252601f908201527f4163636f756e74466163746f72793a206e6f7420616e206163636f756e742e00604082015260600190565b6020808252602a908201527f4163636f756e74466163746f72793a206163636f756e7420616c7265616479206040820152691c9959da5cdd195c995960b21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156105045761050461201c565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261207257600080fd5b83018035915067ffffffffffffffff82111561208d57600080fd5b6020019150368190038213156120a257600080fd5b9250929050565b6000600182016120bb576120bb61201c565b5060010190565b818103818111156105045761050461201c565b600181811c908216806120e957607f821691505b602082108103610b7957634e487b7160e01b600052602260045260246000fd5b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351612139816015850160208801611e88565b7001034b99036b4b9b9b4b733903937b6329607d1b601591840191820152835161216a816026840160208801611e88565b01602601949350505050565b6001600160a01b0383168152604060208201819052600090611e0b90830184611eac565b601f8211156121e457600081815260208120601f850160051c810160208610156121c15750805b601f850160051c820191505b818110156121e0578281556001016121cd565b5050505b505050565b815167ffffffffffffffff81111561220357612203611d33565b6122178161221184546120d5565b8461219a565b602080601f83116001811461224c57600084156122345750858301515b600019600386901b1c1916600185901b1785556121e0565b600085815260208120601f198616915b8281101561227b5788860151825594840194600190910190840161225c565b50858210156122995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006122bc6040830185611eac565b828103602084015261070a8185611eac565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b80820281158282048414176105045761050461201c565b6000816123405761234061201c565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251612370818460208701611e88565b919091019291505056fe82f5b3e5f5ca1c04b70bced106a2c3b72d9cb53ebbafb3cad0740983db742900322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e500a26469706673582212202c8762d643970726a641320f97b0bc950f9725f5dfab1c1fa618a1038ddf60f264736f6c634300081300336101606040523480156200001257600080fd5b50604051620041153803806200411583398101604081905262000035916200022d565b60408051808201825260078152661058d8dbdd5b9d60ca1b60208083019182528351808501855260018152603160f81b908201529151902060e08190527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c093840190965280519401939093209092529190526101205280620001166200012a565b6001600160a01b031661014052506200025f565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee03005460ff808216916101009004168015620001bb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60ff828116101562000229577f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300805460ff191660ff90811790915560408051918252517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a15b5050565b6000602082840312156200024057600080fd5b81516001600160a01b03811681146200025857600080fd5b9392505050565b60805160a05160c05160e051610100516101205161014051613e5b620002ba60003960006114d501526000612c0301526000612c5201526000612c2d01526000612b8601526000612bb001526000612bda0152613e5b6000f3fe6080604052600436106101a05760003560e01c8063a9082d84116100ec578063cf7a1d771161008a578063e8a3d48511610064578063e8a3d485146104e3578063e9523c9714610505578063f15d424e14610527578063f23a6e611461055457600080fd5b8063cf7a1d7714610499578063d087d288146104b9578063d42f2f35146104ce57600080fd5b8063b61d27f6116100c6578063b61d27f614610418578063b76464d514610438578063bc197c8114610458578063c45a01551461048457600080fd5b8063a9082d841461037f578063ac9650d8146103be578063b0d691fe146103eb57600080fd5b806347e1da2a116101595780635892e236116101335780635892e236146102fd5780637dff5a791461031d5780638b52d7231461033d578063938e3d7b1461035f57600080fd5b806347e1da2a146102b35780634a58db19146102d55780634d44560d146102dd57600080fd5b806301ffc9a7146101ac578063150b7a02146101e15780631626ba7e146102255780631dd756c51461024557806324d7806c146102655780633a871cdd1461028557600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004612d23565b610580565b60405190151581526020015b60405180910390f35b3480156101ed57600080fd5b5061020c6101fc366004612e2f565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016101d8565b34801561023157600080fd5b5061020c610240366004612e9a565b6105c6565b34801561025157600080fd5b506101cc610260366004612ef9565b6106d5565b34801561027157600080fd5b506101cc610280366004612f3e565b6109ad565b34801561029157600080fd5b506102a56102a0366004612f5b565b6109dc565b6040519081526020016101d8565b3480156102bf57600080fd5b506102d36102ce366004612fec565b610a02565b005b6102d3610b73565b3480156102e957600080fd5b506102d36102f8366004613085565b610bda565b34801561030957600080fd5b506102d36103183660046130f2565b610c53565b34801561032957600080fd5b506101cc610338366004612f3e565b611010565b34801561034957600080fd5b506103526110c9565b6040516101d89190613208565b34801561036b57600080fd5b506102d361037a36600461326a565b611310565b34801561038b57600080fd5b5061039f61039a3660046130f2565b611361565b6040805192151583526001600160a01b039091166020830152016101d8565b3480156103ca57600080fd5b506103de6103d93660046132b2565b6113b8565b6040516101d89190613343565b3480156103f757600080fd5b506104006114ac565b6040516001600160a01b0390911681526020016101d8565b34801561042457600080fd5b506102d3610433366004613398565b6114fa565b34801561044457600080fd5b506102d3610453366004612f3e565b61158a565b34801561046457600080fd5b5061020c610473366004613481565b63bc197c8160e01b95945050505050565b34801561049057600080fd5b506104006115c1565b3480156104a557600080fd5b506102d36104b436600461352e565b6115ef565b3480156104c557600080fd5b506102a56117d7565b3480156104da57600080fd5b50610352611857565b3480156104ef57600080fd5b506104f86119c8565b6040516101d8919061357a565b34801561051157600080fd5b5061051a611a79565b6040516101d8919061358d565b34801561053357600080fd5b50610547610542366004612f3e565b611a8b565b6040516101d891906135da565b34801561056057600080fd5b5061020c61056f3660046135ed565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806105b157506001600160e01b03198216630a85bd0160e11b145b806105c057506105c082611b63565b92915050565b6000806105d38484611b98565b90506105de816109ad565b156105f35750630b135d3f60e11b90506105c0565b3360006105fe611bbc565b6001600160a01b03841660009081526006919091016020526040902090506106268183611be0565b80610656575061063581611c02565b60011480156106565750600061064b8282611c0c565b6001600160a01b0316145b6106b35760405162461bcd60e51b8152602060048201526024808201527f4163636f756e743a2063616c6c6572206e6f7420617070726f7665642074617260448201526333b2ba1760e11b60648201526084015b60405180910390fd5b6106bc83611010565b156106cc57630b135d3f60e11b93505b50505092915050565b60006106df611bbc565b6001600160a01b0384166000908152600491909101602052604090205460ff161561070c575060016105c0565b6000610716611bbc565b6001600160a01b0385166000908152600591909101602090815260408083208151606081018352815481526001909101546001600160801b0380821694830194909452600160801b9004909216908201529150610771611bbc565b6006016000866001600160a01b03166001600160a01b0316815260200190815260200160002090504282602001516001600160801b031611806107c1575081604001516001600160801b03164210155b806107d257506107d081611c02565b155b156107e2576000925050506105c0565b60006107f96107f46060870187613655565b611c18565b9050600061080683611c02565b60011480156108275750600061081c8482611c0c565b6001600160a01b0316145b90506324f16c0560e11b6001600160e01b031983160161089e5760008061085961085460608a018a613655565b611c52565b915091508261087f5761086c8583611be0565b61087f57600096505050505050506105c0565b855181111561089757600096505050505050506105c0565b50506109a0565b635c0f12eb60e11b6001600160e01b0319831601610993576000806108ce6108c960608a018a613655565b611cb7565b5091509150826109385760005b8251811015610936576109108382815181106108f9576108f961369b565b602002602001015187611be090919063ffffffff16565b6109245760009750505050505050506105c0565b8061092e816136c7565b9150506108db565b505b60005b825181101561098b578181815181106109565761095661369b565b6020026020010151876000015110156109795760009750505050505050506105c0565b80610983816136c7565b91505061093b565b5050506109a0565b60009450505050506105c0565b5060019695505050505050565b60006109b7611bbc565b6001600160a01b03909216600090815260049290920160205250604090205460ff1690565b60006109e6611d04565b6109f08484611d6e565b90506109fb82611eb4565b9392505050565b610a0a6114ac565b6001600160a01b0316336001600160a01b03161480610a2d5750610a2d336109ad565b610a495760405162461bcd60e51b81526004016106aa906136e0565b610a51611f01565b8481148015610a5f57508483145b610aab5760405162461bcd60e51b815260206004820152601d60248201527f4163636f756e743a2077726f6e67206172726179206c656e677468732e00000060448201526064016106aa565b60005b85811015610b6a57610b57878783818110610acb57610acb61369b565b9050602002016020810190610ae09190612f3e565b868684818110610af257610af261369b565b90506020020135858585818110610b0b57610b0b61369b565b9050602002810190610b1d9190613655565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611feb92505050565b5080610b62816136c7565b915050610aae565b50505050505050565b610b7b6114ac565b60405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024016000604051808303818588803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b5050505050565b610be261205c565b610bea6114ac565b60405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015b600060405180830381600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050505050565b6000610c626020850185612f3e565b905042610c7560e0860160c08701613738565b6001600160801b031611158015610ca45750610c98610100850160e08601613738565b6001600160801b031642105b610cda5760405162461bcd60e51b8152602060048201526007602482015266085c195c9a5bd960ca1b60448201526064016106aa565b600080610ce8868686611361565b9150915081610d225760405162461bcd60e51b81526004016106aa906020808252600490820152632173696760e01b604082015260600190565b6001610d2c611bbc565b610100880135600090815260079190910160209081526040808320805460ff1916941515949094179093559091610d6891908901908901613764565b60ff161115610d95576000610d836040880160208901613764565b60ff166001149050610b6a848261209a565b610d9e836109ad565b15610dd35760405162461bcd60e51b815260206004820152600560248201526430b236b4b760d91b60448201526064016106aa565b610de883610ddf611bbc565b600201906121b1565b50604051806060016040528087606001358152602001876080016020810190610e119190613738565b6001600160801b03168152602001610e2f60c0890160a08a01613738565b6001600160801b03169052610e42611bbc565b6001600160a01b03851660009081526005919091016020908152604080832084518155918401519301516001600160801b03908116600160801b02931692909217600190920191909155610eb8610e97611bbc565b6001600160a01b0386166000908152600691909101602052604090206121c6565b805190915060005b81811015610f2257610f0f838281518110610edd57610edd61369b565b6020026020010151610eed611bbc565b6001600160a01b038916600090815260069190910160205260409020906121d3565b50610f1b60018261377f565b9050610ec0565b50610f306040890189613792565b9050905060005b81811015610fb157610f9e610f4f60408b018b613792565b83818110610f5f57610f5f61369b565b9050602002016020810190610f749190612f3e565b610f7c611bbc565b6001600160a01b038916600090815260069190910160205260409020906121b1565b50610faa60018261377f565b9050610f37565b50610fbb886121e8565b846001600160a01b0316836001600160a01b03167ff21d10c26e35863a8df291aca54181ee8c4a3bc8e00246c3f7a5a14b69d826a78a604051610ffe919061386c565b60405180910390a35050505050505050565b60008061101b611bbc565b6001600160a01b038416600090815260059190910160209081526040918290208251606081018452815481526001909101546001600160801b03808216938301849052600160801b9091041692810192909252909150421080159061108c575080604001516001600160801b031642105b80156109fb575060006110c16110a0611bbc565b6001600160a01b038616600090815260069190910160205260409020611c02565b119392505050565b606060006110e06110d8611bbc565b6002016121c6565b80519091506000805b82811015611171576111138482815181106111065761110661369b565b6020026020010151611010565b1561112a5781611122816136c7565b92505061115f565b600084828151811061113e5761113e61369b565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61116a60018261377f565b90506110e9565b50806001600160401b0381111561118a5761118a612d72565b6040519080825280602002602001820160405280156111c357816020015b6111b0612cd9565b8152602001906001900390816111a85790505b5093506000805b838110156113085760006001600160a01b03168582815181106111ef576111ef61369b565b60200260200101516001600160a01b0316146112f65760008582815181106112195761121961369b565b60200260200101519050600061122d611bbc565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611297610e97611bbc565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b03168152508885806112d6906136c7565b9650815181106112e8576112e861369b565b602002602001018190525050505b61130160018261377f565b90506111ca565b505050505090565b611318612278565b6113555760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016106aa565b61135e81612290565b50565b600080611377611370866123af565b85856124f3565b9050611381611bbc565b6101008601356000908152600791909101602052604090205460ff161580156113ae57506113ae816109ad565b9150935093915050565b6060816001600160401b038111156113d2576113d2612d72565b60405190808252806020026020018201604052801561140557816020015b60608152602001906001900390816113f05790505b50905060005b828110156114a557611475308585848181106114295761142961369b565b905060200281019061143b9190613655565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061254d92505050565b8282815181106114875761148761369b565b6020026020010181905250808061149d906136c7565b91505061140b565b5092915050565b600080516020613ddf833981519152546000906001600160a01b031680156114d357919050565b7f000000000000000000000000000000000000000000000000000000000000000091505090565b6115026114ac565b6001600160a01b0316336001600160a01b031614806115255750611525336109ad565b6115415760405162461bcd60e51b81526004016106aa906136e0565b611549611f01565b610bd3848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611feb92505050565b61159261205c565b600080516020613ddf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548301546001600160a01b031690565b600080516020613dbf8339815191525460ff80821691610100900416801580801561161d575060018360ff16105b806116355750303b15801561163557508260ff166001145b6116985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106aa565b600080516020613dbf833981519152805460ff1916600117905580156116d557600080516020613dbf833981519152805461ff0019166101001790555b6117158786868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061257292505050565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548302557f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b54830180546001600160a01b0319166001600160a01b03881617905561177c87600161209a565b8015610b6a57600080516020613dbf833981519152805461ff0019169055604080516001815290517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a150505050505050565b60006117e16114ac565b604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190613965565b905090565b606060006118666110d8611bbc565b8051909150806001600160401b0381111561188357611883612d72565b6040519080825280602002602001820160405280156118bc57816020015b6118a9612cd9565b8152602001906001900390816118a15790505b50925060005b818110156119c25760008382815181106118de576118de61369b565b6020026020010151905060006118f2611bbc565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a08101909452918352909250810161195c610e97611bbc565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b03168152508684815181106119a1576119a161369b565b602002602001018190525050506001816119bb919061377f565b90506118c2565b50505090565b60607f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90080546119f69061397e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a229061397e565b8015611a6f5780601f10611a4457610100808354040283529160200191611a6f565b820191906000526020600020905b815481529060010190602001808311611a5257829003601f168201915b5050505050905090565b6060611852611a86611bbc565b6121c6565b611a93612cd9565b6000611a9d611bbc565b6001600160a01b038416600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611b28611b07611bbc565b6001600160a01b0387166000908152600691909101602052604090206121c6565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250915050919050565b60006001600160e01b03198216630271189760e51b14806105c057506301ffc9a760e01b6001600160e01b03198316146105c0565b6000806000611ba785856125a5565b91509150611bb4816125ea565b509392505050565b7f3181e78fc1b109bc611fd2406150bf06e33faa75f71cba12c3e1fd670f2def0090565b6001600160a01b038116600090815260018301602052604081205415156109fb565b60006105c0825490565b60006109fb8383612734565b60006004821015611c3b5760405162461bcd60e51b81526004016106aa906139b2565b611c496004600084866139d1565b6109fb916139fb565b6000806044831015611c765760405162461bcd60e51b81526004016106aa906139b2565b611c846024600485876139d1565b810190611c919190612f3e565b9150611ca16044602485876139d1565b810190611cae9190613a2b565b90509250929050565b606080806064841015611cdc5760405162461bcd60e51b81526004016106aa906139b2565b611ce984600481886139d1565b810190611cf69190613ac3565b919790965090945092505050565b611d0c6114ac565b6001600160a01b0316336001600160a01b031614611d6c5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106aa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c81206000611ded611db0610140870187613655565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611b989050565b9050611df981866106d5565b611e08576001925050506105c0565b6000611e12611bbc565b6001600160a01b03929092166000908152600590920160209081526040808420815160608082018452825482526001909201546001600160801b0380821683870152600160801b8204908116928501929092528351928301845295825265ffffffffffff8087169483019490945292831691015260d09290921b6001600160d01b03191660a09290921b65ffffffffffff60a01b169190911795945050505050565b801561135e57604051600090339060001990849084818181858888f193505050503d8060008114610bd3576040519150601f19603f3d011682016040523d82523d6000602084013e610bd3565b6000600080516020613ddf8339815191526001015460405163c3c5a54760e01b81523060048201526001600160a01b039091169150819063c3c5a54790602401602060405180830381865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f829190613ba8565b61135e577f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548302546040516320e80fe360e21b815260048101919091526001600160a01b038216906383a03f8c90602401600060405180830381600087803b158015610bbf57600080fd5b60606000846001600160a01b031684846040516120089190613bca565b60006040518083038185875af1925050503d8060008114612045576040519150601f19603f3d011682016040523d82523d6000602084013e61204a565b606091505b509250905080611bb457815160208301fd5b612065336109ad565b611d6c5760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b60448201526064016106aa565b6120a4828261275e565b60006120ae6115c1565b90506001600160a01b0381163b156121ac578115612143576001600160a01b038116630b61e12b84600080516020613ddf833981519152600201546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561212f57600080fd5b505af1158015610b6a573d6000803e3d6000fd5b6001600160a01b038116639387a38084600080516020613ddf833981519152600201546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561212f57600080fd5b505050565b60006109fb836001600160a01b03841661280d565b606060006109fb8361285c565b60006109fb836001600160a01b0384166128b8565b60006121f26115c1565b90506001600160a01b0381163b15612274576001600160a01b038116630b61e12b6122206020850185612f3e565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b5483025460405160e084901b6001600160e01b03191681526001600160a01b039290921660048301526024820152604401610c1d565b5050565b6000612283336109ad565b8061185257505030331490565b60007f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90080546122be9061397e565b80601f01602080910402602001604051908101604052809291908181526020018280546122ea9061397e565b80156123375780601f1061230c57610100808354040283529160200191612337565b820191906000526020600020905b81548152906001019060200180831161231a57829003601f168201915b50505050509050816123667f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b906123719082613c2c565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516123a3929190613ceb565b60405180910390a15050565b60607f3fd4a1a1a267c84185e3b7eecd57c68783c0581d538b9d6e5f23e4670497c1e96123df6020840184612f3e565b6123ef6040850160208601613764565b6123fc6040860186613792565b60405160200161240d929190613d19565b60408051601f198184030181529190528051602090910120606086013561243a60a0880160808901613738565b61244a60c0890160a08a01613738565b61245a60e08a0160c08b01613738565b61246b6101008b0160e08c01613738565b60408051602081019a909a526001600160a01b039098169789019790975260ff9095166060880152608087019390935260a08601919091526001600160801b0390811660c086015290811660e0850152908116610100848101919091529116610120830152830135610140820152610160016040516020818303038152906040529050919050565b600061254583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508751602089012061253f925090506129ab565b90611b98565b949350505050565b60606109fb8383604051806060016040528060278152602001613dff602791396129d8565b60008282604051602001612587929190613d5b565b60405160208183030381529060405280519060200120905092915050565b60008082516041036125db5760208301516040840151606085015160001a6125cf87828585612ab5565b945094505050506125e3565b506000905060025b9250929050565b60008160048111156125fe576125fe613d7f565b036126065750565b600181600481111561261a5761261a613d7f565b036126675760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106aa565b600281600481111561267b5761267b613d7f565b036126c85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106aa565b60038160048111156126dc576126dc613d7f565b0361135e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106aa565b600082600001828154811061274b5761274b61369b565b9060005260206000200154905092915050565b80612767611bbc565b6001600160a01b038416600090815260049190910160205260409020805460ff191691151591909117905580156127b0576127aa826127a4611bbc565b906121b1565b506127c4565b6127c2826127bc611bbc565b906121d3565b505b816001600160a01b03167f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a1113382604051612801911515815260200190565b60405180910390a25050565b6000818152600183016020526040812054612854575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105c0565b5060006105c0565b6060816000018054806020026020016040519081016040528092919081815260200182805480156128ac57602002820191906000526020600020905b815481526020019060010190808311612898575b50505050509050919050565b600081815260018301602052604081205480156129a15760006128dc600183613d95565b85549091506000906128f090600190613d95565b90508181146129555760008660000182815481106129105761291061369b565b90600052602060002001549050808760000184815481106129335761293361369b565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061296657612966613da8565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105c0565b60009150506105c0565b60006105c06129b8612b79565b8360405161190160f01b8152600281019290925260228201526042902090565b60606001600160a01b0384163b612a405760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106aa565b600080856001600160a01b031685604051612a5b9190613bca565b600060405180830381855af49150503d8060008114612a96576040519150601f19603f3d011682016040523d82523d6000602084013e612a9b565b606091505b5091509150612aab828286612ca0565b9695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612aec5750600090506003612b70565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b40573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b6957600060019250925050612b70565b9150600090505b94509492505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612bd257507f000000000000000000000000000000000000000000000000000000000000000046145b15612bfc57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60608315612caf5750816109fb565b825115612cbf5782518084602001fd5b8160405162461bcd60e51b81526004016106aa919061357a565b6040518060a0016040528060006001600160a01b03168152602001606081526020016000815260200160006001600160801b0316815260200160006001600160801b031681525090565b600060208284031215612d3557600080fd5b81356001600160e01b0319811681146109fb57600080fd5b6001600160a01b038116811461135e57600080fd5b8035612d6d81612d4d565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612db057612db0612d72565b604052919050565b60006001600160401b03831115612dd157612dd1612d72565b612de4601f8401601f1916602001612d88565b9050828152838383011115612df857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e2057600080fd5b6109fb83833560208501612db8565b60008060008060808587031215612e4557600080fd5b8435612e5081612d4d565b93506020850135612e6081612d4d565b92506040850135915060608501356001600160401b03811115612e8257600080fd5b612e8e87828801612e0f565b91505092959194509250565b60008060408385031215612ead57600080fd5b8235915060208301356001600160401b03811115612eca57600080fd5b612ed685828601612e0f565b9150509250929050565b60006101608284031215612ef357600080fd5b50919050565b60008060408385031215612f0c57600080fd5b8235612f1781612d4d565b915060208301356001600160401b03811115612f3257600080fd5b612ed685828601612ee0565b600060208284031215612f5057600080fd5b81356109fb81612d4d565b600080600060608486031215612f7057600080fd5b83356001600160401b03811115612f8657600080fd5b612f9286828701612ee0565b9660208601359650604090950135949350505050565b60008083601f840112612fba57600080fd5b5081356001600160401b03811115612fd157600080fd5b6020830191508360208260051b85010111156125e357600080fd5b6000806000806000806060878903121561300557600080fd5b86356001600160401b038082111561301c57600080fd5b6130288a838b01612fa8565b9098509650602089013591508082111561304157600080fd5b61304d8a838b01612fa8565b9096509450604089013591508082111561306657600080fd5b5061307389828a01612fa8565b979a9699509497509295939492505050565b6000806040838503121561309857600080fd5b82356130a381612d4d565b946020939093013593505050565b60008083601f8401126130c357600080fd5b5081356001600160401b038111156130da57600080fd5b6020830191508360208285010111156125e357600080fd5b60008060006040848603121561310757600080fd5b83356001600160401b038082111561311e57600080fd5b90850190610120828803121561313357600080fd5b9093506020850135908082111561314957600080fd5b50613156868287016130b1565b9497909650939450505050565b80516001600160a01b03908116835260208083015160a082860181905281519086018190526000939183019290849060c08801905b808310156131ba57855185168252948301946001929092019190830190613198565b5060408701516040890152606087015194506131e160608901866001600160801b03169052565b608087015194506131fd60808901866001600160801b03169052565b979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561325d57603f1988860301845261324b858351613163565b9450928501929085019060010161322f565b5092979650505050505050565b60006020828403121561327c57600080fd5b81356001600160401b0381111561329257600080fd5b8201601f810184136132a357600080fd5b61254584823560208401612db8565b600080602083850312156132c557600080fd5b82356001600160401b038111156132db57600080fd5b6132e785828601612fa8565b90969095509350505050565b60005b8381101561330e5781810151838201526020016132f6565b50506000910152565b6000815180845261332f8160208601602086016132f3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561325d57603f19888603018452613386858351613317565b9450928501929085019060010161336a565b600080600080606085870312156133ae57600080fd5b84356133b981612d4d565b93506020850135925060408501356001600160401b038111156133db57600080fd5b6133e7878288016130b1565b95989497509550505050565b60006001600160401b0382111561340c5761340c612d72565b5060051b60200190565b600082601f83011261342757600080fd5b8135602061343c613437836133f3565b612d88565b82815260059290921b8401810191818101908684111561345b57600080fd5b8286015b84811015613476578035835291830191830161345f565b509695505050505050565b600080600080600060a0868803121561349957600080fd5b85356134a481612d4d565b945060208601356134b481612d4d565b935060408601356001600160401b03808211156134d057600080fd5b6134dc89838a01613416565b945060608801359150808211156134f257600080fd5b6134fe89838a01613416565b9350608088013591508082111561351457600080fd5b5061352188828901612e0f565b9150509295509295909350565b6000806000806060858703121561354457600080fd5b843561354f81612d4d565b9350602085013561355f81612d4d565b925060408501356001600160401b038111156133db57600080fd5b6020815260006109fb6020830184613317565b6020808252825182820181905260009190848201906040850190845b818110156135ce5783516001600160a01b0316835292840192918401916001016135a9565b50909695505050505050565b6020815260006109fb6020830184613163565b600080600080600060a0868803121561360557600080fd5b853561361081612d4d565b9450602086013561362081612d4d565b9350604086013592506060860135915060808601356001600160401b0381111561364957600080fd5b61352188828901612e0f565b6000808335601e1984360301811261366c57600080fd5b8301803591506001600160401b0382111561368657600080fd5b6020019150368190038213156125e357600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016136d9576136d96136b1565b5060010190565b60208082526021908201527f4163636f756e743a206e6f742061646d696e206f7220456e747279506f696e746040820152601760f91b606082015260800190565b80356001600160801b0381168114612d6d57600080fd5b60006020828403121561374a57600080fd5b6109fb82613721565b803560ff81168114612d6d57600080fd5b60006020828403121561377657600080fd5b6109fb82613753565b808201808211156105c0576105c06136b1565b6000808335601e198436030181126137a957600080fd5b8301803591506001600160401b038211156137c357600080fd5b6020019150600581901b36038213156125e357600080fd5b6000808335601e198436030181126137f257600080fd5b83016020810192503590506001600160401b0381111561381157600080fd5b8060051b36038213156125e357600080fd5b8183526000602080850194508260005b8581101561386157813561384681612d4d565b6001600160a01b031687529582019590820190600101613833565b509495945050505050565b6020815261388d6020820161388084612d62565b6001600160a01b03169052565b600061389b60208401613753565b60ff81166040840152506138b260408401846137db565b6101208060608601526138ca61014086018385613823565b9250606086013560808601526138e260808701613721565b6001600160801b03811660a087015291506138ff60a08701613721565b6001600160801b03811660c0870152915061391c60c08701613721565b6001600160801b03811660e0870152915061393960e08701613721565b9150610100613952818701846001600160801b03169052565b9590950135939094019290925250919050565b60006020828403121561397757600080fd5b5051919050565b600181811c9082168061399257607f821691505b602082108103612ef357634e487b7160e01b600052602260045260246000fd5b602080825260059082015264214461746160d81b604082015260600190565b600080858511156139e157600080fd5b838611156139ee57600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613a235780818660040360031b1b83161692505b505092915050565b600060208284031215613a3d57600080fd5b5035919050565b600082601f830112613a5557600080fd5b81356020613a65613437836133f3565b82815260059290921b84018101918181019086841115613a8457600080fd5b8286015b848110156134765780356001600160401b03811115613aa75760008081fd5b613ab58986838b0101612e0f565b845250918301918301613a88565b600080600060608486031215613ad857600080fd5b83356001600160401b0380821115613aef57600080fd5b818601915086601f830112613b0357600080fd5b81356020613b13613437836133f3565b82815260059290921b8401810191818101908a841115613b3257600080fd5b948201945b83861015613b59578535613b4a81612d4d565b82529482019490820190613b37565b97505087013592505080821115613b6f57600080fd5b613b7b87838801613416565b93506040860135915080821115613b9157600080fd5b50613b9e86828701613a44565b9150509250925092565b600060208284031215613bba57600080fd5b815180151581146109fb57600080fd5b60008251613bdc8184602087016132f3565b9190910192915050565b601f8211156121ac57600081815260208120601f850160051c81016020861015613c0d5750805b601f850160051c820191505b81811015610c4b57828155600101613c19565b81516001600160401b03811115613c4557613c45612d72565b613c5981613c53845461397e565b84613be6565b602080601f831160018114613c8e5760008415613c765750858301515b600019600386901b1c1916600185901b178555610c4b565b600085815260208120601f198616915b82811015613cbd57888601518255948401946001909101908401613c9e565b5085821015613cdb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613cfe6040830185613317565b8281036020840152613d108185613317565b95945050505050565b60008184825b85811015613d50578135613d3281612d4d565b6001600160a01b031683526020928301929190910190600101613d1f565b509095945050505050565b6001600160a01b038316815260406020820181905260009061254590830184613317565b634e487b7160e01b600052602160045260246000fd5b818103818111156105c0576105c06136b1565b634e487b7160e01b600052603160045260246000fdfe322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b548300416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bd8efcbc09cc6caf48457e0a60a194b4034db52fcbc923e414e7699f1d3d41f464736f6c63430008130033"; + + public AccountFactoryDeploymentBase() + : base(BYTECODE) { } + + public AccountFactoryDeploymentBase(string byteCode) + : base(byteCode) { } + + [Parameter("address", "_entrypoint", 1)] + public virtual string Entrypoint { get; set; } + } + + public partial class DefaultAdminRoleFunction : DefaultAdminRoleFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DefaultAdminRoleFunctionBase : FunctionMessage { } + + public partial class AccountImplementationFunction : AccountImplementationFunctionBase { } + + [Function("accountImplementation", "address")] + public class AccountImplementationFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class CreateAccountFunction : CreateAccountFunctionBase { } + + [Function("createAccount", "address")] + public class CreateAccountFunctionBase : FunctionMessage + { + [Parameter("address", "_admin", 1)] + public virtual string Admin { get; set; } + + [Parameter("bytes", "_data", 2)] + public virtual byte[] Data { get; set; } + } + + public partial class EntrypointFunction : EntrypointFunctionBase { } + + [Function("entrypoint", "address")] + public class EntrypointFunctionBase : FunctionMessage { } + + public partial class GetAccountsFunction : GetAccountsFunctionBase { } + + [Function("getAccounts", "address[]")] + public class GetAccountsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_start", 1)] + public virtual BigInteger Start { get; set; } + + [Parameter("uint256", "_end", 2)] + public virtual BigInteger End { get; set; } + } + + public partial class GetAccountsOfSignerFunction : GetAccountsOfSignerFunctionBase { } + + [Function("getAccountsOfSigner", "address[]")] + public class GetAccountsOfSignerFunctionBase : FunctionMessage + { + [Parameter("address", "signer", 1)] + public virtual string Signer { get; set; } + } + + public partial class GetAddressFunction : GetAddressFunctionBase { } + + [Function("getAddress", "address")] + public class GetAddressFunctionBase : FunctionMessage + { + [Parameter("address", "_adminSigner", 1)] + public virtual string AdminSigner { get; set; } + + [Parameter("bytes", "_data", 2)] + public virtual byte[] Data { get; set; } + } + + public partial class GetAllAccountsFunction : GetAllAccountsFunctionBase { } + + [Function("getAllAccounts", "address[]")] + public class GetAllAccountsFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_contractURI", 2)] + public virtual string ContractURI { get; set; } + } + + public partial class IsRegisteredFunction : IsRegisteredFunctionBase { } + + [Function("isRegistered", "bool")] + public class IsRegisteredFunctionBase : FunctionMessage + { + [Parameter("address", "_account", 1)] + public virtual string Account { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class OnRegisterFunction : OnRegisterFunctionBase { } + + [Function("onRegister")] + public class OnRegisterFunctionBase : FunctionMessage + { + [Parameter("bytes32", "_salt", 1)] + public virtual byte[] Salt { get; set; } + } + + public partial class OnSignerAddedFunction : OnSignerAddedFunctionBase { } + + [Function("onSignerAdded")] + public class OnSignerAddedFunctionBase : FunctionMessage + { + [Parameter("address", "_signer", 1)] + public virtual string Signer { get; set; } + + [Parameter("bytes32", "_salt", 2)] + public virtual byte[] Salt { get; set; } + } + + public partial class OnSignerRemovedFunction : OnSignerRemovedFunctionBase { } + + [Function("onSignerRemoved")] + public class OnSignerRemovedFunctionBase : FunctionMessage + { + [Parameter("address", "_signer", 1)] + public virtual string Signer { get; set; } + + [Parameter("bytes32", "_salt", 2)] + public virtual byte[] Salt { get; set; } + } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class TotalAccountsFunction : TotalAccountsFunctionBase { } + + [Function("totalAccounts", "uint256")] + public class TotalAccountsFunctionBase : FunctionMessage { } + + public partial class AccountCreatedEventDTO : AccountCreatedEventDTOBase { } + + [Event("AccountCreated")] + public class AccountCreatedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "accountAdmin", 2, true)] + public virtual string AccountAdmin { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class SignerAddedEventDTO : SignerAddedEventDTOBase { } + + [Event("SignerAdded")] + public class SignerAddedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "signer", 2, true)] + public virtual string Signer { get; set; } + } + + public partial class SignerRemovedEventDTO : SignerRemovedEventDTOBase { } + + [Event("SignerRemoved")] + public class SignerRemovedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "signer", 2, true)] + public virtual string Signer { get; set; } + } + + public partial class DefaultAdminRoleOutputDTO : DefaultAdminRoleOutputDTOBase { } + + [FunctionOutput] + public class DefaultAdminRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class AccountImplementationOutputDTO : AccountImplementationOutputDTOBase { } + + [FunctionOutput] + public class AccountImplementationOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class EntrypointOutputDTO : EntrypointOutputDTOBase { } + + [FunctionOutput] + public class EntrypointOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetAccountsOutputDTO : GetAccountsOutputDTOBase { } + + [FunctionOutput] + public class GetAccountsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address[]", "accounts", 1)] + public virtual List Accounts { get; set; } + } + + public partial class GetAccountsOfSignerOutputDTO : GetAccountsOfSignerOutputDTOBase { } + + [FunctionOutput] + public class GetAccountsOfSignerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address[]", "accounts", 1)] + public virtual List Accounts { get; set; } + } + + public partial class GetAddressOutputDTO : GetAddressOutputDTOBase { } + + [FunctionOutput] + public class GetAddressOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetAllAccountsOutputDTO : GetAllAccountsOutputDTOBase { } + + [FunctionOutput] + public class GetAllAccountsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsRegisteredOutputDTO : IsRegisteredOutputDTOBase { } + + [FunctionOutput] + public class IsRegisteredOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class TotalAccountsOutputDTO : TotalAccountsOutputDTOBase { } + + [FunctionOutput] + public class TotalAccountsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs.meta new file mode 100644 index 00000000..66c3ea57 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/AccountFactory/ContractDefinition/AccountFactoryDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2509413315ca6214e9b6e8ccac4bb817 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic.meta b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic.meta new file mode 100644 index 00000000..a7c2a3a7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d98be6c7a686b6e4e8c599767703bac5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition.meta new file mode 100644 index 00000000..65101353 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9ddc6a1baff0ba4cb2fa93cc22bfd2c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs new file mode 100644 index 00000000..679483fc --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs @@ -0,0 +1,388 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.DirectListingsLogic.ContractDefinition +{ + public partial class DirectListingsLogicDeployment : DirectListingsLogicDeploymentBase + { + public DirectListingsLogicDeployment() + : base(BYTECODE) { } + + public DirectListingsLogicDeployment(string byteCode) + : base(byteCode) { } + } + + public class DirectListingsLogicDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60a06040523480156200001157600080fd5b50604051620042603803806200426083398101604081905262000034916200006a565b60017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b00556001600160a01b03166080526200009c565b6000602082840312156200007d57600080fd5b81516001600160a01b03811681146200009557600080fd5b9392505050565b6080516141a8620000b86000396000612e2a01526141a86000f3fe6080604052600436106100e85760003560e01c8063746415b51161008a578063c5275fb011610059578063c5275fb014610293578063c78b616c146102b3578063ea8f9a3c146102c8578063fb14079d146102e857600080fd5b8063746415b5146101f25780638b49d47e146102205780639cfbe2a614610243578063a85190471461027357600080fd5b8063305a67a8116100c6578063305a67a81461017257806331654b4d1461019257806348dd77df146101bf578063704232dc146101df57600080fd5b806307b67758146100ed578063107a274a1461010f578063119df25f14610145575b600080fd5b3480156100f957600080fd5b5061010d610108366004613914565b610308565b005b34801561011b57600080fd5b5061012f61012a366004613942565b610b4d565b60405161013c9190613a74565b60405180910390f35b34801561015157600080fd5b5061015a610c7f565b6040516001600160a01b03909116815260200161013c565b34801561017e57600080fd5b5061010d61018d366004613942565b610cf8565b34801561019e57600080fd5b506101b26101ad366004613a83565b610e2e565b60405161013c9190613aa5565b3480156101cb57600080fd5b5061010d6101da366004613af4565b611174565b61010d6101ed366004613b36565b611321565b3480156101fe57600080fd5b5061021261020d366004613b88565b611a71565b60405190815260200161013c565b34801561022c57600080fd5b50610235611fca565b60405161013c929190613ba1565b34801561024f57600080fd5b5061026361025e366004613bd0565b612060565b604051901515815260200161013c565b34801561027f57600080fd5b5061026361028e366004613bd0565b61209d565b34801561029f57600080fd5b506101b26102ae366004613a83565b6120d6565b3480156102bf57600080fd5b50610212612300565b3480156102d457600080fd5b5061010d6102e3366004613c00565b612310565b3480156102f457600080fd5b50610212610303366004613bd0565b612672565b81600161031361272d565b60008381526001919091016020526040902060070154600160a81b900460ff1660038111156103445761034461395b565b1461036a5760405162461bcd60e51b815260040161036190613c38565b60405180910390fd5b815160405163a32fa5b360e01b81527f86d5cf0a6bdc8d859ba3bdc97043337c82a0e609035f378e419298b6a3e00ae660048201526001600160a01b0382166024820152309063a32fa5b390604401602060405180830381865afa1580156103d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fa9190613c6f565b6104345760405162461bcd60e51b815260206004820152600b60248201526a2141535345545f524f4c4560a81b6044820152606401610361565b8361043d610c7f565b6001600160a01b031661044e61272d565b600083815260019190910160205260409020600501546001600160a01b03161461048a5760405162461bcd60e51b815260040161036190613c93565b6000610494610c7f565b905060006104a061272d565b6000888152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff16908111156105575761055761395b565b60018111156105685761056861395b565b81526020016007820160159054906101000a900460ff1660038111156105905761059061395b565b60038111156105a1576105a161395b565b815260079190910154600160b01b900460ff16151560209091015286519091506000906105cd90612751565b9050428260a001516001600160801b03161161062b5760405162461bcd60e51b815260206004820152601d60248201527f4d61726b6574706c6163653a206c697374696e6720657870697265642e0000006044820152606401610361565b86600001516001600160a01b03168260e001516001600160a01b031614801561065b575086602001518260200151145b6106c05760405162461bcd60e51b815260206004820152603060248201527f4d61726b6574706c6163653a2063616e6e6f742075706461746520776861742060448201526f3a37b5b2b71034b9903634b9ba32b21760811b6064820152608401610361565b60a087015160c08801516001600160801b03808216908316106106f55760405162461bcd60e51b815260040161036190613cd4565b4284608001516001600160801b03161180610738575083608001516001600160801b0316826001600160801b0316148015610738575042816001600160801b0316115b6107905760405162461bcd60e51b8152602060048201526024808201527f4d61726b6574706c6163653a206c697374696e6720616c72656164792061637460448201526334bb329760e11b6064820152608401610361565b83608001516001600160801b0316826001600160801b0316141580156107be575042826001600160801b0316105b1561085257426107d083610e10613d47565b6001600160801b031610156107f75760405162461bcd60e51b815260040161036190613d67565b4291508360a001516001600160801b0316816001600160801b0316148061082657506001600160801b03818116145b61084d578860a001518960c0015161083e9190613dab565b6108489083613d47565b61084f565b805b90505b600061085c61272d565b60008c81526003919091016020908152604080832060608e01516001600160a01b0316845290915290205490508015806108995750808a60800151145b6108fe5760405162461bcd60e51b815260206004820152603060248201527f4d61726b6574706c6163653a20707269636520646966666572656e742066726f60448201526f6d20617070726f76656420707269636560801b6064820152608401610361565b5061090989846128b6565b6040518061018001604052808b81526020018a6020015181526020018a6040015181526020018a608001518152602001836001600160801b03168152602001826001600160801b03168152602001866001600160a01b031681526020018a600001516001600160a01b031681526020018a606001516001600160a01b0316815260200184600181111561099e5761099e61395b565b8152602001600181526020018a60e0015115158152509350836109bf61272d565b60008c81526001918201602090815260409182902084518155908401518184015590830151600282015560608301516003820155608083015160a08401516001600160801b03908116600160801b02911617600482015560c08301516005820180546001600160a01b039283166001600160a01b03199182161790915560e0850151600684018054918416918316919091179055610100850151600784018054919093169181168217835561012086015193946001600160a81b031990911690911790600160a01b908490811115610a9957610a9961395b565b021790555061014082015160078201805460ff60a81b1916600160a81b836003811115610ac857610ac861395b565b02179055506101608201518160070160166101000a81548160ff02191690831515021790555090505088600001516001600160a01b03168a866001600160a01b03167ffa5081de2649236db88a34c443c2fc130da7324d781893a7fc4a0d6be33a815687604051610b399190613a74565b60405180910390a450505050505050505050565b610b5561375f565b610b5d61272d565b6000838152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff1690811115610c1457610c1461395b565b6001811115610c2557610c2561395b565b81526020016007820160159054906101000a900460ff166003811115610c4d57610c4d61395b565b6003811115610c5e57610c5e61395b565b815260079190910154600160b01b900460ff16151560209091015292915050565b60405163572b6c0560e01b8152336004820152600090309063572b6c0590602401602060405180830381865afa158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190613c6f565b15610cf3575060131936013560601c90565b503390565b806001610d0361272d565b60008381526001919091016020526040902060070154600160a81b900460ff166003811115610d3457610d3461395b565b14610d515760405162461bcd60e51b815260040161036190613c38565b81610d5a610c7f565b6001600160a01b0316610d6b61272d565b600083815260019190910160205260409020600501546001600160a01b031614610da75760405162461bcd60e51b815260040161036190613c93565b6003610db161272d565b600085815260019190910160205260409020600701805460ff60a81b1916600160a81b836003811115610de657610de661395b565b021790555082610df4610c7f565b6001600160a01b03167ff6e9b23c95dec70093b0abc1cf13bc5d35c9af03743f941904a4ef664e0119fb60405160405180910390a3505050565b6060818311158015610e475750610e4361272d565b5482105b610e835760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b6044820152606401610361565b6000610e8f8484613dcb565b610e9a906001613dde565b67ffffffffffffffff811115610eb257610eb26137c2565b604051908082528060200260200182016040528015610eeb57816020015b610ed861375f565b815260200190600190039081610ed05790505b5090506000845b84811161109357610f0161272d565b6000828152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff1690811115610fb857610fb861395b565b6001811115610fc957610fc961395b565b81526020016007820160159054906101000a900460ff166003811115610ff157610ff161395b565b60038111156110025761100261395b565b815260079190910154600160b01b900460ff161515602090910152836110288884613dcb565b8151811061103857611038613df1565b602090810291909101015261106e836110518884613dcb565b8151811061106157611061613df1565b60200260200101516129d2565b156110815761107e600183613dde565b91505b61108c600182613dde565b9050610ef2565b508067ffffffffffffffff8111156110ad576110ad6137c2565b6040519080825280602002602001820160405280156110e657816020015b6110d361375f565b8152602001906001900390816110cb5790505b508251909350600090815b818110156111695761110e85828151811061106157611061613df1565b156111575784818151811061112557611125613df1565b602002602001015186848061113990613e07565b95508151811061114b5761114b613df1565b60200260200101819052505b611162600182613dde565b90506110f1565b505050505092915050565b82600161117f61272d565b60008381526001919091016020526040902060070154600160a81b900460ff1660038111156111b0576111b061395b565b146111cd5760405162461bcd60e51b815260040161036190613c38565b836111d6610c7f565b6001600160a01b03166111e761272d565b600083815260019190910160205260409020600501546001600160a01b0316146112235760405162461bcd60e51b815260040161036190613c93565b61122b61272d565b60008681526001919091016020526040902060070154600160b01b900460ff166112a25760405162461bcd60e51b815260206004820152602260248201527f4d61726b6574706c6163653a206c697374696e67206e6f742072657365727665604482015261321760f11b6064820152608401610361565b826112ab61272d565b6000878152600291909101602090815260408083206001600160a01b03891680855290835292819020805460ff19169415159490941790935591518515158152909187917f3b557e1ed3b963f7473508fd10c6d7248b593c0dde6acd2a566b92caec84038a910160405180910390a35050505050565b60027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0054036113925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610361565b60027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b00558460016113c161272d565b60008381526001919091016020526040902060070154600160a81b900460ff1660038111156113f2576113f261395b565b1461140f5760405162461bcd60e51b815260040161036190613c38565b600061141961272d565b6000888152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff16908111156114d0576114d061395b565b60018111156114e1576114e161395b565b81526020016007820160159054906101000a900460ff1660038111156115095761150961395b565b600381111561151a5761151a61395b565b815260079190910154600160b01b900460ff16151560209091015290506000611541610c7f565b90508161016001511580611583575061155861272d565b6000898152600291909101602090815260408083206001600160a01b038516845290915290205460ff165b6115c45760405162461bcd60e51b8152602060048201526012602482015271189d5e595c881b9bdd08185c1c1c9bdd995960721b6044820152606401610361565b6000861180156115d8575081604001518611155b6116245760405162461bcd60e51b815260206004820152601760248201527f427579696e6720696e76616c6964207175616e746974790000000000000000006044820152606401610361565b8160a001516001600160801b03164210801561164d575081608001516001600160801b03164210155b6116995760405162461bcd60e51b815260206004820152601760248201527f6e6f742077697468696e2073616c652077696e646f772e0000000000000000006044820152606401610361565b6116b78260c001518360e00151846020015189866101200151612a44565b6116d35760405162461bcd60e51b815260040161036190613e20565b6000806116de61272d565b60008b8152600391909101602090815260408083206001600160a01b038b168452909152902054111561174b5761171361272d565b60008a8152600391909101602090815260408083206001600160a01b038a1684529091529020546117449088613e6a565b90506117c3565b8261010001516001600160a01b0316866001600160a01b0316146117b15760405162461bcd60e51b815260206004820152601b60248201527f506179696e6720696e20696e76616c69642063757272656e63792e00000000006044820152606401610361565b60608301516117c09088613e6a565b90505b84811461180b5760405162461bcd60e51b8152602060048201526016602482015275556e657870656374656420746f74616c20707269636560501b6044820152606401610361565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038716016118aa578034146118a55760405162461bcd60e51b815260206004820152603760248201527f4d61726b6574706c6163653a206d73672e76616c7565206d757374206578616360448201527f746c792062652074686520746f74616c2070726963652e0000000000000000006064820152608401610361565b611914565b34156119095760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574706c6163653a20696e76616c6964206e617469766520746f6b6560448201526737399039b2b73a1760c11b6064820152608401610361565b611914828783612d00565b8683604001510361196457600261192961272d565b60008b815260019190910160205260409020600701805460ff60a81b1916600160a81b83600381111561195e5761195e61395b565b02179055505b8661196d61272d565b60010160008b815260200190815260200160002060020160008282546119939190613dcb565b925050819055506119ab828460c00151888487612e26565b6119bb8360c0015189898661304e565b8260e001516001600160a01b031683600001518460c001516001600160a01b03167ff6e03f1c408cfd2d118397c912a4b576683c43b41b015e3d7c212bac0cd0e7c78660200151868c87604051611a3494939291909384526001600160a01b039290921660208401526040830152606082015260800190565b60405180910390a4505050506001611a697f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0090565b555050505050565b60003063a32fa5b37ff94103142c1baabe9ac2b5d1487bf783de9e69cfeea9a72f5c9c94afd7877b8c611aa2610c7f565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b109190613c6f565b611b4b5760405162461bcd60e51b815260206004820152600c60248201526b214c49535445525f524f4c4560a01b6044820152606401610361565b611b586020830183613e81565b60405163a32fa5b360e01b81527f86d5cf0a6bdc8d859ba3bdc97043337c82a0e609035f378e419298b6a3e00ae660048201526001600160a01b0382166024820152309063a32fa5b390604401602060405180830381865afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190613c6f565b611c205760405162461bcd60e51b815260206004820152600b60248201526a2141535345545f524f4c4560a81b6044820152606401610361565b611c286131a3565b91506000611c34610c7f565b90506000611c4d611c486020870187613e81565b612751565b90506000611c6160c0870160a08801613e9e565b90506000611c7560e0880160c08901613e9e565b9050806001600160801b0316826001600160801b031610611ca85760405162461bcd60e51b815260040161036190613cd4565b42826001600160801b03161015611d3e5742611cc683610e10613d47565b6001600160801b03161015611ced5760405162461bcd60e51b815260040161036190613d67565b4291506001600160801b0381811614611d3957611d1060c0880160a08901613e9e565b611d2060e0890160c08a01613e9e565b611d2a9190613dab565b611d349083613d47565b611d3b565b805b90505b611d56611d5036899003890189613eb9565b846128b6565b6000604051806101800160405280888152602001896020013581526020018960400135815260200189608001358152602001846001600160801b03168152602001836001600160801b03168152602001866001600160a01b03168152602001896000016020810190611dc89190613e81565b6001600160a01b03168152602001611de660808b0160608c01613e81565b6001600160a01b03168152602001856001811115611e0657611e0661395b565b815260200160018152602001611e236101008b0160e08c01613ed6565b15159052905080611e3261272d565b60008981526001918201602090815260409182902084518155908401518184015590830151600282015560608301516003820155608083015160a08401516001600160801b03908116600160801b02911617600482015560c08301516005820180546001600160a01b039283166001600160a01b03199182161790915560e0850151600684018054918416918316919091179055610100850151600784018054919093169181168217835561012086015193946001600160a81b031990911690911790600160a01b908490811115611f0c57611f0c61395b565b021790555061014082015160078201805460ff60a81b1916600160a81b836003811115611f3b57611f3b61395b565b0217905550610160919091015160079091018054911515600160b01b0260ff60b01b19909216919091179055611f746020890189613e81565b6001600160a01b031687866001600160a01b03167fef309e3999c4dd6a4c1e4af6221896b7e5ccf9e7fc4fe5b218b883ce9190d7ad84604051611fb79190613a74565b60405180910390a4505050505050919050565b60405163572b6c0560e01b81523360048201523690600090309063572b6c0590602401602060405180830381865afa15801561200a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202e9190613c6f565b156120575760008036612042601482613dcb565b9261204f93929190613ef3565b915091509091565b50600091369150565b600061206a61272d565b6000848152600291909101602090815260408083206001600160a01b038616845290915290205460ff1690505b92915050565b6000806120a861272d565b6000948552600301602090815260408086206001600160a01b03959095168652939052919092205411919050565b60608183111580156120ef57506120eb61272d565b5482105b61212b5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b6044820152606401610361565b6121358383613dcb565b612140906001613dde565b67ffffffffffffffff811115612158576121586137c2565b60405190808252806020026020018201604052801561219157816020015b61217e61375f565b8152602001906001900390816121765790505b509050825b8281116122f9576121a561272d565b6000828152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff169081111561225c5761225c61395b565b600181111561226d5761226d61395b565b81526020016007820160159054906101000a900460ff1660038111156122955761229561395b565b60038111156122a6576122a661395b565b815260079190910154600160b01b900460ff161515602090910152826122cc8684613dcb565b815181106122dc576122dc613df1565b60209081029190910101526122f2600182613dde565b9050612196565b5092915050565b600061230a61272d565b54919050565b82600161231b61272d565b60008381526001919091016020526040902060070154600160a81b900460ff16600381111561234c5761234c61395b565b146123695760405162461bcd60e51b815260040161036190613c38565b83612372610c7f565b6001600160a01b031661238361272d565b600083815260019190910160205260409020600501546001600160a01b0316146123bf5760405162461bcd60e51b815260040161036190613c93565b60006123c961272d565b6000878152600191820160209081526040918290208251610180810184528154815281850154928101929092526002810154928201929092526003820154606082015260048201546001600160801b038082166080840152600160801b9091041660a082015260058201546001600160a01b0390811660c08301526006830154811660e083015260078301549081166101008301529092610120840191600160a01b900460ff16908111156124805761248061395b565b60018111156124915761249161395b565b81526020016007820160159054906101000a900460ff1660038111156124b9576124b961395b565b60038111156124ca576124ca61395b565b81526007919091015460ff600160b01b9091041615156020909101526101008101519091506001600160a01b03868116911614158061250c5750806060015184145b61257e5760405162461bcd60e51b815260206004820152603d60248201527f4d61726b6574706c6163653a20617070726f76696e67206c697374696e67206360448201527f757272656e6379207769746820646966666572656e742070726963652e0000006064820152608401610361565b8361258761272d565b6000888152600391909101602090815260408083206001600160a01b038a168452909152902054036125fb5760405162461bcd60e51b815260206004820152601d60248201527f4d61726b6574706c6163653a20707269636520756e6368616e6765642e0000006044820152606401610361565b8361260461272d565b6000888152600391909101602090815260408083206001600160a01b038a16808552925291829020929092555187907f928cc552fea23b15fbd5c6b45fbfc5935c5b4a6397d7fdab884164648a777cf2906126629088815260200190565b60405180910390a3505050505050565b600061267c61272d565b6000848152600391909101602090815260408083206001600160a01b038616845290915281205490036126fb5760405162461bcd60e51b815260206004820152602160248201527f43757272656e6379206e6f7420617070726f76656420666f72206c697374696e6044820152606760f81b6064820152608401610361565b61270361272d565b6000938452600301602090815260408085206001600160a01b039490941685529290525090205490565b7fa5370dfa5e46a36b8e1214352e211aa04006b977c8fd45a98e6b8c6e230ba00090565b6040516301ffc9a760e01b8152636cdb3d1360e11b60048201526000906001600160a01b038316906301ffc9a790602401602060405180830381865afa15801561279f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c39190613c6f565b156127d057506001919050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa15801561281b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283f9190613c6f565b1561284c57506000919050565b60405162461bcd60e51b815260206004820152603460248201527f4d61726b6574706c6163653a206c697374656420746f6b656e206d7573742062604482015273329022a92198989a9a9037b91022a9219b99189760611b6064820152608401610361565b919050565b60008260400151116129165760405162461bcd60e51b815260206004820152602360248201527f4d61726b6574706c6163653a206c697374696e67207a65726f207175616e74696044820152623a3c9760e91b6064820152608401610361565b81604001516001148061293a575060018160018111156129385761293861395b565b145b6129955760405162461bcd60e51b815260206004820152602660248201527f4d61726b6574706c6163653a206c697374696e6720696e76616c696420717561604482015265373a34ba3c9760d11b6064820152608401610361565b6129b26129a0610c7f565b83516020850151604086015185612a44565b6129ce5760405162461bcd60e51b815260040161036190613e20565b5050565b60004282608001516001600160801b0316111580156129fd5750428260a001516001600160801b0316115b8015612a1f575060018261014001516003811115612a1d57612a1d61395b565b145b801561209757506120978260c001518360e00151846020015185604001518661012001515b6000306001836001811115612a5b57612a5b61395b565b03612b5457604051627eeac760e11b81526001600160a01b0388811660048301526024820187905285919088169062fdd58e90604401602060405180830381865afa158015612aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad29190613f1d565b10158015612b4d575060405163e985e9c560e01b81526001600160a01b038881166004830152828116602483015287169063e985e9c590604401602060405180830381865afa158015612b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4d9190613c6f565b9150612cf6565b6000836001811115612b6857612b6861395b565b03612cf6576040516331a9108f60e11b81526004810186905260009081906001600160a01b03891690636352211e90602401602060405180830381865afa925050508015612bd3575060408051601f3d908101601f19168201909252612bd091810190613f36565b60015b15612c485760405163020604bf60e21b81526004810189905290925082906001600160a01b038a169063081812fc90602401602060405180830381865afa925050508015612c3e575060408051601f3d908101601f19168201909252612c3b91810190613f36565b60015b15612c465791505b505b886001600160a01b0316826001600160a01b0316148015612cf15750826001600160a01b0316816001600160a01b03161480612cf1575060405163e985e9c560e01b81526001600160a01b038a81166004830152848116602483015289169063e985e9c590604401602060405180830381865afa158015612ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf19190613c6f565b935050505b5095945050505050565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908416906370a0823190602401602060405180830381865afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6d9190613f1d565b10158015612dec5750604051636eb1769f60e11b81526001600160a01b03848116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015612dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de99190613f1d565b10155b612e215760405162461bcd60e51b815260206004820152600660248201526502142414c32360d41b6044820152606401610361565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000806000306001600160a01b031663d45573f66040518163ffffffff1660e01b81526004016040805180830381865afa158015612e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb19190613f53565b90925090506000612710612ec961ffff841689613e6a565b612ed39190613f89565b9050612ee2888b8584896131d4565b612eec8188613dcb565b60e08701516020880151604051637a99dc0160e11b81526001600160a01b0390921660048301526024820152604481018990529094506000935083925030915063f533b802906064016000604051808303816000875af1158015612f54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f7c919081019061403a565b8151919350915080156130355760008060005b8381101561303157858181518110612fa957612fa9613df1565b60200260200101519150848181518110612fc557612fc5613df1565b60200260200101519250828710156130175760405162461bcd60e51b815260206004820152601560248201527466656573206578636565642074686520707269636560581b6044820152606401610361565b6130248b8e84868c6131d4565b9582900395600101612f8f565b5050505b50505061304585888884866131d4565b50505050505050565b600181610120015160018111156130675761306761395b565b036130fb5760e08101516020820151604051637921219560e11b81526001600160a01b038781166004830152868116602483015260448201929092526064810185905260a06084820152600060a482015291169063f242432a9060c401600060405180830381600087803b1580156130de57600080fd5b505af11580156130f2573d6000803e3d6000fd5b5050505061319d565b600081610120015160018111156131145761311461395b565b0361319d5760e08101516020820151604051635c46a7ef60e11b81526001600160a01b03878116600483015286811660248301526044820192909252608060648201526000608482015291169063b88d4fde9060a401600060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050505b50505050565b60006131ad61272d565b54905060016131ba61272d565b80546000906131ca908490613dde565b9250508190555090565b811561333e5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0386160161333257306001600160a01b0385160361327957604051632e1a7d4d60e01b8152600481018390526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b15801561325157600080fd5b505af1158015613265573d6000803e3d6000fd5b50505050613274838383613345565b61333e565b306001600160a01b03841603613327573482146132ce5760405162461bcd60e51b81526020600482015260136024820152721b5cd9cb9d985b1d5948084f48185b5bdd5b9d606a1b6044820152606401610361565b806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561330957600080fd5b505af115801561331d573d6000803e3d6000fd5b505050505061333e565b613274838383613345565b61333e8585858561340a565b5050505050565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114613392576040519150601f19603f3d011682016040523d82523d6000602084013e613397565b606091505b505090508061319d57816001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156133db57600080fd5b505af11580156133ef573d6000803e3d6000fd5b5061319d935050506001600160a01b03841690508585613462565b816001600160a01b0316836001600160a01b0316031561319d57306001600160a01b0384160361344d576134486001600160a01b0385168383613462565b61319d565b61319d6001600160a01b0385168484846134c5565b6040516001600160a01b038316602482015260448101829052612e2190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526134fd565b6040516001600160a01b038085166024830152831660448201526064810182905261319d9085906323b872dd60e01b9060840161348e565b6000613552826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135cf9092919063ffffffff16565b805190915015612e2157808060200190518101906135709190613c6f565b612e215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610361565b60606135de84846000856135e6565b949350505050565b6060824710156136475760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610361565b600080866001600160a01b031685876040516136639190614123565b60006040518083038185875af1925050503d80600081146136a0576040519150601f19603f3d011682016040523d82523d6000602084013e6136a5565b606091505b50915091506136b6878383876136c1565b979650505050505050565b60608315613730578251600003613729576001600160a01b0385163b6137295760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610361565b50816135de565b6135de83838151156137455781518083602001fd5b8060405162461bcd60e51b8152600401610361919061413f565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905290610120820190815260200160008152600060209091015290565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613801576138016137c2565b604052919050565b6001600160a01b038116811461381e57600080fd5b50565b80356128b181613809565b80356001600160801b03811681146128b157600080fd5b801515811461381e57600080fd5b80356128b181613843565b600061010080838503121561387057600080fd5b6040519081019067ffffffffffffffff82118183101715613893576138936137c2565b81604052809250833591506138a782613809565b81815260208401356020820152604084013560408201526138ca60608501613821565b6060820152608084013560808201526138e560a0850161382c565b60a08201526138f660c0850161382c565b60c082015261390760e08501613851565b60e0820152505092915050565b600080610120838503121561392857600080fd5b82359150613939846020850161385c565b90509250929050565b60006020828403121561395457600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600281106139815761398161395b565b9052565b600481106139815761398161395b565b8051825260208101516020830152604081015160408301526060810151606083015260808101516139d160808401826001600160801b03169052565b5060a08101516139ec60a08401826001600160801b03169052565b5060c0810151613a0760c08401826001600160a01b03169052565b5060e0810151613a2260e08401826001600160a01b03169052565b50610100818101516001600160a01b03169083015261012080820151613a4a82850182613971565b505061014080820151613a5f82850182613985565b5050610160818101518015158483015261319d565b61018081016120978284613995565b60008060408385031215613a9657600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ae857613ad4838551613995565b928401926101809290920191600101613ac1565b50909695505050505050565b600080600060608486031215613b0957600080fd5b833592506020840135613b1b81613809565b91506040840135613b2b81613843565b809150509250925092565b600080600080600060a08688031215613b4e57600080fd5b853594506020860135613b6081613809565b9350604086013592506060860135613b7781613809565b949793965091946080013592915050565b60006101008284031215613b9b57600080fd5b50919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60008060408385031215613be357600080fd5b823591506020830135613bf581613809565b809150509250929050565b600080600060608486031215613c1557600080fd5b833592506020840135613c2781613809565b929592945050506040919091013590565b6020808252601d908201527f4d61726b6574706c6163653a20696e76616c6964206c697374696e672e000000604082015260600190565b600060208284031215613c8157600080fd5b8151613c8c81613843565b9392505050565b60208082526021908201527f4d61726b6574706c6163653a206e6f74206c697374696e672063726561746f726040820152601760f91b606082015260800190565b6020808252603a908201527f4d61726b6574706c6163653a20656e6454696d657374616d70206e6f7420677260408201527f6561746572207468616e20737461727454696d657374616d702e000000000000606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038181168382160190808211156122f9576122f9613d31565b60208082526024908201527f4d61726b6574706c6163653a20696e76616c696420737461727454696d65737460408201526330b6b81760e11b606082015260800190565b6001600160801b038281168282160390808211156122f9576122f9613d31565b8181038181111561209757612097613d31565b8082018082111561209757612097613d31565b634e487b7160e01b600052603260045260246000fd5b600060018201613e1957613e19613d31565b5060010190565b6020808252602a908201527f4d61726b6574706c6163653a206e6f74206f776e6572206f7220617070726f7660408201526932b2103a37b5b2b7399760b11b606082015260800190565b808202811582820484141761209757612097613d31565b600060208284031215613e9357600080fd5b8135613c8c81613809565b600060208284031215613eb057600080fd5b613c8c8261382c565b60006101008284031215613ecc57600080fd5b613c8c838361385c565b600060208284031215613ee857600080fd5b8135613c8c81613843565b60008085851115613f0357600080fd5b83861115613f1057600080fd5b5050820193919092039150565b600060208284031215613f2f57600080fd5b5051919050565b600060208284031215613f4857600080fd5b8151613c8c81613809565b60008060408385031215613f6657600080fd5b8251613f7181613809565b602084015190925061ffff81168114613bf557600080fd5b600082613fa657634e487b7160e01b600052601260045260246000fd5b500490565b600067ffffffffffffffff821115613fc557613fc56137c2565b5060051b60200190565b600082601f830112613fe057600080fd5b81516020613ff5613ff083613fab565b6137d8565b82815260059290921b8401810191818101908684111561401457600080fd5b8286015b8481101561402f5780518352918301918301614018565b509695505050505050565b6000806040838503121561404d57600080fd5b825167ffffffffffffffff8082111561406557600080fd5b818501915085601f83011261407957600080fd5b81516020614089613ff083613fab565b82815260059290921b840181019181810190898411156140a857600080fd5b948201945b838610156140cf5785516140c081613809565b825294820194908201906140ad565b918801519196509093505050808211156140e857600080fd5b506140f585828601613fcf565b9150509250929050565b60005b8381101561411a578181015183820152602001614102565b50506000910152565b600082516141358184602087016140ff565b9190910192915050565b602081526000825180602084015261415e8160408501602087016140ff565b601f01601f1916919091016040019291505056fea2646970667358221220709522937fa3212c56dbe3cb97ad7ab8f69d28c7853f27a72f03e4e9f0ee3d5564736f6c63430008130033"; + + public DirectListingsLogicDeploymentBase() + : base(BYTECODE) { } + + public DirectListingsLogicDeploymentBase(string byteCode) + : base(byteCode) { } + + [Parameter("address", "_nativeTokenWrapper", 1)] + public virtual string NativeTokenWrapper { get; set; } + } + + public partial class MsgDataFunction : MsgDataFunctionBase { } + + [Function("_msgData", "bytes")] + public class MsgDataFunctionBase : FunctionMessage { } + + public partial class MsgSenderFunction : MsgSenderFunctionBase { } + + [Function("_msgSender", "address")] + public class MsgSenderFunctionBase : FunctionMessage { } + + public partial class ApproveBuyerForListingFunction : ApproveBuyerForListingFunctionBase { } + + [Function("approveBuyerForListing")] + public class ApproveBuyerForListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_buyer", 2)] + public virtual string Buyer { get; set; } + + [Parameter("bool", "_toApprove", 3)] + public virtual bool ToApprove { get; set; } + } + + public partial class ApproveCurrencyForListingFunction : ApproveCurrencyForListingFunctionBase { } + + [Function("approveCurrencyForListing")] + public class ApproveCurrencyForListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_currency", 2)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerTokenInCurrency", 3)] + public virtual BigInteger PricePerTokenInCurrency { get; set; } + } + + public partial class BuyFromListingFunction : BuyFromListingFunctionBase { } + + [Function("buyFromListing")] + public class BuyFromListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_buyFor", 2)] + public virtual string BuyFor { get; set; } + + [Parameter("uint256", "_quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_expectedTotalPrice", 5)] + public virtual BigInteger ExpectedTotalPrice { get; set; } + } + + public partial class CancelListingFunction : CancelListingFunctionBase { } + + [Function("cancelListing")] + public class CancelListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + } + + public partial class CreateListingFunction : CreateListingFunctionBase { } + + [Function("createListing", "uint256")] + public class CreateListingFunctionBase : FunctionMessage + { + [Parameter("tuple", "_params", 1)] + public virtual ListingParameters Params { get; set; } + } + + public partial class CurrencyPriceForListingFunction : CurrencyPriceForListingFunctionBase { } + + [Function("currencyPriceForListing", "uint256")] + public class CurrencyPriceForListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_currency", 2)] + public virtual string Currency { get; set; } + } + + public partial class GetAllListingsFunction : GetAllListingsFunctionBase { } + + [Function("getAllListings", typeof(GetAllListingsOutputDTO))] + public class GetAllListingsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetAllValidListingsFunction : GetAllValidListingsFunctionBase { } + + [Function("getAllValidListings", typeof(GetAllValidListingsOutputDTO))] + public class GetAllValidListingsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetListingFunction : GetListingFunctionBase { } + + [Function("getListing", typeof(GetListingOutputDTO))] + public class GetListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + } + + public partial class IsBuyerApprovedForListingFunction : IsBuyerApprovedForListingFunctionBase { } + + [Function("isBuyerApprovedForListing", "bool")] + public class IsBuyerApprovedForListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_buyer", 2)] + public virtual string Buyer { get; set; } + } + + public partial class IsCurrencyApprovedForListingFunction : IsCurrencyApprovedForListingFunctionBase { } + + [Function("isCurrencyApprovedForListing", "bool")] + public class IsCurrencyApprovedForListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "_currency", 2)] + public virtual string Currency { get; set; } + } + + public partial class TotalListingsFunction : TotalListingsFunctionBase { } + + [Function("totalListings", "uint256")] + public class TotalListingsFunctionBase : FunctionMessage { } + + public partial class UpdateListingFunction : UpdateListingFunctionBase { } + + [Function("updateListing")] + public class UpdateListingFunctionBase : FunctionMessage + { + [Parameter("uint256", "_listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("tuple", "_params", 2)] + public virtual ListingParameters Params { get; set; } + } + + public partial class BuyerApprovedForListingEventDTO : BuyerApprovedForListingEventDTOBase { } + + [Event("BuyerApprovedForListing")] + public class BuyerApprovedForListingEventDTOBase : IEventDTO + { + [Parameter("uint256", "listingId", 1, true)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "buyer", 2, true)] + public virtual string Buyer { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class CancelledListingEventDTO : CancelledListingEventDTOBase { } + + [Event("CancelledListing")] + public class CancelledListingEventDTOBase : IEventDTO + { + [Parameter("address", "listingCreator", 1, true)] + public virtual string ListingCreator { get; set; } + + [Parameter("uint256", "listingId", 2, true)] + public virtual BigInteger ListingId { get; set; } + } + + public partial class CurrencyApprovedForListingEventDTO : CurrencyApprovedForListingEventDTOBase { } + + [Event("CurrencyApprovedForListing")] + public class CurrencyApprovedForListingEventDTOBase : IEventDTO + { + [Parameter("uint256", "listingId", 1, true)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "currency", 2, true)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "pricePerToken", 3, false)] + public virtual BigInteger PricePerToken { get; set; } + } + + public partial class NewListingEventDTO : NewListingEventDTOBase { } + + [Event("NewListing")] + public class NewListingEventDTOBase : IEventDTO + { + [Parameter("address", "listingCreator", 1, true)] + public virtual string ListingCreator { get; set; } + + [Parameter("uint256", "listingId", 2, true)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("tuple", "listing", 4, false)] + public virtual Listing Listing { get; set; } + } + + public partial class NewSaleEventDTO : NewSaleEventDTOBase { } + + [Event("NewSale")] + public class NewSaleEventDTOBase : IEventDTO + { + [Parameter("address", "listingCreator", 1, true)] + public virtual string ListingCreator { get; set; } + + [Parameter("uint256", "listingId", 2, true)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "tokenId", 4, false)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "buyer", 5, false)] + public virtual string Buyer { get; set; } + + [Parameter("uint256", "quantityBought", 6, false)] + public virtual BigInteger QuantityBought { get; set; } + + [Parameter("uint256", "totalPricePaid", 7, false)] + public virtual BigInteger TotalPricePaid { get; set; } + } + + public partial class UpdatedListingEventDTO : UpdatedListingEventDTOBase { } + + [Event("UpdatedListing")] + public class UpdatedListingEventDTOBase : IEventDTO + { + [Parameter("address", "listingCreator", 1, true)] + public virtual string ListingCreator { get; set; } + + [Parameter("uint256", "listingId", 2, true)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("tuple", "listing", 4, false)] + public virtual Listing Listing { get; set; } + } + + public partial class MsgDataOutputDTO : MsgDataOutputDTOBase { } + + [FunctionOutput] + public class MsgDataOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class MsgSenderOutputDTO : MsgSenderOutputDTOBase { } + + [FunctionOutput] + public class MsgSenderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + } + + public partial class CurrencyPriceForListingOutputDTO : CurrencyPriceForListingOutputDTOBase { } + + [FunctionOutput] + public class CurrencyPriceForListingOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetAllListingsOutputDTO : GetAllListingsOutputDTOBase { } + + [FunctionOutput] + public class GetAllListingsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_allListings", 1)] + public virtual List AllListings { get; set; } + } + + public partial class GetAllValidListingsOutputDTO : GetAllValidListingsOutputDTOBase { } + + [FunctionOutput] + public class GetAllValidListingsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_validListings", 1)] + public virtual List ValidListings { get; set; } + } + + public partial class GetListingOutputDTO : GetListingOutputDTOBase { } + + [FunctionOutput] + public class GetListingOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "listing", 1)] + public virtual Listing Listing { get; set; } + } + + public partial class IsBuyerApprovedForListingOutputDTO : IsBuyerApprovedForListingOutputDTOBase { } + + [FunctionOutput] + public class IsBuyerApprovedForListingOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsCurrencyApprovedForListingOutputDTO : IsCurrencyApprovedForListingOutputDTOBase { } + + [FunctionOutput] + public class IsCurrencyApprovedForListingOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class TotalListingsOutputDTO : TotalListingsOutputDTOBase { } + + [FunctionOutput] + public class TotalListingsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs.meta new file mode 100644 index 00000000..98cbf7d3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/DirectListingsLogicDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20d0c2d0819093343a23c28cd0566768 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs new file mode 100644 index 00000000..d328c2cc --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs @@ -0,0 +1,50 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DirectListingsLogic.ContractDefinition +{ + public partial class Listing : ListingBase { } + + public class ListingBase + { + [Parameter("uint256", "listingId", 1)] + public virtual BigInteger ListingId { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "pricePerToken", 4)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("uint128", "startTimestamp", 5)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint128", "endTimestamp", 6)] + public virtual BigInteger EndTimestamp { get; set; } + + [Parameter("address", "listingCreator", 7)] + public virtual string ListingCreator { get; set; } + + [Parameter("address", "assetContract", 8)] + public virtual string AssetContract { get; set; } + + [Parameter("address", "currency", 9)] + public virtual string Currency { get; set; } + + [Parameter("uint8", "tokenType", 10)] + public virtual byte TokenType { get; set; } + + [Parameter("uint8", "status", 11)] + public virtual byte Status { get; set; } + + [Parameter("bool", "reserved", 12)] + public virtual bool Reserved { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs.meta new file mode 100644 index 00000000..4cd58df4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/Listing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 917fb9bbf725d9b4489c6063380c4104 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs new file mode 100644 index 00000000..4d116938 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DirectListingsLogic.ContractDefinition +{ + public partial class ListingParameters : ListingParametersBase { } + + public class ListingParametersBase + { + [Parameter("address", "assetContract", 1)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "pricePerToken", 5)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("uint128", "startTimestamp", 6)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint128", "endTimestamp", 7)] + public virtual BigInteger EndTimestamp { get; set; } + + [Parameter("bool", "reserved", 8)] + public virtual bool Reserved { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs.meta new file mode 100644 index 00000000..9546824e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DirectListingsLogic/ContractDefinition/ListingParameters.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09139ce78140ae4498da906ac00c6c39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155.meta new file mode 100644 index 00000000..94c0aa97 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ab6600b6584e694eba8c1a123f649e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition.meta new file mode 100644 index 00000000..b296a37a --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 208cd307b3177e444ac9659c2a73cb37 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs new file mode 100644 index 00000000..d955d094 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC1155.ContractDefinition +{ + public partial class AllowlistProof : AllowlistProofBase { } + + public class AllowlistProofBase + { + [Parameter("bytes32[]", "proof", 1)] + public virtual List Proof { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 2)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("uint256", "pricePerToken", 3)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs.meta new file mode 100644 index 00000000..91c2d622 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/AllowlistProof.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9151a55213a42984897940050053ff1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs new file mode 100644 index 00000000..8eb308f0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC1155.ContractDefinition +{ + public partial class ClaimCondition : ClaimConditionBase { } + + public class ClaimConditionBase + { + [Parameter("uint256", "startTimestamp", 1)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint256", "maxClaimableSupply", 2)] + public virtual BigInteger MaxClaimableSupply { get; set; } + + [Parameter("uint256", "supplyClaimed", 3)] + public virtual BigInteger SupplyClaimed { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 4)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("bytes32", "merkleRoot", 5)] + public virtual byte[] MerkleRoot { get; set; } + + [Parameter("uint256", "pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("string", "metadata", 8)] + public virtual string Metadata { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs.meta new file mode 100644 index 00000000..e7834e0d --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/ClaimCondition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b9d1da2bbaf1e74da1da5fd4311b3fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs new file mode 100644 index 00000000..bb30f67f --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs @@ -0,0 +1,1273 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.DropERC1155.ContractDefinition +{ + public partial class DropERC1155Deployment : DropERC1155DeploymentBase + { + public DropERC1155Deployment() + : base(BYTECODE) { } + + public DropERC1155Deployment(string byteCode) + : base(byteCode) { } + } + + public class DropERC1155DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50615e2980620001336000396000f3fe60806040526004361061036a5760003560e01c80636f4f2837116101c6578063bd85b039116100f7578063d547741f11610095578063e9703d251161006f578063e9703d2514610add578063e985e9c514610b26578063ea1def9c14610b6f578063f242432a14610b8f57600080fd5b8063d547741f14610a88578063e159163414610aa8578063e8a3d48514610ac857600080fd5b8063cb2ef6f7116100d1578063cb2ef6f7146109ef578063d37c353b14610a10578063d45573f614610a30578063d45b28d714610a5b57600080fd5b8063bd85b0391461096a578063c7337d6b14610998578063ca15c873146109cf57600080fd5b80639bcf7a1511610164578063a22cb4651161013e578063a22cb465146108d2578063a32fa5b3146108f2578063ac9650d814610912578063b24f2d391461093f57600080fd5b80639bcf7a1514610881578063a0a8e460146108a1578063a217fddf146108bd57600080fd5b80639010d07c116101a05780639010d07c1461080c57806391d148541461082c578063938e3d7b1461084c57806395d89b411461086c57600080fd5b80636f4f2837146107ae57806387198cf2146107ce5780638da5cb5b146107ee57600080fd5b80632f2ff15d116102a0578063572b6c051161023e5780635ab063e8116102185780635ab063e814610739578063600dd5ea1461075957806363b45e2d146107795780636b20c4541461078e57600080fd5b8063572b6c05146106a057806357bc3d78146106d95780635811ddab146106ec57600080fd5b80633b1475a71161027a5780633b1475a7146106025780634cc157df146106175780634e1273f414610659578063504c6e011461068657600080fd5b80632f2ff15d146105a257806332f0cd64146105c257806336568abe146105e257600080fd5b80631e7ac4881161030d57806324aaffaa116102e757806324aaffaa146104f557806329c49b9b146105235780632a55205a146105435780632eb2c2d61461058257600080fd5b80631e7ac488146104885780632419f51b146104a8578063248a9ca3146104c857600080fd5b8063079fe40e11610349578063079fe40e146103f45780630e89341c1461042657806313af403514610446578063183718d11461046857600080fd5b8062fdd58e1461036f57806301ffc9a7146103a257806306fdde03146103d2575b600080fd5b34801561037b57600080fd5b5061038f61038a3660046148a0565b610baf565b6040519081526020015b60405180910390f35b3480156103ae57600080fd5b506103c26103bd3660046148e2565b610c4a565b6040519015158152602001610399565b3480156103de57600080fd5b506103e7610c72565b604051610399919061494f565b34801561040057600080fd5b506005546001600160a01b03165b6040516001600160a01b039091168152602001610399565b34801561043257600080fd5b506103e7610441366004614962565b610d01565b34801561045257600080fd5b5061046661046136600461497b565b610d42565b005b34801561047457600080fd5b506104666104833660046149f1565b610d72565b34801561049457600080fd5b506104666104a33660046148a0565b6110d2565b3480156104b457600080fd5b5061038f6104c3366004614962565b611104565b3480156104d457600080fd5b5061038f6104e3366004614962565b6000908152600b602052604090205490565b34801561050157600080fd5b5061038f610510366004614962565b61010e6020526000908152604090205481565b34801561052f57600080fd5b5061046661053e366004614a4f565b611172565b34801561054f57600080fd5b5061056361055e366004614a7f565b6111e4565b604080516001600160a01b039093168352602083019190915201610399565b34801561058e57600080fd5b5061046661059d366004614bea565b611221565b3480156105ae57600080fd5b506104666105bd366004614a4f565b61130c565b3480156105ce57600080fd5b506104666105dd366004614c97565b6113a2565b3480156105ee57600080fd5b506104666105fd366004614a4f565b611413565b34801561060e57600080fd5b5060095461038f565b34801561062357600080fd5b50610637610632366004614962565b611475565b604080516001600160a01b03909316835261ffff909116602083015201610399565b34801561066557600080fd5b50610679610674366004614d23565b6114e0565b6040516103999190614dc1565b34801561069257600080fd5b5060a4546103c29060ff1681565b3480156106ac57600080fd5b506103c26106bb36600461497b565b6001600160a01b031660009081526040602081905290205460ff1690565b6104666106e7366004614de6565b611609565b3480156106f857600080fd5b5061038f610707366004614e8b565b6000928352600d60209081526040808520938552600390930181528284206001600160a01b0390921684525290205490565b34801561074557600080fd5b5061038f610754366004614962565b61174c565b34801561076557600080fd5b506104666107743660046148a0565b6117fd565b34801561078557600080fd5b5060075461038f565b34801561079a57600080fd5b506104666107a9366004614ec4565b61182b565b3480156107ba57600080fd5b506104666107c936600461497b565b6118c8565b3480156107da57600080fd5b506104666107e9366004614a7f565b6118f5565b3480156107fa57600080fd5b506006546001600160a01b031661040e565b34801561081857600080fd5b5061040e610827366004614a7f565b611952565b34801561083857600080fd5b506103c2610847366004614a4f565b611a40565b34801561085857600080fd5b50610466610867366004614f39565b611a6b565b34801561087857600080fd5b506103e7611a98565b34801561088d57600080fd5b5061046661089c366004614f6d565b611aa6565b3480156108ad57600080fd5b5060405160048152602001610399565b3480156108c957600080fd5b5061038f600081565b3480156108de57600080fd5b506104666108ed366004614fa5565b611ad5565b3480156108fe57600080fd5b506103c261090d366004614a4f565b611ba5565b34801561091e57600080fd5b5061093261092d366004614fd3565b611bfb565b6040516103999190615014565b34801561094b57600080fd5b506003546001600160a01b03811690600160a01b900461ffff16610637565b34801561097657600080fd5b5061038f610985366004614962565b61010d6020526000908152604090205481565b3480156109a457600080fd5b5061040e6109b3366004614962565b61010f602052600090815260409020546001600160a01b031681565b3480156109db57600080fd5b5061038f6109ea366004614962565b611cef565b3480156109fb57600080fd5b506a44726f704552433131353560a81b61038f565b348015610a1c57600080fd5b5061038f610a2b3660046150b7565b611d78565b348015610a3c57600080fd5b506002546001600160a01b03811690600160a01b900461ffff16610637565b348015610a6757600080fd5b50610a7b610a76366004614a7f565b611e85565b6040516103999190615130565b348015610a9457600080fd5b50610466610aa3366004614a4f565b611fec565b348015610ab457600080fd5b50610466610ac33660046151b4565b612005565b348015610ad457600080fd5b506103e7612222565b348015610ae957600080fd5b50610b11610af8366004614962565b600d602052600090815260409020805460019091015482565b60408051928352602083019190915201610399565b348015610b3257600080fd5b506103c2610b413660046152c6565b6001600160a01b03918216600090815260d86020908152604080832093909416825291909152205460ff1690565b348015610b7b57600080fd5b506103c2610b8a3660046152f4565b61222f565b348015610b9b57600080fd5b50610466610baa36600461536d565b61263c565b60006001600160a01b038316610c1f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b50600081815260d7602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610c558261271a565b80610c445750506001600160e01b03191663152a902d60e11b1490565b6101098054610c80906153d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610cac906153d5565b8015610cf95780601f10610cce57610100808354040283529160200191610cf9565b820191906000526020600020905b815481529060010190602001808311610cdc57829003601f168201915b505050505081565b60606000610d0e8361276a565b905080610d1a84612906565b604051602001610d2b929190615409565b604051602081830303815290604052915050919050565b610d4a612a06565b610d665760405162461bcd60e51b8152600401610c1690615438565b610d6f81612a19565b50565b610d7a612a06565b610d965760405162461bcd60e51b8152600401610c1690615438565b6000848152600d6020526040902080546001820154818415610dbf57610dbc8284615476565b90505b600184018690558084556000805b87811015610f7857801580610e055750888882818110610def57610def615489565b9050602002810190610e01919061549f565b3582105b610e365760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610c16565b60006002870181610e478487615476565b8152602001908152602001600020600201549050898983818110610e6d57610e6d615489565b9050602002810190610e7f919061549f565b60200135811115610ec75760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610c16565b898983818110610ed957610ed9615489565b9050602002810190610eeb919061549f565b600288016000610efb8588615476565b81526020019081526020016000208181610f15919061560a565b50819050600288016000610f298588615476565b8152602081019190915260400160002060020155898983818110610f4f57610f4f615489565b9050602002810190610f61919061549f565b359250819050610f7081615688565b915050610dcd565b508515610ffa57835b82811015610ff4576000818152600280880160205260408220828155600181018390559081018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590610fdf600783018261482d565b50508080610fec90615688565b915050610f81565b5061108b565b8683111561108b57865b838110156110895760028601600061101c8386615476565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611074600783018261482d565b5050808061108190615688565b915050611004565b505b887f066f72a648b18490c0bc4ab07d508cdb5d6589fa188c63cfba1e0547f3a6556a8989896040516110bf9392919061570f565b60405180910390a2505050505050505050565b6110da612a06565b6110f65760405162461bcd60e51b8152600401610c1690615438565b6111008282612a6b565b5050565b600061110f60075490565b821061114d5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610c16565b6007828154811061116057611160615489565b90600052602060002001549050919050565b600061117e8133612af9565b600083815261010f602090815260409182902080546001600160a01b0319166001600160a01b038616908117909155915191825284917f359479172ba65a6639b0df237f704e030498cb7135d5e89b56f598bd1d84b016910160405180910390a2505050565b6000806000806111f386611475565b90945084925061ffff16905061271061120c82876157f7565b6112169190615824565b925050509250929050565b60a454859060ff16156112f7576daaeb6d7670e522a718067333cd4e3b156112f757336001600160a01b03821603611265576112608686868686612b79565b611304565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190615838565b6112f757604051633b79c77360e21b8152336004820152602401610c16565b6113048686868686612b79565b505050505050565b6000828152600b60205260409020546113259033612af9565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16156113985760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610c16565b6111008282612bd7565b6113aa612a06565b61140a5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420617574686f72697a656420746f20736574206f70657261746f72207260448201526a32b9ba3934b1ba34b7b71760a91b6064820152608401610c16565b610d6f81612beb565b336001600160a01b0382161461146b5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610c16565b6111008282612c32565b6000818152600460209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156114bc57805160208201516114d6565b6003546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b606081518351146115455760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610c16565b600083516001600160401b0381111561156057611560614aa1565b604051908082528060200260200182016040528015611589578160200160208202803683370190505b50905060005b8451811015611601576115d48582815181106115ad576115ad615489565b60200260200101518583815181106115c7576115c7615489565b6020026020010151610baf565b8282815181106115e6576115e6615489565b60209081029190910101526115fa81615688565b905061158f565b509392505050565b61161886888787878787612c89565b60006116238761174c565b905061163b81611631612d20565b898989898961222f565b506000878152600d602090815260408083208484526002908101909252822001805488929061166b908490615476565b90915550506000878152600d6020908152604080832084845260030190915281208791611696612d20565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546116c59190615476565b909155506116d99050876000888888612d2a565b6116e4888888612e6b565b876001600160a01b03166116f6612d20565b6001600160a01b0316827ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e8a8a60405161173a929190918252602082015260400190565b60405180910390a45050505050505050565b6000818152600d6020526040812060018101548154839161176c91615476565b90505b81548111156117c657600282016000611789600184615855565b81526020019081526020016000206000015442106117b4576117ac600182615855565b949350505050565b806117be81615868565b91505061176f565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610c16565b611805612a06565b6118215760405162461bcd60e51b8152600401610c1690615438565b6111008282612e86565b611833612f03565b6001600160a01b0316836001600160a01b03161480611859575061185983610b41612f03565b6118b85760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f726044820152691030b8383937bb32b21760b11b6064820152608401610c16565b6118c3838383612f0d565b505050565b6118d0612a06565b6118ec5760405162461bcd60e51b8152600401610c1690615438565b610d6f8161312d565b60006119018133612af9565b600083815261010e602090815260409182902084905581518581529081018490527fc58cd6132bb46df23d468939c03dd023b74b509aaa6b04c39d5a6461c65963bd910160405180910390a1505050565b6000828152600c602052604081205481805b82811015611a37576000868152600c602090815260408083208484526001019091529020546001600160a01b0316156119e0578482036119ce576000868152600c602090815260408083209383526001909301905220546001600160a01b03169250610c44915050565b6119d9600183615476565b9150611a25565b6119eb866000611a40565b8015611a1257506000868152600c6020908152604080832083805260020190915290205481145b15611a2557611a22600183615476565b91505b611a30600182615476565b9050611964565b50505092915050565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a73612a06565b611a8f5760405162461bcd60e51b8152600401610c1690615438565b610d6f81613177565b61010a8054610c80906153d5565b611aae612a06565b611aca5760405162461bcd60e51b8152600401610c1690615438565b6118c3838383613253565b60a454829060ff1615611b9b576daaeb6d7670e522a718067333cd4e3b15611b9b57604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b739190615838565b611b9b57604051633b79c77360e21b81526001600160a01b0382166004820152602401610c16565b6118c383836132fb565b6000828152600a6020908152604080832083805290915281205460ff16611bf257506000828152600a602090815260408083206001600160a01b038516845290915290205460ff16610c44565b50600192915050565b6060816001600160401b03811115611c1557611c15614aa1565b604051908082528060200260200182016040528015611c4857816020015b6060815260200190600190039081611c335790505b50905060005b82811015611ce857611cb830858584818110611c6c57611c6c615489565b9050602002810190611c7e91906154bf565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061330d92505050565b828281518110611cca57611cca615489565b60200260200101819052508080611ce090615688565b915050611c4e565b5092915050565b6000818152600c6020526040812054815b81811015611d53576000848152600c602090815260408083208484526001019091529020546001600160a01b031615611d4157611d3e600184615476565b92505b611d4c600182615476565b9050611d00565b50611d5f836000611a40565b15611d7257611d6f600183615476565b91505b50919050565b6000611d82613401565b611d9e5760405162461bcd60e51b8152600401610c1690615438565b85600003611dd65760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610c16565b60006009549050611e1e818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061341292505050565b6009919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001611e548a84615476565b611e5e9190615855565b88888888604051611e7395949392919061587f565b60405180910390a25095945050505050565b611ed960405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b6000838152600d6020908152604080832085845260029081018352928190208151610100810183528154815260018201549381019390935292830154908201526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e084019190611f62906153d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611f8e906153d5565b8015611fdb5780601f10611fb057610100808354040283529160200191611fdb565b820191906000526020600020905b815481529060010190602001808311611fbe57829003601f168201915b505050505081525050905092915050565b6000828152600b602052604090205461146b9033612af9565b600054610100900460ff16158080156120255750600054600160ff909116105b8061203f5750303b15801561203f575060005460ff166001145b6120a25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c16565b6000805460ff1916600117905580156120c5576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661211089613476565b612128604051806020016040528060008152506134ae565b6121306134de565b6121398a613177565b6121428d612a19565b61214c6001612beb565b61215760008e612bd7565b612161818e612bd7565b61216b828e612bd7565b612176826000612bd7565b61218984866001600160801b0316612a6b565b61219c87876001600160801b0316612e86565b6121a58861312d565b61010b82905561010c8190556101096121be8d826158b8565b5061010a6121cc8c826158b8565b5050508015612215576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b60018054610c80906153d5565b6000858152600d602090815260408083208a8452600290810183528184208251610100810184528154815260018201549481019490945290810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e08401916122ba906153d5565b80601f01602080910402602001604051908101604052809291908181526020018280546122e6906153d5565b80156123335780601f1061230857610100808354040283529160200191612333565b820191906000526020600020905b81548152906001019060200180831161231657829003601f168201915b50505091909252505050606081015160a082015160c083015160808401519394509192909190156124185761241461236b8780615977565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508e9060208b01359060408c0135906123c0908d0160608e0161497b565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b166074820152608801604051602081830303815290604052805190602001206134ff565b5094505b841561249f5785602001356000036124305782612436565b85602001355b925060001986604001350361244b5781612451565b85604001355b915060001986604001351415801561248257506000612476608088016060890161497b565b6001600160a01b031614155b61248c578061249c565b61249c608087016060880161497b565b90505b6000600d60008c815260200190815260200160002060030160008e815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020549050816001600160a01b0316896001600160a01b031614158061250f5750828814155b1561254f5760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610c16565b891580612564575083612562828c615476565b115b1561259a5760405162461bcd60e51b8152600401610c16906020808252600490820152632151747960e01b604082015260600190565b84602001518a86604001516125af9190615476565b11156125ea5760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610c16565b845142101561262c5760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610c16565b5050505050979650505050505050565b60a454859060ff161561270d576daaeb6d7670e522a718067333cd4e3b1561270d57336001600160a01b0382160361267b5761126086868686866135cd565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190615838565b61270d57604051633b79c77360e21b8152336004820152602401610c16565b61130486868686866135cd565b60006001600160e01b03198216636cdb3d1360e11b148061274b57506001600160e01b031982166303a24d0760e21b145b80610c4457506301ffc9a760e01b6001600160e01b0319831614610c44565b6060600061277760075490565b9050600060078054806020026020016040519081016040528092919081815260200182805480156127c757602002820191906000526020600020905b8154815260200190600101908083116127b3575b5050505050905060005b828110156128cb578181815181106127eb576127eb615489565b60200260200101518510156128b9576008600083838151811061281057612810615489565b602002602001015181526020019081526020016000208054612831906153d5565b80601f016020809104026020016040519081016040528092919081815260200182805461285d906153d5565b80156128aa5780601f1061287f576101008083540402835291602001916128aa565b820191906000526020600020905b81548152906001019060200180831161288d57829003601f168201915b50505050509350505050919050565b6128c4600182615476565b90506127d1565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610c16565b60608160000361292d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612957578061294181615688565b91506129509050600a83615824565b9150612931565b6000816001600160401b0381111561297157612971614aa1565b6040519080825280601f01601f19166020018201604052801561299b576020820181803683370190505b5090505b84156117ac576129b0600183615855565b91506129bd600a866159c0565b6129c8906030615476565b60f81b8183815181106129dd576129dd615489565b60200101906001600160f81b031916908160001a9053506129ff600a86615824565b945061299f565b6000612a1481610847612f03565b905090565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b612710811115612a8d5760405162461bcd60e51b8152600401610c16906159d4565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff1661110057612b37816001600160a01b03166014613624565b612b42836020613624565b604051602001612b539291906159fd565b60408051601f198184030181529082905262461bcd60e51b8252610c169160040161494f565b612b81612f03565b6001600160a01b0316856001600160a01b03161480612ba75750612ba785610b41612f03565b612bc35760405162461bcd60e51b8152600401610c1690615a6a565b612bd085858585856137c6565b5050505050565b612be18282613976565b61110082826139d1565b60a4805460ff19168215159081179091556040519081527f38475885990d8dfe9ca01f0ef160a1b5514426eab9ddbc953a3353410ba780969060200160405180910390a150565b612c3c8282613a3e565b6000828152600c602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b600087815261010e60205260409020541580612ccb5750600087815261010e602090815260408083205461010d90925290912054612cc8908790615476565b11155b612d175760405162461bcd60e51b815260206004820152601760248201527f657863656564206d617820746f74616c20737570706c790000000000000000006044820152606401610c16565b50505050505050565b6000612a14612f03565b8015612bd0576002546001600160a01b0380821691600160a01b900461ffff1690600090871615612d5b5786612da4565b600088815261010f60205260409020546001600160a01b031615612d9757600088815261010f60205260409020546001600160a01b0316612da4565b6005546001600160a01b03165b90506000612db285886157f7565b90506000612710612dc761ffff8616846157f7565b612dd19190615824565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03881601612e3057813414612e305760405162461bcd60e51b815260206004820152600660248201526521507269636560d01b6044820152606401610c16565b612e4387612e3c612f03565b8784613aa0565b612e5f87612e4f612f03565b85612e5a8587615855565b613aa0565b50505050505050505050565b6118c383838360405180602001604052806000815250613ae6565b612710811115612ea85760405162461bcd60e51b8152600401610c16906159d4565b600380546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001612aed565b6000612a14613c0d565b6001600160a01b038316612f6f5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610c16565b8051825114612f905760405162461bcd60e51b8152600401610c1690615ab9565b6000612f9a612f03565b9050612fba81856000868660405180602001604052806000815250613c3a565b60005b83518110156130be576000848281518110612fda57612fda615489565b602002602001015190506000848381518110612ff857612ff8615489565b602090810291909101810151600084815260d7835260408082206001600160a01b038c1683529093529190912054909150818110156130855760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610c16565b600092835260d7602090815260408085206001600160a01b038b16865290915290922091039055806130b681615688565b915050612fbd565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161310f929190615b01565b60405180910390a46040805160208101909152600090525b50505050565b600580546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b600060018054613186906153d5565b80601f01602080910402602001604051908101604052809291908181526020018280546131b2906153d5565b80156131ff5780601f106131d4576101008083540402835291602001916131ff565b820191906000526020600020905b8154815290600101906020018083116131e257829003601f168201915b50505050509050816001908161321591906158b8565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051613247929190615b26565b60405180910390a15050565b6127108111156132755760405162461bcd60e51b8152600401610c16906159d4565b6040805180820182526001600160a01b038481168083526020808401868152600089815260048352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d91015b60405180910390a3505050565b611100613306612f03565b8383613dfc565b60606001600160a01b0383163b6133755760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610c16565b600080846001600160a01b0316846040516133909190615b4b565b600060405180830381855af49150503d80600081146133cb576040519150601f19603f3d011682016040523d82523d6000602084013e6133d0565b606091505b50915091506133f88282604051806060016040528060278152602001615dcd60279139613ed4565b95945050505050565b6000612a1461010c54610847612f03565b60008061341f8486615476565b60078054600181019091557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801819055600081815260086020526040902090925082915061346d84826158b8565b50935093915050565b600054610100900460ff1661349d5760405162461bcd60e51b8152600401610c1690615b5d565b6134a5613f0d565b610d6f81613f34565b600054610100900460ff166134d55760405162461bcd60e51b8152600401610c1690615b5d565b610d6f81613fc3565b6134fd733cc6cdda760b79bafa08df41ecfa224f810dceb66001613fcf565b565b6000808281805b87518110156135c15761351a6002836157f7565b9150600088828151811061353057613530615489565b602002602001015190508084116135725760408051602081018690529081018290526060016040516020818303038152906040528051906020012093506135ae565b60408051602081018390529081018590526060016040516020818303038152906040528051906020012093506001836135ab9190615476565b92505b50806135b981615688565b915050613506565b50941495939450505050565b6135d5612f03565b6001600160a01b0316856001600160a01b031614806135fb57506135fb85610b41612f03565b6136175760405162461bcd60e51b8152600401610c1690615a6a565b612bd08585858585614147565b606060006136338360026157f7565b61363e906002615476565b6001600160401b0381111561365557613655614aa1565b6040519080825280601f01601f19166020018201604052801561367f576020820181803683370190505b509050600360fc1b8160008151811061369a5761369a615489565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106136c9576136c9615489565b60200101906001600160f81b031916908160001a90535060006136ed8460026157f7565b6136f8906001615476565b90505b6001811115613770576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061372c5761372c615489565b1a60f81b82828151811061374257613742615489565b60200101906001600160f81b031916908160001a90535060049490941c9361376981615868565b90506136fb565b5083156137bf5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c16565b9392505050565b81518351146137e75760405162461bcd60e51b8152600401610c1690615ab9565b6001600160a01b03841661380d5760405162461bcd60e51b8152600401610c1690615ba8565b6000613817612f03565b9050613827818787878787613c3a565b60005b845181101561391057600085828151811061384757613847615489565b60200260200101519050600085838151811061386557613865615489565b602090810291909101810151600084815260d7835260408082206001600160a01b038e1683529093529190912054909150818110156138b65760405162461bcd60e51b8152600401610c1690615bed565b600083815260d7602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906138f5908490615476565b925050819055505050508061390990615688565b905061382a565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051613960929190615b01565b60405180910390a461130481878787878761428e565b6000828152600a602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600c60205260408120805491600191906139f08385615476565b90915550506000928352600c6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b613a488282612af9565b6000828152600a602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80156131275773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601613ada57613ad582826143e9565b613127565b6131278484848461448c565b6001600160a01b038416613b465760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610c16565b6000613b50612f03565b90506000613b5d856144df565b90506000613b6a856144df565b9050613b7b83600089858589613c3a565b600086815260d7602090815260408083206001600160a01b038b16845290915281208054879290613bad908490615476565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612d178360008989898961452a565b3360009081526040602081905281205460ff1615613c32575060131936013560601c90565b503390565b90565b613c4861010b546000611a40565b158015613c5d57506001600160a01b03851615155b8015613c7157506001600160a01b03841615155b15613cee57613c8361010b5486611a40565b80613c965750613c9661010b5485611a40565b613cee5760405162461bcd60e51b8152602060048201526024808201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526332b9399760e11b6064820152608401610c16565b6001600160a01b038516613d765760005b8351811015613d7457828181518110613d1a57613d1a615489565b602002602001015161010d6000868481518110613d3957613d39615489565b602002602001015181526020019081526020016000206000828254613d5e9190615476565b90915550613d6d905081615688565b9050613cff565b505b6001600160a01b0384166113045760005b8351811015612d1757828181518110613da257613da2615489565b602002602001015161010d6000868481518110613dc157613dc1615489565b602002602001015181526020019081526020016000206000828254613de69190615855565b90915550613df5905081615688565b9050613d87565b816001600160a01b0316836001600160a01b031603613e6f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610c16565b6001600160a01b03838116600081815260d86020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016132ee565b60608315613ee35750816137bf565b825115613ef35782518084602001fd5b8160405162461bcd60e51b8152600401610c16919061494f565b600054610100900460ff166134fd5760405162461bcd60e51b8152600401610c1690615b5d565b600054610100900460ff16613f5b5760405162461bcd60e51b8152600401610c1690615b5d565b60005b815181101561110057600160406000848481518110613f7f57613f7f615489565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580613fbb81615688565b915050613f5e565b60d961110082826158b8565b6daaeb6d7670e522a718067333cd4e3b156111005760405163c3c5a54760e01b81523060048201526daaeb6d7670e522a718067333cd4e9063c3c5a547906024016020604051808303816000875af115801561402f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140539190615838565b6111005780156140c757604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156140b357600080fd5b505af1158015611304573d6000803e3d6000fd5b6001600160a01b038216156141165760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401614099565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401614099565b6001600160a01b03841661416d5760405162461bcd60e51b8152600401610c1690615ba8565b6000614177612f03565b90506000614184856144df565b90506000614191856144df565b90506141a1838989858589613c3a565b600086815260d7602090815260408083206001600160a01b038c168452909152902054858110156141e45760405162461bcd60e51b8152600401610c1690615bed565b600087815260d7602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290614223908490615476565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4614283848a8a8a8a8a61452a565b505050505050505050565b6001600160a01b0384163b156113045760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906142d29089908990889088908890600401615c37565b6020604051808303816000875af192505050801561430d575060408051601f3d908101601f1916820190925261430a91810190615c89565b60015b6143b957614319615ca6565b806308c379a003614352575061432d615cc1565b806143385750614354565b8060405162461bcd60e51b8152600401610c16919061494f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610c16565b6001600160e01b0319811663bc197c8160e01b14612d175760405162461bcd60e51b8152600401610c1690615d4a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614436576040519150601f19603f3d011682016040523d82523d6000602084013e61443b565b606091505b50509050806118c35760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610c16565b816001600160a01b0316836001600160a01b0316031561312757306001600160a01b038416036144ca57613ad56001600160a01b03851683836145e5565b6131276001600160a01b038516848484614648565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061451957614519615489565b602090810291909101015292915050565b6001600160a01b0384163b156113045760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061456e9089908990889088908890600401615d92565b6020604051808303816000875af19250505080156145a9575060408051601f3d908101601f191682019092526145a691810190615c89565b60015b6145b557614319615ca6565b6001600160e01b0319811663f23a6e6160e01b14612d175760405162461bcd60e51b8152600401610c1690615d4a565b6040516001600160a01b0383166024820152604481018290526118c390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614680565b6040516001600160a01b03808516602483015283166044820152606481018290526131279085906323b872dd60e01b90608401614611565b60006146d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147529092919063ffffffff16565b8051909150156118c357808060200190518101906146f39190615838565b6118c35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c16565b60606117ac8484600085856001600160a01b0385163b6147b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c16565b600080866001600160a01b031685876040516147d09190615b4b565b60006040518083038185875af1925050503d806000811461480d576040519150601f19603f3d011682016040523d82523d6000602084013e614812565b606091505b5091509150614822828286613ed4565b979650505050505050565b508054614839906153d5565b6000825580601f10614849575050565b601f016020900490600052602060002090810190610d6f91905b808211156148775760008155600101614863565b5090565b6001600160a01b0381168114610d6f57600080fd5b803561489b8161487b565b919050565b600080604083850312156148b357600080fd5b82356148be8161487b565b946020939093013593505050565b6001600160e01b031981168114610d6f57600080fd5b6000602082840312156148f457600080fd5b81356137bf816148cc565b60005b8381101561491a578181015183820152602001614902565b50506000910152565b6000815180845261493b8160208601602086016148ff565b601f01601f19169290920160200192915050565b6020815260006137bf6020830184614923565b60006020828403121561497457600080fd5b5035919050565b60006020828403121561498d57600080fd5b81356137bf8161487b565b60008083601f8401126149aa57600080fd5b5081356001600160401b038111156149c157600080fd5b6020830191508360208260051b85010111156149dc57600080fd5b9250929050565b8015158114610d6f57600080fd5b60008060008060608587031215614a0757600080fd5b8435935060208501356001600160401b03811115614a2457600080fd5b614a3087828801614998565b9094509250506040850135614a44816149e3565b939692955090935050565b60008060408385031215614a6257600080fd5b823591506020830135614a748161487b565b809150509250929050565b60008060408385031215614a9257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715614adc57614adc614aa1565b6040525050565b60006001600160401b03821115614afc57614afc614aa1565b5060051b60200190565b600082601f830112614b1757600080fd5b81356020614b2482614ae3565b604051614b318282614ab7565b83815260059390931b8501820192828101915086841115614b5157600080fd5b8286015b84811015614b6c5780358352918301918301614b55565b509695505050505050565b600082601f830112614b8857600080fd5b81356001600160401b03811115614ba157614ba1614aa1565b604051614bb8601f8301601f191660200182614ab7565b818152846020838601011115614bcd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614c0257600080fd5b8535614c0d8161487b565b94506020860135614c1d8161487b565b935060408601356001600160401b0380821115614c3957600080fd5b614c4589838a01614b06565b94506060880135915080821115614c5b57600080fd5b614c6789838a01614b06565b93506080880135915080821115614c7d57600080fd5b50614c8a88828901614b77565b9150509295509295909350565b600060208284031215614ca957600080fd5b81356137bf816149e3565b600082601f830112614cc557600080fd5b81356020614cd282614ae3565b604051614cdf8282614ab7565b83815260059390931b8501820192828101915086841115614cff57600080fd5b8286015b84811015614b6c578035614d168161487b565b8352918301918301614d03565b60008060408385031215614d3657600080fd5b82356001600160401b0380821115614d4d57600080fd5b614d5986838701614cb4565b93506020850135915080821115614d6f57600080fd5b50614d7c85828601614b06565b9150509250929050565b600081518084526020808501945080840160005b83811015614db657815187529582019590820190600101614d9a565b509495945050505050565b6020815260006137bf6020830184614d86565b600060808284031215611d7257600080fd5b600080600080600080600060e0888a031215614e0157600080fd5b8735614e0c8161487b565b965060208801359550604088013594506060880135614e2a8161487b565b93506080880135925060a08801356001600160401b0380821115614e4d57600080fd5b614e598b838c01614dd4565b935060c08a0135915080821115614e6f57600080fd5b50614e7c8a828b01614b77565b91505092959891949750929550565b600080600060608486031215614ea057600080fd5b83359250602084013591506040840135614eb98161487b565b809150509250925092565b600080600060608486031215614ed957600080fd5b8335614ee48161487b565b925060208401356001600160401b0380821115614f0057600080fd5b614f0c87838801614b06565b93506040860135915080821115614f2257600080fd5b50614f2f86828701614b06565b9150509250925092565b600060208284031215614f4b57600080fd5b81356001600160401b03811115614f6157600080fd5b6117ac84828501614b77565b600080600060608486031215614f8257600080fd5b833592506020840135614f948161487b565b929592945050506040919091013590565b60008060408385031215614fb857600080fd5b8235614fc38161487b565b91506020830135614a74816149e3565b60008060208385031215614fe657600080fd5b82356001600160401b03811115614ffc57600080fd5b61500885828601614998565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561506957603f19888603018452615057858351614923565b9450928501929085019060010161503b565b5092979650505050505050565b60008083601f84011261508857600080fd5b5081356001600160401b0381111561509f57600080fd5b6020830191508360208285010111156149dc57600080fd5b6000806000806000606086880312156150cf57600080fd5b8535945060208601356001600160401b03808211156150ed57600080fd5b6150f989838a01615076565b9096509450604088013591508082111561511257600080fd5b5061511f88828901615076565b969995985093965092949392505050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e08301516101008081850152506117ac610120840182614923565b80356001600160801b038116811461489b57600080fd5b6000806000806000806000806000806101408b8d0312156151d457600080fd5b6151dd8b614890565b995060208b01356001600160401b03808211156151f957600080fd5b6152058e838f01614b77565b9a5060408d013591508082111561521b57600080fd5b6152278e838f01614b77565b995060608d013591508082111561523d57600080fd5b6152498e838f01614b77565b985060808d013591508082111561525f57600080fd5b5061526c8d828e01614cb4565b96505061527b60a08c01614890565b945061528960c08c01614890565b935061529760e08c0161519d565b92506152a66101008c0161519d565b91506152b56101208c01614890565b90509295989b9194979a5092959850565b600080604083850312156152d957600080fd5b82356152e48161487b565b91506020830135614a748161487b565b600080600080600080600060e0888a03121561530f57600080fd5b8735965060208801356153218161487b565b95506040880135945060608801359350608088013561533f8161487b565b925060a0880135915060c08801356001600160401b0381111561536157600080fd5b614e7c8a828b01614dd4565b600080600080600060a0868803121561538557600080fd5b85356153908161487b565b945060208601356153a08161487b565b9350604086013592506060860135915060808601356001600160401b038111156153c957600080fd5b614c8a88828901614b77565b600181811c908216806153e957607f821691505b602082108103611d7257634e487b7160e01b600052602260045260246000fd5b6000835161541b8184602088016148ff565b83519083019061542f8183602088016148ff565b01949350505050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4457610c44615460565b634e487b7160e01b600052603260045260246000fd5b6000823560fe198336030181126154b557600080fd5b9190910192915050565b6000808335601e198436030181126154d657600080fd5b8301803591506001600160401b038211156154f057600080fd5b6020019150368190038213156149dc57600080fd5b601f8211156118c357600081815260208120601f850160051c8101602086101561552c5750805b601f850160051c820191505b8181101561130457828155600101615538565b6001600160401b0383111561556257615562614aa1565b6155768361557083546153d5565b83615505565b6000601f8411600181146155aa57600085156155925750838201355b600019600387901b1c1916600186901b178355612bd0565b600083815260209020601f19861690835b828110156155db57868501358255602094850194600190920191016155bb565b50868210156155f85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c08301356156528161487b565b81546001600160a01b0319166001600160a01b039190911617905561567a60e08301836154bf565b61312781836007860161554b565b60006001820161569a5761569a615460565b5060010190565b6000808335601e198436030181126156b857600080fd5b83016020810192503590506001600160401b038111156156d757600080fd5b8036038213156149dc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a8110156157e157888403605f190185528235368d900360fe19018112615754578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c08084013561579b8161487b565b6001600160a01b03169088015260e06157b6848201856156a1565b945083828a01526157ca848a0186836156e6565b99830199985050509490940193505060010161572f565b505050861515602087015293506117ac92505050565b8082028115828204841417610c4457610c44615460565b634e487b7160e01b600052601260045260246000fd5b6000826158335761583361580e565b500490565b60006020828403121561584a57600080fd5b81516137bf816149e3565b81810381811115610c4457610c44615460565b60008161587757615877615460565b506000190190565b8581526060602082015260006158996060830186886156e6565b82810360408401526158ac8185876156e6565b98975050505050505050565b81516001600160401b038111156158d1576158d1614aa1565b6158e5816158df84546153d5565b84615505565b602080601f83116001811461591a57600084156159025750858301515b600019600386901b1c1916600185901b178555611304565b600085815260208120601f198616915b828110156159495788860151825594840194600190910190840161592a565b50858210156159675787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e1984360301811261598e57600080fd5b8301803591506001600160401b038211156159a857600080fd5b6020019150600581901b36038213156149dc57600080fd5b6000826159cf576159cf61580e565b500690565b6020808252600f908201526e45786365656473206d61782062707360881b604082015260600190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615a2d8160158501602088016148ff565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615a5e8160268401602088016148ff565b01602601949350505050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b604081526000615b146040830185614d86565b82810360208401526133f88185614d86565b604081526000615b396040830185614923565b82810360208401526133f88185614923565b600082516154b58184602087016148ff565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090615c6390830186614d86565b8281036060840152615c758186614d86565b905082810360808401526158ac8185614923565b600060208284031215615c9b57600080fd5b81516137bf816148cc565b600060033d1115613c375760046000803e5060005160e01c90565b600060443d1015615ccf5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615cfe57505050505090565b8285019150815181811115615d165750505050505090565b843d8701016020828501011115615d305750505050505090565b615d3f60208286010187614ab7565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906148229083018461492356fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d5a055e263b79ccd9b2c1178fd8e566a37cb091d49616d0ddf83341dc04576b864736f6c63430008130033"; + + public DropERC1155DeploymentBase() + : base(BYTECODE) { } + + public DropERC1155DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "id", 2)] + public virtual BigInteger Id { get; set; } + } + + public partial class BalanceOfBatchFunction : BalanceOfBatchFunctionBase { } + + [Function("balanceOfBatch", "uint256[]")] + public class BalanceOfBatchFunctionBase : FunctionMessage + { + [Parameter("address[]", "accounts", 1)] + public virtual List Accounts { get; set; } + + [Parameter("uint256[]", "ids", 2)] + public virtual List Ids { get; set; } + } + + public partial class BurnBatchFunction : BurnBatchFunctionBase { } + + [Function("burnBatch")] + public class BurnBatchFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256[]", "ids", 2)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "values", 3)] + public virtual List Values { get; set; } + } + + public partial class ClaimFunction : ClaimFunctionBase { } + + [Function("claim")] + public class ClaimFunctionBase : FunctionMessage + { + [Parameter("address", "_receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "_tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "_quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 5)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 6)] + public virtual AllowlistProof AllowlistProof { get; set; } + + [Parameter("bytes", "_data", 7)] + public virtual byte[] Data { get; set; } + } + + public partial class ClaimConditionFunction : ClaimConditionFunctionBase { } + + [Function("claimCondition", typeof(ClaimConditionOutputDTO))] + public class ClaimConditionFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class GetActiveClaimConditionIdFunction : GetActiveClaimConditionIdFunctionBase { } + + [Function("getActiveClaimConditionId", "uint256")] + public class GetActiveClaimConditionIdFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetBaseURICountFunction : GetBaseURICountFunctionBase { } + + [Function("getBaseURICount", "uint256")] + public class GetBaseURICountFunctionBase : FunctionMessage { } + + public partial class GetBatchIdAtIndexFunction : GetBatchIdAtIndexFunctionBase { } + + [Function("getBatchIdAtIndex", "uint256")] + public class GetBatchIdAtIndexFunctionBase : FunctionMessage + { + [Parameter("uint256", "_index", 1)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetClaimConditionByIdFunction : GetClaimConditionByIdFunctionBase { } + + [Function("getClaimConditionById", typeof(GetClaimConditionByIdOutputDTO))] + public class GetClaimConditionByIdFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "_conditionId", 2)] + public virtual BigInteger ConditionId { get; set; } + } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetSupplyClaimedByWalletFunction : GetSupplyClaimedByWalletFunctionBase { } + + [Function("getSupplyClaimedByWallet", "uint256")] + public class GetSupplyClaimedByWalletFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "_conditionId", 2)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 3)] + public virtual string Claimer { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_saleRecipient", 6)] + public virtual string SaleRecipient { get; set; } + + [Parameter("address", "_royaltyRecipient", 7)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint128", "_royaltyBps", 8)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("uint128", "_platformFeeBps", 9)] + public virtual BigInteger PlatformFeeBps { get; set; } + + [Parameter("address", "_platformFeeRecipient", 10)] + public virtual string PlatformFeeRecipient { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class LazyMintFunction : LazyMintFunctionBase { } + + [Function("lazyMint", "uint256")] + public class LazyMintFunctionBase : FunctionMessage + { + [Parameter("uint256", "_amount", 1)] + public virtual BigInteger Amount { get; set; } + + [Parameter("string", "_baseURIForTokens", 2)] + public virtual string BaseURIForTokens { get; set; } + + [Parameter("bytes", "_data", 3)] + public virtual byte[] Data { get; set; } + } + + public partial class MaxTotalSupplyFunction : MaxTotalSupplyFunctionBase { } + + [Function("maxTotalSupply", "uint256")] + public class MaxTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OperatorRestrictionFunction : OperatorRestrictionFunctionBase { } + + [Function("operatorRestriction", "bool")] + public class OperatorRestrictionFunctionBase : FunctionMessage { } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeBatchTransferFromFunction : SafeBatchTransferFromFunctionBase { } + + [Function("safeBatchTransferFrom")] + public class SafeBatchTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 3)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "amounts", 4)] + public virtual List Amounts { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 3)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "amount", 4)] + public virtual BigInteger Amount { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SaleRecipientFunction : SaleRecipientFunctionBase { } + + [Function("saleRecipient", "address")] + public class SaleRecipientFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetClaimConditionsFunction : SetClaimConditionsFunctionBase { } + + [Function("setClaimConditions")] + public class SetClaimConditionsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("tuple[]", "_conditions", 2)] + public virtual List Conditions { get; set; } + + [Parameter("bool", "_resetClaimEligibility", 3)] + public virtual bool ResetClaimEligibility { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetMaxTotalSupplyFunction : SetMaxTotalSupplyFunctionBase { } + + [Function("setMaxTotalSupply")] + public class SetMaxTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "_maxTotalSupply", 2)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class SetOperatorRestrictionFunction : SetOperatorRestrictionFunctionBase { } + + [Function("setOperatorRestriction")] + public class SetOperatorRestrictionFunctionBase : FunctionMessage + { + [Parameter("bool", "_restriction", 1)] + public virtual bool Restriction { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SetSaleRecipientForTokenFunction : SetSaleRecipientForTokenFunctionBase { } + + [Function("setSaleRecipientForToken")] + public class SetSaleRecipientForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_saleRecipient", 2)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriFunction : UriFunctionBase { } + + [Function("uri", "string")] + public class UriFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class VerifyClaimFunction : VerifyClaimFunctionBase { } + + [Function("verifyClaim", "bool")] + public class VerifyClaimFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 2)] + public virtual string Claimer { get; set; } + + [Parameter("uint256", "_tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "_quantity", 4)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 5)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 7)] + public virtual AllowlistProof AllowlistProof { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class ClaimConditionsUpdatedEventDTO : ClaimConditionsUpdatedEventDTOBase { } + + [Event("ClaimConditionsUpdated")] + public class ClaimConditionsUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("tuple[]", "claimConditions", 2, false)] + public virtual List ClaimConditions { get; set; } + + [Parameter("bool", "resetEligibility", 3, false)] + public virtual bool ResetEligibility { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class MaxTotalSupplyUpdatedEventDTO : MaxTotalSupplyUpdatedEventDTOBase { } + + [Event("MaxTotalSupplyUpdated")] + public class MaxTotalSupplyUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, false)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "maxTotalSupply", 2, false)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class OperatorRestrictionEventDTO : OperatorRestrictionEventDTOBase { } + + [Event("OperatorRestriction")] + public class OperatorRestrictionEventDTOBase : IEventDTO + { + [Parameter("bool", "restriction", 1, false)] + public virtual bool Restriction { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SaleRecipientForTokenUpdatedEventDTO : SaleRecipientForTokenUpdatedEventDTOBase { } + + [Event("SaleRecipientForTokenUpdated")] + public class SaleRecipientForTokenUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "saleRecipient", 2, false)] + public virtual string SaleRecipient { get; set; } + } + + public partial class TokensClaimedEventDTO : TokensClaimedEventDTOBase { } + + [Event("TokensClaimed")] + public class TokensClaimedEventDTOBase : IEventDTO + { + [Parameter("uint256", "claimConditionIndex", 1, true)] + public virtual BigInteger ClaimConditionIndex { get; set; } + + [Parameter("address", "claimer", 2, true)] + public virtual string Claimer { get; set; } + + [Parameter("address", "receiver", 3, true)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "tokenId", 4, false)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantityClaimed", 5, false)] + public virtual BigInteger QuantityClaimed { get; set; } + } + + public partial class TokensLazyMintedEventDTO : TokensLazyMintedEventDTOBase { } + + [Event("TokensLazyMinted")] + public class TokensLazyMintedEventDTOBase : IEventDTO + { + [Parameter("uint256", "startTokenId", 1, true)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "endTokenId", 2, false)] + public virtual BigInteger EndTokenId { get; set; } + + [Parameter("string", "baseURI", 3, false)] + public virtual string BaseURI { get; set; } + + [Parameter("bytes", "encryptedBaseURI", 4, false)] + public virtual byte[] EncryptedBaseURI { get; set; } + } + + public partial class TransferBatchEventDTO : TransferBatchEventDTOBase { } + + [Event("TransferBatch")] + public class TransferBatchEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 4, false)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "values", 5, false)] + public virtual List Values { get; set; } + } + + public partial class TransferSingleEventDTO : TransferSingleEventDTOBase { } + + [Event("TransferSingle")] + public class TransferSingleEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 4, false)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "value", 5, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class URIEventDTO : URIEventDTOBase { } + + [Event("URI")] + public class URIEventDTOBase : IEventDTO + { + [Parameter("string", "value", 1, false)] + public virtual string Value { get; set; } + + [Parameter("uint256", "id", 2, true)] + public virtual BigInteger Id { get; set; } + } + + public partial class OperatorNotAllowedError : OperatorNotAllowedErrorBase { } + + [Error("OperatorNotAllowed")] + public class OperatorNotAllowedErrorBase : IErrorDTO + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfBatchOutputDTO : BalanceOfBatchOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfBatchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class ClaimConditionOutputDTO : ClaimConditionOutputDTOBase { } + + [FunctionOutput] + public class ClaimConditionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "currentStartId", 1)] + public virtual BigInteger CurrentStartId { get; set; } + + [Parameter("uint256", "count", 2)] + public virtual BigInteger Count { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class GetActiveClaimConditionIdOutputDTO : GetActiveClaimConditionIdOutputDTOBase { } + + [FunctionOutput] + public class GetActiveClaimConditionIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetBaseURICountOutputDTO : GetBaseURICountOutputDTOBase { } + + [FunctionOutput] + public class GetBaseURICountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetBatchIdAtIndexOutputDTO : GetBatchIdAtIndexOutputDTOBase { } + + [FunctionOutput] + public class GetBatchIdAtIndexOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetClaimConditionByIdOutputDTO : GetClaimConditionByIdOutputDTOBase { } + + [FunctionOutput] + public class GetClaimConditionByIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "condition", 1)] + public virtual ClaimCondition Condition { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetSupplyClaimedByWalletOutputDTO : GetSupplyClaimedByWalletOutputDTOBase { } + + [FunctionOutput] + public class GetSupplyClaimedByWalletOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "supplyClaimedByWallet", 1)] + public virtual BigInteger SupplyClaimedByWallet { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class MaxTotalSupplyOutputDTO : MaxTotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class MaxTotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OperatorRestrictionOutputDTO : OperatorRestrictionOutputDTOBase { } + + [FunctionOutput] + public class OperatorRestrictionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SaleRecipientOutputDTO : SaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class SaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriOutputDTO : UriOutputDTOBase { } + + [FunctionOutput] + public class UriOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class VerifyClaimOutputDTO : VerifyClaimOutputDTOBase { } + + [FunctionOutput] + public class VerifyClaimOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "isOverride", 1)] + public virtual bool IsOverride { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs.meta new file mode 100644 index 00000000..8508ab6d --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/ContractDefinition/DropERC1155Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5e34c9cbf967be4cb0d555717e7f1db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs new file mode 100644 index 00000000..44edd913 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs @@ -0,0 +1,1187 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.DropERC1155.ContractDefinition; + +namespace Thirdweb.Contracts.DropERC1155 +{ + public partial class DropERC1155Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + DropERC1155Deployment dropERC1155Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(dropERC1155Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, DropERC1155Deployment dropERC1155Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(dropERC1155Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + DropERC1155Deployment dropERC1155Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, dropERC1155Deployment, cancellationTokenSource); + return new DropERC1155Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public DropERC1155Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BigInteger id, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + balanceOfFunction.Id = id; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(BalanceOfBatchFunction balanceOfBatchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(List accounts, List ids, BlockParameter blockParameter = null) + { + var balanceOfBatchFunction = new BalanceOfBatchFunction(); + balanceOfBatchFunction.Accounts = accounts; + balanceOfBatchFunction.Ids = ids; + + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task BurnBatchRequestAsync(BurnBatchFunction burnBatchFunction) + { + return ContractHandler.SendRequestAsync(burnBatchFunction); + } + + public Task BurnBatchRequestAndWaitForReceiptAsync(BurnBatchFunction burnBatchFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnBatchFunction, cancellationToken); + } + + public Task BurnBatchRequestAsync(string account, List ids, List values) + { + var burnBatchFunction = new BurnBatchFunction(); + burnBatchFunction.Account = account; + burnBatchFunction.Ids = ids; + burnBatchFunction.Values = values; + + return ContractHandler.SendRequestAsync(burnBatchFunction); + } + + public Task BurnBatchRequestAndWaitForReceiptAsync(string account, List ids, List values, CancellationTokenSource cancellationToken = null) + { + var burnBatchFunction = new BurnBatchFunction(); + burnBatchFunction.Account = account; + burnBatchFunction.Ids = ids; + burnBatchFunction.Values = values; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnBatchFunction, cancellationToken); + } + + public Task ClaimRequestAsync(ClaimFunction claimFunction) + { + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync(ClaimFunction claimFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimRequestAsync(string receiver, BigInteger tokenId, BigInteger quantity, string currency, BigInteger pricePerToken, AllowlistProof allowlistProof, byte[] data) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.TokenId = tokenId; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync( + string receiver, + BigInteger tokenId, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.TokenId = tokenId; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimConditionQueryAsync(ClaimConditionFunction claimConditionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(claimConditionFunction, blockParameter); + } + + public Task ClaimConditionQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var claimConditionFunction = new ClaimConditionFunction(); + claimConditionFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryDeserializingToObjectAsync(claimConditionFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(GetActiveClaimConditionIdFunction getActiveClaimConditionIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getActiveClaimConditionIdFunction, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getActiveClaimConditionIdFunction = new GetActiveClaimConditionIdFunction(); + getActiveClaimConditionIdFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(getActiveClaimConditionIdFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(GetBaseURICountFunction getBaseURICountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBaseURICountFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(GetBatchIdAtIndexFunction getBatchIdAtIndexFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(BigInteger index, BlockParameter blockParameter = null) + { + var getBatchIdAtIndexFunction = new GetBatchIdAtIndexFunction(); + getBatchIdAtIndexFunction.Index = index; + + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(GetClaimConditionByIdFunction getClaimConditionByIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(BigInteger tokenId, BigInteger conditionId, BlockParameter blockParameter = null) + { + var getClaimConditionByIdFunction = new GetClaimConditionByIdFunction(); + getClaimConditionByIdFunction.TokenId = tokenId; + getClaimConditionByIdFunction.ConditionId = conditionId; + + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(GetSupplyClaimedByWalletFunction getSupplyClaimedByWalletFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(BigInteger tokenId, BigInteger conditionId, string claimer, BlockParameter blockParameter = null) + { + var getSupplyClaimedByWalletFunction = new GetSupplyClaimedByWalletFunction(); + getSupplyClaimedByWalletFunction.TokenId = tokenId; + getSupplyClaimedByWalletFunction.ConditionId = conditionId; + getSupplyClaimedByWalletFunction.Claimer = claimer; + + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string account, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Account = account; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task LazyMintRequestAsync(LazyMintFunction lazyMintFunction) + { + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(LazyMintFunction lazyMintFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task LazyMintRequestAsync(BigInteger amount, string baseURIForTokens, byte[] data) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(BigInteger amount, string baseURIForTokens, byte[] data, CancellationTokenSource cancellationToken = null) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task MaxTotalSupplyQueryAsync(MaxTotalSupplyFunction maxTotalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(maxTotalSupplyFunction, blockParameter); + } + + public Task MaxTotalSupplyQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var maxTotalSupplyFunction = new MaxTotalSupplyFunction(); + maxTotalSupplyFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(maxTotalSupplyFunction, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(OperatorRestrictionFunction operatorRestrictionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(operatorRestrictionFunction, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeBatchTransferFromRequestAsync(SafeBatchTransferFromFunction safeBatchTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + SafeBatchTransferFromFunction safeBatchTransferFromFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeBatchTransferFromRequestAsync(string from, string to, List ids, List amounts, byte[] data) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + List ids, + List amounts, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger id, BigInteger amount, byte[] data) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + BigInteger id, + BigInteger amount, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SaleRecipientQueryAsync(SaleRecipientFunction saleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(saleRecipientFunction, blockParameter); + } + + public Task SaleRecipientQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var saleRecipientFunction = new SaleRecipientFunction(); + saleRecipientFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(saleRecipientFunction, blockParameter); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(SetClaimConditionsFunction setClaimConditionsFunction) + { + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(SetClaimConditionsFunction setClaimConditionsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(BigInteger tokenId, List conditions, bool resetClaimEligibility) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.TokenId = tokenId; + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync( + BigInteger tokenId, + List conditions, + bool resetClaimEligibility, + CancellationTokenSource cancellationToken = null + ) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.TokenId = tokenId; + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction) + { + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(BigInteger tokenId, BigInteger maxTotalSupply) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.TokenId = tokenId; + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(BigInteger tokenId, BigInteger maxTotalSupply, CancellationTokenSource cancellationToken = null) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.TokenId = tokenId; + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(SetOperatorRestrictionFunction setOperatorRestrictionFunction) + { + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync( + SetOperatorRestrictionFunction setOperatorRestrictionFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(bool restriction) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync(bool restriction, CancellationTokenSource cancellationToken = null) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetSaleRecipientForTokenRequestAsync(SetSaleRecipientForTokenFunction setSaleRecipientForTokenFunction) + { + return ContractHandler.SendRequestAsync(setSaleRecipientForTokenFunction); + } + + public Task SetSaleRecipientForTokenRequestAndWaitForReceiptAsync( + SetSaleRecipientForTokenFunction setSaleRecipientForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setSaleRecipientForTokenFunction, cancellationToken); + } + + public Task SetSaleRecipientForTokenRequestAsync(BigInteger tokenId, string saleRecipient) + { + var setSaleRecipientForTokenFunction = new SetSaleRecipientForTokenFunction(); + setSaleRecipientForTokenFunction.TokenId = tokenId; + setSaleRecipientForTokenFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setSaleRecipientForTokenFunction); + } + + public Task SetSaleRecipientForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setSaleRecipientForTokenFunction = new SetSaleRecipientForTokenFunction(); + setSaleRecipientForTokenFunction.TokenId = tokenId; + setSaleRecipientForTokenFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setSaleRecipientForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var totalSupplyFunction = new TotalSupplyFunction(); + totalSupplyFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task UriQueryAsync(UriFunction uriFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + + public Task UriQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var uriFunction = new UriFunction(); + uriFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync(VerifyClaimFunction verifyClaimFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync( + BigInteger conditionId, + string claimer, + BigInteger tokenId, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + BlockParameter blockParameter = null + ) + { + var verifyClaimFunction = new VerifyClaimFunction(); + verifyClaimFunction.ConditionId = conditionId; + verifyClaimFunction.Claimer = claimer; + verifyClaimFunction.TokenId = tokenId; + verifyClaimFunction.Quantity = quantity; + verifyClaimFunction.Currency = currency; + verifyClaimFunction.PricePerToken = pricePerToken; + verifyClaimFunction.AllowlistProof = allowlistProof; + + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs.meta new file mode 100644 index 00000000..853fa5c7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC1155/DropERC1155Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 90c0962bba794c24ca4a73a13ea41372 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20.meta new file mode 100644 index 00000000..5f25cb93 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fd01c650fb3bed43b6955492d2d8bb4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition.meta new file mode 100644 index 00000000..07f118fc --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a29027aa275121b49a85e6dba0538505 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs new file mode 100644 index 00000000..335aa23e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC20.ContractDefinition +{ + public partial class AllowlistProof : AllowlistProofBase { } + + public class AllowlistProofBase + { + [Parameter("bytes32[]", "proof", 1)] + public virtual List Proof { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 2)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("uint256", "pricePerToken", 3)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs.meta new file mode 100644 index 00000000..f9e76c77 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/AllowlistProof.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b7f00570532a854fa4a364f08557876 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs new file mode 100644 index 00000000..f2ad9149 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs @@ -0,0 +1,20 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC20.ContractDefinition +{ + public partial class Checkpoint : CheckpointBase { } + + public class CheckpointBase + { + [Parameter("uint32", "fromBlock", 1)] + public virtual uint FromBlock { get; set; } + + [Parameter("uint224", "votes", 2)] + public virtual BigInteger Votes { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs.meta new file mode 100644 index 00000000..84c689d7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/Checkpoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fcd31d5ae2c346c41938004baa91d678 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs new file mode 100644 index 00000000..3aebbeb3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC20.ContractDefinition +{ + public partial class ClaimCondition : ClaimConditionBase { } + + public class ClaimConditionBase + { + [Parameter("uint256", "startTimestamp", 1)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint256", "maxClaimableSupply", 2)] + public virtual BigInteger MaxClaimableSupply { get; set; } + + [Parameter("uint256", "supplyClaimed", 3)] + public virtual BigInteger SupplyClaimed { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 4)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("bytes32", "merkleRoot", 5)] + public virtual byte[] MerkleRoot { get; set; } + + [Parameter("uint256", "pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("string", "metadata", 8)] + public virtual string Metadata { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs.meta new file mode 100644 index 00000000..391cf52e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/ClaimCondition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dce9ad2ae18d1b147bc641823e18e99c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs new file mode 100644 index 00000000..2e616367 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs @@ -0,0 +1,1080 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.DropERC20.ContractDefinition +{ + public partial class DropERC20Deployment : DropERC20DeploymentBase + { + public DropERC20Deployment() + : base(BYTECODE) { } + + public DropERC20Deployment(string byteCode) + : base(byteCode) { } + } + + public class DropERC20DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5061510380620001336000396000f3fe60806040526004361061031a5760003560e01c806379cc6790116101ab578063a9059cbb116100f7578063d45573f611610095578063d637ed591161006f578063d637ed59146109de578063dd62ed3e14610a0e578063e8a3d48514610a2e578063f1127ed814610a4357600080fd5b8063d45573f614610967578063d505accf1461099e578063d547741f146109be57600080fd5b8063c3cda520116100d1578063c3cda520146108f3578063c68907de14610913578063ca15c87314610928578063cb2ef6f71461094857600080fd5b8063a9059cbb14610864578063ac9650d814610884578063ad1eefc5146108b157600080fd5b8063938e3d7b11610164578063a0a8e4601161013e578063a0a8e460146107fb578063a217fddf1461080f578063a32fa5b314610824578063a457c2d71461084457600080fd5b8063938e3d7b146107a657806395d89b41146107c65780639ab24eb0146107db57600080fd5b806379cc6790146106f35780637ecebe001461071357806384bb1e42146107335780638e539e8c146107465780639010d07c1461076657806391d148541461078657600080fd5b8063395093511161026a578063587cde1e116102235780636f8934f4116101fd5780636f8934f41461063b5780636fcfff451461066857806370a082311461069d57806374bc7db7146106d357600080fd5b8063587cde1e146105c15780635c19a95c146105fb5780636f4f28371461061b57600080fd5b806339509351146104e85780633a46b1a8146105085780633f3e4c111461052857806342966c681461054857806349c5c5b614610568578063572b6c051461058857600080fd5b806323b872dd116102d75780632f2ff15d116102b15780632f2ff15d14610471578063313ce567146104915780633644e515146104b357806336568abe146104c857600080fd5b806323b872dd1461040d578063248a9ca31461042d5780632ab4d0521461045a57600080fd5b806306fdde031461031f578063079fe40e1461034a578063095ea7b31461037c57806318160ddd146103ac5780631e7ac488146103cb57806323a2902b146103ed575b600080fd5b34801561032b57600080fd5b50610334610a8d565b6040516103419190614257565b60405180910390f35b34801561035657600080fd5b506003546001600160a01b03165b6040516001600160a01b039091168152602001610341565b34801561038857600080fd5b5061039c61039736600461428f565b610b1f565b6040519015158152602001610341565b3480156103b857600080fd5b5060a3545b604051908152602001610341565b3480156103d757600080fd5b506103eb6103e636600461428f565b610b43565b005b3480156103f957600080fd5b5061039c6104083660046142cd565b610b7e565b34801561041957600080fd5b5061039c61042836600461434a565b610f46565b34801561043957600080fd5b506103bd61044836600461438b565b60009081526005602052604090205490565b34801561046657600080fd5b506103bd61019f5481565b34801561047d57600080fd5b506103eb61048c3660046143a4565b610f76565b34801561049d57600080fd5b5060125b60405160ff9091168152602001610341565b3480156104bf57600080fd5b506103bd61100c565b3480156104d457600080fd5b506103eb6104e33660046143a4565b61101b565b3480156104f457600080fd5b5061039c61050336600461428f565b61107d565b34801561051457600080fd5b506103bd61052336600461428f565b6110a9565b34801561053457600080fd5b506103eb61054336600461438b565b61111d565b34801561055457600080fd5b506103eb61056336600461438b565b611167565b34801561057457600080fd5b506103eb610583366004614525565b61117b565b34801561059457600080fd5b5061039c6105a3366004614614565b6001600160a01b03166000908152603d602052604090205460ff1690565b3480156105cd57600080fd5b506103646105dc366004614614565b6001600160a01b03908116600090815261016c60205260409020541690565b34801561060757600080fd5b506103eb610616366004614614565b611312565b34801561062757600080fd5b506103eb610636366004614614565b611323565b34801561064757600080fd5b5061065b61065636600461438b565b611350565b6040516103419190614631565b34801561067457600080fd5b50610688610683366004614614565b6114ad565b60405163ffffffff9091168152602001610341565b3480156106a957600080fd5b506103bd6106b8366004614614565b6001600160a01b0316600090815260a1602052604090205490565b3480156106df57600080fd5b506103eb6106ee3660046146f7565b6114d0565b3480156106ff57600080fd5b506103eb61070e36600461428f565b611814565b34801561071f57600080fd5b506103bd61072e366004614614565b611830565b6103eb61074136600461474d565b61184f565b34801561075257600080fd5b506103bd61076136600461438b565b611975565b34801561077257600080fd5b506103646107813660046147ee565b6119d2565b34801561079257600080fd5b5061039c6107a13660046143a4565b611ac0565b3480156107b257600080fd5b506103eb6107c1366004614810565b611aeb565b3480156107d257600080fd5b50610334611b18565b3480156107e757600080fd5b506103bd6107f6366004614614565b611b27565b34801561080757600080fd5b5060046104a1565b34801561081b57600080fd5b506103bd600081565b34801561083057600080fd5b5061039c61083f3660046143a4565b611bb0565b34801561085057600080fd5b5061039c61085f36600461428f565b611c06565b34801561087057600080fd5b5061039c61087f36600461428f565b611c97565b34801561089057600080fd5b506108a461089f366004614844565b611caf565b6040516103419190614885565b3480156108bd57600080fd5b506103bd6108cc3660046143a4565b6000918252600a602090815260408084206001600160a01b03909316845291905290205490565b3480156108ff57600080fd5b506103eb61090e3660046148f8565b611da3565b34801561091f57600080fd5b506103bd611ed9565b34801561093457600080fd5b506103bd61094336600461438b565b611f7c565b34801561095457600080fd5b5068044726f7045524332360bc1b6103bd565b34801561097357600080fd5b50600254604080516001600160a01b0383168152600160a01b90920461ffff16602083015201610341565b3480156109aa57600080fd5b506103eb6109b9366004614952565b612005565b3480156109ca57600080fd5b506103eb6109d93660046143a4565b612169565b3480156109ea57600080fd5b506007546008546109f9919082565b60408051928352602083019190915201610341565b348015610a1a57600080fd5b506103bd610a293660046149c0565b612182565b348015610a3a57600080fd5b506103346121ad565b348015610a4f57600080fd5b50610a63610a5e3660046149ee565b61223b565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610341565b606060a48054610a9c90614a25565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890614a25565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b600080610b2a6122c0565b9050610b378185856122ca565b60019150505b92915050565b610b4b6123ee565b610b705760405162461bcd60e51b8152600401610b6790614a59565b60405180910390fd5b610b7a82826123fc565b5050565b6000868152600960209081526040808320815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e0840191610bfd90614a25565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2990614a25565b8015610c765780601f10610c4b57610100808354040283529160200191610c76565b820191906000526020600020905b815481529060010190602001808311610c5957829003601f168201915b50505091909252505050606081015160a082015160c08301516080840151939450919290919015610d5b57610d57610cae8780614a81565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508d9060208b01359060408c013590610d03908d0160608e01614614565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b166074820152608801604051602081830303815290604052805190602001206124ab565b5094505b8415610de2578560200135600003610d735782610d79565b85602001355b9250600019866040013503610d8e5781610d94565b85604001355b9150600019866040013514158015610dc557506000610db96080880160608901614614565b6001600160a01b031614155b610dcf5780610ddf565b610ddf6080870160608801614614565b90505b60008b8152600a602090815260408083206001600160a01b03808f16855292529091205490898116908316141580610e1a5750828814155b15610e5a5760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610b67565b891580610e6f575083610e6d828c614ae0565b115b15610ea55760405162461bcd60e51b8152600401610b67906020808252600490820152632151747960e01b604082015260600190565b84602001518a8660400151610eba9190614ae0565b1115610ef55760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610b67565b8451421015610f375760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610b67565b50505050509695505050505050565b600080610f516122c0565b9050610f5e858285612579565b610f698585856125f3565b60019150505b9392505050565b600082815260056020526040902054610f8f90336127d2565b60008281526004602090815260408083206001600160a01b038516845290915290205460ff16156110025760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610b67565b610b7a8282612852565b6000611016612866565b905090565b336001600160a01b038216146110735760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610b67565b610b7a82826128e3565b6000806110886122c0565b9050610b3781858561109a8589612182565b6110a49190614ae0565b6122ca565b60004382106110fa5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610b67565b6001600160a01b038316600090815261016d60205260409020610f6f908361293a565b600061112981336127d2565b61019f8290556040518281527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af906020015b60405180910390a15050565b6111786111726122c0565b826129f7565b50565b600054610100900460ff161580801561119b5750600054600160ff909116105b806111b55750303b1580156111b5575060005460ff166001145b6112185760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b67565b6000805460ff19166001179055801561123b576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c61126586612a01565b61126e89612a39565b6112788989612a83565b61128187612ac8565b61128c60008b612852565b611296818b612852565b6112a1816000612852565b6112b484846001600160801b03166123fc565b6112bd85612b98565b61019e558015611307576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61117861131d6122c0565b82612be2565b61132b6123ee565b6113475760405162461bcd60e51b8152600401610b6790614a59565b61117881612b98565b6113a460405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b600082815260096020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e08401919061142490614a25565b80601f016020809104026020016040519081016040528092919081815260200182805461145090614a25565b801561149d5780601f106114725761010080835404028352916020019161149d565b820191906000526020600020905b81548152906001019060200180831161148057829003601f168201915b5050505050815250509050919050565b6001600160a01b038116600090815261016d6020526040812054610b3d90612c5d565b6114d86123ee565b6114f45760405162461bcd60e51b8152600401610b6790614a59565b60075460085481831561150e5761150b8284614ae0565b90505b600885905560078190556000805b868110156116c157801580611554575087878281811061153e5761153e614af3565b90506020028101906115509190614b09565b3582105b6115855760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610b67565b60006009816115948487614ae0565b81526020019081526020016000206002015490508888838181106115ba576115ba614af3565b90506020028101906115cc9190614b09565b602001358111156116145760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610b67565b88888381811061162657611626614af3565b90506020028101906116389190614b09565b600960006116468588614ae0565b815260200190815260200160002081816116609190614c75565b50819050600960006116728588614ae0565b815260208101919091526040016000206002015588888381811061169857611698614af3565b90506020028101906116aa9190614b09565b3592508190506116b981614cf3565b91505061151c565b50841561174157835b8281101561173b57600081815260096020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b03191690559061172660078301826141bd565b5050808061173390614cf3565b9150506116ca565b506117d0565b858311156117d057855b838110156117ce57600960006117618386614ae0565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b0319169055906117b960078301826141bd565b505080806117c690614cf3565b91505061174b565b505b7fbf4016fceeaaa4ac5cf4be865b559ff85825ab4ca7aa7b661d16e2f544c0309887878760405161180393929190614d7a565b60405180910390a150505050505050565b611826826118206122c0565b83612579565b610b7a82826129f7565b6001600160a01b03811660009081526101396020526040812054610b3d565b61185d868686868686612cc6565b6000611867611ed9565b905061187e81611875612d36565b88888888610b7e565b50600081815260096020526040812060020180548892906118a0908490614ae0565b90915550506000818152600a6020526040812087916118bd612d36565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118ec9190614ae0565b909155506118ff90506000878787612d40565b600061190b8888612e8f565b9050876001600160a01b031661191f612d36565b6001600160a01b0316837ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e848b604051611963929190918252602082015260400190565b60405180910390a45050505050505050565b60004382106119c65760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610b67565b610b3d61016e8361293a565b60008281526006602052604081205481805b82811015611ab75760008681526006602090815260408083208484526001019091529020546001600160a01b031615611a6057848203611a4e5760008681526006602090815260408083209383526001909301905220546001600160a01b03169250610b3d915050565b611a59600183614ae0565b9150611aa5565b611a6b866000611ac0565b8015611a925750600086815260066020908152604080832083805260020190915290205481145b15611aa557611aa2600183614ae0565b91505b611ab0600182614ae0565b90506119e4565b50505092915050565b60009182526004602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611af36123ee565b611b0f5760405162461bcd60e51b8152600401610b6790614a59565b61117881612ac8565b606060a58054610a9c90614a25565b6001600160a01b038116600090815261016d60205260408120548015611b9d576001600160a01b038316600090815261016d60205260409020611b6b600183614e62565b81548110611b7b57611b7b614af3565b60009182526020909120015464010000000090046001600160e01b0316611ba0565b60005b6001600160e01b03169392505050565b600082815260046020908152604080832083805290915281205460ff16611bfd575060008281526004602090815260408083206001600160a01b038516845290915290205460ff16610b3d565b50600192915050565b600080611c116122c0565b90506000611c1f8286612182565b905083811015611c7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b67565b611c8c82868684036122ca565b506001949350505050565b600080611ca26122c0565b9050610b378185856125f3565b6060816001600160401b03811115611cc957611cc96143d4565b604051908082528060200260200182016040528015611cfc57816020015b6060815260200190600190039081611ce75790505b50905060005b82811015611d9c57611d6c30858584818110611d2057611d20614af3565b9050602002810190611d329190614b29565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612eac92505050565b828281518110611d7e57611d7e614af3565b60200260200101819052508080611d9490614cf3565b915050611d02565b5092915050565b83421115611df35760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610b67565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090611e6d90611e659060a00160405160208183030381529060405280519060200120612fa0565b858585612fee565b9050611e7881613018565b8614611ec65760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610b67565b611ed08188612be2565b50505050505050565b6008546007546000918291611eee9190614ae0565b90505b600754811115611f455760096000611f0a600184614e62565b8152602001908152602001600020600001544210611f3357611f2d600182614e62565b91505090565b80611f3d81614e75565b915050611ef1565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610b67565b600081815260066020526040812054815b81811015611fe05760008481526006602090815260408083208484526001019091529020546001600160a01b031615611fce57611fcb600184614ae0565b92505b611fd9600182614ae0565b9050611f8d565b50611fec836000611ac0565b15611fff57611ffc600183614ae0565b91505b50919050565b834211156120555760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610b67565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886120848c613018565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006120df82612fa0565b905060006120ef82878787612fee565b9050896001600160a01b0316816001600160a01b0316146121525760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610b67565b61215d8a8a8a6122ca565b50505050505050505050565b60008281526005602052604090205461107390336127d2565b6001600160a01b03918216600090815260a26020908152604080832093909416825291909152205490565b600180546121ba90614a25565b80601f01602080910402602001604051908101604052809291908181526020018280546121e690614a25565b80156122335780601f1061220857610100808354040283529160200191612233565b820191906000526020600020905b81548152906001019060200180831161221657829003601f168201915b505050505081565b60408051808201909152600080825260208201526001600160a01b038316600090815261016d60205260409020805463ffffffff841690811061228057612280614af3565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b600061101661303f565b6001600160a01b03831661232c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b67565b6001600160a01b03821661238d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b67565b6001600160a01b03838116600081815260a2602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611016816107a16122c0565b6127108111156124405760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b6044820152606401610b67565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f183049060200160405180910390a25050565b6000808281805b875181101561256d576124c6600283614e8c565b915060008882815181106124dc576124dc614af3565b6020026020010151905080841161251e57604080516020810186905290810182905260600160405160208183030381529060405280519060200120935061255a565b60408051602081018390529081018590526060016040516020818303038152906040528051906020012093506001836125579190614ae0565b92505b508061256581614cf3565b9150506124b2565b50941495939450505050565b60006125858484612182565b905060001981146125ed57818110156125e05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b67565b6125ed84848484036122ca565b50505050565b6001600160a01b0383166126575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b67565b6001600160a01b0382166126b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b67565b6126c4838383613069565b6001600160a01b038316600090815260a160205260409020548181101561273c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b67565b6001600160a01b03808516600090815260a16020526040808220858503905591851681529081208054849290612773908490614ae0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127bf91815260200190565b60405180910390a36125ed848484613109565b60008281526004602090815260408083206001600160a01b038516845290915290205460ff16610b7a57612810816001600160a01b03166014613114565b61281b836020613114565b60405160200161282c929190614ea3565b60408051601f198184030181529082905262461bcd60e51b8252610b6791600401614257565b61285c82826132af565b610b7a828261330a565b60006110167f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6128966101055490565b610106546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6128ed8282613377565b60008281526006602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b8154600090815b8181101561299e57600061295582846133d9565b90508486828154811061296a5761296a614af3565b60009182526020909120015463ffffffff16111561298a57809250612998565b612995816001614ae0565b91505b50612941565b81156129e257846129b0600184614e62565b815481106129c0576129c0614af3565b60009182526020909120015464010000000090046001600160e01b03166129e5565b60005b6001600160e01b031695945050505050565b610b7a82826133f4565b600054610100900460ff16612a285760405162461bcd60e51b8152600401610b6790614f10565b612a3061340d565b61117881613436565b600054610100900460ff16612a605760405162461bcd60e51b8152600401610b6790614f10565b61117881604051806040016040528060018152602001603160f81b8152506134c5565b600054610100900460ff16612aaa5760405162461bcd60e51b8152600401610b6790614f10565b60a4612ab68382614f5b565b5060a5612ac38282614f5b565b505050565b600060018054612ad790614a25565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0390614a25565b8015612b505780601f10612b2557610100808354040283529160200191612b50565b820191906000526020600020905b815481529060010190602001808311612b3357829003601f168201915b505050505090508160019081612b669190614f5b565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818360405161115b92919061501a565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6001600160a01b03828116600081815261016c60208181526040808420805460a1845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46125ed828483613508565b600063ffffffff821115612cc25760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610b67565b5090565b61019f54801580612cea57508086612cdd60a35490565b612ce79190614ae0565b11155b611ed05760405162461bcd60e51b815260206004820152601860248201527f657863656564206d617820746f74616c20737570706c792e00000000000000006044820152606401610b67565b60006110166122c0565b80156125ed576002546001600160a01b0380821691600160a01b900461ffff1690600090871615612d715786612d7e565b6003546001600160a01b03165b90506000670de0b6b3a7640000612d958689614e8c565b612d9f919061503f565b905060008111612de45760405162461bcd60e51b815260206004820152601060248201526f7175616e7469747920746f6f206c6f7760801b6044820152606401610b67565b6000612710612df761ffff861684614e8c565b612e01919061503f565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03881601612e6057813414612e605760405162461bcd60e51b815260206004820152600660248201526521507269636560d01b6044820152606401610b67565b612e7387612e6c6122c0565b8784613647565b61130787612e7f6122c0565b85612e8a8587614e62565b613647565b6000612e9b838361368d565b50600092915050565b505050505050565b60606001600160a01b0383163b612f145760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b67565b600080846001600160a01b031684604051612f2f9190615061565b600060405180830381855af49150503d8060008114612f6a576040519150601f19603f3d011682016040523d82523d6000602084013e612f6f565b606091505b5091509150612f9782826040518060600160405280602781526020016150a760279139613697565b95945050505050565b6000610b3d612fad612866565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612fff878787876136d0565b9150915061300c816137bd565b5090505b949350505050565b6001600160a01b038116600090815261013960205260409020805460018101825590611fff565b336000908152603d602052604081205460ff1615613064575060131936013560601c90565b503390565b61307761019e546000611ac0565b15801561308c57506001600160a01b03831615155b80156130a057506001600160a01b03821615155b15612ac3576130b261019e5484611ac0565b806130c557506130c561019e5483611ac0565b612ac35760405162461bcd60e51b81526020600482015260156024820152743a3930b739b332b939903932b9ba3934b1ba32b21760591b6044820152606401610b67565b612ac3838383613973565b60606000613123836002614e8c565b61312e906002614ae0565b6001600160401b03811115613145576131456143d4565b6040519080825280601f01601f19166020018201604052801561316f576020820181803683370190505b509050600360fc1b8160008151811061318a5761318a614af3565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131b9576131b9614af3565b60200101906001600160f81b031916908160001a90535060006131dd846002614e8c565b6131e8906001614ae0565b90505b6001811115613260576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061321c5761321c614af3565b1a60f81b82828151811061323257613232614af3565b60200101906001600160f81b031916908160001a90535060049490941c9361325981614e75565b90506131eb565b508315610f6f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b67565b60008281526004602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600660205260408120805491600191906133298385614ae0565b9091555050600092835260066020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b61338182826127d2565b60008281526004602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006133e8600284841861503f565b610f6f90848416614ae0565b6133fe82826139a6565b6125ed61016e613b0783613b13565b600054610100900460ff166134345760405162461bcd60e51b8152600401610b6790614f10565b565b600054610100900460ff1661345d5760405162461bcd60e51b8152600401610b6790614f10565b60005b8151811015610b7a576001603d600084848151811061348157613481614af3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806134bd81614cf3565b915050613460565b600054610100900460ff166134ec5760405162461bcd60e51b8152600401610b6790614f10565b8151602092830120815191909201206101059190915561010655565b816001600160a01b0316836001600160a01b03161415801561352a5750600081115b15612ac3576001600160a01b038316156135b9576001600160a01b038316600090815261016d60205260408120819061356690613b0785613b13565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516135ae929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615612ac3576001600160a01b038216600090815261016d6020526040812081906135f090613c8c85613b13565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613638929190918252602082015260400190565b60405180910390a25050505050565b80156125ed5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016136815761367c8282613c98565b6125ed565b6125ed84848484613d3b565b610b7a8282613d8e565b606083156136a6575081610f6f565b8251156136b65782518084602001fd5b8160405162461bcd60e51b8152600401610b679190614257565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561370757506000905060036137b4565b8460ff16601b1415801561371f57508460ff16601c14155b1561373057506000905060046137b4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613784573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166137ad576000600192509250506137b4565b9150600090505b94509492505050565b60008160048111156137d1576137d1615073565b036137d95750565b60018160048111156137ed576137ed615073565b0361383a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b67565b600281600481111561384e5761384e615073565b0361389b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b67565b60038160048111156138af576138af615073565b036139075760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b67565b600481600481111561391b5761391b615073565b036111785760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b67565b6001600160a01b03838116600090815261016c6020526040808220548584168352912054612ac392918216911683613508565b6001600160a01b038216613a065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b67565b613a1282600083613069565b6001600160a01b038216600090815260a1602052604090205481811015613a865760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b67565b6001600160a01b038316600090815260a160205260408120838303905560a38054849290613ab5908490614e62565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612ac383600084613109565b6000610f6f8284614e62565b825460009081908015613b5e5785613b2c600183614e62565b81548110613b3c57613b3c614af3565b60009182526020909120015464010000000090046001600160e01b0316613b61565b60005b6001600160e01b03169250613b7a83858763ffffffff16565b9150600081118015613bb857504386613b94600184614e62565b81548110613ba457613ba4614af3565b60009182526020909120015463ffffffff16145b15613c1857613bc682613e19565b86613bd2600184614e62565b81548110613be257613be2614af3565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550613c83565b856040518060400160405280613c2d43612c5d565b63ffffffff168152602001613c4185613e19565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6000610f6f8284614ae0565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613ce5576040519150601f19603f3d011682016040523d82523d6000602084013e613cea565b606091505b5050905080612ac35760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610b67565b816001600160a01b0316836001600160a01b031603156125ed57306001600160a01b03841603613d795761367c6001600160a01b0385168383613e82565b6125ed6001600160a01b038516848484613ee5565b613d988282613f1d565b60a3546001600160e01b031015613e0a5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610b67565b6125ed61016e613c8c83613b13565b60006001600160e01b03821115612cc25760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610b67565b6040516001600160a01b038316602482015260448101829052612ac390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614010565b6040516001600160a01b03808516602483015283166044820152606481018290526125ed9085906323b872dd60e01b90608401613eae565b6001600160a01b038216613f735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b67565b613f7f60008383613069565b8060a36000828254613f919190614ae0565b90915550506001600160a01b038216600090815260a1602052604081208054839290613fbe908490614ae0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610b7a60008383613109565b6000614065826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166140e29092919063ffffffff16565b805190915015612ac357808060200190518101906140839190615089565b612ac35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b67565b60606130108484600085856001600160a01b0385163b6141445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b67565b600080866001600160a01b031685876040516141609190615061565b60006040518083038185875af1925050503d806000811461419d576040519150601f19603f3d011682016040523d82523d6000602084013e6141a2565b606091505b50915091506141b2828286613697565b979650505050505050565b5080546141c990614a25565b6000825580601f106141d9575050565b601f01602090049060005260206000209081019061117891905b80821115612cc257600081556001016141f3565b60005b8381101561422257818101518382015260200161420a565b50506000910152565b60008151808452614243816020860160208601614207565b601f01601f19169290920160200192915050565b602081526000610f6f602083018461422b565b6001600160a01b038116811461117857600080fd5b803561428a8161426a565b919050565b600080604083850312156142a257600080fd5b82356142ad8161426a565b946020939093013593505050565b600060808284031215611fff57600080fd5b60008060008060008060c087890312156142e657600080fd5b8635955060208701356142f88161426a565b945060408701359350606087013561430f8161426a565b92506080870135915060a08701356001600160401b0381111561433157600080fd5b61433d89828a016142bb565b9150509295509295509295565b60008060006060848603121561435f57600080fd5b833561436a8161426a565b9250602084013561437a8161426a565b929592945050506040919091013590565b60006020828403121561439d57600080fd5b5035919050565b600080604083850312156143b757600080fd5b8235915060208301356143c98161426a565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614412576144126143d4565b604052919050565b60006001600160401b03831115614433576144336143d4565b614446601f8401601f19166020016143ea565b905082815283838301111561445a57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261448257600080fd5b610f6f8383356020850161441a565b600082601f8301126144a257600080fd5b813560206001600160401b038211156144bd576144bd6143d4565b8160051b6144cc8282016143ea565b92835284810182019282810190878511156144e657600080fd5b83870192505b848310156141b25782356144ff8161426a565b825291830191908301906144ec565b80356001600160801b038116811461428a57600080fd5b600080600080600080600080610100898b03121561454257600080fd5b61454b8961427f565b975060208901356001600160401b038082111561456757600080fd5b6145738c838d01614471565b985060408b013591508082111561458957600080fd5b6145958c838d01614471565b975060608b01359150808211156145ab57600080fd5b6145b78c838d01614471565b965060808b01359150808211156145cd57600080fd5b506145da8b828c01614491565b9450506145e960a08a0161427f565b92506145f760c08a0161427f565b915061460560e08a0161450e565b90509295985092959890939650565b60006020828403121561462657600080fd5b8135610f6f8161426a565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e083015161010080818501525061301061012084018261422b565b60008083601f8401126146b057600080fd5b5081356001600160401b038111156146c757600080fd5b6020830191508360208260051b85010111156146e257600080fd5b9250929050565b801515811461117857600080fd5b60008060006040848603121561470c57600080fd5b83356001600160401b0381111561472257600080fd5b61472e8682870161469e565b9094509250506020840135614742816146e9565b809150509250925092565b60008060008060008060c0878903121561476657600080fd5b86356147718161426a565b95506020870135945060408701356147888161426a565b93506060870135925060808701356001600160401b03808211156147ab57600080fd5b6147b78a838b016142bb565b935060a08901359150808211156147cd57600080fd5b508701601f810189136147df57600080fd5b61433d8982356020840161441a565b6000806040838503121561480157600080fd5b50508035926020909101359150565b60006020828403121561482257600080fd5b81356001600160401b0381111561483857600080fd5b61301084828501614471565b6000806020838503121561485757600080fd5b82356001600160401b0381111561486d57600080fd5b6148798582860161469e565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156148da57603f198886030184526148c885835161422b565b945092850192908501906001016148ac565b5092979650505050505050565b803560ff8116811461428a57600080fd5b60008060008060008060c0878903121561491157600080fd5b863561491c8161426a565b95506020870135945060408701359350614938606088016148e7565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561496d57600080fd5b87356149788161426a565b965060208801356149888161426a565b955060408801359450606088013593506149a4608089016148e7565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156149d357600080fd5b82356149de8161426a565b915060208301356143c98161426a565b60008060408385031215614a0157600080fd5b8235614a0c8161426a565b9150602083013563ffffffff811681146143c957600080fd5b600181811c90821680614a3957607f821691505b602082108103611fff57634e487b7160e01b600052602260045260246000fd5b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000808335601e19843603018112614a9857600080fd5b8301803591506001600160401b03821115614ab257600080fd5b6020019150600581901b36038213156146e257600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b3d57610b3d614aca565b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112614b1f57600080fd5b9190910192915050565b6000808335601e19843603018112614b4057600080fd5b8301803591506001600160401b03821115614b5a57600080fd5b6020019150368190038213156146e257600080fd5b601f821115612ac357600081815260208120601f850160051c81016020861015614b965750805b601f850160051c820191505b81811015612ea457828155600101614ba2565b6001600160401b03831115614bcc57614bcc6143d4565b614be083614bda8354614a25565b83614b6f565b6000601f841160018114614c145760008515614bfc5750838201355b600019600387901b1c1916600186901b178355614c6e565b600083815260209020601f19861690835b82811015614c455786850135825560209485019460019092019101614c25565b5086821015614c625760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c0830135614cbd8161426a565b81546001600160a01b0319166001600160a01b0391909116179055614ce560e0830183614b29565b6125ed818360078601614bb5565b600060018201614d0557614d05614aca565b5060010190565b6000808335601e19843603018112614d2357600080fd5b83016020810192503590506001600160401b03811115614d4257600080fd5b8036038213156146e257600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a811015614e4c57888403605f190185528235368d900360fe19018112614dbf578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c080840135614e068161426a565b6001600160a01b03169088015260e0614e2184820185614d0c565b945083828a0152614e35848a018683614d51565b998301999850505094909401935050600101614d9a565b5050508615156020870152935061301092505050565b81810381811115610b3d57610b3d614aca565b600081614e8457614e84614aca565b506000190190565b8082028115828204841417610b3d57610b3d614aca565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351614ed3816015850160208801614207565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351614f04816026840160208801614207565b01602601949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81516001600160401b03811115614f7457614f746143d4565b614f8881614f828454614a25565b84614b6f565b602080601f831160018114614fbd5760008415614fa55750858301515b600019600386901b1c1916600185901b178555612ea4565b600085815260208120601f198616915b82811015614fec57888601518255948401946001909101908401614fcd565b508582101561500a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061502d604083018561422b565b8281036020840152612f97818561422b565b60008261505c57634e487b7160e01b600052601260045260246000fd5b500490565b60008251614b1f818460208701614207565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561509b57600080fd5b8151610f6f816146e956fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205b0eeffd01e351d606bb6258c6f2cc7177470cb4e14cebb019f5e0011fe8cfba64736f6c63430008130033"; + + public DropERC20DeploymentBase() + : base(BYTECODE) { } + + public DropERC20DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class DOMAIN_SEPARATORFunction : DOMAIN_SEPARATORFunctionBase { } + + [Function("DOMAIN_SEPARATOR", "bytes32")] + public class DOMAIN_SEPARATORFunctionBase : FunctionMessage { } + + public partial class AllowanceFunction : AllowanceFunctionBase { } + + [Function("allowance", "uint256")] + public class AllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2)] + public virtual string Spender { get; set; } + } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve", "bool")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("uint256", "amount", 1)] + public virtual BigInteger Amount { get; set; } + } + + public partial class BurnFromFunction : BurnFromFunctionBase { } + + [Function("burnFrom")] + public class BurnFromFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class CheckpointsFunction : CheckpointsFunctionBase { } + + [Function("checkpoints", typeof(CheckpointsOutputDTO))] + public class CheckpointsFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint32", "pos", 2)] + public virtual uint Pos { get; set; } + } + + public partial class ClaimFunction : ClaimFunctionBase { } + + [Function("claim")] + public class ClaimFunctionBase : FunctionMessage + { + [Parameter("address", "_receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "_quantity", 2)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 3)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 4)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 5)] + public virtual AllowlistProof AllowlistProof { get; set; } + + [Parameter("bytes", "_data", 6)] + public virtual byte[] Data { get; set; } + } + + public partial class ClaimConditionFunction : ClaimConditionFunctionBase { } + + [Function("claimCondition", typeof(ClaimConditionOutputDTO))] + public class ClaimConditionFunctionBase : FunctionMessage { } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class DecimalsFunction : DecimalsFunctionBase { } + + [Function("decimals", "uint8")] + public class DecimalsFunctionBase : FunctionMessage { } + + public partial class DecreaseAllowanceFunction : DecreaseAllowanceFunctionBase { } + + [Function("decreaseAllowance", "bool")] + public class DecreaseAllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "subtractedValue", 2)] + public virtual BigInteger SubtractedValue { get; set; } + } + + public partial class DelegateFunction : DelegateFunctionBase { } + + [Function("delegate")] + public class DelegateFunctionBase : FunctionMessage + { + [Parameter("address", "delegatee", 1)] + public virtual string Delegatee { get; set; } + } + + public partial class DelegateBySigFunction : DelegateBySigFunctionBase { } + + [Function("delegateBySig")] + public class DelegateBySigFunctionBase : FunctionMessage + { + [Parameter("address", "delegatee", 1)] + public virtual string Delegatee { get; set; } + + [Parameter("uint256", "nonce", 2)] + public new virtual BigInteger Nonce { get; set; } + + [Parameter("uint256", "expiry", 3)] + public virtual BigInteger Expiry { get; set; } + + [Parameter("uint8", "v", 4)] + public virtual byte V { get; set; } + + [Parameter("bytes32", "r", 5)] + public virtual byte[] R { get; set; } + + [Parameter("bytes32", "s", 6)] + public virtual byte[] S { get; set; } + } + + public partial class DelegatesFunction : DelegatesFunctionBase { } + + [Function("delegates", "address")] + public class DelegatesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class GetActiveClaimConditionIdFunction : GetActiveClaimConditionIdFunctionBase { } + + [Function("getActiveClaimConditionId", "uint256")] + public class GetActiveClaimConditionIdFunctionBase : FunctionMessage { } + + public partial class GetClaimConditionByIdFunction : GetClaimConditionByIdFunctionBase { } + + [Function("getClaimConditionById", typeof(GetClaimConditionByIdOutputDTO))] + public class GetClaimConditionByIdFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + } + + public partial class GetPastTotalSupplyFunction : GetPastTotalSupplyFunctionBase { } + + [Function("getPastTotalSupply", "uint256")] + public class GetPastTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "blockNumber", 1)] + public virtual BigInteger BlockNumber { get; set; } + } + + public partial class GetPastVotesFunction : GetPastVotesFunctionBase { } + + [Function("getPastVotes", "uint256")] + public class GetPastVotesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "blockNumber", 2)] + public virtual BigInteger BlockNumber { get; set; } + } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetSupplyClaimedByWalletFunction : GetSupplyClaimedByWalletFunctionBase { } + + [Function("getSupplyClaimedByWallet", "uint256")] + public class GetSupplyClaimedByWalletFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 2)] + public virtual string Claimer { get; set; } + } + + public partial class GetVotesFunction : GetVotesFunctionBase { } + + [Function("getVotes", "uint256")] + public class GetVotesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class IncreaseAllowanceFunction : IncreaseAllowanceFunctionBase { } + + [Function("increaseAllowance", "bool")] + public class IncreaseAllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "addedValue", 2)] + public virtual BigInteger AddedValue { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_saleRecipient", 6)] + public virtual string SaleRecipient { get; set; } + + [Parameter("address", "_platformFeeRecipient", 7)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint128", "_platformFeeBps", 8)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class MaxTotalSupplyFunction : MaxTotalSupplyFunctionBase { } + + [Function("maxTotalSupply", "uint256")] + public class MaxTotalSupplyFunctionBase : FunctionMessage { } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NoncesFunction : NoncesFunctionBase { } + + [Function("nonces", "uint256")] + public class NoncesFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class NumCheckpointsFunction : NumCheckpointsFunctionBase { } + + [Function("numCheckpoints", "uint32")] + public class NumCheckpointsFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class PermitFunction : PermitFunctionBase { } + + [Function("permit")] + public class PermitFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "value", 3)] + public virtual BigInteger Value { get; set; } + + [Parameter("uint256", "deadline", 4)] + public virtual BigInteger Deadline { get; set; } + + [Parameter("uint8", "v", 5)] + public virtual byte V { get; set; } + + [Parameter("bytes32", "r", 6)] + public virtual byte[] R { get; set; } + + [Parameter("bytes32", "s", 7)] + public virtual byte[] S { get; set; } + } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class SetClaimConditionsFunction : SetClaimConditionsFunctionBase { } + + [Function("setClaimConditions")] + public class SetClaimConditionsFunctionBase : FunctionMessage + { + [Parameter("tuple[]", "_conditions", 1)] + public virtual List Conditions { get; set; } + + [Parameter("bool", "_resetClaimEligibility", 2)] + public virtual bool ResetClaimEligibility { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetMaxTotalSupplyFunction : SetMaxTotalSupplyFunctionBase { } + + [Function("setMaxTotalSupply")] + public class SetMaxTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "_maxTotalSupply", 1)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFunction : TransferFunctionBase { } + + [Function("transfer", "bool")] + public class TransferFunctionBase : FunctionMessage + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom", "bool")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "amount", 3)] + public virtual BigInteger Amount { get; set; } + } + + public partial class VerifyClaimFunction : VerifyClaimFunctionBase { } + + [Function("verifyClaim", "bool")] + public class VerifyClaimFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 2)] + public virtual string Claimer { get; set; } + + [Parameter("uint256", "_quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 5)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 6)] + public virtual AllowlistProof AllowlistProof { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2, true)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "value", 3, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class ClaimConditionsUpdatedEventDTO : ClaimConditionsUpdatedEventDTOBase { } + + [Event("ClaimConditionsUpdated")] + public class ClaimConditionsUpdatedEventDTOBase : IEventDTO + { + [Parameter("tuple[]", "claimConditions", 1, false)] + public virtual List ClaimConditions { get; set; } + + [Parameter("bool", "resetEligibility", 2, false)] + public virtual bool ResetEligibility { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class DelegateChangedEventDTO : DelegateChangedEventDTOBase { } + + [Event("DelegateChanged")] + public class DelegateChangedEventDTOBase : IEventDTO + { + [Parameter("address", "delegator", 1, true)] + public virtual string Delegator { get; set; } + + [Parameter("address", "fromDelegate", 2, true)] + public virtual string FromDelegate { get; set; } + + [Parameter("address", "toDelegate", 3, true)] + public virtual string ToDelegate { get; set; } + } + + public partial class DelegateVotesChangedEventDTO : DelegateVotesChangedEventDTOBase { } + + [Event("DelegateVotesChanged")] + public class DelegateVotesChangedEventDTOBase : IEventDTO + { + [Parameter("address", "delegate", 1, true)] + public virtual string Delegate { get; set; } + + [Parameter("uint256", "previousBalance", 2, false)] + public virtual BigInteger PreviousBalance { get; set; } + + [Parameter("uint256", "newBalance", 3, false)] + public virtual BigInteger NewBalance { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class MaxTotalSupplyUpdatedEventDTO : MaxTotalSupplyUpdatedEventDTOBase { } + + [Event("MaxTotalSupplyUpdated")] + public class MaxTotalSupplyUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "maxTotalSupply", 1, false)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class TokensClaimedEventDTO : TokensClaimedEventDTOBase { } + + [Event("TokensClaimed")] + public class TokensClaimedEventDTOBase : IEventDTO + { + [Parameter("uint256", "claimConditionIndex", 1, true)] + public virtual BigInteger ClaimConditionIndex { get; set; } + + [Parameter("address", "claimer", 2, true)] + public virtual string Claimer { get; set; } + + [Parameter("address", "receiver", 3, true)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "startTokenId", 4, false)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "quantityClaimed", 5, false)] + public virtual BigInteger QuantityClaimed { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "value", 3, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class DOMAIN_SEPARATOROutputDTO : DOMAIN_SEPARATOROutputDTOBase { } + + [FunctionOutput] + public class DOMAIN_SEPARATOROutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class AllowanceOutputDTO : AllowanceOutputDTOBase { } + + [FunctionOutput] + public class AllowanceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class CheckpointsOutputDTO : CheckpointsOutputDTOBase { } + + [FunctionOutput] + public class CheckpointsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "", 1)] + public virtual Checkpoint ReturnValue1 { get; set; } + } + + public partial class ClaimConditionOutputDTO : ClaimConditionOutputDTOBase { } + + [FunctionOutput] + public class ClaimConditionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "currentStartId", 1)] + public virtual BigInteger CurrentStartId { get; set; } + + [Parameter("uint256", "count", 2)] + public virtual BigInteger Count { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class DecimalsOutputDTO : DecimalsOutputDTOBase { } + + [FunctionOutput] + public class DecimalsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class DelegatesOutputDTO : DelegatesOutputDTOBase { } + + [FunctionOutput] + public class DelegatesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetActiveClaimConditionIdOutputDTO : GetActiveClaimConditionIdOutputDTOBase { } + + [FunctionOutput] + public class GetActiveClaimConditionIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetClaimConditionByIdOutputDTO : GetClaimConditionByIdOutputDTOBase { } + + [FunctionOutput] + public class GetClaimConditionByIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "condition", 1)] + public virtual ClaimCondition Condition { get; set; } + } + + public partial class GetPastTotalSupplyOutputDTO : GetPastTotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class GetPastTotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetPastVotesOutputDTO : GetPastVotesOutputDTOBase { } + + [FunctionOutput] + public class GetPastVotesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class GetSupplyClaimedByWalletOutputDTO : GetSupplyClaimedByWalletOutputDTOBase { } + + [FunctionOutput] + public class GetSupplyClaimedByWalletOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "supplyClaimedByWallet", 1)] + public virtual BigInteger SupplyClaimedByWallet { get; set; } + } + + public partial class GetVotesOutputDTO : GetVotesOutputDTOBase { } + + [FunctionOutput] + public class GetVotesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class MaxTotalSupplyOutputDTO : MaxTotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class MaxTotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NoncesOutputDTO : NoncesOutputDTOBase { } + + [FunctionOutput] + public class NoncesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NumCheckpointsOutputDTO : NumCheckpointsOutputDTOBase { } + + [FunctionOutput] + public class NumCheckpointsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint32", "", 1)] + public virtual uint ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyClaimOutputDTO : VerifyClaimOutputDTOBase { } + + [FunctionOutput] + public class VerifyClaimOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "isOverride", 1)] + public virtual bool IsOverride { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs.meta new file mode 100644 index 00000000..704b476b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/ContractDefinition/DropERC20Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 799d4115216a63140adc44ef4bbe0afe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs new file mode 100644 index 00000000..5f2efd34 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs @@ -0,0 +1,1110 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.DropERC20.ContractDefinition; + +namespace Thirdweb.Contracts.DropERC20 +{ + public partial class DropERC20Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + DropERC20Deployment dropERC20Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(dropERC20Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, DropERC20Deployment dropERC20Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(dropERC20Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + DropERC20Deployment dropERC20Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, dropERC20Deployment, cancellationTokenSource); + return new DropERC20Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public DropERC20Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DOMAIN_SEPARATORQueryAsync(DOMAIN_SEPARATORFunction dOMAIN_SEPARATORFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dOMAIN_SEPARATORFunction, blockParameter); + } + + public Task DOMAIN_SEPARATORQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task AllowanceQueryAsync(AllowanceFunction allowanceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(allowanceFunction, blockParameter); + } + + public Task AllowanceQueryAsync(string owner, string spender, BlockParameter blockParameter = null) + { + var allowanceFunction = new AllowanceFunction(); + allowanceFunction.Owner = owner; + allowanceFunction.Spender = spender; + + return ContractHandler.QueryAsync(allowanceFunction, blockParameter); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string spender, BigInteger amount) + { + var approveFunction = new ApproveFunction(); + approveFunction.Spender = spender; + approveFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string spender, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.Spender = spender; + approveFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(BigInteger amount) + { + var burnFunction = new BurnFunction(); + burnFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnFromRequestAsync(BurnFromFunction burnFromFunction) + { + return ContractHandler.SendRequestAsync(burnFromFunction); + } + + public Task BurnFromRequestAndWaitForReceiptAsync(BurnFromFunction burnFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFromFunction, cancellationToken); + } + + public Task BurnFromRequestAsync(string account, BigInteger amount) + { + var burnFromFunction = new BurnFromFunction(); + burnFromFunction.Account = account; + burnFromFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(burnFromFunction); + } + + public Task BurnFromRequestAndWaitForReceiptAsync(string account, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var burnFromFunction = new BurnFromFunction(); + burnFromFunction.Account = account; + burnFromFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFromFunction, cancellationToken); + } + + public Task CheckpointsQueryAsync(CheckpointsFunction checkpointsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(checkpointsFunction, blockParameter); + } + + public Task CheckpointsQueryAsync(string account, uint pos, BlockParameter blockParameter = null) + { + var checkpointsFunction = new CheckpointsFunction(); + checkpointsFunction.Account = account; + checkpointsFunction.Pos = pos; + + return ContractHandler.QueryDeserializingToObjectAsync(checkpointsFunction, blockParameter); + } + + public Task ClaimRequestAsync(ClaimFunction claimFunction) + { + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync(ClaimFunction claimFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimRequestAsync(string receiver, BigInteger quantity, string currency, BigInteger pricePerToken, AllowlistProof allowlistProof, byte[] data) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync( + string receiver, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimConditionQueryAsync(ClaimConditionFunction claimConditionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(claimConditionFunction, blockParameter); + } + + public Task ClaimConditionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DecimalsQueryAsync(DecimalsFunction decimalsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(decimalsFunction, blockParameter); + } + + public Task DecimalsQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DecreaseAllowanceRequestAsync(DecreaseAllowanceFunction decreaseAllowanceFunction) + { + return ContractHandler.SendRequestAsync(decreaseAllowanceFunction); + } + + public Task DecreaseAllowanceRequestAndWaitForReceiptAsync(DecreaseAllowanceFunction decreaseAllowanceFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(decreaseAllowanceFunction, cancellationToken); + } + + public Task DecreaseAllowanceRequestAsync(string spender, BigInteger subtractedValue) + { + var decreaseAllowanceFunction = new DecreaseAllowanceFunction(); + decreaseAllowanceFunction.Spender = spender; + decreaseAllowanceFunction.SubtractedValue = subtractedValue; + + return ContractHandler.SendRequestAsync(decreaseAllowanceFunction); + } + + public Task DecreaseAllowanceRequestAndWaitForReceiptAsync(string spender, BigInteger subtractedValue, CancellationTokenSource cancellationToken = null) + { + var decreaseAllowanceFunction = new DecreaseAllowanceFunction(); + decreaseAllowanceFunction.Spender = spender; + decreaseAllowanceFunction.SubtractedValue = subtractedValue; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(decreaseAllowanceFunction, cancellationToken); + } + + public Task DelegateRequestAsync(DelegateFunction @delegateFunction) + { + return ContractHandler.SendRequestAsync(@delegateFunction); + } + + public Task DelegateRequestAndWaitForReceiptAsync(DelegateFunction @delegateFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(@delegateFunction, cancellationToken); + } + + public Task DelegateRequestAsync(string delegatee) + { + var @delegateFunction = new DelegateFunction(); + @delegateFunction.Delegatee = delegatee; + + return ContractHandler.SendRequestAsync(@delegateFunction); + } + + public Task DelegateRequestAndWaitForReceiptAsync(string delegatee, CancellationTokenSource cancellationToken = null) + { + var @delegateFunction = new DelegateFunction(); + @delegateFunction.Delegatee = delegatee; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(@delegateFunction, cancellationToken); + } + + public Task DelegateBySigRequestAsync(DelegateBySigFunction delegateBySigFunction) + { + return ContractHandler.SendRequestAsync(delegateBySigFunction); + } + + public Task DelegateBySigRequestAndWaitForReceiptAsync(DelegateBySigFunction delegateBySigFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(delegateBySigFunction, cancellationToken); + } + + public Task DelegateBySigRequestAsync(string delegatee, BigInteger nonce, BigInteger expiry, byte v, byte[] r, byte[] s) + { + var delegateBySigFunction = new DelegateBySigFunction(); + delegateBySigFunction.Delegatee = delegatee; + delegateBySigFunction.Nonce = nonce; + delegateBySigFunction.Expiry = expiry; + delegateBySigFunction.V = v; + delegateBySigFunction.R = r; + delegateBySigFunction.S = s; + + return ContractHandler.SendRequestAsync(delegateBySigFunction); + } + + public Task DelegateBySigRequestAndWaitForReceiptAsync( + string delegatee, + BigInteger nonce, + BigInteger expiry, + byte v, + byte[] r, + byte[] s, + CancellationTokenSource cancellationToken = null + ) + { + var delegateBySigFunction = new DelegateBySigFunction(); + delegateBySigFunction.Delegatee = delegatee; + delegateBySigFunction.Nonce = nonce; + delegateBySigFunction.Expiry = expiry; + delegateBySigFunction.V = v; + delegateBySigFunction.R = r; + delegateBySigFunction.S = s; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(delegateBySigFunction, cancellationToken); + } + + public Task DelegatesQueryAsync(DelegatesFunction delegatesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(delegatesFunction, blockParameter); + } + + public Task DelegatesQueryAsync(string account, BlockParameter blockParameter = null) + { + var delegatesFunction = new DelegatesFunction(); + delegatesFunction.Account = account; + + return ContractHandler.QueryAsync(delegatesFunction, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(GetActiveClaimConditionIdFunction getActiveClaimConditionIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getActiveClaimConditionIdFunction, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(GetClaimConditionByIdFunction getClaimConditionByIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(BigInteger conditionId, BlockParameter blockParameter = null) + { + var getClaimConditionByIdFunction = new GetClaimConditionByIdFunction(); + getClaimConditionByIdFunction.ConditionId = conditionId; + + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetPastTotalSupplyQueryAsync(GetPastTotalSupplyFunction getPastTotalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPastTotalSupplyFunction, blockParameter); + } + + public Task GetPastTotalSupplyQueryAsync(BigInteger blockNumber, BlockParameter blockParameter = null) + { + var getPastTotalSupplyFunction = new GetPastTotalSupplyFunction(); + getPastTotalSupplyFunction.BlockNumber = blockNumber; + + return ContractHandler.QueryAsync(getPastTotalSupplyFunction, blockParameter); + } + + public Task GetPastVotesQueryAsync(GetPastVotesFunction getPastVotesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPastVotesFunction, blockParameter); + } + + public Task GetPastVotesQueryAsync(string account, BigInteger blockNumber, BlockParameter blockParameter = null) + { + var getPastVotesFunction = new GetPastVotesFunction(); + getPastVotesFunction.Account = account; + getPastVotesFunction.BlockNumber = blockNumber; + + return ContractHandler.QueryAsync(getPastVotesFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(GetSupplyClaimedByWalletFunction getSupplyClaimedByWalletFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(BigInteger conditionId, string claimer, BlockParameter blockParameter = null) + { + var getSupplyClaimedByWalletFunction = new GetSupplyClaimedByWalletFunction(); + getSupplyClaimedByWalletFunction.ConditionId = conditionId; + getSupplyClaimedByWalletFunction.Claimer = claimer; + + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GetVotesQueryAsync(GetVotesFunction getVotesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getVotesFunction, blockParameter); + } + + public Task GetVotesQueryAsync(string account, BlockParameter blockParameter = null) + { + var getVotesFunction = new GetVotesFunction(); + getVotesFunction.Account = account; + + return ContractHandler.QueryAsync(getVotesFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task IncreaseAllowanceRequestAsync(IncreaseAllowanceFunction increaseAllowanceFunction) + { + return ContractHandler.SendRequestAsync(increaseAllowanceFunction); + } + + public Task IncreaseAllowanceRequestAndWaitForReceiptAsync(IncreaseAllowanceFunction increaseAllowanceFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(increaseAllowanceFunction, cancellationToken); + } + + public Task IncreaseAllowanceRequestAsync(string spender, BigInteger addedValue) + { + var increaseAllowanceFunction = new IncreaseAllowanceFunction(); + increaseAllowanceFunction.Spender = spender; + increaseAllowanceFunction.AddedValue = addedValue; + + return ContractHandler.SendRequestAsync(increaseAllowanceFunction); + } + + public Task IncreaseAllowanceRequestAndWaitForReceiptAsync(string spender, BigInteger addedValue, CancellationTokenSource cancellationToken = null) + { + var increaseAllowanceFunction = new IncreaseAllowanceFunction(); + increaseAllowanceFunction.Spender = spender; + increaseAllowanceFunction.AddedValue = addedValue; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(increaseAllowanceFunction, cancellationToken); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string platformFeeRecipient, + BigInteger platformFeeBps + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + initializeFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string platformFeeRecipient, + BigInteger platformFeeBps, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + initializeFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task MaxTotalSupplyQueryAsync(MaxTotalSupplyFunction maxTotalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(maxTotalSupplyFunction, blockParameter); + } + + public Task MaxTotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NoncesQueryAsync(NoncesFunction noncesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(noncesFunction, blockParameter); + } + + public Task NoncesQueryAsync(string owner, BlockParameter blockParameter = null) + { + var noncesFunction = new NoncesFunction(); + noncesFunction.Owner = owner; + + return ContractHandler.QueryAsync(noncesFunction, blockParameter); + } + + public Task NumCheckpointsQueryAsync(NumCheckpointsFunction numCheckpointsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(numCheckpointsFunction, blockParameter); + } + + public Task NumCheckpointsQueryAsync(string account, BlockParameter blockParameter = null) + { + var numCheckpointsFunction = new NumCheckpointsFunction(); + numCheckpointsFunction.Account = account; + + return ContractHandler.QueryAsync(numCheckpointsFunction, blockParameter); + } + + public Task PermitRequestAsync(PermitFunction permitFunction) + { + return ContractHandler.SendRequestAsync(permitFunction); + } + + public Task PermitRequestAndWaitForReceiptAsync(PermitFunction permitFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(permitFunction, cancellationToken); + } + + public Task PermitRequestAsync(string owner, string spender, BigInteger value, BigInteger deadline, byte v, byte[] r, byte[] s) + { + var permitFunction = new PermitFunction(); + permitFunction.Owner = owner; + permitFunction.Spender = spender; + permitFunction.Value = value; + permitFunction.Deadline = deadline; + permitFunction.V = v; + permitFunction.R = r; + permitFunction.S = s; + + return ContractHandler.SendRequestAsync(permitFunction); + } + + public Task PermitRequestAndWaitForReceiptAsync( + string owner, + string spender, + BigInteger value, + BigInteger deadline, + byte v, + byte[] r, + byte[] s, + CancellationTokenSource cancellationToken = null + ) + { + var permitFunction = new PermitFunction(); + permitFunction.Owner = owner; + permitFunction.Spender = spender; + permitFunction.Value = value; + permitFunction.Deadline = deadline; + permitFunction.V = v; + permitFunction.R = r; + permitFunction.S = s; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(permitFunction, cancellationToken); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(SetClaimConditionsFunction setClaimConditionsFunction) + { + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(SetClaimConditionsFunction setClaimConditionsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(List conditions, bool resetClaimEligibility) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(List conditions, bool resetClaimEligibility, CancellationTokenSource cancellationToken = null) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction) + { + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(BigInteger maxTotalSupply) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(BigInteger maxTotalSupply, CancellationTokenSource cancellationToken = null) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferRequestAsync(TransferFunction transferFunction) + { + return ContractHandler.SendRequestAsync(transferFunction); + } + + public Task TransferRequestAndWaitForReceiptAsync(TransferFunction transferFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFunction, cancellationToken); + } + + public Task TransferRequestAsync(string to, BigInteger amount) + { + var transferFunction = new TransferFunction(); + transferFunction.To = to; + transferFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(transferFunction); + } + + public Task TransferRequestAndWaitForReceiptAsync(string to, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var transferFunction = new TransferFunction(); + transferFunction.To = to; + transferFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger amount) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task VerifyClaimQueryAsync(VerifyClaimFunction verifyClaimFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync( + BigInteger conditionId, + string claimer, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + BlockParameter blockParameter = null + ) + { + var verifyClaimFunction = new VerifyClaimFunction(); + verifyClaimFunction.ConditionId = conditionId; + verifyClaimFunction.Claimer = claimer; + verifyClaimFunction.Quantity = quantity; + verifyClaimFunction.Currency = currency; + verifyClaimFunction.PricePerToken = pricePerToken; + verifyClaimFunction.AllowlistProof = allowlistProof; + + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs.meta new file mode 100644 index 00000000..cc5f2444 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC20/DropERC20Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ed2a16f00f72fe46bd9fad62ece1d36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721.meta new file mode 100644 index 00000000..2c593cf3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19720bfdeb269f14d9f7b340fe93e1cd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition.meta new file mode 100644 index 00000000..9a2156b8 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 284898f22b931104b9fe1533fb2ca30e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs new file mode 100644 index 00000000..32d4b09a --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC721.ContractDefinition +{ + public partial class AllowlistProof : AllowlistProofBase { } + + public class AllowlistProofBase + { + [Parameter("bytes32[]", "proof", 1)] + public virtual List Proof { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 2)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("uint256", "pricePerToken", 3)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs.meta new file mode 100644 index 00000000..d1adfcdd --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/AllowlistProof.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5eeb68a632942664b8db8bd8467090a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs new file mode 100644 index 00000000..9fd0de74 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.DropERC721.ContractDefinition +{ + public partial class ClaimCondition : ClaimConditionBase { } + + public class ClaimConditionBase + { + [Parameter("uint256", "startTimestamp", 1)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint256", "maxClaimableSupply", 2)] + public virtual BigInteger MaxClaimableSupply { get; set; } + + [Parameter("uint256", "supplyClaimed", 3)] + public virtual BigInteger SupplyClaimed { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 4)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("bytes32", "merkleRoot", 5)] + public virtual byte[] MerkleRoot { get; set; } + + [Parameter("uint256", "pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("string", "metadata", 8)] + public virtual string Metadata { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs.meta new file mode 100644 index 00000000..0b19dbbb --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/ClaimCondition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88951e1a088504b40a08c6e48728c577 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs new file mode 100644 index 00000000..4b36b647 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs @@ -0,0 +1,1321 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.DropERC721.ContractDefinition +{ + public partial class DropERC721Deployment : DropERC721DeploymentBase + { + public DropERC721Deployment() + : base(BYTECODE) { } + + public DropERC721Deployment(string byteCode) + : base(byteCode) { } + } + + public class DropERC721DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50615e4b80620001336000396000f3fe6080604052600436106103c35760003560e01c806384bb1e42116101f2578063ad1eefc51161010d578063d37c353b116100a0578063e15916341161006f578063e159163414610bbb578063e715032214610bdb578063e8a3d48514610bfb578063e985e9c514610c1057600080fd5b8063d37c353b14610b20578063d45573f614610b40578063d547741f14610b6b578063d637ed5914610b8b57600080fd5b8063c87b56dd116100dc578063c87b56dd14610aa0578063ca15c87314610ac0578063cb2ef6f714610ae0578063ce80564214610b0057600080fd5b8063ad1eefc5146109fe578063b24f2d3914610a40578063b88d4fde14610a6b578063c68907de14610a8b57600080fd5b8063a05112fc11610185578063a2309ff811610154578063a2309ff81461099c578063a32fa5b3146109b1578063ac9650d8146109d1578063acd083f81461099c57600080fd5b8063a05112fc1461092b578063a0a8e4601461094b578063a217fddf14610967578063a22cb4651461097c57600080fd5b8063938e3d7b116101c1578063938e3d7b146108b657806395d89b41146108d65780639bcf7a15146108eb5780639fc4d68f1461090b57600080fd5b806384bb1e42146108455780638da5cb5b146108585780639010d07c1461087657806391d148541461089657600080fd5b806336568abe116102e2578063572b6c05116102755780636f4f2837116102445780636f4f2837146107b85780636f8934f4146107d857806370a082311461080557806374bc7db71461082557600080fd5b8063572b6c051461072a578063600dd5ea146107635780636352211e1461078357806363b45e2d146107a357600080fd5b806342966c68116102b157806342966c681461068e578063492e224b146106ae5780634cc157df146106ce578063504c6e011461071057600080fd5b806336568abe146106195780633b1475a7146106395780633f3e4c111461064e57806342842e0e1461066e57600080fd5b806323a2902b1161035a5780632a55205a116103295780632a55205a146105835780632ab4d052146105c25780632f2ff15d146105d957806332f0cd64146105f957600080fd5b806323a2902b146104f657806323b872dd146105165780632419f51b14610536578063248a9ca31461055657600080fd5b8063095ea7b311610396578063095ea7b31461047157806313af40351461049357806318160ddd146104b35780631e7ac488146104d657600080fd5b806301ffc9a7146103c857806306fdde03146103fd578063079fe40e1461041f578063081812fc14610451575b600080fd5b3480156103d457600080fd5b506103e86103e3366004614bc6565b610c59565b60405190151581526020015b60405180910390f35b34801561040957600080fd5b50610412610c85565b6040516103f49190614c33565b34801561042b57600080fd5b506005546001600160a01b03165b6040516001600160a01b0390911681526020016103f4565b34801561045d57600080fd5b5061043961046c366004614c46565b610d17565b34801561047d57600080fd5b5061049161048c366004614c84565b610d5b565b005b34801561049f57600080fd5b506104916104ae366004614cb0565b610e35565b3480156104bf57600080fd5b5060dc5460db54035b6040519081526020016103f4565b3480156104e257600080fd5b506104916104f1366004614c84565b610e65565b34801561050257600080fd5b506103e8610511366004614cdf565b610e97565b34801561052257600080fd5b50610491610531366004614d5c565b61125f565b34801561054257600080fd5b506104c8610551366004614c46565b611344565b34801561056257600080fd5b506104c8610571366004614c46565b6000908152600c602052604090205490565b34801561058f57600080fd5b506105a361059e366004614d9d565b6113b2565b604080516001600160a01b0390931683526020830191909152016103f4565b3480156105ce57600080fd5b506104c861010f5481565b3480156105e557600080fd5b506104916105f4366004614dbf565b6113ef565b34801561060557600080fd5b50610491610614366004614dfd565b611485565b34801561062557600080fd5b50610491610634366004614dbf565b6114f6565b34801561064557600080fd5b50600a546104c8565b34801561065a57600080fd5b50610491610669366004614c46565b611558565b34801561067a57600080fd5b50610491610689366004614d5c565b6115a2565b34801561069a57600080fd5b506104916106a9366004614c46565b61167c565b3480156106ba57600080fd5b506103e86106c9366004614c46565b611687565b3480156106da57600080fd5b506106ee6106e9366004614c46565b6116ad565b604080516001600160a01b03909316835261ffff9091166020830152016103f4565b34801561071c57600080fd5b5060a8546103e89060ff1681565b34801561073657600080fd5b506103e8610745366004614cb0565b6001600160a01b031660009081526044602052604090205460ff1690565b34801561076f57600080fd5b5061049161077e366004614c84565b611718565b34801561078f57600080fd5b5061043961079e366004614c46565b611746565b3480156107af57600080fd5b506008546104c8565b3480156107c457600080fd5b506104916107d3366004614cb0565b611758565b3480156107e457600080fd5b506107f86107f3366004614c46565b611785565b6040516103f49190614e1a565b34801561081157600080fd5b506104c8610820366004614cb0565b6118e2565b34801561083157600080fd5b50610491610840366004614ed2565b611930565b610491610853366004614feb565b611c74565b34801561086457600080fd5b506006546001600160a01b0316610439565b34801561088257600080fd5b50610439610891366004614d9d565b611d9a565b3480156108a257600080fd5b506103e86108b1366004614dbf565b611e88565b3480156108c257600080fd5b506104916108d1366004615078565b611eb3565b3480156108e257600080fd5b50610412611ee0565b3480156108f757600080fd5b506104916109063660046150ac565b611eef565b34801561091757600080fd5b50610412610926366004615114565b611f1e565b34801561093757600080fd5b50610412610946366004614c46565b61209e565b34801561095757600080fd5b50604051600481526020016103f4565b34801561097357600080fd5b506104c8600081565b34801561098857600080fd5b5061049161099736600461515f565b612138565b3480156109a857600080fd5b5060db546104c8565b3480156109bd57600080fd5b506103e86109cc366004614dbf565b612208565b3480156109dd57600080fd5b506109f16109ec36600461518d565b61225e565b6040516103f491906151ce565b348015610a0a57600080fd5b506104c8610a19366004614dbf565b60009182526011602090815260408084206001600160a01b03909316845291905290205490565b348015610a4c57600080fd5b506003546001600160a01b03811690600160a01b900461ffff166106ee565b348015610a7757600080fd5b50610491610a86366004615230565b612352565b348015610a9757600080fd5b506104c861243a565b348015610aac57600080fd5b50610412610abb366004614c46565b6124dd565b348015610acc57600080fd5b506104c8610adb366004614c46565b61254c565b348015610aec57600080fd5b506944726f7045524337323160b01b6104c8565b348015610b0c57600080fd5b50610412610b1b366004615114565b6125d5565b348015610b2c57600080fd5b506104c8610b3b36600461529b565b612663565b348015610b4c57600080fd5b506002546001600160a01b03811690600160a01b900461ffff166106ee565b348015610b7757600080fd5b50610491610b86366004614dbf565b6126fb565b348015610b9757600080fd5b50600e54600f54610ba6919082565b604080519283526020830191909152016103f4565b348015610bc757600080fd5b50610491610bd63660046153a8565b612714565b348015610be757600080fd5b50610412610bf63660046154ba565b612904565b348015610c0757600080fd5b50610412612979565b348015610c1c57600080fd5b506103e8610c2b366004615515565b6001600160a01b03918216600090815260e26020908152604080832093909416825291909152205460ff1690565b6000610c6482612986565b80610c7f575063152a902d60e11b6001600160e01b03198316145b92915050565b606060dd8054610c9490615543565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090615543565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b6000610d22826129d6565b610d3f576040516333d1c03960e21b815260040160405180910390fd5b50600090815260e160205260409020546001600160a01b031690565b60a854829060ff1615610e26576daaeb6d7670e522a718067333cd4e3b15610e2657604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df99190615577565b610e2657604051633b79c77360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b610e308383612a02565b505050565b610e3d612a95565b610e595760405162461bcd60e51b8152600401610e1d90615594565b610e6281612aa8565b50565b610e6d612a95565b610e895760405162461bcd60e51b8152600401610e1d90615594565b610e938282612afa565b5050565b6000868152601060209081526040808320815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e0840191610f1690615543565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4290615543565b8015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b50505091909252505050606081015160a082015160c0830151608084015193945091929091901561107457611070610fc787806155bc565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508d9060208b01359060408c01359061101c908d0160608e01614cb0565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b16607482015260880160405160208183030381529060405280519060200120612b88565b5094505b84156110fb57856020013560000361108c5782611092565b85602001355b92506000198660400135036110a757816110ad565b85604001355b91506000198660400135141580156110de575060006110d26080880160608901614cb0565b6001600160a01b031614155b6110e857806110f8565b6110f86080870160608801614cb0565b90505b60008b81526011602090815260408083206001600160a01b03808f168552925290912054908981169083161415806111335750828814155b156111735760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610e1d565b891580611188575083611186828c61561b565b115b156111be5760405162461bcd60e51b8152600401610e1d906020808252600490820152632151747960e01b604082015260600190565b84602001518a86604001516111d3919061561b565b111561120e5760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610e1d565b84514210156112505760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610e1d565b50505050509695505050505050565b60a854839060ff1615611333576daaeb6d7670e522a718067333cd4e3b1561133357336001600160a01b038216036112a15761129c848484612c56565b61133e565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190615577565b61133357604051633b79c77360e21b8152336004820152602401610e1d565b61133e848484612c56565b50505050565b600061134f60085490565b821061138d5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610e1d565b600882815481106113a0576113a061562e565b90600052602060002001549050919050565b6000806000806113c1866116ad565b90945084925061ffff1690506127106113da8287615644565b6113e49190615671565b925050509250929050565b6000828152600c60205260409020546114089033612c61565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff161561147b5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610e1d565b610e938282612ce1565b61148d612a95565b6114ed5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420617574686f72697a656420746f20736574206f70657261746f72207260448201526a32b9ba3934b1ba34b7b71760a91b6064820152608401610e1d565b610e6281612cf5565b336001600160a01b0382161461154e5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610e1d565b610e938282612d3c565b60006115648133612c61565b61010f8290556040518281527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af906020015b60405180910390a15050565b60a854839060ff1615611671576daaeb6d7670e522a718067333cd4e3b1561167157336001600160a01b038216036115df5761129c848484612d93565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa15801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190615577565b61167157604051633b79c77360e21b8152336004820152602401610e1d565b61133e848484612d93565b610e62816001612dae565b600081815260076020526040812080548291906116a390615543565b9050119050919050565b6000818152600460209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156116f4578051602082015161170e565b6003546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b611720612a95565b61173c5760405162461bcd60e51b8152600401610e1d90615594565b610e938282612f92565b60006117518261300f565b5192915050565b611760612a95565b61177c5760405162461bcd60e51b8152600401610e1d90615594565b610e6281613129565b6117d960405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b600082815260106020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e08401919061185990615543565b80601f016020809104026020016040519081016040528092919081815260200182805461188590615543565b80156118d25780601f106118a7576101008083540402835291602001916118d2565b820191906000526020600020905b8154815290600101906020018083116118b557829003601f168201915b5050505050815250509050919050565b60006001600160a01b03821661190b576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b0316600090815260e060205260409020546001600160401b031690565b611938612a95565b6119545760405162461bcd60e51b8152600401610e1d90615594565b600e54600f5481831561196e5761196b828461561b565b90505b600f859055600e8190556000805b86811015611b21578015806119b4575087878281811061199e5761199e61562e565b90506020028101906119b09190615685565b3582105b6119e55760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610e1d565b60006010816119f4848761561b565b8152602001908152602001600020600201549050888883818110611a1a57611a1a61562e565b9050602002810190611a2c9190615685565b60200135811115611a745760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610e1d565b888883818110611a8657611a8661562e565b9050602002810190611a989190615685565b60106000611aa6858861561b565b81526020019081526020016000208181611ac091906157f0565b5081905060106000611ad2858861561b565b8152602081019190915260400160002060020155888883818110611af857611af861562e565b9050602002810190611b0a9190615685565b359250819050611b198161586e565b91505061197c565b508415611ba157835b82811015611b9b57600081815260106020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611b866007830182614b62565b50508080611b939061586e565b915050611b2a565b50611c30565b85831115611c3057855b83811015611c2e5760106000611bc1838661561b565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611c196007830182614b62565b50508080611c269061586e565b915050611bab565b505b7fbf4016fceeaaa4ac5cf4be865b559ff85825ab4ca7aa7b661d16e2f544c03098878787604051611c63939291906158f5565b60405180910390a150505050505050565b611c82868686868686613173565b6000611c8c61243a565b9050611ca381611c9a613230565b88888888610e97565b5060008181526010602052604081206002018054889290611cc590849061561b565b909155505060008181526011602052604081208791611ce2613230565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611d11919061561b565b90915550611d249050600087878761323a565b6000611d30888861333e565b9050876001600160a01b0316611d44613230565b6001600160a01b0316837ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e848b604051611d88929190918252602082015260400190565b60405180910390a45050505050505050565b6000828152600d602052604081205481805b82811015611e7f576000868152600d602090815260408083208484526001019091529020546001600160a01b031615611e2857848203611e16576000868152600d602090815260408083209383526001909301905220546001600160a01b03169250610c7f915050565b611e2160018361561b565b9150611e6d565b611e33866000611e88565b8015611e5a57506000868152600d6020908152604080832083805260020190915290205481145b15611e6d57611e6a60018361561b565b91505b611e7860018261561b565b9050611dac565b50505092915050565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611ebb612a95565b611ed75760405162461bcd60e51b8152600401610e1d90615594565b610e628161334b565b606060de8054610c9490615543565b611ef7612a95565b611f135760405162461bcd60e51b8152600401610e1d90615594565b610e3083838361341b565b600083815260076020526040812080546060929190611f3c90615543565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6890615543565b8015611fb55780601f10611f8a57610100808354040283529160200191611fb5565b820191906000526020600020905b815481529060010190602001808311611f9857829003601f168201915b5050505050905080516000036120015760405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81d1bc81c995d99585b607a1b6044820152606401610e1d565b6000808280602001905181019061201891906159dd565b91509150612027828787612904565b935080848787466040516020016120419493929190615a5d565b60405160208183030381529060405280519060200120146120945760405162461bcd60e51b815260206004820152600d60248201526c496e636f7272656374206b657960981b6044820152606401610e1d565b5050509392505050565b600760205260009081526040902080546120b790615543565b80601f01602080910402602001604051908101604052809291908181526020018280546120e390615543565b80156121305780601f1061210557610100808354040283529160200191612130565b820191906000526020600020905b81548152906001019060200180831161211357829003601f168201915b505050505081565b60a854829060ff16156121fe576daaeb6d7670e522a718067333cd4e3b156121fe57604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156121b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d69190615577565b6121fe57604051633b79c77360e21b81526001600160a01b0382166004820152602401610e1d565b610e3083836134c2565b6000828152600b6020908152604080832083805290915281205460ff1661225557506000828152600b602090815260408083206001600160a01b038516845290915290205460ff16610c7f565b50600192915050565b6060816001600160401b0381111561227857612278614f28565b6040519080825280602002602001820160405280156122ab57816020015b60608152602001906001900390816122965790505b50905060005b8281101561234b5761231b308585848181106122cf576122cf61562e565b90506020028101906122e191906156a5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061359492505050565b82828151811061232d5761232d61562e565b602002602001018190525080806123439061586e565b9150506122b1565b5092915050565b60a854849060ff1615612427576daaeb6d7670e522a718067333cd4e3b1561242757336001600160a01b038216036123955761239085858585613688565b612433565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190615577565b61242757604051633b79c77360e21b8152336004820152602401610e1d565b61243385858585613688565b5050505050565b600f54600e54600091829161244f919061561b565b90505b600e548111156124a6576010600061246b600184615a86565b81526020019081526020016000206000015442106124945761248e600182615a86565b91505090565b8061249e81615a99565b915050612452565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610e1d565b606060006124ea836136cc565b50905060006124f8846137d1565b905061250382611687565b1561253157806040516020016125199190615ab0565b60405160208183030381529060405292505050919050565b8061253b85613932565b604051602001612519929190615ad5565b6000818152600d6020526040812054815b818110156125b0576000848152600d602090815260408083208484526001019091529020546001600160a01b03161561259e5761259b60018461561b565b92505b6125a960018261561b565b905061255d565b506125bc836000611e88565b156125cf576125cc60018361561b565b91505b50919050565b606061010e546125e58133612c61565b60006125f086611344565b90506125fd818686611f1e565b92506126188160405180602001604052806000815250613a3a565b6126228184613a52565b857f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d846040516126529190614c33565b60405180910390a250509392505050565b600081156126e45760008061267a84860186615b04565b91509150815160001415801561268f57508015155b156126e1576126e188600a546126a5919061561b565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3a92505050565b50505b6126f18686868686613a6a565b9695505050505050565b6000828152600c602052604090205461154e9033612c61565b600054610100900460ff16158080156127345750600054600160ff909116105b8061274e5750303b15801561274e575060005460ff166001145b6127b15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e1d565b6000805460ff1916600117905580156127d4576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661281f89613b77565b6128298c8c613baf565b612831613be0565b61283a8a61334b565b6128438d612aa8565b61284d6001612cf5565b61285860008e612ce1565b612862818e612ce1565b61286c828e612ce1565b612877826000612ce1565b61288a84866001600160801b0316612afa565b61289d87876001600160801b0316612f92565b6128a688613129565b61010d9190915561010e5580156128f7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b8251604080518083016020019091528181529060005b8181101561297057600085858360405160200161293993929190615b48565b60408051601f1981840301815291905280516020918201208884018201511885840182015261296991508261561b565b905061291a565b50509392505050565b600180546120b790615543565b60006001600160e01b031982166380ac58cd60e01b14806129b757506001600160e01b03198216635b5e139f60e01b145b80610c7f57506301ffc9a760e01b6001600160e01b0319831614610c7f565b600060db5482108015610c7f575050600090815260df6020526040902054600160e01b900460ff161590565b6000612a0d82611746565b9050806001600160a01b0316836001600160a01b031603612a415760405163250fdee360e21b815260040160405180910390fd5b806001600160a01b0316612a53613c01565b6001600160a01b031614612a8a57612a6d81610c2b613c01565b612a8a576040516367d9dca160e11b815260040160405180910390fd5b610e30838383613c0b565b6000612aa3816108b1613c01565b905090565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b612710811115612b1c5760405162461bcd60e51b8152600401610e1d90615b5a565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b6000808281805b8751811015612c4a57612ba3600283615644565b91506000888281518110612bb957612bb961562e565b60200260200101519050808411612bfb576040805160208101869052908101829052606001604051602081830303815290604052805190602001209350612c37565b6040805160208101839052908101859052606001604051602081830303815290604052805190602001209350600183612c34919061561b565b92505b5080612c428161586e565b915050612b8f565b50941495939450505050565b610e30838383613c67565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff16610e9357612c9f816001600160a01b03166014613e6f565b612caa836020613e6f565b604051602001612cbb929190615b83565b60408051601f198184030181529082905262461bcd60e51b8252610e1d91600401614c33565b612ceb8282614011565b610e93828261406c565b60a8805460ff19168215159081179091556040519081527f38475885990d8dfe9ca01f0ef160a1b5514426eab9ddbc953a3353410ba780969060200160405180910390a150565b612d4682826140d9565b6000828152600d602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b610e3083838360405180602001604052806000815250612352565b6000612db98361300f565b80519091508215612e41576000816001600160a01b0316612dd8613c01565b6001600160a01b03161480612df45750612df482610c2b613c01565b80612e1f5750612e02613c01565b6001600160a01b0316612e1486610d17565b6001600160a01b0316145b905080612e3f57604051632ce44b5f60e11b815260040160405180910390fd5b505b612e4f81600086600161413b565b612e5b60008583613c0b565b6001600160a01b03808216600081815260e0602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b865260df909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b178555918901808452922080549194909116612f595760db548214612f5957805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020615df6833981519152908390a4505060dc805460010190555050565b612710811115612fb45760405162461bcd60e51b8152600401610e1d90615b5a565b600380546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001612b7c565b60408051606081018252600080825260208201819052918101919091528160db5481101561311057600081815260df6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529061310e5780516001600160a01b0316156130a5579392505050565b5060001901600081815260df6020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215613109579392505050565b6130a5565b505b604051636f96cda160e11b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b600a548560db54613184919061561b565b11156131bc5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606401610e1d565b61010f5415806131dc575061010f548560db546131d9919061561b565b11155b6132285760405162461bcd60e51b815260206004820152601860248201527f657863656564206d617820746f74616c20737570706c792e00000000000000006044820152606401610e1d565b505050505050565b6000612aa3613c01565b801561133e576002546001600160a01b0380821691600160a01b900461ffff169060009087161561326b5786613278565b6005546001600160a01b03165b905060006132868588615644565b9050600061271061329b61ffff861684615644565b6132a59190615671565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03881601613304578134146133045760405162461bcd60e51b815260206004820152600660248201526521507269636560d01b6044820152606401610e1d565b61331787613310613c01565b87846141d9565b61333387613323613c01565b8561332e8587615a86565b6141d9565b505050505050505050565b60db54610c7f838361421a565b60006001805461335a90615543565b80601f016020809104026020016040519081016040528092919081815260200182805461338690615543565b80156133d35780601f106133a8576101008083540402835291602001916133d3565b820191906000526020600020905b8154815290600101906020018083116133b657829003601f168201915b5050505050905081600190816133e99190615bf0565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051611596929190615caf565b61271081111561343d5760405162461bcd60e51b8152600401610e1d90615b5a565b6040805180820182526001600160a01b038481168083526020808401868152600089815260048352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b6134ca613c01565b6001600160a01b0316826001600160a01b0316036134fb5760405163b06307db60e01b815260040160405180910390fd5b8060e26000613508613c01565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561354c613c01565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051613588911515815260200190565b60405180910390a35050565b60606001600160a01b0383163b6135fc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e1d565b600080846001600160a01b0316846040516136179190615cd4565b600060405180830381855af49150503d8060008114613652576040519150601f19603f3d011682016040523d82523d6000602084013e613657565b606091505b509150915061367f8282604051806060016040528060278152602001615dcf60279139614234565b95945050505050565b613693848484613c67565b6001600160a01b0383163b1561133e576136af8484848461426d565b61133e576040516368d2bf6b60e11b815260040160405180910390fd5b60008060006136da60085490565b90506000600880548060200260200160405190810160405280929190818152602001828054801561372a57602002820191906000526020600020905b815481526020019060010190808311613716575b5050505050905060005b828110156137965781818151811061374e5761374e61562e565b6020026020010151861015613784578093508181815181106137725761377261562e565b60200260200101519450505050915091565b61378f60018261561b565b9050613734565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610e1d565b606060006137de60085490565b90506000600880548060200260200160405190810160405280929190818152602001828054801561382e57602002820191906000526020600020905b81548152602001906001019080831161381a575b5050505050905060005b82811015613796578181815181106138525761385261562e565b602002602001015185101561392057600960008383815181106138775761387761562e565b60200260200101518152602001908152602001600020805461389890615543565b80601f01602080910402602001604051908101604052809291908181526020018280546138c490615543565b80156139115780601f106138e657610100808354040283529160200191613911565b820191906000526020600020905b8154815290600101906020018083116138f457829003601f168201915b50505050509350505050919050565b61392b60018261561b565b9050613838565b6060816000036139595750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613983578061396d8161586e565b915061397c9050600a83615671565b915061395d565b6000816001600160401b0381111561399d5761399d614f28565b6040519080825280601f01601f1916602001820160405280156139c7576020820181803683370190505b5090505b8415613a32576139dc600183615a86565b91506139e9600a86615ce6565b6139f490603061561b565b60f81b818381518110613a0957613a0961562e565b60200101906001600160f81b031916908160001a905350613a2b600a86615671565b94506139cb565b949350505050565b6000828152600760205260409020610e308282615bf0565b6000828152600960205260409020610e308282615bf0565b6000613a7461435e565b613a905760405162461bcd60e51b8152600401610e1d90615594565b85600003613ac85760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610e1d565b6000600a549050613b10818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061436f92505050565b600a919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001613b468a8461561b565b613b509190615a86565b88888888604051613b65959493929190615cfa565b60405180910390a25095945050505050565b600054610100900460ff16613b9e5760405162461bcd60e51b8152600401610e1d90615d33565b613ba66143d3565b610e62816143fa565b600054610100900460ff16613bd65760405162461bcd60e51b8152600401610e1d90615d33565b610e938282614489565b613bff733cc6cdda760b79bafa08df41ecfa224f810dceb660016144d3565b565b6000612aa361464b565b600082815260e1602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000613c728261300f565b9050836001600160a01b031681600001516001600160a01b031614613ca95760405162a1148160e81b815260040160405180910390fd5b6000846001600160a01b0316613cbd613c01565b6001600160a01b03161480613cd95750613cd985610c2b613c01565b80613d045750613ce7613c01565b6001600160a01b0316613cf984610d17565b6001600160a01b0316145b905080613d2457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416613d4b57604051633a954ecd60e21b815260040160405180910390fd5b613d58858585600161413b565b613d6460008487613c0b565b6001600160a01b03858116600090815260e060209081526040808320805467ffffffffffffffff198082166001600160401b039283166000190183161790925589861680865283862080549384169383166001908101841694909417905589865260df90945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116613e385760db548214613e3857805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020615df683398151915260405160405180910390a4612433565b60606000613e7e836002615644565b613e8990600261561b565b6001600160401b03811115613ea057613ea0614f28565b6040519080825280601f01601f191660200182016040528015613eca576020820181803683370190505b509050600360fc1b81600081518110613ee557613ee561562e565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613f1457613f1461562e565b60200101906001600160f81b031916908160001a9053506000613f38846002615644565b613f4390600161561b565b90505b6001811115613fbb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f7757613f7761562e565b1a60f81b828281518110613f8d57613f8d61562e565b60200101906001600160f81b031916908160001a90535060049490941c93613fb481615a99565b9050613f46565b50831561400a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e1d565b9392505050565b6000828152600b602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600d602052604081208054916001919061408b838561561b565b90915550506000928352600d6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b6140e38282612c61565b6000828152600b602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61414961010d546000611e88565b15801561415e57506001600160a01b03841615155b801561417257506001600160a01b03831615155b1561133e5761418461010d5485611e88565b15801561419b575061419961010d5484611e88565b155b1561133e5760405162461bcd60e51b815260206004820152600e60248201526d215472616e736665722d526f6c6560901b6044820152606401610e1d565b801561133e5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0385160161420e5761129c8282614675565b61133e84848484614718565b610e9382826040518060200160405280600081525061476b565b6060831561424357508161400a565b8251156142535782518084602001fd5b8160405162461bcd60e51b8152600401610e1d9190614c33565b6000836001600160a01b031663150b7a02614286613c01565b8786866040518563ffffffff1660e01b81526004016142a89493929190615d7e565b6020604051808303816000875af19250505080156142e3575060408051601f3d908101601f191682019092526142e091810190615db1565b60015b614341573d808015614311576040519150601f19603f3d011682016040523d82523d6000602084013e614316565b606091505b508051600003614339576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000612aa361010e546108b1613c01565b60008061437c848661561b565b60088054600181019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30181905560008181526009602052604090209092508291506143ca8482615bf0565b50935093915050565b600054610100900460ff16613bff5760405162461bcd60e51b8152600401610e1d90615d33565b600054610100900460ff166144215760405162461bcd60e51b8152600401610e1d90615d33565b60005b8151811015610e93576001604460008484815181106144455761444561562e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806144818161586e565b915050614424565b600054610100900460ff166144b05760405162461bcd60e51b8152600401610e1d90615d33565b60dd6144bc8382615bf0565b5060de6144c98282615bf0565b50600060db555050565b6daaeb6d7670e522a718067333cd4e3b15610e935760405163c3c5a54760e01b81523060048201526daaeb6d7670e522a718067333cd4e9063c3c5a547906024016020604051808303816000875af1158015614533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145579190615577565b610e935780156145cb57604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156145b757600080fd5b505af1158015613228573d6000803e3d6000fd5b6001600160a01b0382161561461a5760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440161459d565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e4869060240161459d565b3360009081526044602052604081205460ff1615614670575060131936013560601c90565b503390565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146146c2576040519150601f19603f3d011682016040523d82523d6000602084013e6146c7565b606091505b5050905080610e305760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610e1d565b816001600160a01b0316836001600160a01b0316031561133e57306001600160a01b038416036147565761129c6001600160a01b038516838361491a565b61133e6001600160a01b03851684848461497d565b60db546001600160a01b03841661479457604051622e076360e81b815260040160405180910390fd5b826000036147b55760405163b562e8dd60e01b815260040160405180910390fd5b6147c2600085838661413b565b6001600160a01b038416600081815260e06020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b0181169092021790915585845260df90925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156148d8575b60405182906001600160a01b03881690600090600080516020615df6833981519152908290a46148a1600087848060010195508761426d565b6148be576040516368d2bf6b60e11b815260040160405180910390fd5b808210614868578260db54146148d357600080fd5b61490b565b5b6040516001830192906001600160a01b03881690600090600080516020615df6833981519152908290a48082106148d9575b5060db5561133e600085838684565b6040516001600160a01b038316602482015260448101829052610e3090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526149b5565b6040516001600160a01b038085166024830152831660448201526064810182905261133e9085906323b872dd60e01b90608401614946565b6000614a0a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a879092919063ffffffff16565b805190915015610e305780806020019051810190614a289190615577565b610e305760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e1d565b6060613a328484600085856001600160a01b0385163b614ae95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e1d565b600080866001600160a01b03168587604051614b059190615cd4565b60006040518083038185875af1925050503d8060008114614b42576040519150601f19603f3d011682016040523d82523d6000602084013e614b47565b606091505b5091509150614b57828286614234565b979650505050505050565b508054614b6e90615543565b6000825580601f10614b7e575050565b601f016020900490600052602060002090810190610e6291905b80821115614bac5760008155600101614b98565b5090565b6001600160e01b031981168114610e6257600080fd5b600060208284031215614bd857600080fd5b813561400a81614bb0565b60005b83811015614bfe578181015183820152602001614be6565b50506000910152565b60008151808452614c1f816020860160208601614be3565b601f01601f19169290920160200192915050565b60208152600061400a6020830184614c07565b600060208284031215614c5857600080fd5b5035919050565b6001600160a01b0381168114610e6257600080fd5b8035614c7f81614c5f565b919050565b60008060408385031215614c9757600080fd5b8235614ca281614c5f565b946020939093013593505050565b600060208284031215614cc257600080fd5b813561400a81614c5f565b6000608082840312156125cf57600080fd5b60008060008060008060c08789031215614cf857600080fd5b863595506020870135614d0a81614c5f565b9450604087013593506060870135614d2181614c5f565b92506080870135915060a08701356001600160401b03811115614d4357600080fd5b614d4f89828a01614ccd565b9150509295509295509295565b600080600060608486031215614d7157600080fd5b8335614d7c81614c5f565b92506020840135614d8c81614c5f565b929592945050506040919091013590565b60008060408385031215614db057600080fd5b50508035926020909101359150565b60008060408385031215614dd257600080fd5b823591506020830135614de481614c5f565b809150509250929050565b8015158114610e6257600080fd5b600060208284031215614e0f57600080fd5b813561400a81614def565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e0830151610100808185015250613a32610120840182614c07565b60008083601f840112614e9957600080fd5b5081356001600160401b03811115614eb057600080fd5b6020830191508360208260051b8501011115614ecb57600080fd5b9250929050565b600080600060408486031215614ee757600080fd5b83356001600160401b03811115614efd57600080fd5b614f0986828701614e87565b9094509250506020840135614f1d81614def565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f6657614f66614f28565b604052919050565b60006001600160401b03821115614f8757614f87614f28565b50601f01601f191660200190565b600082601f830112614fa657600080fd5b8135614fb9614fb482614f6e565b614f3e565b818152846020838601011115614fce57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561500457600080fd5b863561500f81614c5f565b955060208701359450604087013561502681614c5f565b93506060870135925060808701356001600160401b038082111561504957600080fd5b6150558a838b01614ccd565b935060a089013591508082111561506b57600080fd5b50614d4f89828a01614f95565b60006020828403121561508a57600080fd5b81356001600160401b038111156150a057600080fd5b613a3284828501614f95565b6000806000606084860312156150c157600080fd5b833592506020840135614d8c81614c5f565b60008083601f8401126150e557600080fd5b5081356001600160401b038111156150fc57600080fd5b602083019150836020828501011115614ecb57600080fd5b60008060006040848603121561512957600080fd5b8335925060208401356001600160401b0381111561514657600080fd5b615152868287016150d3565b9497909650939450505050565b6000806040838503121561517257600080fd5b823561517d81614c5f565b91506020830135614de481614def565b600080602083850312156151a057600080fd5b82356001600160401b038111156151b657600080fd5b6151c285828601614e87565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561522357603f19888603018452615211858351614c07565b945092850192908501906001016151f5565b5092979650505050505050565b6000806000806080858703121561524657600080fd5b843561525181614c5f565b9350602085013561526181614c5f565b92506040850135915060608501356001600160401b0381111561528357600080fd5b61528f87828801614f95565b91505092959194509250565b6000806000806000606086880312156152b357600080fd5b8535945060208601356001600160401b03808211156152d157600080fd5b6152dd89838a016150d3565b909650945060408801359150808211156152f657600080fd5b50615303888289016150d3565b969995985093965092949392505050565b600082601f83011261532557600080fd5b813560206001600160401b0382111561534057615340614f28565b8160051b61534f828201614f3e565b928352848101820192828101908785111561536957600080fd5b83870192505b84831015614b5757823561538281614c5f565b8252918301919083019061536f565b80356001600160801b0381168114614c7f57600080fd5b6000806000806000806000806000806101408b8d0312156153c857600080fd5b6153d18b614c74565b995060208b01356001600160401b03808211156153ed57600080fd5b6153f98e838f01614f95565b9a5060408d013591508082111561540f57600080fd5b61541b8e838f01614f95565b995060608d013591508082111561543157600080fd5b61543d8e838f01614f95565b985060808d013591508082111561545357600080fd5b506154608d828e01615314565b96505061546f60a08c01614c74565b945061547d60c08c01614c74565b935061548b60e08c01615391565b925061549a6101008c01615391565b91506154a96101208c01614c74565b90509295989b9194979a5092959850565b6000806000604084860312156154cf57600080fd5b83356001600160401b03808211156154e657600080fd5b6154f287838801614f95565b9450602086013591508082111561550857600080fd5b50615152868287016150d3565b6000806040838503121561552857600080fd5b823561553381614c5f565b91506020830135614de481614c5f565b600181811c9082168061555757607f821691505b6020821081036125cf57634e487b7160e01b600052602260045260246000fd5b60006020828403121561558957600080fd5b815161400a81614def565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000808335601e198436030181126155d357600080fd5b8301803591506001600160401b038211156155ed57600080fd5b6020019150600581901b3603821315614ecb57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610c7f57610c7f615605565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c7f57610c7f615605565b634e487b7160e01b600052601260045260246000fd5b6000826156805761568061565b565b500490565b6000823560fe1983360301811261569b57600080fd5b9190910192915050565b6000808335601e198436030181126156bc57600080fd5b8301803591506001600160401b038211156156d657600080fd5b602001915036819003821315614ecb57600080fd5b601f821115610e3057600081815260208120601f850160051c810160208610156157125750805b601f850160051c820191505b818110156132285782815560010161571e565b6001600160401b0383111561574857615748614f28565b61575c836157568354615543565b836156eb565b6000601f84116001811461579057600085156157785750838201355b600019600387901b1c1916600186901b178355612433565b600083815260209020601f19861690835b828110156157c157868501358255602094850194600190920191016157a1565b50868210156157de5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c083013561583881614c5f565b81546001600160a01b0319166001600160a01b039190911617905561586060e08301836156a5565b61133e818360078601615731565b60006001820161588057615880615605565b5060010190565b6000808335601e1984360301811261589e57600080fd5b83016020810192503590506001600160401b038111156158bd57600080fd5b803603821315614ecb57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a8110156159c757888403605f190185528235368d900360fe1901811261593a578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c08084013561598181614c5f565b6001600160a01b03169088015260e061599c84820185615887565b945083828a01526159b0848a0186836158cc565b998301999850505094909401935050600101615915565b50505086151560208701529350613a3292505050565b600080604083850312156159f057600080fd5b82516001600160401b03811115615a0657600080fd5b8301601f81018513615a1757600080fd5b8051615a25614fb482614f6e565b818152866020838501011115615a3a57600080fd5b615a4b826020830160208601614be3565b60209590950151949694955050505050565b60008551615a6f818460208a01614be3565b820184868237909301918252506020019392505050565b81810381811115610c7f57610c7f615605565b600081615aa857615aa8615605565b506000190190565b60008251615ac2818460208701614be3565b600360fc1b920191825250600101919050565b60008351615ae7818460208801614be3565b835190830190615afb818360208801614be3565b01949350505050565b60008060408385031215615b1757600080fd5b82356001600160401b03811115615b2d57600080fd5b615b3985828601614f95565b95602094909401359450505050565b82848237909101908152602001919050565b6020808252600f908201526e45786365656473206d61782062707360881b604082015260600190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615bb3816015850160208801614be3565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615be4816026840160208801614be3565b01602601949350505050565b81516001600160401b03811115615c0957615c09614f28565b615c1d81615c178454615543565b846156eb565b602080601f831160018114615c525760008415615c3a5750858301515b600019600386901b1c1916600185901b178555613228565b600085815260208120601f198616915b82811015615c8157888601518255948401946001909101908401615c62565b5085821015615c9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000615cc26040830185614c07565b828103602084015261367f8185614c07565b6000825161569b818460208701614be3565b600082615cf557615cf561565b565b500690565b858152606060208201526000615d146060830186886158cc565b8281036040840152615d278185876158cc565b98975050505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906126f190830184614c07565b600060208284031215615dc357600080fd5b815161400a81614bb056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e54a4194ce9ec6bf16620565eb007c97eaba6d77f0b529f083ad3431a97b7bb764736f6c63430008130033"; + + public DropERC721DeploymentBase() + : base(BYTECODE) { } + + public DropERC721DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ClaimFunction : ClaimFunctionBase { } + + [Function("claim")] + public class ClaimFunctionBase : FunctionMessage + { + [Parameter("address", "_receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "_quantity", 2)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 3)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 4)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 5)] + public virtual AllowlistProof AllowlistProof { get; set; } + + [Parameter("bytes", "_data", 6)] + public virtual byte[] Data { get; set; } + } + + public partial class ClaimConditionFunction : ClaimConditionFunctionBase { } + + [Function("claimCondition", typeof(ClaimConditionOutputDTO))] + public class ClaimConditionFunctionBase : FunctionMessage { } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class EncryptDecryptFunction : EncryptDecryptFunctionBase { } + + [Function("encryptDecrypt", "bytes")] + public class EncryptDecryptFunctionBase : FunctionMessage + { + [Parameter("bytes", "data", 1)] + public virtual byte[] Data { get; set; } + + [Parameter("bytes", "key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class EncryptedDataFunction : EncryptedDataFunctionBase { } + + [Function("encryptedData", "bytes")] + public class EncryptedDataFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetActiveClaimConditionIdFunction : GetActiveClaimConditionIdFunctionBase { } + + [Function("getActiveClaimConditionId", "uint256")] + public class GetActiveClaimConditionIdFunctionBase : FunctionMessage { } + + public partial class GetApprovedFunction : GetApprovedFunctionBase { } + + [Function("getApproved", "address")] + public class GetApprovedFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetBaseURICountFunction : GetBaseURICountFunctionBase { } + + [Function("getBaseURICount", "uint256")] + public class GetBaseURICountFunctionBase : FunctionMessage { } + + public partial class GetBatchIdAtIndexFunction : GetBatchIdAtIndexFunctionBase { } + + [Function("getBatchIdAtIndex", "uint256")] + public class GetBatchIdAtIndexFunctionBase : FunctionMessage + { + [Parameter("uint256", "_index", 1)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetClaimConditionByIdFunction : GetClaimConditionByIdFunctionBase { } + + [Function("getClaimConditionById", typeof(GetClaimConditionByIdOutputDTO))] + public class GetClaimConditionByIdFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetRevealURIFunction : GetRevealURIFunctionBase { } + + [Function("getRevealURI", "string")] + public class GetRevealURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "_batchId", 1)] + public virtual BigInteger BatchId { get; set; } + + [Parameter("bytes", "_key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetSupplyClaimedByWalletFunction : GetSupplyClaimedByWalletFunctionBase { } + + [Function("getSupplyClaimedByWallet", "uint256")] + public class GetSupplyClaimedByWalletFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 2)] + public virtual string Claimer { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_saleRecipient", 6)] + public virtual string SaleRecipient { get; set; } + + [Parameter("address", "_royaltyRecipient", 7)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint128", "_royaltyBps", 8)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("uint128", "_platformFeeBps", 9)] + public virtual BigInteger PlatformFeeBps { get; set; } + + [Parameter("address", "_platformFeeRecipient", 10)] + public virtual string PlatformFeeRecipient { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsEncryptedBatchFunction : IsEncryptedBatchFunctionBase { } + + [Function("isEncryptedBatch", "bool")] + public class IsEncryptedBatchFunctionBase : FunctionMessage + { + [Parameter("uint256", "_batchId", 1)] + public virtual BigInteger BatchId { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class LazyMintFunction : LazyMintFunctionBase { } + + [Function("lazyMint", "uint256")] + public class LazyMintFunctionBase : FunctionMessage + { + [Parameter("uint256", "_amount", 1)] + public virtual BigInteger Amount { get; set; } + + [Parameter("string", "_baseURIForTokens", 2)] + public virtual string BaseURIForTokens { get; set; } + + [Parameter("bytes", "_data", 3)] + public virtual byte[] Data { get; set; } + } + + public partial class MaxTotalSupplyFunction : MaxTotalSupplyFunctionBase { } + + [Function("maxTotalSupply", "uint256")] + public class MaxTotalSupplyFunctionBase : FunctionMessage { } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToClaimFunction : NextTokenIdToClaimFunctionBase { } + + [Function("nextTokenIdToClaim", "uint256")] + public class NextTokenIdToClaimFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OperatorRestrictionFunction : OperatorRestrictionFunctionBase { } + + [Function("operatorRestriction", "bool")] + public class OperatorRestrictionFunctionBase : FunctionMessage { } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class OwnerOfFunction : OwnerOfFunctionBase { } + + [Function("ownerOf", "address")] + public class OwnerOfFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevealFunction : RevealFunctionBase { } + + [Function("reveal", "string")] + public class RevealFunctionBase : FunctionMessage + { + [Parameter("uint256", "_index", 1)] + public virtual BigInteger Index { get; set; } + + [Parameter("bytes", "_key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class SafeTransferFrom1Function : SafeTransferFrom1FunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFrom1FunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("bytes", "data", 4)] + public virtual byte[] Data { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetClaimConditionsFunction : SetClaimConditionsFunctionBase { } + + [Function("setClaimConditions")] + public class SetClaimConditionsFunctionBase : FunctionMessage + { + [Parameter("tuple[]", "_conditions", 1)] + public virtual List Conditions { get; set; } + + [Parameter("bool", "_resetClaimEligibility", 2)] + public virtual bool ResetClaimEligibility { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetMaxTotalSupplyFunction : SetMaxTotalSupplyFunctionBase { } + + [Function("setMaxTotalSupply")] + public class SetMaxTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "_maxTotalSupply", 1)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class SetOperatorRestrictionFunction : SetOperatorRestrictionFunctionBase { } + + [Function("setOperatorRestriction")] + public class SetOperatorRestrictionFunctionBase : FunctionMessage + { + [Parameter("bool", "_restriction", 1)] + public virtual bool Restriction { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TokenURIFunction : TokenURIFunctionBase { } + + [Function("tokenURI", "string")] + public class TokenURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class TotalMintedFunction : TotalMintedFunctionBase { } + + [Function("totalMinted", "uint256")] + public class TotalMintedFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class VerifyClaimFunction : VerifyClaimFunctionBase { } + + [Function("verifyClaim", "bool")] + public class VerifyClaimFunctionBase : FunctionMessage + { + [Parameter("uint256", "_conditionId", 1)] + public virtual BigInteger ConditionId { get; set; } + + [Parameter("address", "_claimer", 2)] + public virtual string Claimer { get; set; } + + [Parameter("uint256", "_quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 5)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 6)] + public virtual AllowlistProof AllowlistProof { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "approved", 2, true)] + public virtual string Approved { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class ClaimConditionsUpdatedEventDTO : ClaimConditionsUpdatedEventDTOBase { } + + [Event("ClaimConditionsUpdated")] + public class ClaimConditionsUpdatedEventDTOBase : IEventDTO + { + [Parameter("tuple[]", "claimConditions", 1, false)] + public virtual List ClaimConditions { get; set; } + + [Parameter("bool", "resetEligibility", 2, false)] + public virtual bool ResetEligibility { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class MaxTotalSupplyUpdatedEventDTO : MaxTotalSupplyUpdatedEventDTOBase { } + + [Event("MaxTotalSupplyUpdated")] + public class MaxTotalSupplyUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "maxTotalSupply", 1, false)] + public virtual BigInteger MaxTotalSupply { get; set; } + } + + public partial class OperatorRestrictionEventDTO : OperatorRestrictionEventDTOBase { } + + [Event("OperatorRestriction")] + public class OperatorRestrictionEventDTOBase : IEventDTO + { + [Parameter("bool", "restriction", 1, false)] + public virtual bool Restriction { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class TokenURIRevealedEventDTO : TokenURIRevealedEventDTOBase { } + + [Event("TokenURIRevealed")] + public class TokenURIRevealedEventDTOBase : IEventDTO + { + [Parameter("uint256", "index", 1, true)] + public virtual BigInteger Index { get; set; } + + [Parameter("string", "revealedURI", 2, false)] + public virtual string RevealedURI { get; set; } + } + + public partial class TokensClaimedEventDTO : TokensClaimedEventDTOBase { } + + [Event("TokensClaimed")] + public class TokensClaimedEventDTOBase : IEventDTO + { + [Parameter("uint256", "claimConditionIndex", 1, true)] + public virtual BigInteger ClaimConditionIndex { get; set; } + + [Parameter("address", "claimer", 2, true)] + public virtual string Claimer { get; set; } + + [Parameter("address", "receiver", 3, true)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "startTokenId", 4, false)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "quantityClaimed", 5, false)] + public virtual BigInteger QuantityClaimed { get; set; } + } + + public partial class TokensLazyMintedEventDTO : TokensLazyMintedEventDTOBase { } + + [Event("TokensLazyMinted")] + public class TokensLazyMintedEventDTOBase : IEventDTO + { + [Parameter("uint256", "startTokenId", 1, true)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "endTokenId", 2, false)] + public virtual BigInteger EndTokenId { get; set; } + + [Parameter("string", "baseURI", 3, false)] + public virtual string BaseURI { get; set; } + + [Parameter("bytes", "encryptedBaseURI", 4, false)] + public virtual byte[] EncryptedBaseURI { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class OperatorNotAllowedError : OperatorNotAllowedErrorBase { } + + [Error("OperatorNotAllowed")] + public class OperatorNotAllowedErrorBase : IErrorDTO + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ClaimConditionOutputDTO : ClaimConditionOutputDTOBase { } + + [FunctionOutput] + public class ClaimConditionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "currentStartId", 1)] + public virtual BigInteger CurrentStartId { get; set; } + + [Parameter("uint256", "count", 2)] + public virtual BigInteger Count { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class EncryptDecryptOutputDTO : EncryptDecryptOutputDTOBase { } + + [FunctionOutput] + public class EncryptDecryptOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "result", 1)] + public virtual byte[] Result { get; set; } + } + + public partial class EncryptedDataOutputDTO : EncryptedDataOutputDTOBase { } + + [FunctionOutput] + public class EncryptedDataOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetActiveClaimConditionIdOutputDTO : GetActiveClaimConditionIdOutputDTOBase { } + + [FunctionOutput] + public class GetActiveClaimConditionIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetApprovedOutputDTO : GetApprovedOutputDTOBase { } + + [FunctionOutput] + public class GetApprovedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetBaseURICountOutputDTO : GetBaseURICountOutputDTOBase { } + + [FunctionOutput] + public class GetBaseURICountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetBatchIdAtIndexOutputDTO : GetBatchIdAtIndexOutputDTOBase { } + + [FunctionOutput] + public class GetBatchIdAtIndexOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetClaimConditionByIdOutputDTO : GetClaimConditionByIdOutputDTOBase { } + + [FunctionOutput] + public class GetClaimConditionByIdOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "condition", 1)] + public virtual ClaimCondition Condition { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetRevealURIOutputDTO : GetRevealURIOutputDTOBase { } + + [FunctionOutput] + public class GetRevealURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "revealedURI", 1)] + public virtual string RevealedURI { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetSupplyClaimedByWalletOutputDTO : GetSupplyClaimedByWalletOutputDTOBase { } + + [FunctionOutput] + public class GetSupplyClaimedByWalletOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "supplyClaimedByWallet", 1)] + public virtual BigInteger SupplyClaimedByWallet { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsEncryptedBatchOutputDTO : IsEncryptedBatchOutputDTOBase { } + + [FunctionOutput] + public class IsEncryptedBatchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class MaxTotalSupplyOutputDTO : MaxTotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class MaxTotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToClaimOutputDTO : NextTokenIdToClaimOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToClaimOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OperatorRestrictionOutputDTO : OperatorRestrictionOutputDTOBase { } + + [FunctionOutput] + public class OperatorRestrictionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class OwnerOfOutputDTO : OwnerOfOutputDTOBase { } + + [FunctionOutput] + public class OwnerOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TokenURIOutputDTO : TokenURIOutputDTOBase { } + + [FunctionOutput] + public class TokenURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalMintedOutputDTO : TotalMintedOutputDTOBase { } + + [FunctionOutput] + public class TotalMintedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyClaimOutputDTO : VerifyClaimOutputDTOBase { } + + [FunctionOutput] + public class VerifyClaimOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "isOverride", 1)] + public virtual bool IsOverride { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs.meta new file mode 100644 index 00000000..d9ab9b89 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/ContractDefinition/DropERC721Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 343d03ce8281c4f44b0f4c2c91c2b453 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs new file mode 100644 index 00000000..26eb683b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs @@ -0,0 +1,1259 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.DropERC721.ContractDefinition; + +namespace Thirdweb.Contracts.DropERC721 +{ + public partial class DropERC721Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + DropERC721Deployment dropERC721Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(dropERC721Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, DropERC721Deployment dropERC721Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(dropERC721Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + DropERC721Deployment dropERC721Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, dropERC721Deployment, cancellationTokenSource); + return new DropERC721Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public DropERC721Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string @operator, BigInteger tokenId) + { + var approveFunction = new ApproveFunction(); + approveFunction.Operator = @operator; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string @operator, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.Operator = @operator; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string owner, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Owner = owner; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(BigInteger tokenId) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task ClaimRequestAsync(ClaimFunction claimFunction) + { + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync(ClaimFunction claimFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimRequestAsync(string receiver, BigInteger quantity, string currency, BigInteger pricePerToken, AllowlistProof allowlistProof, byte[] data) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync( + string receiver, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimConditionQueryAsync(ClaimConditionFunction claimConditionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(claimConditionFunction, blockParameter); + } + + public Task ClaimConditionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task EncryptDecryptQueryAsync(EncryptDecryptFunction encryptDecryptFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(encryptDecryptFunction, blockParameter); + } + + public Task EncryptDecryptQueryAsync(byte[] data, byte[] key, BlockParameter blockParameter = null) + { + var encryptDecryptFunction = new EncryptDecryptFunction(); + encryptDecryptFunction.Data = data; + encryptDecryptFunction.Key = key; + + return ContractHandler.QueryAsync(encryptDecryptFunction, blockParameter); + } + + public Task EncryptedDataQueryAsync(EncryptedDataFunction encryptedDataFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(encryptedDataFunction, blockParameter); + } + + public Task EncryptedDataQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var encryptedDataFunction = new EncryptedDataFunction(); + encryptedDataFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(encryptedDataFunction, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(GetActiveClaimConditionIdFunction getActiveClaimConditionIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getActiveClaimConditionIdFunction, blockParameter); + } + + public Task GetActiveClaimConditionIdQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetApprovedQueryAsync(GetApprovedFunction getApprovedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getApprovedFunction = new GetApprovedFunction(); + getApprovedFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(GetBaseURICountFunction getBaseURICountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBaseURICountFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(GetBatchIdAtIndexFunction getBatchIdAtIndexFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(BigInteger index, BlockParameter blockParameter = null) + { + var getBatchIdAtIndexFunction = new GetBatchIdAtIndexFunction(); + getBatchIdAtIndexFunction.Index = index; + + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(GetClaimConditionByIdFunction getClaimConditionByIdFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetClaimConditionByIdQueryAsync(BigInteger conditionId, BlockParameter blockParameter = null) + { + var getClaimConditionByIdFunction = new GetClaimConditionByIdFunction(); + getClaimConditionByIdFunction.ConditionId = conditionId; + + return ContractHandler.QueryDeserializingToObjectAsync(getClaimConditionByIdFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetRevealURIQueryAsync(GetRevealURIFunction getRevealURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRevealURIFunction, blockParameter); + } + + public Task GetRevealURIQueryAsync(BigInteger batchId, byte[] key, BlockParameter blockParameter = null) + { + var getRevealURIFunction = new GetRevealURIFunction(); + getRevealURIFunction.BatchId = batchId; + getRevealURIFunction.Key = key; + + return ContractHandler.QueryAsync(getRevealURIFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(GetSupplyClaimedByWalletFunction getSupplyClaimedByWalletFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(BigInteger conditionId, string claimer, BlockParameter blockParameter = null) + { + var getSupplyClaimedByWalletFunction = new GetSupplyClaimedByWalletFunction(); + getSupplyClaimedByWalletFunction.ConditionId = conditionId; + getSupplyClaimedByWalletFunction.Claimer = claimer; + + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string owner, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Owner = owner; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsEncryptedBatchQueryAsync(IsEncryptedBatchFunction isEncryptedBatchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isEncryptedBatchFunction, blockParameter); + } + + public Task IsEncryptedBatchQueryAsync(BigInteger batchId, BlockParameter blockParameter = null) + { + var isEncryptedBatchFunction = new IsEncryptedBatchFunction(); + isEncryptedBatchFunction.BatchId = batchId; + + return ContractHandler.QueryAsync(isEncryptedBatchFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task LazyMintRequestAsync(LazyMintFunction lazyMintFunction) + { + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(LazyMintFunction lazyMintFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task LazyMintRequestAsync(BigInteger amount, string baseURIForTokens, byte[] data) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(BigInteger amount, string baseURIForTokens, byte[] data, CancellationTokenSource cancellationToken = null) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task MaxTotalSupplyQueryAsync(MaxTotalSupplyFunction maxTotalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(maxTotalSupplyFunction, blockParameter); + } + + public Task MaxTotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToClaimQueryAsync(NextTokenIdToClaimFunction nextTokenIdToClaimFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToClaimFunction, blockParameter); + } + + public Task NextTokenIdToClaimQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(OperatorRestrictionFunction operatorRestrictionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(operatorRestrictionFunction, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerOfQueryAsync(OwnerOfFunction ownerOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task OwnerOfQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var ownerOfFunction = new OwnerOfFunction(); + ownerOfFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevealRequestAsync(RevealFunction revealFunction) + { + return ContractHandler.SendRequestAsync(revealFunction); + } + + public Task RevealRequestAndWaitForReceiptAsync(RevealFunction revealFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revealFunction, cancellationToken); + } + + public Task RevealRequestAsync(BigInteger index, byte[] key) + { + var revealFunction = new RevealFunction(); + revealFunction.Index = index; + revealFunction.Key = key; + + return ContractHandler.SendRequestAsync(revealFunction); + } + + public Task RevealRequestAndWaitForReceiptAsync(BigInteger index, byte[] key, CancellationTokenSource cancellationToken = null) + { + var revealFunction = new RevealFunction(); + revealFunction.Index = index; + revealFunction.Key = key; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revealFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFrom1Function safeTransferFrom1Function) + { + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFrom1Function safeTransferFrom1Function, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId, byte[] data) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, byte[] data, CancellationTokenSource cancellationToken = null) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(SetClaimConditionsFunction setClaimConditionsFunction) + { + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(SetClaimConditionsFunction setClaimConditionsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(List conditions, bool resetClaimEligibility) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(List conditions, bool resetClaimEligibility, CancellationTokenSource cancellationToken = null) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Conditions = conditions; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction) + { + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(SetMaxTotalSupplyFunction setMaxTotalSupplyFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetMaxTotalSupplyRequestAsync(BigInteger maxTotalSupply) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAsync(setMaxTotalSupplyFunction); + } + + public Task SetMaxTotalSupplyRequestAndWaitForReceiptAsync(BigInteger maxTotalSupply, CancellationTokenSource cancellationToken = null) + { + var setMaxTotalSupplyFunction = new SetMaxTotalSupplyFunction(); + setMaxTotalSupplyFunction.MaxTotalSupply = maxTotalSupply; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setMaxTotalSupplyFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(SetOperatorRestrictionFunction setOperatorRestrictionFunction) + { + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync( + SetOperatorRestrictionFunction setOperatorRestrictionFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(bool restriction) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync(bool restriction, CancellationTokenSource cancellationToken = null) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TokenURIQueryAsync(TokenURIFunction tokenURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TokenURIQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var tokenURIFunction = new TokenURIFunction(); + tokenURIFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TotalMintedQueryAsync(TotalMintedFunction totalMintedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalMintedFunction, blockParameter); + } + + public Task TotalMintedQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task VerifyClaimQueryAsync(VerifyClaimFunction verifyClaimFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync( + BigInteger conditionId, + string claimer, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + BlockParameter blockParameter = null + ) + { + var verifyClaimFunction = new VerifyClaimFunction(); + verifyClaimFunction.ConditionId = conditionId; + verifyClaimFunction.Claimer = claimer; + verifyClaimFunction.Quantity = quantity; + verifyClaimFunction.Currency = currency; + verifyClaimFunction.PricePerToken = pricePerToken; + verifyClaimFunction.AllowlistProof = allowlistProof; + + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs.meta new file mode 100644 index 00000000..b271fd4e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/DropERC721/DropERC721Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70a3e44fee83893499b5fd163dc7f6e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable.meta b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable.meta new file mode 100644 index 00000000..c2769cbb --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ef3747e2dc295e41a0c70057671a9bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition.meta new file mode 100644 index 00000000..8f5043ef --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f05c9764cceb69d46ac022cc8a350813 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs new file mode 100644 index 00000000..a89cc262 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs @@ -0,0 +1,451 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.ERC721AQueryableUpgradeable.ContractDefinition +{ + public partial class ERC721AQueryableUpgradeableDeployment : ERC721AQueryableUpgradeableDeploymentBase + { + public ERC721AQueryableUpgradeableDeployment() + : base(BYTECODE) { } + + public ERC721AQueryableUpgradeableDeployment(string byteCode) + : base(byteCode) { } + } + + public class ERC721AQueryableUpgradeableDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = ""; + + public ERC721AQueryableUpgradeableDeploymentBase() + : base(BYTECODE) { } + + public ERC721AQueryableUpgradeableDeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class ExplicitOwnershipOfFunction : ExplicitOwnershipOfFunctionBase { } + + [Function("explicitOwnershipOf", typeof(ExplicitOwnershipOfOutputDTO))] + public class ExplicitOwnershipOfFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetApprovedFunction : GetApprovedFunctionBase { } + + [Function("getApproved", "address")] + public class GetApprovedFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class OwnerOfFunction : OwnerOfFunctionBase { } + + [Function("ownerOf", "address")] + public class OwnerOfFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class SafeTransferFrom1Function : SafeTransferFrom1FunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFrom1FunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("bytes", "_data", 4)] + public virtual byte[] Data { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TokenURIFunction : TokenURIFunctionBase { } + + [Function("tokenURI", "string")] + public class TokenURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class TokensOfOwnerFunction : TokensOfOwnerFunctionBase { } + + [Function("tokensOfOwner", "uint256[]")] + public class TokensOfOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class TokensOfOwnerInFunction : TokensOfOwnerInFunctionBase { } + + [Function("tokensOfOwnerIn", "uint256[]")] + public class TokensOfOwnerInFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("uint256", "start", 2)] + public virtual BigInteger Start { get; set; } + + [Parameter("uint256", "stop", 3)] + public virtual BigInteger Stop { get; set; } + } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "approved", 2, true)] + public virtual string Approved { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class ConsecutiveTransferEventDTO : ConsecutiveTransferEventDTOBase { } + + [Event("ConsecutiveTransfer")] + public class ConsecutiveTransferEventDTOBase : IEventDTO + { + [Parameter("uint256", "fromTokenId", 1, true)] + public virtual BigInteger FromTokenId { get; set; } + + [Parameter("uint256", "toTokenId", 2, false)] + public virtual BigInteger ToTokenId { get; set; } + + [Parameter("address", "from", 3, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 4, true)] + public virtual string To { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalCallerNotOwnerNorApprovedError : ApprovalCallerNotOwnerNorApprovedErrorBase { } + + [Error("ApprovalCallerNotOwnerNorApproved")] + public class ApprovalCallerNotOwnerNorApprovedErrorBase : IErrorDTO { } + + public partial class ApprovalQueryForNonexistentTokenError : ApprovalQueryForNonexistentTokenErrorBase { } + + [Error("ApprovalQueryForNonexistentToken")] + public class ApprovalQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class BalanceQueryForZeroAddressError : BalanceQueryForZeroAddressErrorBase { } + + [Error("BalanceQueryForZeroAddress")] + public class BalanceQueryForZeroAddressErrorBase : IErrorDTO { } + + public partial class InvalidQueryRangeError : InvalidQueryRangeErrorBase { } + + [Error("InvalidQueryRange")] + public class InvalidQueryRangeErrorBase : IErrorDTO { } + + public partial class MintERC2309QuantityExceedsLimitError : MintERC2309QuantityExceedsLimitErrorBase { } + + [Error("MintERC2309QuantityExceedsLimit")] + public class MintERC2309QuantityExceedsLimitErrorBase : IErrorDTO { } + + public partial class MintToZeroAddressError : MintToZeroAddressErrorBase { } + + [Error("MintToZeroAddress")] + public class MintToZeroAddressErrorBase : IErrorDTO { } + + public partial class MintZeroQuantityError : MintZeroQuantityErrorBase { } + + [Error("MintZeroQuantity")] + public class MintZeroQuantityErrorBase : IErrorDTO { } + + public partial class OwnerQueryForNonexistentTokenError : OwnerQueryForNonexistentTokenErrorBase { } + + [Error("OwnerQueryForNonexistentToken")] + public class OwnerQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class OwnershipNotInitializedForExtraDataError : OwnershipNotInitializedForExtraDataErrorBase { } + + [Error("OwnershipNotInitializedForExtraData")] + public class OwnershipNotInitializedForExtraDataErrorBase : IErrorDTO { } + + public partial class TransferCallerNotOwnerNorApprovedError : TransferCallerNotOwnerNorApprovedErrorBase { } + + [Error("TransferCallerNotOwnerNorApproved")] + public class TransferCallerNotOwnerNorApprovedErrorBase : IErrorDTO { } + + public partial class TransferFromIncorrectOwnerError : TransferFromIncorrectOwnerErrorBase { } + + [Error("TransferFromIncorrectOwner")] + public class TransferFromIncorrectOwnerErrorBase : IErrorDTO { } + + public partial class TransferToNonERC721ReceiverImplementerError : TransferToNonERC721ReceiverImplementerErrorBase { } + + [Error("TransferToNonERC721ReceiverImplementer")] + public class TransferToNonERC721ReceiverImplementerErrorBase : IErrorDTO { } + + public partial class TransferToZeroAddressError : TransferToZeroAddressErrorBase { } + + [Error("TransferToZeroAddress")] + public class TransferToZeroAddressErrorBase : IErrorDTO { } + + public partial class URIQueryForNonexistentTokenError : URIQueryForNonexistentTokenErrorBase { } + + [Error("URIQueryForNonexistentToken")] + public class URIQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ExplicitOwnershipOfOutputDTO : ExplicitOwnershipOfOutputDTOBase { } + + [FunctionOutput] + public class ExplicitOwnershipOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "ownership", 1)] + public virtual TokenOwnership Ownership { get; set; } + } + + public partial class GetApprovedOutputDTO : GetApprovedOutputDTOBase { } + + [FunctionOutput] + public class GetApprovedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class OwnerOfOutputDTO : OwnerOfOutputDTOBase { } + + [FunctionOutput] + public class OwnerOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TokenURIOutputDTO : TokenURIOutputDTOBase { } + + [FunctionOutput] + public class TokenURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TokensOfOwnerOutputDTO : TokensOfOwnerOutputDTOBase { } + + [FunctionOutput] + public class TokensOfOwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class TokensOfOwnerInOutputDTO : TokensOfOwnerInOutputDTOBase { } + + [FunctionOutput] + public class TokensOfOwnerInOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs.meta new file mode 100644 index 00000000..845ddeb0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/ERC721AQueryableUpgradeableDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54788ebdf525c7b43bf06692f94711d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs new file mode 100644 index 00000000..6ee38f9e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.ERC721AQueryableUpgradeable.ContractDefinition +{ + public partial class TokenOwnership : TokenOwnershipBase { } + + public class TokenOwnershipBase + { + [Parameter("address", "addr", 1)] + public virtual string Addr { get; set; } + + [Parameter("uint64", "startTimestamp", 2)] + public virtual ulong StartTimestamp { get; set; } + + [Parameter("bool", "burned", 3)] + public virtual bool Burned { get; set; } + + [Parameter("uint24", "extraData", 4)] + public virtual uint ExtraData { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs.meta new file mode 100644 index 00000000..57e42159 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ContractDefinition/TokenOwnership.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3388c4473a4a9404491121b238e2fa32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs new file mode 100644 index 00000000..024f3738 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs @@ -0,0 +1,357 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.ERC721AQueryableUpgradeable.ContractDefinition; + +namespace Thirdweb.Contracts.ERC721AQueryableUpgradeable +{ + public partial class ERC721AQueryableUpgradeableService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + ERC721AQueryableUpgradeableDeployment eRC721AQueryableUpgradeableDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(eRC721AQueryableUpgradeableDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, ERC721AQueryableUpgradeableDeployment eRC721AQueryableUpgradeableDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(eRC721AQueryableUpgradeableDeployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + ERC721AQueryableUpgradeableDeployment eRC721AQueryableUpgradeableDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, eRC721AQueryableUpgradeableDeployment, cancellationTokenSource); + return new ERC721AQueryableUpgradeableService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.IWeb3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public ERC721AQueryableUpgradeableService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public ERC721AQueryableUpgradeableService(Nethereum.Web3.IWeb3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string to, BigInteger tokenId) + { + var approveFunction = new ApproveFunction(); + approveFunction.To = to; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.To = to; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string owner, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Owner = owner; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task ExplicitOwnershipOfQueryAsync(ExplicitOwnershipOfFunction explicitOwnershipOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(explicitOwnershipOfFunction, blockParameter); + } + + public Task ExplicitOwnershipOfQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var explicitOwnershipOfFunction = new ExplicitOwnershipOfFunction(); + explicitOwnershipOfFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(explicitOwnershipOfFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(GetApprovedFunction getApprovedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getApprovedFunction = new GetApprovedFunction(); + getApprovedFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string owner, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Owner = owner; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerOfQueryAsync(OwnerOfFunction ownerOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task OwnerOfQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var ownerOfFunction = new OwnerOfFunction(); + ownerOfFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFrom1Function safeTransferFrom1Function) + { + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFrom1Function safeTransferFrom1Function, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId, byte[] data) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, byte[] data, CancellationTokenSource cancellationToken = null) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TokenURIQueryAsync(TokenURIFunction tokenURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TokenURIQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var tokenURIFunction = new TokenURIFunction(); + tokenURIFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task> TokensOfOwnerQueryAsync(TokensOfOwnerFunction tokensOfOwnerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(tokensOfOwnerFunction, blockParameter); + } + + public Task> TokensOfOwnerQueryAsync(string owner, BlockParameter blockParameter = null) + { + var tokensOfOwnerFunction = new TokensOfOwnerFunction(); + tokensOfOwnerFunction.Owner = owner; + + return ContractHandler.QueryAsync>(tokensOfOwnerFunction, blockParameter); + } + + public Task> TokensOfOwnerInQueryAsync(TokensOfOwnerInFunction tokensOfOwnerInFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(tokensOfOwnerInFunction, blockParameter); + } + + public Task> TokensOfOwnerInQueryAsync(string owner, BigInteger start, BigInteger stop, BlockParameter blockParameter = null) + { + var tokensOfOwnerInFunction = new TokensOfOwnerInFunction(); + tokensOfOwnerInFunction.Owner = owner; + tokensOfOwnerInFunction.Start = start; + tokensOfOwnerInFunction.Stop = stop; + + return ContractHandler.QueryAsync>(tokensOfOwnerInFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs.meta new file mode 100644 index 00000000..539e9301 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/ERC721AQueryableUpgradeable/ERC721AQueryableUpgradeableService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98e2dd3e6d78d1245931c235d5d83835 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic.meta b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic.meta new file mode 100644 index 00000000..f3c185f6 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76d869ae36e080145a61e5b6a4c91003 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition.meta new file mode 100644 index 00000000..b9ed6749 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f1d10965580b6b45a2f8ec2428e6c44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs new file mode 100644 index 00000000..dd91d170 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EnglishAuctionsLogic.ContractDefinition +{ + public partial class Auction : AuctionBase { } + + public class AuctionBase + { + [Parameter("uint256", "auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "minimumBidAmount", 4)] + public virtual BigInteger MinimumBidAmount { get; set; } + + [Parameter("uint256", "buyoutBidAmount", 5)] + public virtual BigInteger BuyoutBidAmount { get; set; } + + [Parameter("uint64", "timeBufferInSeconds", 6)] + public virtual ulong TimeBufferInSeconds { get; set; } + + [Parameter("uint64", "bidBufferBps", 7)] + public virtual ulong BidBufferBps { get; set; } + + [Parameter("uint64", "startTimestamp", 8)] + public virtual ulong StartTimestamp { get; set; } + + [Parameter("uint64", "endTimestamp", 9)] + public virtual ulong EndTimestamp { get; set; } + + [Parameter("address", "auctionCreator", 10)] + public virtual string AuctionCreator { get; set; } + + [Parameter("address", "assetContract", 11)] + public virtual string AssetContract { get; set; } + + [Parameter("address", "currency", 12)] + public virtual string Currency { get; set; } + + [Parameter("uint8", "tokenType", 13)] + public virtual byte TokenType { get; set; } + + [Parameter("uint8", "status", 14)] + public virtual byte Status { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs.meta new file mode 100644 index 00000000..acbeb386 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/Auction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7b5485c0ada31f44a1e92f98a9fa246 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs new file mode 100644 index 00000000..44639722 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs @@ -0,0 +1,44 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EnglishAuctionsLogic.ContractDefinition +{ + public partial class AuctionParameters : AuctionParametersBase { } + + public class AuctionParametersBase + { + [Parameter("address", "assetContract", 1)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "minimumBidAmount", 5)] + public virtual BigInteger MinimumBidAmount { get; set; } + + [Parameter("uint256", "buyoutBidAmount", 6)] + public virtual BigInteger BuyoutBidAmount { get; set; } + + [Parameter("uint64", "timeBufferInSeconds", 7)] + public virtual ulong TimeBufferInSeconds { get; set; } + + [Parameter("uint64", "bidBufferBps", 8)] + public virtual ulong BidBufferBps { get; set; } + + [Parameter("uint64", "startTimestamp", 9)] + public virtual ulong StartTimestamp { get; set; } + + [Parameter("uint64", "endTimestamp", 10)] + public virtual ulong EndTimestamp { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs.meta new file mode 100644 index 00000000..5c40eee6 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/AuctionParameters.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ef0d0b689b8d854e8ef88647ffc6d91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs new file mode 100644 index 00000000..7148ec4f --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs @@ -0,0 +1,325 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.EnglishAuctionsLogic.ContractDefinition +{ + public partial class EnglishAuctionsLogicDeployment : EnglishAuctionsLogicDeploymentBase + { + public EnglishAuctionsLogicDeployment() + : base(BYTECODE) { } + + public EnglishAuctionsLogicDeployment(string byteCode) + : base(byteCode) { } + } + + public class EnglishAuctionsLogicDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60a06040523480156200001157600080fd5b50604051620041403803806200414083398101604081905262000034916200006a565b60017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b00556001600160a01b03166080526200009c565b6000602082840312156200007d57600080fd5b81516001600160a01b03811681146200009557600080fd5b9392505050565b608051614081620000bf6000396000818161264801526131be01526140816000f3fe6080604052600436106100dd5760003560e01c80636891939d1161007f5780638b49d47e116100595780638b49d47e1461027c57806396b5a7551461029f578063c291537c146102bf578063ebf05a62146102df57600080fd5b80636891939d146101dc57806378bd7935146102225780637b0638011461024f57600080fd5b80631389b117116100bb5780631389b1171461014957806316002f4a1461017957806316654d401461019c5780632eb566bd146101bc57600080fd5b806303a54fe0146100e25780630858e5ad14610104578063119df25f14610117575b600080fd5b3480156100ee57600080fd5b506101026100fd36600461386f565b6102ff565b005b610102610112366004613888565b610614565b34801561012357600080fd5b5061012c610a11565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b5061016961016436600461386f565b610a8a565b6040519015158152602001610140565b34801561018557600080fd5b5061018e610b1d565b604051908152602001610140565b3480156101a857600080fd5b5061018e6101b73660046138aa565b610b2d565b3480156101c857600080fd5b506101696101d7366004613888565b61102b565b3480156101e857600080fd5b506101fc6101f736600461386f565b611237565b604080516001600160a01b03948516815293909216602084015290820152606001610140565b34801561022e57600080fd5b5061024261023d36600461386f565b6113d0565b60405161014091906139ea565b34801561025b57600080fd5b5061026f61026a366004613888565b611513565b60405161014091906139ff565b34801561028857600080fd5b506102916119d7565b604051610140929190613a4e565b3480156102ab57600080fd5b506101026102ba36600461386f565b611a6d565b3480156102cb57600080fd5b5061026f6102da366004613888565b611dbe565b3480156102eb57600080fd5b506101026102fa36600461386f565b611ff1565b600260008051602061402c83398151915254036103375760405162461bcd60e51b815260040161032e90613a7d565b60405180910390fd5b600260008051602061402c8339815191525560006103536122ee565b60008381526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115610433576104336138c3565b6001811115610444576104446138c3565b81526020016008820160159054906101000a900460ff16600381111561046c5761046c6138c3565b600381111561047d5761047d6138c3565b9052509050600061048c6122ee565b60008481526002918201602090815260409182902082516060810184528154815260018201546001600160a01b031692810192909252909201549082015290506003826101a0015160038111156104e5576104e56138c3565b036105025760405162461bcd60e51b815260040161032e90613ab4565b428261010001516001600160401b031611156105305760405162461bcd60e51b815260040161032e90613aeb565b60208101516001600160a01b031661058a5760405162461bcd60e51b815260206004820152601f60248201527f4d61726b6574706c6163653a206e6f20626964732077657265206d6164652e00604482015260640161032e565b6105948282612312565b6002826101a0015160038111156105ad576105ad6138c3565b146105f75760026105bc6122ee565b600085815260019190910160205260409020600801805460ff60a81b1916600160a81b8360038111156105f1576105f16138c3565b02179055505b5050600161061060008051602061402c83398151915290565b5550565b600260008051602061402c83398151915254036106435760405162461bcd60e51b815260040161032e90613a7d565b600260008051602061402c833981519152558160016106606122ee565b60008381526001919091016020526040902060080154600160a81b900460ff166003811115610691576106916138c3565b146106ae5760405162461bcd60e51b815260040161032e90613ab4565b60006106b86122ee565b60008581526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115610798576107986138c3565b60018111156107a9576107a96138c3565b81526020016008820160159054906101000a900460ff1660038111156107d1576107d16138c3565b60038111156107e2576107e26138c3565b815250509050428161010001516001600160401b03161180156108125750428160e001516001600160401b031611155b61085e5760405162461bcd60e51b815260206004820152601e60248201527f4d61726b6574706c6163653a20696e6163746976652061756374696f6e2e0000604482015260640161032e565b826000036108bd5760405162461bcd60e51b815260206004820152602660248201527f4d61726b6574706c6163653a2042696464696e672077697468207a65726f206160448201526536b7bab73a1760d11b606482015260840161032e565b6101608101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14806108eb575034155b6109485760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574706c6163653a20696e76616c6964206e617469766520746f6b6560448201526737399039b2b73a1760c11b606482015260840161032e565b80608001518311158061095d57506080810151155b6109ba5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574706c6163653a2042696464696e672061626f7665206275796f756044820152673a10383934b1b29760c11b606482015260840161032e565b600060405180606001604052808681526020016109d5610a11565b6001600160a01b0316815260200185905290506109f282826125ec565b5050506001610a0c60008051602061402c83398151915290565b555050565b60405163572b6c0560e01b8152336004820152600090309063572b6c0590602401602060405180830381865afa158015610a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a739190613b2d565b15610a85575060131936013560601c90565b503390565b6000816001610a976122ee565b60008381526001919091016020526040902060080154600160a81b900460ff166003811115610ac857610ac86138c3565b14610ae55760405162461bcd60e51b815260040161032e90613ab4565b42610aee6122ee565b6000948552600101602052604090932060050154600160c01b90046001600160401b0316929092101592915050565b6000610b276122ee565b54919050565b60003063a32fa5b37ff94103142c1baabe9ac2b5d1487bf783de9e69cfeea9a72f5c9c94afd7877b8c610b5e610a11565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc9190613b2d565b610c075760405162461bcd60e51b815260206004820152600c60248201526b214c49535445525f524f4c4560a01b604482015260640161032e565b610c146020830183613b72565b60405163a32fa5b360e01b81527f86d5cf0a6bdc8d859ba3bdc97043337c82a0e609035f378e419298b6a3e00ae660048201526001600160a01b0382166024820152309063a32fa5b390604401602060405180830381865afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190613b2d565b610cdc5760405162461bcd60e51b815260206004820152600b60248201526a2141535345545f524f4c4560a81b604482015260640161032e565b610ce46129ca565b91506000610cf0610a11565b90506000610d09610d046020870187613b72565b6129fb565b9050610d23610d1d36879003870187613c15565b82612b69565b6000604051806101c001604052808681526020018760200135815260200187604001358152602001876080013581526020018760a0013581526020018760c0016020810190610d729190613cc1565b6001600160401b03168152602001610d91610100890160e08a01613cc1565b6001600160401b03168152602001610db161012089016101008a01613cc1565b6001600160401b03168152602001610dd161014089016101208a01613cc1565b6001600160401b03168152602001846001600160a01b03168152602001876000016020810190610e019190613b72565b6001600160a01b03168152602001610e1f6080890160608a01613b72565b6001600160a01b03168152602001836001811115610e3f57610e3f6138c3565b815260200160019052905080610e536122ee565b600087815260019182016020908152604091829020845181559084015181840155908301516002820155606083015160038201556080830151600482015560a083015160058201805460c086015160e08701516101008801516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03938216600160401b026001600160801b031990951691909616179290921716929092179190911790556101208301516006820180546001600160a01b039283166001600160a01b031991821617909155610140850151600784018054918416918316919091179055610160850151600884018054919093169181168217835561018086015193946001600160a81b031990911690911790600160a01b908490811115610f8857610f886138c3565b02179055506101a082015160088201805460ff60a81b1916600160a81b836003811115610fb757610fb76138c3565b0217905550905050610fca833083612e0d565b610fd76020870187613b72565b6001600160a01b031685846001600160a01b03167f5afd538bb1e7fc354db91c5dc4876ea2321a22fb8fbb69c84bda1f84ce1f45df8460405161101a91906139ea565b60405180910390a450505050919050565b60008260016110386122ee565b60008381526001919091016020526040902060080154600160a81b900460ff166003811115611069576110696138c3565b146110865760405162461bcd60e51b815260040161032e90613ab4565b60006110906122ee565b60008681526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115611170576111706138c3565b6001811115611181576111816138c3565b81526020016008820160159054906101000a900460ff1660038111156111a9576111a96138c3565b60038111156111ba576111ba6138c3565b905250905060006111c96122ee565b6000878152600291820160209081526040918290208251606080820185528254825260018301546001600160a01b03169382019390935293015491830182905284015160c085015192935061122b9290919088906001600160401b0316612f50565b935050505b5092915050565b6000806000806112456122ee565b60008681526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115611325576113256138c3565b6001811115611336576113366138c3565b81526020016008820160159054906101000a900460ff16600381111561135e5761135e6138c3565b600381111561136f5761136f6138c3565b9052509050600061137e6122ee565b6000968752600290810160209081526040978890208851606081018a528154815260018201546001600160a01b0316928101839052920154919097018190526101609092015195969194509092505050565b6113d86137fc565b6113e06122ee565b60008381526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff16908111156114c0576114c06138c3565b60018111156114d1576114d16138c3565b81526020016008820160159054906101000a900460ff1660038111156114f9576114f96138c3565b600381111561150a5761150a6138c3565b90525092915050565b606081831115801561152c57506115286122ee565b5482105b6115685760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b604482015260640161032e565b60006115748484613cf2565b61157f906001613d05565b6001600160401b0381111561159657611596613b8f565b6040519080825280602002602001820160405280156115cf57816020015b6115bc6137fc565b8152602001906001900390816115b45790505b5090506000845b8481116118385760006115e98783613cf2565b90506115f36122ee565b60008381526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff16908111156116d3576116d36138c3565b60018111156116e4576116e46138c3565b81526020016008820160159054906101000a900460ff16600381111561170c5761170c6138c3565b600381111561171d5761171d6138c3565b8152505084828151811061173357611733613d18565b60200260200101819052504284828151811061175157611751613d18565b602002602001015160e001516001600160401b03161115801561179a57504284828151811061178257611782613d18565b602002602001015161010001516001600160401b0316115b80156117d5575060018482815181106117b5576117b5613d18565b60200260200101516101a0015160038111156117d3576117d36138c3565b145b8015611812575060006001600160a01b03168482815181106117f9576117f9613d18565b602002602001015161014001516001600160a01b031614155b1561182557611822600184613d05565b92505b50611831600182613d05565b90506115d6565b50806001600160401b0381111561185157611851613b8f565b60405190808252806020026020018201604052801561188a57816020015b6118776137fc565b81526020019060019003908161186f5790505b508251909350600090815b818110156119cc57428582815181106118b0576118b0613d18565b602002602001015160e001516001600160401b0316111580156118f95750428582815181106118e1576118e1613d18565b602002602001015161010001516001600160401b0316115b80156119345750600185828151811061191457611914613d18565b60200260200101516101a001516003811115611932576119326138c3565b145b8015611971575060006001600160a01b031685828151811061195857611958613d18565b602002602001015161014001516001600160a01b031614155b156119ba5784818151811061198857611988613d18565b602002602001015186848061199c90613d2e565b9550815181106119ae576119ae613d18565b60200260200101819052505b6119c5600182613d05565b9050611895565b505050505092915050565b60405163572b6c0560e01b81523360048201523690600090309063572b6c0590602401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613b2d565b15611a645760008036611a4f601482613cf2565b92611a5c93929190613d47565b915091509091565b50600091369150565b806001611a786122ee565b60008381526001919091016020526040902060080154600160a81b900460ff166003811115611aa957611aa96138c3565b14611ac65760405162461bcd60e51b815260040161032e90613ab4565b81611acf610a11565b6001600160a01b0316611ae06122ee565b600083815260019190910160205260409020600601546001600160a01b031614611b565760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574706c6163653a206e6f742061756374696f6e2063726561746f726044820152601760f91b606482015260840161032e565b6000611b606122ee565b60008581526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115611c4057611c406138c3565b6001811115611c5157611c516138c3565b81526020016008820160159054906101000a900460ff166003811115611c7957611c796138c3565b6003811115611c8a57611c8a6138c3565b90525090506000611c996122ee565b60008681526002918201602090815260409182902082516060810184528154815260018201546001600160a01b03169281018390529301549183019190915290915015611d285760405162461bcd60e51b815260206004820152601f60248201527f4d61726b6574706c6163653a206269647320616c7265616479206d6164652e00604482015260640161032e565b6003611d326122ee565b600087815260019190910160205260409020600801805460ff60a81b1916600160a81b836003811115611d6757611d676138c3565b0217905550611d7c3083610120015184612e0d565b61012082015160405186916001600160a01b0316907fd68d26ab7202e0ff43e7ee058c16686e737f214c5832bfc1dd2fbb0518f60d8e90600090a35050505050565b6060818311158015611dd75750611dd36122ee565b5482105b611e135760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b604482015260640161032e565b611e1d8383613cf2565b611e28906001613d05565b6001600160401b03811115611e3f57611e3f613b8f565b604051908082528060200260200182016040528015611e7857816020015b611e656137fc565b815260200190600190039081611e5d5790505b509050825b82811161123057611e8c6122ee565b60008281526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff1690811115611f6c57611f6c6138c3565b6001811115611f7d57611f7d6138c3565b81526020016008820160159054906101000a900460ff166003811115611fa557611fa56138c3565b6003811115611fb657611fb66138c3565b90525082611fc48684613cf2565b81518110611fd457611fd4613d18565b6020908102919091010152611fea600182613d05565b9050611e7d565b600260008051602061402c83398151915254036120205760405162461bcd60e51b815260040161032e90613a7d565b600260008051602061402c8339815191525561203a6122ee565b60008281526003919091016020526040902054610100900460ff16156120725760405162461bcd60e51b815260040161032e90613d71565b600161207c6122ee565b60008381526003919091016020526040812080549215156101000261ff0019909316929092179091556120ad6122ee565b60008381526001918201602090815260409182902082516101c081018452815481528185015492810192909252600281015492820192909252600382015460608201526004820154608082015260058201546001600160401b0380821660a0840152600160401b8204811660c0840152600160801b8204811660e0840152600160c01b9091041661010082015260068201546001600160a01b039081166101208301526007830154811661014083015260088301549081166101608301529092610180840191600160a01b900460ff169081111561218d5761218d6138c3565b600181111561219e5761219e6138c3565b81526020016008820160159054906101000a900460ff1660038111156121c6576121c66138c3565b60038111156121d7576121d76138c3565b905250905060006121e66122ee565b60008481526002918201602090815260409182902082516060810184528154815260018201546001600160a01b031692810192909252909201549082015290506003826101a00151600381111561223f5761223f6138c3565b0361225c5760405162461bcd60e51b815260040161032e90613ab4565b428261010001516001600160401b0316111561228a5760405162461bcd60e51b815260040161032e90613aeb565b60208101516001600160a01b03166122e45760405162461bcd60e51b815260206004820152601f60248201527f4d61726b6574706c6163653a206e6f20626964732077657265206d6164652e00604482015260640161032e565b6105948282612f9f565b7f89032daddd224983b4d69fda31dc440901185d9636f6e798dbe1e433d9d34c0090565b61231a6122ee565b82516000908152600391909101602052604090205460ff161561234f5760405162461bcd60e51b815260040161032e90613d71565b60016123596122ee565b8351600090815260039190910160205260409020805460ff1916911515919091179055426001600160401b0316610100830152806123956122ee565b835160009081526002918201602090815260409182902084518155908401516001820180546001600160a01b0319166001600160a01b03909216919091179055920151910155816123e46122ee565b8351600090815260019182016020908152604091829020845181559084015181840155908301516002820155606083015160038201556080830151600482015560a083015160058201805460c086015160e08701516101008801516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03938216600160401b026001600160801b031990951691909616179290921716929092179190911790556101208301516006820180546001600160a01b039283166001600160a01b031991821617909155610140850151600784018054918416918316919091179055610160850151600884018054919093169181168217835561018086015193946001600160a81b031990911690911790600160a01b90849081111561251b5761251b6138c3565b02179055506101a082015160088201805460ff60a81b1916600160a81b83600381111561254a5761254a6138c3565b021790555090505061256130826020015184612e0d565b612569610a11565b6001600160a01b03168261014001516001600160a01b031683600001517f7003143824ad94e684efcfd33e097dd7cd0e67243daf20f345f5186a9a7ba00a856020015186610120015186602001516040516125e0939291909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a45050565b60006125f66122ee565b835160009081526002918201602090815260409182902082516060810184528154815260018201546001600160a01b0316928101929092529092015482820181905290840151608086015192935090917f0000000000000000000000000000000000000000000000000000000000000000901580159061267a575085608001518210155b1561269c5760808601516040860181905291506126978686612312565b612916565b6126b9866060015184848960c001516001600160401b0316612f50565b6127055760405162461bcd60e51b815260206004820152601d60248201527f4d61726b6574706c6163653a206e6f742077696e6e696e67206269642e000000604482015260640161032e565b8461270e6122ee565b875160009081526002918201602090815260409182902084518155908401516001820180546001600160a01b0319166001600160a01b0390921691909117905592015191015560a08601516101008701516001600160401b039182169161277791429116613cf2565b11612916578560a0015186610100018181516127939190613db7565b6001600160401b0316905250856127a86122ee565b8751600090815260019182016020908152604091829020845181559084015181840155908301516002820155606083015160038201556080830151600482015560a083015160058201805460c086015160e08701516101008801516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03938216600160401b026001600160801b031990951691909616179290921716929092179190911790556101208301516006820180546001600160a01b039283166001600160a01b031991821617909155610140850151600784018054918416918316919091179055610160850151600884018054919093169181168217835561018086015193946001600160a81b031990911690911790600160a01b9084908111156128df576128df6138c3565b02179055506101a082015160088201805460ff60a81b1916600160a81b83600381111561290e5761290e6138c3565b021790555050505b60208401516001600160a01b0316158015906129325750600083115b1561294d5761294d8661016001513086602001518685613049565b6129638661016001518660200151308585613049565b8561014001516001600160a01b031685602001516001600160a01b031687600001517f433a278e1c55403e97ab8ffef6ce9fddd5d1fb2695745bbc3affbe0b8106ec6b88604001518a6040516129ba929190613dd7565b60405180910390a4505050505050565b60006129d46122ee565b54905060016129e16122ee565b80546000906129f1908490613d05565b9250508190555090565b6040516301ffc9a760e01b8152636cdb3d1360e11b60048201526000906001600160a01b038316906301ffc9a790602401602060405180830381865afa158015612a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6d9190613b2d565b15612a7a57506001919050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015612ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae99190613b2d565b15612af657506000919050565b60405162461bcd60e51b815260206004820152603760248201527f4d61726b6574706c6163653a2061756374696f6e656420746f6b656e206d757360448201527f742062652045524331313535206f72204552433732312e000000000000000000606482015260840161032e565b919050565b6000826040015111612bcc5760405162461bcd60e51b815260206004820152602660248201527f4d61726b6574706c6163653a2061756374696f6e696e67207a65726f20717561604482015265373a34ba3c9760d11b606482015260840161032e565b816040015160011480612bf057506001816001811115612bee57612bee6138c3565b145b612c4e5760405162461bcd60e51b815260206004820152602960248201527f4d61726b6574706c6163653a2061756374696f6e696e6720696e76616c69642060448201526838bab0b73a34ba3c9760b91b606482015260840161032e565b60008260c001516001600160401b031611612cab5760405162461bcd60e51b815260206004820152601c60248201527f4d61726b6574706c6163653a206e6f2074696d652d6275666665722e00000000604482015260640161032e565b60008260e001516001600160401b031611612d085760405162461bcd60e51b815260206004820152601b60248201527f4d61726b6574706c6163653a206e6f206269642d6275666665722e0000000000604482015260640161032e565b42826101000151610e10612d1c9190613db7565b6001600160401b031610158015612d4e57508161012001516001600160401b03168261010001516001600160401b0316105b612d9a5760405162461bcd60e51b815260206004820181905260248201527f4d61726b6574706c6163653a20696e76616c69642074696d657374616d70732e604482015260640161032e565b60a08201511580612db3575081608001518260a0015110155b612e095760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574706c6163653a20696e76616c69642062696420616d6f756e74736044820152601760f91b606482015260840161032e565b5050565b60018161018001516001811115612e2657612e266138c3565b03612ec15761014081015160208201516040808401519051637921219560e11b81526001600160a01b03878116600483015286811660248301526044820193909352606481019190915260a06084820152600060a482015291169063f242432a9060c401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50505050505050565b60008161018001516001811115612eda57612eda6138c3565b03612f4b576101408101516020820151604051635c46a7ef60e11b81526001600160a01b03868116600483015285811660248301526044820192909252608060648201526000608482015291169063b88d4fde9060a401600060405180830381600087803b158015612ea457600080fd5b505050565b600083600003612f64575083821015612f97565b8383118015612f9457508184612710612f7d8287613cf2565b612f879190613dec565b612f919190613e03565b10155b90505b949350505050565b6040810151610120830151610160840151612fbd91309184876131ba565b612fc5610a11565b6001600160a01b03168361014001516001600160a01b031684600001517f7003143824ad94e684efcfd33e097dd7cd0e67243daf20f345f5186a9a7ba00a8660200151876101200151876020015160405161303c939291909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a4505050565b81156131b35773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038616016131a757306001600160a01b038516036130ee57604051632e1a7d4d60e01b8152600481018390526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b505050506130e98383836133da565b6131b3565b306001600160a01b0384160361319c573482146131435760405162461bcd60e51b81526020600482015260136024820152721b5cd9cb9d985b1d5948084f48185b5bdd5b9d606a1b604482015260640161032e565b806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561317e57600080fd5b505af1158015613192573d6000803e3d6000fd5b50505050506131b3565b6130e98383836133da565b6131b3858585856134a5565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000806000306001600160a01b031663d45573f66040518163ffffffff1660e01b81526004016040805180830381865afa158015613221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132459190613e25565b9092509050600061271061325d61ffff841689613dec565b6132679190613e03565b9050613276888b858489613049565b6132808188613cf2565b6101408701516020880151604051637a99dc0160e11b81526001600160a01b0390921660048301526024820152604481018990529094506000935083925030915063f533b802906064016000604051808303816000875af11580156132e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133119190810190613ef4565b8151919350915080156133ca5760008060005b838110156133c65785818151811061333e5761333e613d18565b6020026020010151915084818151811061335a5761335a613d18565b60200260200101519250828710156133ac5760405162461bcd60e51b815260206004820152601560248201527466656573206578636565642074686520707269636560581b604482015260640161032e565b6133b98b8e84868c613049565b9582900395600101613324565b5050505b505050612eb88588888486613049565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114613427576040519150601f19603f3d011682016040523d82523d6000602084013e61342c565b606091505b505090508061349f57816001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561347057600080fd5b505af1158015613484573d6000803e3d6000fd5b5061349f935050506001600160a01b038416905085856134fd565b50505050565b816001600160a01b0316836001600160a01b0316031561349f57306001600160a01b038416036134e8576134e36001600160a01b03851683836134fd565b61349f565b61349f6001600160a01b038516848484613560565b6040516001600160a01b038316602482015260448101829052612f4b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613598565b6040516001600160a01b038085166024830152831660448201526064810182905261349f9085906323b872dd60e01b90608401613529565b60006135ed826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661366a9092919063ffffffff16565b805190915015612f4b578080602001905181019061360b9190613b2d565b612f4b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161032e565b60606136798484600085613683565b90505b9392505050565b6060824710156136e45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161032e565b600080866001600160a01b031685876040516137009190613fdc565b60006040518083038185875af1925050503d806000811461373d576040519150601f19603f3d011682016040523d82523d6000602084013e613742565b606091505b50915091506137538783838761375e565b979650505050505050565b606083156137cd5782516000036137c6576001600160a01b0385163b6137c65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161032e565b5081612f97565b612f9783838151156137e25781518083602001fd5b8060405162461bcd60e51b815260040161032e9190613ff8565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061018082019081526020016000905290565b60006020828403121561388157600080fd5b5035919050565b6000806040838503121561389b57600080fd5b50508035926020909101359150565b600061014082840312156138bd57600080fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b600281106138e9576138e96138c3565b9052565b600481106138e9576138e96138c3565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015161394360a08401826001600160401b03169052565b5060c081015161395e60c08401826001600160401b03169052565b5060e081015161397960e08401826001600160401b03169052565b50610100818101516001600160401b031690830152610120808201516001600160a01b0390811691840191909152610140808301518216908401526101608083015190911690830152610180808201516139d5828501826138d9565b50506101a08082015161349f828501826138ed565b6101c081016139f982846138fd565b92915050565b6020808252825182820181905260009190848201906040850190845b81811015613a4257613a2e8385516138fd565b928401926101c09290920191600101613a1b565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601d908201527f4d61726b6574706c6163653a20696e76616c69642061756374696f6e2e000000604082015260600190565b60208082526022908201527f4d61726b6574706c6163653a2061756374696f6e207374696c6c206163746976604082015261329760f11b606082015260800190565b600060208284031215613b3f57600080fd5b8151801515811461367c57600080fd5b6001600160a01b0381168114613b6457600080fd5b50565b8035612b6481613b4f565b600060208284031215613b8457600080fd5b813561367c81613b4f565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613bc857613bc8613b8f565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613bf657613bf6613b8f565b604052919050565b80356001600160401b0381168114612b6457600080fd5b60006101408284031215613c2857600080fd5b613c30613ba5565b613c3983613b67565b81526020830135602082015260408301356040820152613c5b60608401613b67565b60608201526080830135608082015260a083013560a0820152613c8060c08401613bfe565b60c0820152613c9160e08401613bfe565b60e0820152610100613ca4818501613bfe565b90820152610120613cb6848201613bfe565b908201529392505050565b600060208284031215613cd357600080fd5b61367c82613bfe565b634e487b7160e01b600052601160045260246000fd5b818103818111156139f9576139f9613cdc565b808201808211156139f9576139f9613cdc565b634e487b7160e01b600052603260045260246000fd5b600060018201613d4057613d40613cdc565b5060010190565b60008085851115613d5757600080fd5b83861115613d6457600080fd5b5050820193919092039150565b60208082526026908201527f4d61726b6574706c6163653a207061796f757420616c726561647920636f6d706040820152653632ba32b21760d11b606082015260800190565b6001600160401b0381811683821601908082111561123057611230613cdc565b8281526101e0810161367c60208301846138fd565b80820281158282048414176139f9576139f9613cdc565b600082613e2057634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613e3857600080fd5b8251613e4381613b4f565b602084015190925061ffff81168114613e5b57600080fd5b809150509250929050565b60006001600160401b03821115613e7f57613e7f613b8f565b5060051b60200190565b600082601f830112613e9a57600080fd5b81516020613eaf613eaa83613e66565b613bce565b82815260059290921b84018101918181019086841115613ece57600080fd5b8286015b84811015613ee95780518352918301918301613ed2565b509695505050505050565b60008060408385031215613f0757600080fd5b82516001600160401b0380821115613f1e57600080fd5b818501915085601f830112613f3257600080fd5b81516020613f42613eaa83613e66565b82815260059290921b84018101918181019089841115613f6157600080fd5b948201945b83861015613f88578551613f7981613b4f565b82529482019490820190613f66565b91880151919650909350505080821115613fa157600080fd5b50613fae85828601613e89565b9150509250929050565b60005b83811015613fd3578181015183820152602001613fbb565b50506000910152565b60008251613fee818460208701613fb8565b9190910192915050565b6020815260008251806020840152614017816040850160208701613fb8565b601f01601f1916919091016040019291505056fe1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b00a2646970667358221220935c5efcdde3c3128451107623c4630150b1ef3438e40d99cea32f93167dbfb364736f6c63430008130033"; + + public EnglishAuctionsLogicDeploymentBase() + : base(BYTECODE) { } + + public EnglishAuctionsLogicDeploymentBase(string byteCode) + : base(byteCode) { } + + [Parameter("address", "_nativeTokenWrapper", 1)] + public virtual string NativeTokenWrapper { get; set; } + } + + public partial class MsgDataFunction : MsgDataFunctionBase { } + + [Function("_msgData", "bytes")] + public class MsgDataFunctionBase : FunctionMessage { } + + public partial class MsgSenderFunction : MsgSenderFunctionBase { } + + [Function("_msgSender", "address")] + public class MsgSenderFunctionBase : FunctionMessage { } + + public partial class BidInAuctionFunction : BidInAuctionFunctionBase { } + + [Function("bidInAuction")] + public class BidInAuctionFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("uint256", "_bidAmount", 2)] + public virtual BigInteger BidAmount { get; set; } + } + + public partial class CancelAuctionFunction : CancelAuctionFunctionBase { } + + [Function("cancelAuction")] + public class CancelAuctionFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class CollectAuctionPayoutFunction : CollectAuctionPayoutFunctionBase { } + + [Function("collectAuctionPayout")] + public class CollectAuctionPayoutFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class CollectAuctionTokensFunction : CollectAuctionTokensFunctionBase { } + + [Function("collectAuctionTokens")] + public class CollectAuctionTokensFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class CreateAuctionFunction : CreateAuctionFunctionBase { } + + [Function("createAuction", "uint256")] + public class CreateAuctionFunctionBase : FunctionMessage + { + [Parameter("tuple", "_params", 1)] + public virtual AuctionParameters Params { get; set; } + } + + public partial class GetAllAuctionsFunction : GetAllAuctionsFunctionBase { } + + [Function("getAllAuctions", typeof(GetAllAuctionsOutputDTO))] + public class GetAllAuctionsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetAllValidAuctionsFunction : GetAllValidAuctionsFunctionBase { } + + [Function("getAllValidAuctions", typeof(GetAllValidAuctionsOutputDTO))] + public class GetAllValidAuctionsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetAuctionFunction : GetAuctionFunctionBase { } + + [Function("getAuction", typeof(GetAuctionOutputDTO))] + public class GetAuctionFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class GetWinningBidFunction : GetWinningBidFunctionBase { } + + [Function("getWinningBid", typeof(GetWinningBidOutputDTO))] + public class GetWinningBidFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class IsAuctionExpiredFunction : IsAuctionExpiredFunctionBase { } + + [Function("isAuctionExpired", "bool")] + public class IsAuctionExpiredFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class IsNewWinningBidFunction : IsNewWinningBidFunctionBase { } + + [Function("isNewWinningBid", "bool")] + public class IsNewWinningBidFunctionBase : FunctionMessage + { + [Parameter("uint256", "_auctionId", 1)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("uint256", "_bidAmount", 2)] + public virtual BigInteger BidAmount { get; set; } + } + + public partial class TotalAuctionsFunction : TotalAuctionsFunctionBase { } + + [Function("totalAuctions", "uint256")] + public class TotalAuctionsFunctionBase : FunctionMessage { } + + public partial class AuctionClosedEventDTO : AuctionClosedEventDTOBase { } + + [Event("AuctionClosed")] + public class AuctionClosedEventDTOBase : IEventDTO + { + [Parameter("uint256", "auctionId", 1, true)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("address", "assetContract", 2, true)] + public virtual string AssetContract { get; set; } + + [Parameter("address", "closer", 3, true)] + public virtual string Closer { get; set; } + + [Parameter("uint256", "tokenId", 4, false)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "auctionCreator", 5, false)] + public virtual string AuctionCreator { get; set; } + + [Parameter("address", "winningBidder", 6, false)] + public virtual string WinningBidder { get; set; } + } + + public partial class CancelledAuctionEventDTO : CancelledAuctionEventDTOBase { } + + [Event("CancelledAuction")] + public class CancelledAuctionEventDTOBase : IEventDTO + { + [Parameter("address", "auctionCreator", 1, true)] + public virtual string AuctionCreator { get; set; } + + [Parameter("uint256", "auctionId", 2, true)] + public virtual BigInteger AuctionId { get; set; } + } + + public partial class NewAuctionEventDTO : NewAuctionEventDTOBase { } + + [Event("NewAuction")] + public class NewAuctionEventDTOBase : IEventDTO + { + [Parameter("address", "auctionCreator", 1, true)] + public virtual string AuctionCreator { get; set; } + + [Parameter("uint256", "auctionId", 2, true)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("tuple", "auction", 4, false)] + public virtual Auction Auction { get; set; } + } + + public partial class NewBidEventDTO : NewBidEventDTOBase { } + + [Event("NewBid")] + public class NewBidEventDTOBase : IEventDTO + { + [Parameter("uint256", "auctionId", 1, true)] + public virtual BigInteger AuctionId { get; set; } + + [Parameter("address", "bidder", 2, true)] + public virtual string Bidder { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "bidAmount", 4, false)] + public virtual BigInteger BidAmount { get; set; } + + [Parameter("tuple", "auction", 5, false)] + public virtual Auction Auction { get; set; } + } + + public partial class MsgDataOutputDTO : MsgDataOutputDTOBase { } + + [FunctionOutput] + public class MsgDataOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class MsgSenderOutputDTO : MsgSenderOutputDTOBase { } + + [FunctionOutput] + public class MsgSenderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + } + + public partial class GetAllAuctionsOutputDTO : GetAllAuctionsOutputDTOBase { } + + [FunctionOutput] + public class GetAllAuctionsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_allAuctions", 1)] + public virtual List AllAuctions { get; set; } + } + + public partial class GetAllValidAuctionsOutputDTO : GetAllValidAuctionsOutputDTOBase { } + + [FunctionOutput] + public class GetAllValidAuctionsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_validAuctions", 1)] + public virtual List ValidAuctions { get; set; } + } + + public partial class GetAuctionOutputDTO : GetAuctionOutputDTOBase { } + + [FunctionOutput] + public class GetAuctionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "_auction", 1)] + public virtual Auction Auction { get; set; } + } + + public partial class GetWinningBidOutputDTO : GetWinningBidOutputDTOBase { } + + [FunctionOutput] + public class GetWinningBidOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "_bidder", 1)] + public virtual string Bidder { get; set; } + + [Parameter("address", "_currency", 2)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_bidAmount", 3)] + public virtual BigInteger BidAmount { get; set; } + } + + public partial class IsAuctionExpiredOutputDTO : IsAuctionExpiredOutputDTOBase { } + + [FunctionOutput] + public class IsAuctionExpiredOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsNewWinningBidOutputDTO : IsNewWinningBidOutputDTOBase { } + + [FunctionOutput] + public class IsNewWinningBidOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class TotalAuctionsOutputDTO : TotalAuctionsOutputDTOBase { } + + [FunctionOutput] + public class TotalAuctionsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs.meta new file mode 100644 index 00000000..7642d4e5 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EnglishAuctionsLogic/ContractDefinition/EnglishAuctionsLogicDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c64657c000b1a034d9d7d2007a1ba83b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint.meta new file mode 100644 index 00000000..e8f19982 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c891016af792dc4b886a7123fdc3f0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition.meta new file mode 100644 index 00000000..e4440d4a --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b2ca78d36b1b4742965b24fea32e841 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs new file mode 100644 index 00000000..674b1ad2 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs @@ -0,0 +1,20 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class AggregatorStakeInfo : AggregatorStakeInfoBase { } + + public class AggregatorStakeInfoBase + { + [Parameter("address", "aggregator", 1)] + public virtual string Aggregator { get; set; } + + [Parameter("tuple", "stakeInfo", 2)] + public virtual StakeInfo StakeInfo { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs.meta new file mode 100644 index 00000000..ed9cce1e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/AggregatorStakeInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c6fe0a9d74c1534d95be7067258e52b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs new file mode 100644 index 00000000..31ca2f69 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class DepositInfo : DepositInfoBase { } + + public class DepositInfoBase + { + [Parameter("uint112", "deposit", 1)] + public virtual BigInteger Deposit { get; set; } + + [Parameter("bool", "staked", 2)] + public virtual bool Staked { get; set; } + + [Parameter("uint112", "stake", 3)] + public virtual BigInteger Stake { get; set; } + + [Parameter("uint32", "unstakeDelaySec", 4)] + public virtual uint UnstakeDelaySec { get; set; } + + [Parameter("uint48", "withdrawTime", 5)] + public virtual ulong WithdrawTime { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs.meta new file mode 100644 index 00000000..b9b913dc --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/DepositInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f030c240a8fd78438087ea802d296e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs new file mode 100644 index 00000000..c88b0989 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs @@ -0,0 +1,533 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class EntryPointDeployment : EntryPointDeploymentBase + { + public EntryPointDeployment() + : base(BYTECODE) { } + + public EntryPointDeployment(string byteCode) + : base(byteCode) { } + } + + public class EntryPointDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60a0604052604051620000129062000055565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b50600160025562000063565b610249806200406483390190565b608051613fde62000086600039600081816113310152612e350152613fde6000f3fe6080604052600436106101235760003560e01c80638f41ec5a116100a0578063bb9fe6bf11610064578063bb9fe6bf1461043a578063c23a5cea1461044f578063d6383f941461046f578063ee2194231461048f578063fc7e286d146104af57600080fd5b80638f41ec5a146103b2578063957122ab146103c75780639b249f69146103e7578063a619353114610407578063b760faf91461042757600080fd5b8063205c2878116100e7578063205c2878146101f657806335567e1a146102165780634b1d7cf5146102365780635287ce121461025657806370a082311461037357600080fd5b80630396cb60146101385780630bd28e3b1461014b5780631b2e01b81461016b5780631d732756146101b65780631fad948c146101d657600080fd5b366101335761013133610564565b005b600080fd5b610131610146366004613108565b6105cb565b34801561015757600080fd5b5061013161016636600461314a565b61085a565b34801561017757600080fd5b506101a3610186366004613185565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156101c257600080fd5b506101a36101d136600461337f565b610891565b3480156101e257600080fd5b506101316101f1366004613488565b610a04565b34801561020257600080fd5b506101316102113660046134de565b610bc8565b34801561022257600080fd5b506101a3610231366004613185565b610d44565b34801561024257600080fd5b50610131610251366004613488565b610d8a565b34801561026257600080fd5b5061031b61027136600461350a565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b031660009081526020818152604091829020825160a08101845281546001600160701b038082168352600160701b820460ff16151594830194909452600160781b90049092169282019290925260019091015463ffffffff81166060830152640100000000900465ffffffffffff16608082015290565b6040805182516001600160701b03908116825260208085015115159083015283830151169181019190915260608083015163ffffffff169082015260809182015165ffffffffffff169181019190915260a0016101ad565b34801561037f57600080fd5b506101a361038e36600461350a565b6001600160a01b03166000908152602081905260409020546001600160701b031690565b3480156103be57600080fd5b506101a3600181565b3480156103d357600080fd5b506101316103e2366004613527565b61121a565b3480156103f357600080fd5b506101316104023660046135ab565b611317565b34801561041357600080fd5b506101a3610422366004613605565b6113d2565b61013161043536600461350a565b610564565b34801561044657600080fd5b50610131611414565b34801561045b57600080fd5b5061013161046a36600461350a565b61153d565b34801561047b57600080fd5b5061013161048a366004613639565b611775565b34801561049b57600080fd5b506101316104aa366004613605565b611870565b3480156104bb57600080fd5b5061051e6104ca36600461350a565b600060208190529081526040902080546001909101546001600160701b0380831692600160701b810460ff1692600160781b9091049091169063ffffffff811690640100000000900465ffffffffffff1685565b604080516001600160701b0396871681529415156020860152929094169183019190915263ffffffff16606082015265ffffffffffff909116608082015260a0016101ad565b61056e8134611a4c565b6001600160a01b03811660008181526020818152604091829020805492516001600160701b03909316835292917f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c491015b60405180910390a25050565b33600090815260208190526040902063ffffffff82166106325760405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c617900000000000060448201526064015b60405180910390fd5b600181015463ffffffff90811690831610156106905760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610629565b80546000906106b0903490600160781b90046001600160701b03166136b0565b9050600081116106f75760405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b6044820152606401610629565b6001600160701b0381111561073f5760405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b6044820152606401610629565b6040805160a08101825283546001600160701b0390811682526001602080840182815286841685870190815263ffffffff808b16606088019081526000608089018181523380835296829052908a902098518954955194518916600160781b02600160781b600160e81b0319951515600160701b026effffffffffffffffffffffffffffff199097169190991617949094179290921695909517865551949092018054925165ffffffffffff166401000000000269ffffffffffffffffffff19909316949093169390931717905590517fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c019061084d908490879091825263ffffffff16602082015260400190565b60405180910390a2505050565b3360009081526001602090815260408083206001600160c01b03851684529091528120805491610889836136c3565b919050555050565b6000805a90503330146108e65760405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152606401610629565b8451604081015160608201518101611388015a10156109105763deaddead60e01b60005260206000fd5b8751600090156109a457600061092d846000015160008c86611ae8565b9050806109a2576000610941610800611b00565b80519091501561099c5784600001516001600160a01b03168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20187602001518460405161099392919061372c565b60405180910390a35b60019250505b505b600088608001515a86030190506109f66000838b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611b2c915050565b9a9950505050505050505050565b6002805403610a555760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610629565b60028055816000816001600160401b03811115610a7457610a746131ba565b604051908082528060200260200182016040528015610aad57816020015b610a9a61307e565b815260200190600190039081610a925790505b50905060005b82811015610b26576000828281518110610acf57610acf613745565b60200260200101519050600080610b0a848a8a87818110610af257610af2613745565b9050602002810190610b04919061375b565b85611e23565b91509150610b1b848383600061200e565b505050600101610ab3565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b83811015610bb057610ba481888884818110610b7357610b73613745565b9050602002810190610b85919061375b565b858481518110610b9757610b97613745565b60200260200101516121aa565b90910190600101610b55565b50610bbb84826122d1565b5050600160025550505050565b33600090815260208190526040902080546001600160701b0316821115610c315760405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610629565b8054610c479083906001600160701b031661377c565b81546001600160701b0319166001600160701b0391909116178155604080516001600160a01b03851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a26000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610cf3576040519150601f19603f3d011682016040523d82523d6000602084013e610cf8565b606091505b5050905080610d3e5760405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b6044820152606401610629565b50505050565b6001600160a01b03821660009081526001602090815260408083206001600160c01b038516845290915290819020549082901b67ffffffffffffffff1916175b92915050565b6002805403610ddb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610629565b60028055816000805b82811015610f535736868683818110610dff57610dff613745565b9050602002810190610e11919061378f565b9050366000610e2083806137a5565b90925090506000610e37604085016020860161350a565b90506000196001600160a01b03821601610e935760405162461bcd60e51b815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610629565b6001600160a01b03811615610f30576001600160a01b03811663e3563a4f8484610ec060408901896137ee565b6040518563ffffffff1660e01b8152600401610edf9493929190613999565b60006040518083038186803b158015610ef757600080fd5b505afa925050508015610f08575060015b610f305760405163086a9f7560e41b81526001600160a01b0382166004820152602401610629565b610f3a82876136b0565b9550505050508080610f4b906136c3565b915050610de4565b506000816001600160401b03811115610f6e57610f6e6131ba565b604051908082528060200260200182016040528015610fa757816020015b610f9461307e565b815260200190600190039081610f8c5790505b506040519091507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a16000805b848110156110bc5736888883818110610ff357610ff3613745565b9050602002810190611005919061378f565b905036600061101483806137a5565b9092509050600061102b604085016020860161350a565b90508160005b818110156110a357600089898151811061104d5761104d613745565b602002602001015190506000806110708b898987818110610af257610af2613745565b915091506110808483838961200e565b8a61108a816136c3565b9b5050505050808061109b906136c3565b915050611031565b50505050505080806110b4906136c3565b915050610fd8565b50600080915060005b858110156111d557368989838181106110e0576110e0613745565b90506020028101906110f2919061378f565b9050611104604082016020830161350a565b6001600160a01b03167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061114683806137a5565b90925090508060005b818110156111bd576111918885858481811061116d5761116d613745565b905060200281019061117f919061375b565b8b8b81518110610b9757610b97613745565b61119b90886136b0565b9650876111a7816136c3565b98505080806111b5906136c3565b91505061114f565b505050505080806111cd906136c3565b9150506110c5565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261120b86826122d1565b50506001600255505050505050565b8315801561123057506001600160a01b0383163b155b1561127d5760405162461bcd60e51b815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610629565b601481106112f55760006112946014828486613a16565b61129d91613a40565b60601c9050803b6000036112f35760405162461bcd60e51b815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610629565b505b60405162461bcd60e51b81526020600482015260006024820152604401610629565b604051632b870d1b60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063570e1a36906113689086908690600401613a75565b6020604051808303816000875af1158015611387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ab9190613a89565b604051633653dc0360e11b81526001600160a01b0382166004820152909150602401610629565b60006113dd826123cf565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b3360009081526020819052604081206001810154909163ffffffff909116900361146d5760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b6044820152606401610629565b8054600160701b900460ff166114b95760405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b6044820152606401610629565b60018101546000906114d19063ffffffff1642613aa6565b60018301805469ffffffffffff00000000191664010000000065ffffffffffff841690810291909117909155835460ff60701b1916845560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020016105bf565b3360009081526020819052604090208054600160781b90046001600160701b0316806115a25760405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b6044820152606401610629565b6001820154640100000000900465ffffffffffff166116035760405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610629565b60018201544264010000000090910465ffffffffffff1611156116685760405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610629565b60018201805469ffffffffffffffffffff191690558154600160781b600160e81b0319168255604080516001600160a01b03851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461171f576040519150601f19603f3d011682016040523d82523d6000602084013e611724565b606091505b5050905080610d3e5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610629565b61177d61307e565b611786856123e8565b60008061179560008885611e23565b9150915060006117a583836124c2565b90506117b043600052565b60006117be60008a876121aa565b90506117c943600052565b600060606001600160a01b038a161561183f57896001600160a01b031689896040516117f6929190613acc565b6000604051808303816000865af19150503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b5090925090505b866080015183856020015186604001518585604051630116f59360e71b815260040161062996959493929190613adc565b61187861307e565b611881826123e8565b60008061189060008585611e23565b9150915060006118a7846000015160a0015161258e565b8451519091506000906118b99061258e565b90506118d8604051806040016040528060008152602001600081525090565b3660006118e860408a018a6137ee565b9092509050600060148210156118ff57600061191a565b61190d601460008486613a16565b61191691613a40565b60601c5b90506119258161258e565b9350505050600061193686866124c2565b9050600081600001519050600060016001600160a01b0316826001600160a01b031614905060006040518060c001604052808b6080015181526020018b6040015181526020018315158152602001856020015165ffffffffffff168152602001856040015165ffffffffffff1681526020016119b38c6060015190565b905290506001600160a01b038316158015906119d957506001600160a01b038316600114155b15611a2b5760006040518060400160405280856001600160a01b03168152602001611a038661258e565b81525090508187878a84604051633ebb2d3960e21b8152600401610629959493929190613b7e565b8086868960405163e0cff05f60e01b81526004016106299493929190613bfe565b6001600160a01b03821660009081526020819052604081208054909190611a7d9084906001600160701b03166136b0565b90506001600160701b03811115611ac95760405162461bcd60e51b815260206004820152601060248201526f6465706f736974206f766572666c6f7760801b6044820152606401610629565b81546001600160701b0319166001600160701b03919091161790555050565b6000806000845160208601878987f195945050505050565b60603d82811115611b0e5750815b604051602082018101604052818152816000602083013e9392505050565b6000805a855190915060009081611b42826125dd565b60a08301519091506001600160a01b038116611b615782519350611d08565b809350600088511115611d0857868202955060028a6002811115611b8757611b87613c55565b14611bf957606083015160405163a9a2340960e01b81526001600160a01b0383169163a9a2340991611bc1908e908d908c90600401613c6b565b600060405180830381600088803b158015611bdb57600080fd5b5087f1158015611bef573d6000803e3d6000fd5b5050505050611d08565b606083015160405163a9a2340960e01b81526001600160a01b0383169163a9a2340991611c2e908e908d908c90600401613c6b565b600060405180830381600088803b158015611c4857600080fd5b5087f193505050508015611c5a575060015b611d0857611c66613cb2565b806308c379a003611cbf5750611c7a613cce565b80611c855750611cc1565b8b81604051602001611c979190613d57565b60408051601f1981840301815290829052631101335b60e11b8252610629929160040161372c565b505b8a604051631101335b60e11b81526004016106299181526040602082018190526012908201527110504d4c081c1bdcdd13dc081c995d995c9d60721b606082015260800190565b5a85038701965081870295508589604001511015611d71578a604051631101335b60e11b815260040161062991815260406020808301829052908201527f414135312070726566756e642062656c6f772061637475616c476173436f7374606082015260800190565b6040890151869003611d838582611a4c565b6000808c6002811115611d9857611d98613c55565b1490508460a001516001600160a01b031685600001516001600160a01b03168c602001517f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f8860200151858d8f604051611e0b949392919093845291151560208401526040830152606082015260800190565b60405180910390a45050505050505095945050505050565b60008060005a8451909150611e38868261260d565b611e41866113d2565b6020860152604081015160608201516080830151171760e087013517610100870135176effffffffffffffffffffffffffffff811115611ec35760405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610629565b600080611ecf84612706565b9050611edd8a8a8a84612753565b85516020870151919950919350611ef4919061298b565b611f4a5789604051631101335b60e11b8152600401610629918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b611f5343600052565b60a08401516060906001600160a01b031615611f7b57611f768b8b8b85876129d8565b975090505b60005a87039050808b60a001351015611fe0578b604051631101335b60e11b8152600401610629918152604060208201819052601e908201527f41413430206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60408a018390528160608b015260c08b01355a8803018a608001818152505050505050505050935093915050565b60008061201a85612bfb565b91509150816001600160a01b0316836001600160a01b0316146120805785604051631101335b60e11b81526004016106299181526040602082018190526014908201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b80156120d85785604051631101335b60e11b81526004016106299181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b60006120e385612bfb565b925090506001600160a01b0381161561213f5786604051631101335b60e11b81526004016106299181526040602082018190526014908201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b81156121a15786604051631101335b60e11b81526004016106299181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f742064756060820152606560f81b608082015260a00190565b50505050505050565b6000805a905060006121bd846060015190565b905030631d7327566121d260608801886137ee565b87856040518563ffffffff1660e01b81526004016121f39493929190613d95565b6020604051808303816000875af192505050801561222e575060408051601f3d908101601f1916820190925261222b91810190613e48565b60015b6122c557600060206000803e50600051632152215360e01b81016122905786604051631101335b60e11b8152600401610629918152604060208201819052600f908201526e41413935206f7574206f662067617360881b606082015260800190565b600085608001515a6122a2908661377c565b6122ac91906136b0565b90506122bc886002888685611b2c565b945050506122c8565b92505b50509392505050565b6001600160a01b0382166123275760405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610629565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612374576040519150601f19603f3d011682016040523d82523d6000602084013e612379565b606091505b50509050806123ca5760405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610629565b505050565b60006123da82612c4e565b805190602001209050919050565b3063957122ab6123fb60408401846137ee565b612408602086018661350a565b6124166101208701876137ee565b6040518663ffffffff1660e01b8152600401612436959493929190613e61565b60006040518083038186803b15801561244e57600080fd5b505afa92505050801561245f575060015b6124bf5761246b613cb2565b806308c379a0036124b3575061247f613cce565b8061248a57506124b5565b8051156124af57600081604051631101335b60e11b815260040161062992919061372c565b5050565b505b3d6000803e3d6000fd5b50565b60408051606081018252600080825260208201819052918101829052906124e884612d21565b905060006124f584612d21565b82519091506001600160a01b03811661250c575080515b602080840151604080860151928501519085015191929165ffffffffffff808316908516101561253a578193505b8065ffffffffffff168365ffffffffffff161115612556578092505b5050604080516060810182526001600160a01b03909416845265ffffffffffff92831660208501529116908201529250505092915050565b604080518082018252600080825260208083018281526001600160a01b03959095168252819052919091208054600160781b90046001600160701b031682526001015463ffffffff1690915290565b60c081015160e0820151600091908082036125f9575092915050565b61260582488301612d92565b949350505050565b61261a602083018361350a565b6001600160a01b0316815260208083013590820152608080830135604083015260a0830135606083015260c0808401359183019190915260e08084013591830191909152610100830135908201523660006126796101208501856137ee565b909250905080156126f95760148110156126d55760405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610629565b6126e3601460008385613a16565b6126ec91613a40565b60601c60a0840152610d3e565b600060a084015250505050565b60a081015160009081906001600160a01b0316612724576001612727565b60035b60ff16905060008360800151828560600151028560400151010190508360c00151810292505050919050565b60008060005a8551805191925090612778898861277360408c018c6137ee565b612daa565b60a082015161278643600052565b60006001600160a01b0382166127ce576001600160a01b0383166000908152602081905260409020546001600160701b03168881116127c7578089036127ca565b60005b9150505b606084015160208a0151604051633a871cdd60e01b81526001600160a01b03861692633a871cdd929091612808918f918790600401613e97565b60206040518083038160008887f193505050508015612844575060408051601f3d908101601f1916820190925261284191810190613e48565b60015b6128ce57612850613cb2565b806308c379a0036128815750612864613cce565b8061286f5750612883565b8b81604051602001611c979190613ebc565b505b8a604051631101335b60e11b8152600401610629918152604060208201819052601690820152754141323320726576657274656420286f72204f4f472960501b606082015260800190565b95506001600160a01b038216612978576001600160a01b038316600090815260208190526040902080546001600160701b0316808a111561295b578c604051631101335b60e11b81526004016106299181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b81546001600160701b031916908a90036001600160701b03161790555b5a85039650505050505094509492505050565b6001600160a01b038216600090815260016020908152604080832084821c80855292528220805484916001600160401b0383169190856129ca836136c3565b909155501495945050505050565b82516060818101519091600091848111612a345760405162461bcd60e51b815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152606401610629565b60a08201516001600160a01b038116600090815260208190526040902080548784039291906001600160701b031689811015612abc578c604051631101335b60e11b8152600401610629918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8981038260000160006101000a8154816001600160701b0302191690836001600160701b03160217905550826001600160a01b031663f465c77e858e8e602001518e6040518563ffffffff1660e01b8152600401612b1c93929190613e97565b60006040518083038160008887f193505050508015612b5d57506040513d6000823e601f3d908101601f19168201604052612b5a9190810190613ef3565b60015b612be757612b69613cb2565b806308c379a003612b9a5750612b7d613cce565b80612b885750612b9c565b8d81604051602001611c979190613f7e565b505b8c604051631101335b60e11b8152600401610629918152604060208201819052601690820152754141333320726576657274656420286f72204f4f472960501b606082015260800190565b909e909d509b505050505050505050505050565b60008082600003612c1157506000928392509050565b6000612c1c84612d21565b9050806040015165ffffffffffff16421180612c435750806020015165ffffffffffff1642105b905194909350915050565b6060813560208301356000612c6e612c6960408701876137ee565b61306b565b90506000612c82612c6960608801886137ee565b9050608086013560a087013560c088013560e08901356101008a01356000612cb1612c696101208e018e6137ee565b604080516001600160a01b039c909c1660208d01528b81019a909a5260608b019890985250608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408084019190915281518084039091018152610160909201905292915050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003612d5d575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6000818310612da15781612da3565b825b9392505050565b8015610d3e578251516001600160a01b0381163b15612e155784604051631101335b60e11b8152600401610629918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b835160600151604051632b870d1b60e11b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163570e1a369190612e6d9088908890600401613a75565b60206040518083038160008887f1158015612e8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eb19190613a89565b90506001600160a01b038116612f135785604051631101335b60e11b8152600401610629918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b816001600160a01b0316816001600160a01b031614612f7d5785604051631101335b60e11b815260040161062991815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b806001600160a01b03163b600003612fe05785604051631101335b60e11b815260040161062991815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000612fef6014828688613a16565b612ff891613a40565b60601c9050826001600160a01b031686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160a0015160405161305a9291906001600160a01b0392831681529116602082015260400190565b60405180910390a350505050505050565b6000604051828085833790209392505050565b6040518060a001604052806130e360405180610100016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b60006020828403121561311a57600080fd5b813563ffffffff81168114612da357600080fd5b80356001600160c01b038116811461314557600080fd5b919050565b60006020828403121561315c57600080fd5b612da38261312e565b6001600160a01b03811681146124bf57600080fd5b803561314581613165565b6000806040838503121561319857600080fd5b82356131a381613165565b91506131b16020840161312e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60a081018181106001600160401b03821117156131ef576131ef6131ba565b60405250565b61010081018181106001600160401b03821117156131ef576131ef6131ba565b601f8201601f191681016001600160401b038111828210171561323a5761323a6131ba565b6040525050565b60006001600160401b0382111561325a5761325a6131ba565b50601f01601f191660200190565b600081830361018081121561327c57600080fd5b604051613288816131d0565b8092506101008083121561329b57600080fd5b60405192506132a9836131f5565b6132b28561317a565b8352602085013560208401526040850135604084015260608501356060840152608085013560808401526132e860a0860161317a565b60a084015260c085013560c084015260e085013560e084015282825280850135602083015250610120840135604082015261014084013560608201526101608401356080820152505092915050565b60008083601f84011261334957600080fd5b5081356001600160401b0381111561336057600080fd5b60208301915083602082850101111561337857600080fd5b9250929050565b6000806000806101c0858703121561339657600080fd5b84356001600160401b03808211156133ad57600080fd5b818701915087601f8301126133c157600080fd5b81356133cc81613241565b6040516133d98282613215565b8281528a60208487010111156133ee57600080fd5b826020860160208301376000602084830101528098505050506134148860208901613268565b94506101a087013591508082111561342b57600080fd5b5061343887828801613337565b95989497509550505050565b60008083601f84011261345657600080fd5b5081356001600160401b0381111561346d57600080fd5b6020830191508360208260051b850101111561337857600080fd5b60008060006040848603121561349d57600080fd5b83356001600160401b038111156134b357600080fd5b6134bf86828701613444565b90945092505060208401356134d381613165565b809150509250925092565b600080604083850312156134f157600080fd5b82356134fc81613165565b946020939093013593505050565b60006020828403121561351c57600080fd5b8135612da381613165565b60008060008060006060868803121561353f57600080fd5b85356001600160401b038082111561355657600080fd5b61356289838a01613337565b90975095506020880135915061357782613165565b9093506040870135908082111561358d57600080fd5b5061359a88828901613337565b969995985093965092949392505050565b600080602083850312156135be57600080fd5b82356001600160401b038111156135d457600080fd5b6135e085828601613337565b90969095509350505050565b600061016082840312156135ff57600080fd5b50919050565b60006020828403121561361757600080fd5b81356001600160401b0381111561362d57600080fd5b612605848285016135ec565b6000806000806060858703121561364f57600080fd5b84356001600160401b038082111561366657600080fd5b613672888389016135ec565b95506020870135915061368482613165565b9093506040860135908082111561342b57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610d8457610d8461369a565b6000600182016136d5576136d561369a565b5060010190565b60005b838110156136f75781810151838201526020016136df565b50506000910152565b600081518084526137188160208601602086016136dc565b601f01601f19169290920160200192915050565b8281526040602082015260006126056040830184613700565b634e487b7160e01b600052603260045260246000fd5b6000823561015e1983360301811261377257600080fd5b9190910192915050565b81810381811115610d8457610d8461369a565b60008235605e1983360301811261377257600080fd5b6000808335601e198436030181126137bc57600080fd5b8301803591506001600160401b038211156137d657600080fd5b6020019150600581901b360382131561337857600080fd5b6000808335601e1984360301811261380557600080fd5b8301803591506001600160401b0382111561381f57600080fd5b60200191503681900382131561337857600080fd5b6000808335601e1984360301811261384b57600080fd5b83016020810192503590506001600160401b0381111561386a57600080fd5b80360382131561337857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101606138c1846138b48561317a565b6001600160a01b03169052565b602083013560208501526138d86040840184613834565b8260408701526138eb8387018284613879565b925050506138fc6060840184613834565b858303606087015261390f838284613879565b925050506080830135608085015260a083013560a085015260c083013560c085015260e083013560e085015261010080840135818601525061012061395681850185613834565b86840383880152613968848284613879565b935050505061014061397c81850185613834565b8684038388015261398e848284613879565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b898110156139ff57868503605f190184528235368c900361015e190181126139dd578283fd5b6139e9868d83016138a2565b95505060209384019392909201916001016139b7565b50505050828103602084015261398e818587613879565b60008085851115613a2657600080fd5b83861115613a3357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015613a6d5780818660140360031b1b83161692505b505092915050565b602081526000612605602083018486613879565b600060208284031215613a9b57600080fd5b8151612da381613165565b65ffffffffffff818116838216019080821115613ac557613ac561369a565b5092915050565b8183823760009101908152919050565b868152856020820152600065ffffffffffff8087166040840152808616606084015250831515608083015260c060a0830152613b1b60c0830184613700565b98975050505050505050565b80518252602081015160208301526040810151151560408301526000606082015165ffffffffffff8082166060860152806080850151166080860152505060a082015160c060a085015261260560c0850182613700565b6000610140808352613b9281840189613b27565b915050613bac602083018780518252602090810151910152565b845160608301526020948501516080830152835160a08301529284015160c082015281516001600160a01b031660e0820152908301518051610100830152909201516101209092019190915292915050565b60e081526000613c1160e0830187613b27565b9050613c2a602083018680518252602090810151910152565b8351606083015260208401516080830152825160a0830152602083015160c083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b600060038510613c8b57634e487b7160e01b600052602160045260246000fd5b84825260606020830152613ca26060830185613700565b9050826040830152949350505050565b600060033d1115613ccb5760046000803e5060005160e01c5b90565b600060443d1015613cdc5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715613d0b57505050505090565b8285019150815181811115613d235750505050505090565b843d8701016020828501011115613d3d5750505050505090565b613d4c60208286010187613215565b509095945050505050565b75020a09a98103837b9ba27b8103932bb32b93a32b21d160551b815260008251613d888160168501602087016136dc565b9190910160160192915050565b60006101c0808352613daa8184018789613879565b9050845160018060a01b03808251166020860152602082015160408601526040820151606086015260608201516080860152608082015160a08601528060a08301511660c08601525060c081015160e085015260e08101516101008501525060208501516101208401526040850151610140840152606085015161016084015260808501516101808401528281036101a084015261398e8185613700565b600060208284031215613e5a57600080fd5b5051919050565b606081526000613e75606083018789613879565b6001600160a01b03861660208401528281036040840152613b1b818587613879565b606081526000613eaa60608301866138a2565b60208301949094525060400152919050565b6e020a09919903932bb32b93a32b21d1608d1b815260008251613ee681600f8501602087016136dc565b91909101600f0192915050565b60008060408385031215613f0657600080fd5b82516001600160401b03811115613f1c57600080fd5b8301601f81018513613f2d57600080fd5b8051613f3881613241565b604051613f458282613215565b828152876020848601011115613f5a57600080fd5b613f6b8360208301602087016136dc565b6020969096015195979596505050505050565b6e020a09999903932bb32b93a32b21d1608d1b815260008251613ee681600f8501602087016136dc56fea2646970667358221220e529e83f496cbaa1beba7aee5bc5f8195cec291388a599666dd6f18ef294cf2364736f6c63430008130033608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e366004610122565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b60008061006f6014828587610194565b610078916101be565b60405160609190911c80825291507f69164a0df9992ad714a1743f4bb075b0dcea5cd42298cf7d5abfc8e17799cf1a9060200160405180910390a160006100c28460148188610194565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af1905060005193508061011957600093505b50505092915050565b6000806020838503121561013557600080fd5b823567ffffffffffffffff8082111561014d57600080fd5b818501915085601f83011261016157600080fd5b81358181111561017057600080fd5b86602082850101111561018257600080fd5b60209290920196919550909350505050565b600080858511156101a457600080fd5b838611156101b157600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156101eb5780818660140360031b1b83161692505b50509291505056fea264697066735822122029d2f2bfc708c1ec6606332dbf33ea9dbbe14d19037eb75edeb139af938ab79264736f6c63430008130033"; + + public EntryPointDeploymentBase() + : base(BYTECODE) { } + + public EntryPointDeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class SigValidationFailedFunction : SigValidationFailedFunctionBase { } + + [Function("SIG_VALIDATION_FAILED", "uint256")] + public class SigValidationFailedFunctionBase : FunctionMessage { } + + public partial class AddStakeFunction : AddStakeFunctionBase { } + + [Function("addStake")] + public class AddStakeFunctionBase : FunctionMessage + { + [Parameter("uint32", "unstakeDelaySec", 1)] + public virtual uint UnstakeDelaySec { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class DepositToFunction : DepositToFunctionBase { } + + [Function("depositTo")] + public class DepositToFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class DepositsFunction : DepositsFunctionBase { } + + [Function("deposits", typeof(DepositsOutputDTO))] + public class DepositsFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetDepositInfoFunction : GetDepositInfoFunctionBase { } + + [Function("getDepositInfo", typeof(GetDepositInfoOutputDTO))] + public class GetDepositInfoFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class GetNonceFunction : GetNonceFunctionBase { } + + [Function("getNonce", "uint256")] + public class GetNonceFunctionBase : FunctionMessage + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + + [Parameter("uint192", "key", 2)] + public virtual BigInteger Key { get; set; } + } + + public partial class GetSenderAddressFunction : GetSenderAddressFunctionBase { } + + [Function("getSenderAddress")] + public class GetSenderAddressFunctionBase : FunctionMessage + { + [Parameter("bytes", "initCode", 1)] + public virtual byte[] InitCode { get; set; } + } + + public partial class GetUserOpHashFunction : GetUserOpHashFunctionBase { } + + [Function("getUserOpHash", "bytes32")] + public class GetUserOpHashFunctionBase : FunctionMessage + { + [Parameter("tuple", "userOp", 1)] + public virtual UserOperation UserOp { get; set; } + } + + public partial class HandleAggregatedOpsFunction : HandleAggregatedOpsFunctionBase { } + + [Function("handleAggregatedOps")] + public class HandleAggregatedOpsFunctionBase : FunctionMessage + { + [Parameter("tuple[]", "opsPerAggregator", 1)] + public virtual List OpsPerAggregator { get; set; } + + [Parameter("address", "beneficiary", 2)] + public virtual string Beneficiary { get; set; } + } + + public partial class HandleOpsFunction : HandleOpsFunctionBase { } + + [Function("handleOps")] + public class HandleOpsFunctionBase : FunctionMessage + { + [Parameter("tuple[]", "ops", 1)] + public virtual List Ops { get; set; } + + [Parameter("address", "beneficiary", 2)] + public virtual string Beneficiary { get; set; } + } + + public partial class IncrementNonceFunction : IncrementNonceFunctionBase { } + + [Function("incrementNonce")] + public class IncrementNonceFunctionBase : FunctionMessage + { + [Parameter("uint192", "key", 1)] + public virtual BigInteger Key { get; set; } + } + + public partial class InnerHandleOpFunction : InnerHandleOpFunctionBase { } + + [Function("innerHandleOp", "uint256")] + public class InnerHandleOpFunctionBase : FunctionMessage + { + [Parameter("bytes", "callData", 1)] + public virtual byte[] CallData { get; set; } + + [Parameter("tuple", "opInfo", 2)] + public virtual UserOpInfo OpInfo { get; set; } + + [Parameter("bytes", "context", 3)] + public virtual byte[] Context { get; set; } + } + + public partial class NonceSequenceNumberFunction : NonceSequenceNumberFunctionBase { } + + [Function("nonceSequenceNumber", "uint256")] + public class NonceSequenceNumberFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint192", "", 2)] + public virtual BigInteger ReturnValue2 { get; set; } + } + + public partial class SimulateHandleOpFunction : SimulateHandleOpFunctionBase { } + + [Function("simulateHandleOp")] + public class SimulateHandleOpFunctionBase : FunctionMessage + { + [Parameter("tuple", "op", 1)] + public virtual UserOperation Op { get; set; } + + [Parameter("address", "target", 2)] + public virtual string Target { get; set; } + + [Parameter("bytes", "targetCallData", 3)] + public virtual byte[] TargetCallData { get; set; } + } + + public partial class SimulateValidationFunction : SimulateValidationFunctionBase { } + + [Function("simulateValidation")] + public class SimulateValidationFunctionBase : FunctionMessage + { + [Parameter("tuple", "userOp", 1)] + public virtual UserOperation UserOp { get; set; } + } + + public partial class UnlockStakeFunction : UnlockStakeFunctionBase { } + + [Function("unlockStake")] + public class UnlockStakeFunctionBase : FunctionMessage { } + + public partial class WithdrawStakeFunction : WithdrawStakeFunctionBase { } + + [Function("withdrawStake")] + public class WithdrawStakeFunctionBase : FunctionMessage + { + [Parameter("address", "withdrawAddress", 1)] + public virtual string WithdrawAddress { get; set; } + } + + public partial class WithdrawToFunction : WithdrawToFunctionBase { } + + [Function("withdrawTo")] + public class WithdrawToFunctionBase : FunctionMessage + { + [Parameter("address", "withdrawAddress", 1)] + public virtual string WithdrawAddress { get; set; } + + [Parameter("uint256", "withdrawAmount", 2)] + public virtual BigInteger WithdrawAmount { get; set; } + } + + public partial class AccountDeployedEventDTO : AccountDeployedEventDTOBase { } + + [Event("AccountDeployed")] + public class AccountDeployedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "userOpHash", 1, true)] + public virtual byte[] UserOpHash { get; set; } + + [Parameter("address", "sender", 2, true)] + public virtual string Sender { get; set; } + + [Parameter("address", "factory", 3, false)] + public virtual string Factory { get; set; } + + [Parameter("address", "paymaster", 4, false)] + public virtual string Paymaster { get; set; } + } + + public partial class DepositedEventDTO : DepositedEventDTOBase { } + + [Event("Deposited")] + public class DepositedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("uint256", "totalDeposit", 2, false)] + public virtual BigInteger TotalDeposit { get; set; } + } + + public partial class SignatureAggregatorChangedEventDTO : SignatureAggregatorChangedEventDTOBase { } + + [Event("SignatureAggregatorChanged")] + public class SignatureAggregatorChangedEventDTOBase : IEventDTO + { + [Parameter("address", "aggregator", 1, true)] + public virtual string Aggregator { get; set; } + } + + public partial class StakeLockedEventDTO : StakeLockedEventDTOBase { } + + [Event("StakeLocked")] + public class StakeLockedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("uint256", "totalStaked", 2, false)] + public virtual BigInteger TotalStaked { get; set; } + + [Parameter("uint256", "unstakeDelaySec", 3, false)] + public virtual BigInteger UnstakeDelaySec { get; set; } + } + + public partial class StakeUnlockedEventDTO : StakeUnlockedEventDTOBase { } + + [Event("StakeUnlocked")] + public class StakeUnlockedEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("uint256", "withdrawTime", 2, false)] + public virtual BigInteger WithdrawTime { get; set; } + } + + public partial class StakeWithdrawnEventDTO : StakeWithdrawnEventDTOBase { } + + [Event("StakeWithdrawn")] + public class StakeWithdrawnEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "withdrawAddress", 2, false)] + public virtual string WithdrawAddress { get; set; } + + [Parameter("uint256", "amount", 3, false)] + public virtual BigInteger Amount { get; set; } + } + + public partial class UserOperationEventEventDTO : UserOperationEventEventDTOBase { } + + [Event("UserOperationEvent")] + public class UserOperationEventEventDTOBase : IEventDTO + { + [Parameter("bytes32", "userOpHash", 1, true)] + public virtual byte[] UserOpHash { get; set; } + + [Parameter("address", "sender", 2, true)] + public virtual string Sender { get; set; } + + [Parameter("address", "paymaster", 3, true)] + public virtual string Paymaster { get; set; } + + [Parameter("uint256", "nonce", 4, false)] + public virtual BigInteger Nonce { get; set; } + + [Parameter("bool", "success", 5, false)] + public virtual bool Success { get; set; } + + [Parameter("uint256", "actualGasCost", 6, false)] + public virtual BigInteger ActualGasCost { get; set; } + + [Parameter("uint256", "actualGasUsed", 7, false)] + public virtual BigInteger ActualGasUsed { get; set; } + } + + public partial class UserOperationRevertReasonEventDTO : UserOperationRevertReasonEventDTOBase { } + + [Event("UserOperationRevertReason")] + public class UserOperationRevertReasonEventDTOBase : IEventDTO + { + [Parameter("bytes32", "userOpHash", 1, true)] + public virtual byte[] UserOpHash { get; set; } + + [Parameter("address", "sender", 2, true)] + public virtual string Sender { get; set; } + + [Parameter("uint256", "nonce", 3, false)] + public virtual BigInteger Nonce { get; set; } + + [Parameter("bytes", "revertReason", 4, false)] + public virtual byte[] RevertReason { get; set; } + } + + public partial class WithdrawnEventDTO : WithdrawnEventDTOBase { } + + [Event("Withdrawn")] + public class WithdrawnEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "withdrawAddress", 2, false)] + public virtual string WithdrawAddress { get; set; } + + [Parameter("uint256", "amount", 3, false)] + public virtual BigInteger Amount { get; set; } + } + + public partial class ExecutionResultError : ExecutionResultErrorBase { } + + [Error("ExecutionResult")] + public class ExecutionResultErrorBase : IErrorDTO + { + [Parameter("uint256", "preOpGas", 1)] + public virtual BigInteger PreOpGas { get; set; } + + [Parameter("uint256", "paid", 2)] + public virtual BigInteger Paid { get; set; } + + [Parameter("uint48", "validAfter", 3)] + public virtual ulong ValidAfter { get; set; } + + [Parameter("uint48", "validUntil", 4)] + public virtual ulong ValidUntil { get; set; } + + [Parameter("bool", "targetSuccess", 5)] + public virtual bool TargetSuccess { get; set; } + + [Parameter("bytes", "targetResult", 6)] + public virtual byte[] TargetResult { get; set; } + } + + public partial class FailedOpError : FailedOpErrorBase { } + + [Error("FailedOp")] + public class FailedOpErrorBase : IErrorDTO + { + [Parameter("uint256", "opIndex", 1)] + public virtual BigInteger OpIndex { get; set; } + + [Parameter("string", "reason", 2)] + public virtual string Reason { get; set; } + } + + public partial class SenderAddressResultError : SenderAddressResultErrorBase { } + + [Error("SenderAddressResult")] + public class SenderAddressResultErrorBase : IErrorDTO + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + } + + public partial class SignatureValidationFailedError : SignatureValidationFailedErrorBase { } + + [Error("SignatureValidationFailed")] + public class SignatureValidationFailedErrorBase : IErrorDTO + { + [Parameter("address", "aggregator", 1)] + public virtual string Aggregator { get; set; } + } + + public partial class ValidationResultError : ValidationResultErrorBase { } + + [Error("ValidationResult")] + public class ValidationResultErrorBase : IErrorDTO + { + [Parameter("tuple", "returnInfo", 1)] + public virtual ReturnInfo ReturnInfo { get; set; } + + [Parameter("tuple", "senderInfo", 2)] + public virtual StakeInfo SenderInfo { get; set; } + + [Parameter("tuple", "factoryInfo", 3)] + public virtual StakeInfo FactoryInfo { get; set; } + + [Parameter("tuple", "paymasterInfo", 4)] + public virtual StakeInfo PaymasterInfo { get; set; } + } + + public partial class ValidationResultWithAggregationError : ValidationResultWithAggregationErrorBase { } + + [Error("ValidationResultWithAggregation")] + public class ValidationResultWithAggregationErrorBase : IErrorDTO + { + [Parameter("tuple", "returnInfo", 1)] + public virtual ReturnInfo ReturnInfo { get; set; } + + [Parameter("tuple", "senderInfo", 2)] + public virtual StakeInfo SenderInfo { get; set; } + + [Parameter("tuple", "factoryInfo", 3)] + public virtual StakeInfo FactoryInfo { get; set; } + + [Parameter("tuple", "paymasterInfo", 4)] + public virtual StakeInfo PaymasterInfo { get; set; } + + [Parameter("tuple", "aggregatorInfo", 5)] + public virtual AggregatorStakeInfo AggregatorInfo { get; set; } + } + + public partial class SigValidationFailedOutputDTO : SigValidationFailedOutputDTOBase { } + + [FunctionOutput] + public class SigValidationFailedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class DepositsOutputDTO : DepositsOutputDTOBase { } + + [FunctionOutput] + public class DepositsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint112", "deposit", 1)] + public virtual BigInteger Deposit { get; set; } + + [Parameter("bool", "staked", 2)] + public virtual bool Staked { get; set; } + + [Parameter("uint112", "stake", 3)] + public virtual BigInteger Stake { get; set; } + + [Parameter("uint32", "unstakeDelaySec", 4)] + public virtual uint UnstakeDelaySec { get; set; } + + [Parameter("uint48", "withdrawTime", 5)] + public virtual ulong WithdrawTime { get; set; } + } + + public partial class GetDepositInfoOutputDTO : GetDepositInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDepositInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "info", 1)] + public virtual DepositInfo Info { get; set; } + } + + public partial class GetNonceOutputDTO : GetNonceOutputDTOBase { } + + [FunctionOutput] + public class GetNonceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "nonce", 1)] + public virtual BigInteger Nonce { get; set; } + } + + public partial class GetUserOpHashOutputDTO : GetUserOpHashOutputDTOBase { } + + [FunctionOutput] + public class GetUserOpHashOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class NonceSequenceNumberOutputDTO : NonceSequenceNumberOutputDTOBase { } + + [FunctionOutput] + public class NonceSequenceNumberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs.meta new file mode 100644 index 00000000..d5610f89 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/EntryPointDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbf6caf601b57a54286a286930d532c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs new file mode 100644 index 00000000..88df08c7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class MemoryUserOp : MemoryUserOpBase { } + + public class MemoryUserOpBase + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + + [Parameter("uint256", "nonce", 2)] + public virtual BigInteger Nonce { get; set; } + + [Parameter("uint256", "callGasLimit", 3)] + public virtual BigInteger CallGasLimit { get; set; } + + [Parameter("uint256", "verificationGasLimit", 4)] + public virtual BigInteger VerificationGasLimit { get; set; } + + [Parameter("uint256", "preVerificationGas", 5)] + public virtual BigInteger PreVerificationGas { get; set; } + + [Parameter("address", "paymaster", 6)] + public virtual string Paymaster { get; set; } + + [Parameter("uint256", "maxFeePerGas", 7)] + public virtual BigInteger MaxFeePerGas { get; set; } + + [Parameter("uint256", "maxPriorityFeePerGas", 8)] + public virtual BigInteger MaxPriorityFeePerGas { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs.meta new file mode 100644 index 00000000..ef5dd194 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/MemoryUserOp.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bcae3e8fbbffd8348b7203bb99dc9a3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs new file mode 100644 index 00000000..5336eaf0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class ReturnInfo : ReturnInfoBase { } + + public class ReturnInfoBase + { + [Parameter("uint256", "preOpGas", 1)] + public virtual BigInteger PreOpGas { get; set; } + + [Parameter("uint256", "prefund", 2)] + public virtual BigInteger Prefund { get; set; } + + [Parameter("bool", "sigFailed", 3)] + public virtual bool SigFailed { get; set; } + + [Parameter("uint48", "validAfter", 4)] + public virtual ulong ValidAfter { get; set; } + + [Parameter("uint48", "validUntil", 5)] + public virtual ulong ValidUntil { get; set; } + + [Parameter("bytes", "paymasterContext", 6)] + public virtual byte[] PaymasterContext { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs.meta new file mode 100644 index 00000000..a9518776 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/ReturnInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f15ffb8712628b4f91b3f6b3f86b39a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs new file mode 100644 index 00000000..78146651 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs @@ -0,0 +1,20 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class StakeInfo : StakeInfoBase { } + + public class StakeInfoBase + { + [Parameter("uint256", "stake", 1)] + public virtual BigInteger Stake { get; set; } + + [Parameter("uint256", "unstakeDelaySec", 2)] + public virtual BigInteger UnstakeDelaySec { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs.meta new file mode 100644 index 00000000..a02909b4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/StakeInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 786910affc9fc444798f3674ed674a45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs new file mode 100644 index 00000000..e468c0a0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class UserOpInfo : UserOpInfoBase { } + + public class UserOpInfoBase + { + [Parameter("tuple", "mUserOp", 1)] + public virtual MemoryUserOp MUserOp { get; set; } + + [Parameter("bytes32", "userOpHash", 2)] + public virtual byte[] UserOpHash { get; set; } + + [Parameter("uint256", "prefund", 3)] + public virtual BigInteger Prefund { get; set; } + + [Parameter("uint256", "contextOffset", 4)] + public virtual BigInteger ContextOffset { get; set; } + + [Parameter("uint256", "preOpGas", 5)] + public virtual BigInteger PreOpGas { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs.meta new file mode 100644 index 00000000..5d2a30c1 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2aa639111383464e94cebac44cbc0bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs new file mode 100644 index 00000000..97b60349 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class UserOperation : UserOperationBase { } + + public class UserOperationBase + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + + [Parameter("uint256", "nonce", 2)] + public virtual BigInteger Nonce { get; set; } + + [Parameter("bytes", "initCode", 3)] + public virtual byte[] InitCode { get; set; } + + [Parameter("bytes", "callData", 4)] + public virtual byte[] CallData { get; set; } + + [Parameter("uint256", "callGasLimit", 5)] + public virtual BigInteger CallGasLimit { get; set; } + + [Parameter("uint256", "verificationGasLimit", 6)] + public virtual BigInteger VerificationGasLimit { get; set; } + + [Parameter("uint256", "preVerificationGas", 7)] + public virtual BigInteger PreVerificationGas { get; set; } + + [Parameter("uint256", "maxFeePerGas", 8)] + public virtual BigInteger MaxFeePerGas { get; set; } + + [Parameter("uint256", "maxPriorityFeePerGas", 9)] + public virtual BigInteger MaxPriorityFeePerGas { get; set; } + + [Parameter("bytes", "paymasterAndData", 10)] + public virtual byte[] PaymasterAndData { get; set; } + + [Parameter("bytes", "signature", 11)] + public virtual byte[] Signature { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs.meta new file mode 100644 index 00000000..9ea0f431 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0a3688b4391f9d47a8a91396099829f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs new file mode 100644 index 00000000..85aba1f5 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.EntryPoint.ContractDefinition +{ + public partial class UserOpsPerAggregator : UserOpsPerAggregatorBase { } + + public class UserOpsPerAggregatorBase + { + [Parameter("tuple[]", "userOps", 1)] + public virtual List UserOps { get; set; } + + [Parameter("address", "aggregator", 2)] + public virtual string Aggregator { get; set; } + + [Parameter("bytes", "signature", 3)] + public virtual byte[] Signature { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs.meta new file mode 100644 index 00000000..294702f7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/ContractDefinition/UserOpsPerAggregator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c02b84d45af8dff4f8906be4027a0a26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs new file mode 100644 index 00000000..96a22b66 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs @@ -0,0 +1,473 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.EntryPoint.ContractDefinition; + +namespace Thirdweb.Contracts.EntryPoint +{ + public partial class EntryPointService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + EntryPointDeployment entryPointDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(entryPointDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, EntryPointDeployment entryPointDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(entryPointDeployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + EntryPointDeployment entryPointDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, entryPointDeployment, cancellationTokenSource); + return new EntryPointService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.IWeb3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public EntryPointService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public EntryPointService(Nethereum.Web3.IWeb3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task SigValidationFailedQueryAsync(SigValidationFailedFunction sigValidationFailedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(sigValidationFailedFunction, blockParameter); + } + + public Task SigValidationFailedQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task AddStakeRequestAsync(AddStakeFunction addStakeFunction) + { + return ContractHandler.SendRequestAsync(addStakeFunction); + } + + public Task AddStakeRequestAndWaitForReceiptAsync(AddStakeFunction addStakeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(addStakeFunction, cancellationToken); + } + + public Task AddStakeRequestAsync(uint unstakeDelaySec) + { + var addStakeFunction = new AddStakeFunction(); + addStakeFunction.UnstakeDelaySec = unstakeDelaySec; + + return ContractHandler.SendRequestAsync(addStakeFunction); + } + + public Task AddStakeRequestAndWaitForReceiptAsync(uint unstakeDelaySec, CancellationTokenSource cancellationToken = null) + { + var addStakeFunction = new AddStakeFunction(); + addStakeFunction.UnstakeDelaySec = unstakeDelaySec; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(addStakeFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task DepositToRequestAsync(DepositToFunction depositToFunction) + { + return ContractHandler.SendRequestAsync(depositToFunction); + } + + public Task DepositToRequestAndWaitForReceiptAsync(DepositToFunction depositToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(depositToFunction, cancellationToken); + } + + public Task DepositToRequestAsync(string account) + { + var depositToFunction = new DepositToFunction(); + depositToFunction.Account = account; + + return ContractHandler.SendRequestAsync(depositToFunction); + } + + public Task DepositToRequestAndWaitForReceiptAsync(string account, CancellationTokenSource cancellationToken = null) + { + var depositToFunction = new DepositToFunction(); + depositToFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(depositToFunction, cancellationToken); + } + + public Task DepositsQueryAsync(DepositsFunction depositsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(depositsFunction, blockParameter); + } + + public Task DepositsQueryAsync(string returnValue1, BlockParameter blockParameter = null) + { + var depositsFunction = new DepositsFunction(); + depositsFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryDeserializingToObjectAsync(depositsFunction, blockParameter); + } + + public Task GetDepositInfoQueryAsync(GetDepositInfoFunction getDepositInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDepositInfoFunction, blockParameter); + } + + public Task GetDepositInfoQueryAsync(string account, BlockParameter blockParameter = null) + { + var getDepositInfoFunction = new GetDepositInfoFunction(); + getDepositInfoFunction.Account = account; + + return ContractHandler.QueryDeserializingToObjectAsync(getDepositInfoFunction, blockParameter); + } + + public Task GetNonceQueryAsync(GetNonceFunction getNonceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getNonceFunction, blockParameter); + } + + public Task GetNonceQueryAsync(string sender, BigInteger key, BlockParameter blockParameter = null) + { + var getNonceFunction = new GetNonceFunction(); + getNonceFunction.Sender = sender; + getNonceFunction.Key = key; + + return ContractHandler.QueryAsync(getNonceFunction, blockParameter); + } + + public Task GetSenderAddressRequestAsync(GetSenderAddressFunction getSenderAddressFunction) + { + return ContractHandler.SendRequestAsync(getSenderAddressFunction); + } + + public Task GetSenderAddressRequestAndWaitForReceiptAsync(GetSenderAddressFunction getSenderAddressFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(getSenderAddressFunction, cancellationToken); + } + + public Task GetSenderAddressRequestAsync(byte[] initCode) + { + var getSenderAddressFunction = new GetSenderAddressFunction(); + getSenderAddressFunction.InitCode = initCode; + + return ContractHandler.SendRequestAsync(getSenderAddressFunction); + } + + public Task GetSenderAddressRequestAndWaitForReceiptAsync(byte[] initCode, CancellationTokenSource cancellationToken = null) + { + var getSenderAddressFunction = new GetSenderAddressFunction(); + getSenderAddressFunction.InitCode = initCode; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(getSenderAddressFunction, cancellationToken); + } + + public Task GetUserOpHashQueryAsync(GetUserOpHashFunction getUserOpHashFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getUserOpHashFunction, blockParameter); + } + + public Task GetUserOpHashQueryAsync(UserOperation userOp, BlockParameter blockParameter = null) + { + var getUserOpHashFunction = new GetUserOpHashFunction(); + getUserOpHashFunction.UserOp = userOp; + + return ContractHandler.QueryAsync(getUserOpHashFunction, blockParameter); + } + + public Task HandleAggregatedOpsRequestAsync(HandleAggregatedOpsFunction handleAggregatedOpsFunction) + { + return ContractHandler.SendRequestAsync(handleAggregatedOpsFunction); + } + + public Task HandleAggregatedOpsRequestAndWaitForReceiptAsync(HandleAggregatedOpsFunction handleAggregatedOpsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(handleAggregatedOpsFunction, cancellationToken); + } + + public Task HandleAggregatedOpsRequestAsync(List opsPerAggregator, string beneficiary) + { + var handleAggregatedOpsFunction = new HandleAggregatedOpsFunction(); + handleAggregatedOpsFunction.OpsPerAggregator = opsPerAggregator; + handleAggregatedOpsFunction.Beneficiary = beneficiary; + + return ContractHandler.SendRequestAsync(handleAggregatedOpsFunction); + } + + public Task HandleAggregatedOpsRequestAndWaitForReceiptAsync( + List opsPerAggregator, + string beneficiary, + CancellationTokenSource cancellationToken = null + ) + { + var handleAggregatedOpsFunction = new HandleAggregatedOpsFunction(); + handleAggregatedOpsFunction.OpsPerAggregator = opsPerAggregator; + handleAggregatedOpsFunction.Beneficiary = beneficiary; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(handleAggregatedOpsFunction, cancellationToken); + } + + public Task HandleOpsRequestAsync(HandleOpsFunction handleOpsFunction) + { + return ContractHandler.SendRequestAsync(handleOpsFunction); + } + + public Task HandleOpsRequestAndWaitForReceiptAsync(HandleOpsFunction handleOpsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(handleOpsFunction, cancellationToken); + } + + public Task HandleOpsRequestAsync(List ops, string beneficiary) + { + var handleOpsFunction = new HandleOpsFunction(); + handleOpsFunction.Ops = ops; + handleOpsFunction.Beneficiary = beneficiary; + + return ContractHandler.SendRequestAsync(handleOpsFunction); + } + + public Task HandleOpsRequestAndWaitForReceiptAsync(List ops, string beneficiary, CancellationTokenSource cancellationToken = null) + { + var handleOpsFunction = new HandleOpsFunction(); + handleOpsFunction.Ops = ops; + handleOpsFunction.Beneficiary = beneficiary; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(handleOpsFunction, cancellationToken); + } + + public Task IncrementNonceRequestAsync(IncrementNonceFunction incrementNonceFunction) + { + return ContractHandler.SendRequestAsync(incrementNonceFunction); + } + + public Task IncrementNonceRequestAndWaitForReceiptAsync(IncrementNonceFunction incrementNonceFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(incrementNonceFunction, cancellationToken); + } + + public Task IncrementNonceRequestAsync(BigInteger key) + { + var incrementNonceFunction = new IncrementNonceFunction(); + incrementNonceFunction.Key = key; + + return ContractHandler.SendRequestAsync(incrementNonceFunction); + } + + public Task IncrementNonceRequestAndWaitForReceiptAsync(BigInteger key, CancellationTokenSource cancellationToken = null) + { + var incrementNonceFunction = new IncrementNonceFunction(); + incrementNonceFunction.Key = key; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(incrementNonceFunction, cancellationToken); + } + + public Task InnerHandleOpRequestAsync(InnerHandleOpFunction innerHandleOpFunction) + { + return ContractHandler.SendRequestAsync(innerHandleOpFunction); + } + + public Task InnerHandleOpRequestAndWaitForReceiptAsync(InnerHandleOpFunction innerHandleOpFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(innerHandleOpFunction, cancellationToken); + } + + public Task InnerHandleOpRequestAsync(byte[] callData, UserOpInfo opInfo, byte[] context) + { + var innerHandleOpFunction = new InnerHandleOpFunction(); + innerHandleOpFunction.CallData = callData; + innerHandleOpFunction.OpInfo = opInfo; + innerHandleOpFunction.Context = context; + + return ContractHandler.SendRequestAsync(innerHandleOpFunction); + } + + public Task InnerHandleOpRequestAndWaitForReceiptAsync(byte[] callData, UserOpInfo opInfo, byte[] context, CancellationTokenSource cancellationToken = null) + { + var innerHandleOpFunction = new InnerHandleOpFunction(); + innerHandleOpFunction.CallData = callData; + innerHandleOpFunction.OpInfo = opInfo; + innerHandleOpFunction.Context = context; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(innerHandleOpFunction, cancellationToken); + } + + public Task NonceSequenceNumberQueryAsync(NonceSequenceNumberFunction nonceSequenceNumberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nonceSequenceNumberFunction, blockParameter); + } + + public Task NonceSequenceNumberQueryAsync(string returnValue1, BigInteger returnValue2, BlockParameter blockParameter = null) + { + var nonceSequenceNumberFunction = new NonceSequenceNumberFunction(); + nonceSequenceNumberFunction.ReturnValue1 = returnValue1; + nonceSequenceNumberFunction.ReturnValue2 = returnValue2; + + return ContractHandler.QueryAsync(nonceSequenceNumberFunction, blockParameter); + } + + public Task SimulateHandleOpRequestAsync(SimulateHandleOpFunction simulateHandleOpFunction) + { + return ContractHandler.SendRequestAsync(simulateHandleOpFunction); + } + + public Task SimulateHandleOpRequestAndWaitForReceiptAsync(SimulateHandleOpFunction simulateHandleOpFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(simulateHandleOpFunction, cancellationToken); + } + + public Task SimulateHandleOpRequestAsync(UserOperation op, string target, byte[] targetCallData) + { + var simulateHandleOpFunction = new SimulateHandleOpFunction(); + simulateHandleOpFunction.Op = op; + simulateHandleOpFunction.Target = target; + simulateHandleOpFunction.TargetCallData = targetCallData; + + return ContractHandler.SendRequestAsync(simulateHandleOpFunction); + } + + public Task SimulateHandleOpRequestAndWaitForReceiptAsync(UserOperation op, string target, byte[] targetCallData, CancellationTokenSource cancellationToken = null) + { + var simulateHandleOpFunction = new SimulateHandleOpFunction(); + simulateHandleOpFunction.Op = op; + simulateHandleOpFunction.Target = target; + simulateHandleOpFunction.TargetCallData = targetCallData; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(simulateHandleOpFunction, cancellationToken); + } + + public Task SimulateValidationRequestAsync(SimulateValidationFunction simulateValidationFunction) + { + return ContractHandler.SendRequestAsync(simulateValidationFunction); + } + + public Task SimulateValidationRequestAndWaitForReceiptAsync(SimulateValidationFunction simulateValidationFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(simulateValidationFunction, cancellationToken); + } + + public Task SimulateValidationRequestAsync(UserOperation userOp) + { + var simulateValidationFunction = new SimulateValidationFunction(); + simulateValidationFunction.UserOp = userOp; + + return ContractHandler.SendRequestAsync(simulateValidationFunction); + } + + public Task SimulateValidationRequestAndWaitForReceiptAsync(UserOperation userOp, CancellationTokenSource cancellationToken = null) + { + var simulateValidationFunction = new SimulateValidationFunction(); + simulateValidationFunction.UserOp = userOp; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(simulateValidationFunction, cancellationToken); + } + + public Task UnlockStakeRequestAsync(UnlockStakeFunction unlockStakeFunction) + { + return ContractHandler.SendRequestAsync(unlockStakeFunction); + } + + public Task UnlockStakeRequestAsync() + { + return ContractHandler.SendRequestAsync(); + } + + public Task UnlockStakeRequestAndWaitForReceiptAsync(UnlockStakeFunction unlockStakeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(unlockStakeFunction, cancellationToken); + } + + public Task UnlockStakeRequestAndWaitForReceiptAsync(CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(null, cancellationToken); + } + + public Task WithdrawStakeRequestAsync(WithdrawStakeFunction withdrawStakeFunction) + { + return ContractHandler.SendRequestAsync(withdrawStakeFunction); + } + + public Task WithdrawStakeRequestAndWaitForReceiptAsync(WithdrawStakeFunction withdrawStakeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawStakeFunction, cancellationToken); + } + + public Task WithdrawStakeRequestAsync(string withdrawAddress) + { + var withdrawStakeFunction = new WithdrawStakeFunction(); + withdrawStakeFunction.WithdrawAddress = withdrawAddress; + + return ContractHandler.SendRequestAsync(withdrawStakeFunction); + } + + public Task WithdrawStakeRequestAndWaitForReceiptAsync(string withdrawAddress, CancellationTokenSource cancellationToken = null) + { + var withdrawStakeFunction = new WithdrawStakeFunction(); + withdrawStakeFunction.WithdrawAddress = withdrawAddress; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawStakeFunction, cancellationToken); + } + + public Task WithdrawToRequestAsync(WithdrawToFunction withdrawToFunction) + { + return ContractHandler.SendRequestAsync(withdrawToFunction); + } + + public Task WithdrawToRequestAndWaitForReceiptAsync(WithdrawToFunction withdrawToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawToFunction, cancellationToken); + } + + public Task WithdrawToRequestAsync(string withdrawAddress, BigInteger withdrawAmount) + { + var withdrawToFunction = new WithdrawToFunction(); + withdrawToFunction.WithdrawAddress = withdrawAddress; + withdrawToFunction.WithdrawAmount = withdrawAmount; + + return ContractHandler.SendRequestAsync(withdrawToFunction); + } + + public Task WithdrawToRequestAndWaitForReceiptAsync(string withdrawAddress, BigInteger withdrawAmount, CancellationTokenSource cancellationToken = null) + { + var withdrawToFunction = new WithdrawToFunction(); + withdrawToFunction.WithdrawAddress = withdrawAddress; + withdrawToFunction.WithdrawAmount = withdrawAmount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(withdrawToFunction, cancellationToken); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs.meta new file mode 100644 index 00000000..23d2b3a4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/EntryPoint/EntryPointService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 022dceddd5100c144a6127573e00e07a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder.meta b/Assets/Thirdweb/Core/Contract Definitions/Forwarder.meta new file mode 100644 index 00000000..b96467c4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0796bcc5e36ac0b4797e94620d6ab1b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition.meta new file mode 100644 index 00000000..f57e3ff7 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe735bcac7ff27744a2ae9c37f66b163 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs new file mode 100644 index 00000000..32e31cbe --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Newtonsoft.Json; + +namespace Thirdweb.Contracts.Forwarder.ContractDefinition +{ + public partial class ForwardRequest : ForwardRequestBase { } + + public class ForwardRequestBase + { + [Parameter("address", "from", 1)] + [JsonProperty("from")] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + [JsonProperty("to")] + public virtual string To { get; set; } + + [Parameter("uint256", "value", 3)] + [JsonProperty("value")] + public virtual BigInteger Value { get; set; } + + [Parameter("uint256", "gas", 4)] + [JsonProperty("gas")] + public virtual BigInteger Gas { get; set; } + + [Parameter("uint256", "nonce", 5)] + [JsonProperty("nonce")] + public virtual BigInteger Nonce { get; set; } + + [Parameter("bytes", "data", 6)] + [JsonProperty("data")] + public virtual string Data { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs.meta new file mode 100644 index 00000000..a3f7b240 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwardRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bdaa69e2a892744e95a73a6022d642f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs new file mode 100644 index 00000000..1c6af37e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs @@ -0,0 +1,98 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.Forwarder.ContractDefinition +{ + public partial class ForwarderDeployment : ForwarderDeploymentBase + { + public ForwarderDeployment() + : base(BYTECODE) { } + + public ForwarderDeployment(string byteCode) + : base(byteCode) { } + } + + public class ForwarderDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "61014060405234801561001157600080fd5b50604080518082018252600f81526e23a9a73b19102337b93bb0b93232b960891b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fa8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061010f92505050565b60805160a05160c05160e0516101005161012051610c5961015e600039600061057b015260006105ca015260006105a5015260006104fe01526000610528015260006105520152610c596000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f610054366004610903565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b610095610090366004610933565b6100d3565b604051610079929190610a22565b3480156100af57600080fd5b506100c36100be366004610933565b6102fb565b6040519015158152602001610079565b600060606100e28585856102fb565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d60808601356001610a45565b60008061016d6020890189610903565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a79190610903565b6001600160a01b0316606088013560408901356101c760a08b018b610a66565b6101d460208d018d610903565b6040516020016101e693929190610aad565b60408051601f198184030181529082905261020091610ad3565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b5091509150816102d25760448151101561029f5760405162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006044820152606401610145565b600481019050808060200190518101906102b99190610b05565b60405162461bcd60e51b81526004016101459190610bb2565b6102e1603f6060890135610bc5565b5a116102ef576102ef610be7565b90969095509350505050565b60008061040e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061040892507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e48915061036b905060208a018a610903565b61037b60408b0160208c01610903565b60408b013560608c013560808d013561039760a08f018f610a66565b6040516103a5929190610bfd565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e08101919091526101000160405160208183030381529060405280519060200120610479565b906104cd565b905060808501356000806104256020890189610903565b6001600160a01b03166001600160a01b0316815260200190815260200160002054148015610470575061045b6020860186610903565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104c76104866104f1565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006104dc8585610618565b915091506104e98161065d565b509392505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561054a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561057457507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600080825160410361064e5760208301516040840151606085015160001a61064287828585610816565b94509450505050610656565b506000905060025b9250929050565b600081600481111561067157610671610c0d565b036106795750565b600181600481111561068d5761068d610c0d565b036106da5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b60028160048111156106ee576106ee610c0d565b0361073b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b600381600481111561074f5761074f610c0d565b036107a75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b60048160048111156107bb576107bb610c0d565b036108135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561084d57506000905060036108fa565b8460ff16601b1415801561086557508460ff16601c14155b1561087657506000905060046108fa565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156108ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108f3576000600192509250506108fa565b9150600090505b94509492505050565b60006020828403121561091557600080fd5b81356001600160a01b038116811461092c57600080fd5b9392505050565b60008060006040848603121561094857600080fd5b833567ffffffffffffffff8082111561096057600080fd5b9085019060c0828803121561097457600080fd5b9093506020850135908082111561098a57600080fd5b818601915086601f83011261099e57600080fd5b8135818111156109ad57600080fd5b8760208285010111156109bf57600080fd5b6020830194508093505050509250925092565b60005b838110156109ed5781810151838201526020016109d5565b50506000910152565b60008151808452610a0e8160208601602086016109d2565b601f01601f19169290920160200192915050565b8215158152604060208201526000610a3d60408301846109f6565b949350505050565b808201808211156104c757634e487b7160e01b600052601160045260246000fd5b6000808335601e19843603018112610a7d57600080fd5b83018035915067ffffffffffffffff821115610a9857600080fd5b60200191503681900382131561065657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610ae58184602087016109d2565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b1757600080fd5b815167ffffffffffffffff80821115610b2f57600080fd5b818401915084601f830112610b4357600080fd5b815181811115610b5557610b55610aef565b604051601f8201601f19908116603f01168101908382118183101715610b7d57610b7d610aef565b81604052828152876020848701011115610b9657600080fd5b610ba78360208301602088016109d2565b979650505050505050565b60208152600061092c60208301846109f6565b600082610be257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a3713a0e71de2e72b50e3feeef5f9bdf862ec156b120efaa2accba9ab238f7d764736f6c63430008130033"; + + public ForwarderDeploymentBase() + : base(BYTECODE) { } + + public ForwarderDeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class ExecuteFunction : ExecuteFunctionBase { } + + [Function("execute", typeof(ExecuteOutputDTO))] + public class ExecuteFunctionBase : FunctionMessage + { + [Parameter("tuple", "req", 1)] + public virtual ForwardRequest Req { get; set; } + + [Parameter("bytes", "signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class GetNonceFunction : GetNonceFunctionBase { } + + [Function("getNonce", "uint256")] + public class GetNonceFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + } + + public partial class VerifyFunction : VerifyFunctionBase { } + + [Function("verify", "bool")] + public class VerifyFunctionBase : FunctionMessage + { + [Parameter("tuple", "req", 1)] + public virtual ForwardRequest Req { get; set; } + + [Parameter("bytes", "signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class ExecuteOutputDTO : ExecuteOutputDTOBase { } + + [FunctionOutput] + public class ExecuteOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + + [Parameter("bytes", "", 2)] + public virtual byte[] ReturnValue2 { get; set; } + } + + public partial class GetNonceOutputDTO : GetNonceOutputDTOBase { } + + [FunctionOutput] + public class GetNonceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyOutputDTO : VerifyOutputDTOBase { } + + [FunctionOutput] + public class VerifyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs.meta new file mode 100644 index 00000000..fdcd1160 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ContractDefinition/ForwarderDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0b2b9f5ed775b6439e09fd8c0552d1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs new file mode 100644 index 00000000..f8b827a3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs @@ -0,0 +1,108 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.Forwarder.ContractDefinition; + +namespace Thirdweb.Contracts.Forwarder +{ + public partial class ForwarderService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + ForwarderDeployment forwarderDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(forwarderDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, ForwarderDeployment forwarderDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(forwarderDeployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + ForwarderDeployment forwarderDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, forwarderDeployment, cancellationTokenSource); + return new ForwarderService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public ForwarderService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task ExecuteRequestAsync(ExecuteFunction executeFunction) + { + return ContractHandler.SendRequestAsync(executeFunction); + } + + public Task ExecuteRequestAndWaitForReceiptAsync(ExecuteFunction executeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeFunction, cancellationToken); + } + + public Task ExecuteRequestAsync(ForwardRequest req, byte[] signature) + { + var executeFunction = new ExecuteFunction(); + executeFunction.Req = req; + executeFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(executeFunction); + } + + public Task ExecuteRequestAndWaitForReceiptAsync(ForwardRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var executeFunction = new ExecuteFunction(); + executeFunction.Req = req; + executeFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(executeFunction, cancellationToken); + } + + public Task GetNonceQueryAsync(GetNonceFunction getNonceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getNonceFunction, blockParameter); + } + + public Task GetNonceQueryAsync(string from, BlockParameter blockParameter = null) + { + var getNonceFunction = new GetNonceFunction(); + getNonceFunction.From = from; + + return ContractHandler.QueryAsync(getNonceFunction, blockParameter); + } + + public Task VerifyQueryAsync(VerifyFunction verifyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(verifyFunction, blockParameter); + } + + public Task VerifyQueryAsync(ForwardRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifyFunction = new VerifyFunction(); + verifyFunction.Req = req; + verifyFunction.Signature = signature; + + return ContractHandler.QueryAsync(verifyFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs.meta new file mode 100644 index 00000000..36362ab0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Forwarder/ForwarderService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2951d343b84d2cd429f4cd2d1407fa41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic.meta b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic.meta new file mode 100644 index 00000000..c6ad0726 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35ef282aa01653d4a9d7b542d8344978 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition.meta new file mode 100644 index 00000000..e711e516 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 75a3a0a218453bc42b96abcbc812131e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs new file mode 100644 index 00000000..8dd74f4f --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs @@ -0,0 +1,44 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.OffersLogic.ContractDefinition +{ + public partial class Offer : OfferBase { } + + public class OfferBase + { + [Parameter("uint256", "offerId", 1)] + public virtual BigInteger OfferId { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "totalPrice", 4)] + public virtual BigInteger TotalPrice { get; set; } + + [Parameter("uint256", "expirationTimestamp", 5)] + public virtual BigInteger ExpirationTimestamp { get; set; } + + [Parameter("address", "offeror", 6)] + public virtual string Offeror { get; set; } + + [Parameter("address", "assetContract", 7)] + public virtual string AssetContract { get; set; } + + [Parameter("address", "currency", 8)] + public virtual string Currency { get; set; } + + [Parameter("uint8", "tokenType", 9)] + public virtual byte TokenType { get; set; } + + [Parameter("uint8", "status", 10)] + public virtual byte Status { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs.meta new file mode 100644 index 00000000..e45c5ba5 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/Offer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 986f24455181b5b48a6a9260f20ea19d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs new file mode 100644 index 00000000..777a1b34 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.OffersLogic.ContractDefinition +{ + public partial class OfferParams : OfferParamsBase { } + + public class OfferParamsBase + { + [Parameter("address", "assetContract", 1)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "totalPrice", 5)] + public virtual BigInteger TotalPrice { get; set; } + + [Parameter("uint256", "expirationTimestamp", 6)] + public virtual BigInteger ExpirationTimestamp { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs.meta new file mode 100644 index 00000000..9b431a79 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OfferParams.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36fa8e62461032c49a8581a5ac0c6972 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs new file mode 100644 index 00000000..65012dcb --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs @@ -0,0 +1,220 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.OffersLogic.ContractDefinition +{ + public partial class OffersLogicDeployment : OffersLogicDeploymentBase + { + public OffersLogicDeployment() + : base(BYTECODE) { } + + public OffersLogicDeployment(string byteCode) + : base(byteCode) { } + } + + public class OffersLogicDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "608060405234801561001057600080fd5b5060017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0055612803806100446000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806391940b3e1161006657806391940b3e14610114578063a9fd8ed114610134578063c1edcfbe14610149578063c815729d1461015c578063ef706adf1461017157600080fd5b8063016767fa14610098578063119df25f146100be5780634579268a146100de5780638b49d47e146100fe575b600080fd5b6100ab6100a63660046121db565b610184565b6040519081526020015b60405180910390f35b6100c661047f565b6040516001600160a01b0390911681526020016100b5565b6100f16100ec366004612266565b6104f8565b6040516100b5919061235e565b610106610600565b6040516100b592919061236d565b61012761012236600461239c565b610696565b6040516100b591906123be565b60008051602061278e833981519152546100ab565b61012761015736600461239c565b6109b7565b61016f61016a366004612266565b610bbe565b005b61016f61017f366004612266565b610f88565b805160405163a32fa5b360e01b81527f86d5cf0a6bdc8d859ba3bdc97043337c82a0e609035f378e419298b6a3e00ae660048201526001600160a01b038216602482015260009190309063a32fa5b390604401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610218919061240d565b6102575760405162461bcd60e51b815260206004820152600b60248201526a2141535345545f524f4c4560a81b60448201526064015b60405180910390fd5b61025f6110f3565b9150600061026b61047f565b9050600061027c856000015161111e565b90506102888582611277565b60006040518061014001604052808681526020018760200151815260200187604001518152602001876080015181526020018760a001518152602001846001600160a01b0316815260200187600001516001600160a01b0316815260200187606001516001600160a01b0316815260200183600281111561030b5761030b61227f565b81526020016001905290508061032c60008051602061278e83398151915290565b600087815260019182016020908152604091829020845181559084015192810192909255820151600280830191909155606083015160038301556080830151600483015560a08301516005830180546001600160a01b03199081166001600160a01b039384161790915560c0850151600685018054831691841691909117905560e0850151600785018054928316919093169081178355610100860151936001600160a81b03199092161790600160a01b9084908111156103ef576103ef61227f565b021790555061012082015160078201805460ff60a81b1916600160a81b83600381111561041e5761041e61227f565b021790555090505085600001516001600160a01b031685846001600160a01b03167f8a597d224658d6f05ad676ddd666a25096b0bf7eff59d873ccbe943f8a3313ae8460405161046e919061235e565b60405180910390a450505050919050565b60405163572b6c0560e01b8152336004820152600090309063572b6c0590602401602060405180830381865afa1580156104bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e1919061240d565b156104f3575060131936013560601c90565b503390565b6105006120fe565b60008051602061278e83398151915260008381526001918201602090815260409182902082516101408101845281548152938101549184019190915260028082015492840192909252600381015460608401526004810154608084015260058101546001600160a01b0390811660a08501526006820154811660c0850152600782015490811660e08501529091610100840191600160a01b900460ff16908111156105ad576105ad61227f565b60028111156105be576105be61227f565b81526020016007820160159054906101000a900460ff1660038111156105e6576105e661227f565b60038111156105f7576105f761227f565b90525092915050565b60405163572b6c0560e01b81523360048201523690600090309063572b6c0590602401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610664919061240d565b1561068d576000803661067860148261244c565b926106859392919061245f565b915091509091565b50600091369150565b60608183111580156106b6575060008051602061278e8339815191525482105b6106f25760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b604482015260640161024e565b60006106fe848461244c565b610709906001612489565b67ffffffffffffffff8111156107215761072161217c565b60405190808252806020026020018201604052801561075a57816020015b6107476120fe565b81526020019060019003908161073f5790505b5090506000845b8481116108d6576000610774878361244c565b905060008051602061278e83398151915260008381526001918201602090815260409182902082516101408101845281548152938101549184019190915260028082015492840192909252600381015460608401526004810154608084015260058101546001600160a01b0390811660a08501526006820154811660c0850152600782015490811660e08501529091610100840191600160a01b900460ff16908111156108235761082361227f565b60028111156108345761083461227f565b81526020016007820160159054906101000a900460ff16600381111561085c5761085c61227f565b600381111561086d5761086d61227f565b815250508482815181106108835761088361249c565b60200260200101819052506108b08482815181106108a3576108a361249c565b6020026020010151611438565b156108c3576108c0600184612489565b92505b506108cf600182612489565b9050610761565b508067ffffffffffffffff8111156108f0576108f061217c565b60405190808252806020026020018201604052801561092957816020015b6109166120fe565b81526020019060019003908161090e5790505b508251909350600090815b818110156109ac576109518582815181106108a3576108a361249c565b1561099a578481815181106109685761096861249c565b602002602001015186848061097c906124b2565b95508151811061098e5761098e61249c565b60200260200101819052505b6109a5600182612489565b9050610934565b505050505092915050565b60608183111580156109d7575060008051602061278e8339815191525482105b610a135760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642072616e676560981b604482015260640161024e565b610a1d838361244c565b610a28906001612489565b67ffffffffffffffff811115610a4057610a4061217c565b604051908082528060200260200182016040528015610a7957816020015b610a666120fe565b815260200190600190039081610a5e5790505b509050825b828111610bb75760008051602061278e83398151915260008281526001918201602090815260409182902082516101408101845281548152938101549184019190915260028082015492840192909252600381015460608401526004810154608084015260058101546001600160a01b0390811660a08501526006820154811660c0850152600782015490811660e08501529091610100840191600160a01b900460ff1690811115610b3257610b3261227f565b6002811115610b4357610b4361227f565b81526020016007820160159054906101000a900460ff166003811115610b6b57610b6b61227f565b6003811115610b7c57610b7c61227f565b90525082610b8a868461244c565b81518110610b9a57610b9a61249c565b6020908102919091010152610bb0600182612489565b9050610a7e565b5092915050565b60027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b005403610c2f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161024e565b60027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b005560008181526000805160206127ae83398151915260205260409020600701548190600190600160a81b900460ff166003811115610c9257610c9261227f565b14610cdf5760405162461bcd60e51b815260206004820152601b60248201527f4d61726b6574706c6163653a20696e76616c6964206f666665722e0000000000604482015260640161024e565b60008281526000805160206127ae833981519152602090815260408083208151610140810183528154815260018201549381019390935260028082015492840192909252600381015460608401526004810154608084015260058101546001600160a01b0390811660a08501526006820154811660c0850152600782015490811660e08501529091610100840191600160a01b900460ff1690811115610d8757610d8761227f565b6002811115610d9857610d9861227f565b81526020016007820160159054906101000a900460ff166003811115610dc057610dc061227f565b6003811115610dd157610dd161227f565b81525050905042816080015111610e145760405162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015260640161024e565b610e2b8160a001518260e001518360600151611487565b610e475760405162461bcd60e51b815260040161024e906124cb565b610e6c610e5261047f565b8260c001518360200151846040015185610100015161157d565b60008381526000805160206127ae83398151915260205260409020600701805460ff60a81b1916600160a91b17905560a0810151610ebc90610eac61047f565b8360e00151846060015185611881565b610ed7610ec761047f565b8260a00151836040015184611a86565b8060c001516001600160a01b031681600001518260a001516001600160a01b03167fc3888b4f8640ff369e48089b45596f4adc2e39c73dc7fc6e609f2ad05f8795408460200151610f2661047f565b6040808801516060808a015183519586526001600160a01b0390941660208601529184015282015260800160405180910390a450506001610f847f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0090565b5550565b60008181526000805160206127ae83398151915260205260409020600701548190600190600160a81b900460ff166003811115610fc757610fc761227f565b146110145760405162461bcd60e51b815260206004820152601b60248201527f4d61726b6574706c6163653a20696e76616c6964206f666665722e0000000000604482015260640161024e565b8161101d61047f565b60008281526000805160206127ae83398151915260205260409020600501546001600160a01b039081169116146110815760405162461bcd60e51b815260206004820152600860248201526710a7b33332b937b960c11b604482015260640161024e565b60008381526000805160206127ae83398151915260205260409020600701805460ff60a81b1916600360a81b179055826110b961047f565b6001600160a01b03167f26c37611219fb1f3253d3027b738bb3e678ed39b193c956cb48193e6431478d360405160405180910390a3505050565b60008051602061278e83398151915280549060019060006111148385612489565b9250508190555090565b6040516301ffc9a760e01b8152636cdb3d1360e11b60048201526000906001600160a01b038316906301ffc9a790602401602060405180830381865afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611190919061240d565b1561119d57506001919050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c919061240d565b1561121957506000919050565b60405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574706c6163653a20746f6b656e206d75737420626520455243313160448201526c1a9a9037b91022a9219b99189760991b606482015260840161024e565b60008260800151116112b95760405162461bcd60e51b815260206004820152600b60248201526a3d32b93790383934b1b29760a91b604482015260640161024e565b600082604001511161130d5760405162461bcd60e51b815260206004820181905260248201527f4d61726b6574706c6163653a2077616e746564207a65726f20746f6b656e732e604482015260640161024e565b8160400151600114806113315750600181600281111561132f5761132f61227f565b145b61138b5760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574706c6163653a2077616e74656420696e76616c6964207175616e6044820152643a34ba3c9760d91b606482015260840161024e565b428260a00151610e1061139e9190612489565b116113fe5760405162461bcd60e51b815260206004820152602a60248201527f4d61726b6574706c6163653a20696e76616c69642065787069726174696f6e206044820152693a34b6b2b9ba30b6b81760b11b606482015260840161024e565b61141861140961047f565b83606001518460800151611487565b6114345760405162461bcd60e51b815260040161024e906124cb565b5050565b60004282608001511180156114635750600182610120015160038111156114615761146161227f565b145b801561148157506114818260a001518360e001518460600151611487565b92915050565b6040516370a0823160e01b81526001600160a01b03848116600483015260009183918516906370a0823190602401602060405180830381865afa1580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f69190612516565b101580156115755750604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015283919085169063dd62ed3e90604401602060405180830381865afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190612516565b10155b949350505050565b30600060018360028111156115945761159461227f565b0361168d57604051627eeac760e11b81526001600160a01b0388811660048301526024820187905285919088169062fdd58e90604401602060405180830381865afa1580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b9190612516565b10158015611686575060405163e985e9c560e01b81526001600160a01b038881166004830152838116602483015287169063e985e9c590604401602060405180830381865afa158015611662573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611686919061240d565b9050611818565b60008360028111156116a1576116a161227f565b03611818576040516331a9108f60e11b8152600481018690526001600160a01b038089169190881690636352211e90602401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611714919061252f565b6001600160a01b0316148015611815575060405163020604bf60e21b8152600481018690526001600160a01b03808416919088169063081812fc90602401602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611793919061252f565b6001600160a01b03161480611815575060405163e985e9c560e01b81526001600160a01b038881166004830152838116602483015287169063e985e9c590604401602060405180830381865afa1580156117f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611815919061240d565b90505b806118785760405162461bcd60e51b815260206004820152602a60248201527f4d61726b6574706c6163653a206e6f74206f776e6572206f7220617070726f7660448201526932b2103a37b5b2b7399760b11b606482015260840161024e565b50505050505050565b6000806000306001600160a01b031663d45573f66040518163ffffffff1660e01b81526004016040805180830381865afa1580156118c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e7919061254c565b909250905060006127106118ff61ffff84168861258d565b61190991906125a4565b9050611919878a85846000611bdb565b611923818761244c565b60c08601516020870151604051637a99dc0160e11b81526001600160a01b0390921660048301526024820152604481018890529094506000935083925030915063f533b802906064016000604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b39190810190612655565b815191935091508015611a6d5760008060005b83811015611a69578581815181106119e0576119e061249c565b602002602001015191508481815181106119fc576119fc61249c565b6020026020010151925082871015611a4e5760405162461bcd60e51b815260206004820152601560248201527466656573206578636565642074686520707269636560581b604482015260640161024e565b611a5c8a8d84866000611bdb565b95829003956001016119c6565b5050505b505050611a7e848787846000611bdb565b505050505050565b60018161010001516002811115611a9f57611a9f61227f565b03611b335760c08101516020820151604051637921219560e11b81526001600160a01b038781166004830152868116602483015260448201929092526064810185905260a06084820152600060a482015291169063f242432a9060c401600060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b50505050611bd5565b60008161010001516002811115611b4c57611b4c61227f565b03611bd55760c08101516020820151604051635c46a7ef60e11b81526001600160a01b03878116600483015286811660248301526044820192909252608060648201526000608482015291169063b88d4fde9060a401600060405180830381600087803b158015611bbc57600080fd5b505af1158015611bd0573d6000803e3d6000fd5b505050505b50505050565b8115611d455773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03861601611d3957306001600160a01b03851603611c8057604051632e1a7d4d60e01b8152600481018390526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015611c5857600080fd5b505af1158015611c6c573d6000803e3d6000fd5b50505050611c7b838383611d4c565b611d45565b306001600160a01b03841603611d2e57348214611cd55760405162461bcd60e51b81526020600482015260136024820152721b5cd9cb9d985b1d5948084f48185b5bdd5b9d606a1b604482015260640161024e565b806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1057600080fd5b505af1158015611d24573d6000803e3d6000fd5b5050505050611d45565b611c7b838383611d4c565b611d4585858585611e11565b5050505050565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611d99576040519150601f19603f3d011682016040523d82523d6000602084013e611d9e565b606091505b5050905080611bd557816001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611de257600080fd5b505af1158015611df6573d6000803e3d6000fd5b50611bd5935050506001600160a01b03841690508585611e69565b816001600160a01b0316836001600160a01b03160315611bd557306001600160a01b03841603611e5457611e4f6001600160a01b0385168383611e69565b611bd5565b611bd56001600160a01b038516848484611ed1565b6040516001600160a01b038316602482015260448101829052611ecc90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f09565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611bd59085906323b872dd60e01b90608401611e95565b6000611f5e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fdb9092919063ffffffff16565b805190915015611ecc5780806020019051810190611f7c919061240d565b611ecc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024e565b6060611575848460008585600080866001600160a01b03168587604051612002919061273e565b60006040518083038185875af1925050503d806000811461203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b509150915061205587838387612060565b979650505050505050565b606083156120cf5782516000036120c8576001600160a01b0385163b6120c85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024e565b5081611575565b61157583838151156120e45781518083602001fd5b8060405162461bcd60e51b815260040161024e919061275a565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600060028111156121705761217061227f565b81526020016000905290565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121bb576121bb61217c565b604052919050565b6001600160a01b03811681146121d857600080fd5b50565b600060c082840312156121ed57600080fd5b60405160c0810181811067ffffffffffffffff821117156122105761221061217c565b604052823561221e816121c3565b8082525060208301356020820152604083013560408201526060830135612244816121c3565b60608201526080838101359082015260a0928301359281019290925250919050565b60006020828403121561227857600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600381106122a5576122a561227f565b9052565b600481106122a5576122a561227f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a08101516122ff60a08401826001600160a01b03169052565b5060c081015161231a60c08401826001600160a01b03169052565b5060e081015161233560e08401826001600160a01b03169052565b506101008082015161234982850182612295565b505061012080820151611bd5828501826122a9565b610140810161148182846122b9565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600080604083850312156123af57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015612401576123ed8385516122b9565b9284019261014092909201916001016123da565b50909695505050505050565b60006020828403121561241f57600080fd5b8151801515811461242f57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561148157611481612436565b6000808585111561246f57600080fd5b8386111561247c57600080fd5b5050820193919092039150565b8082018082111561148157611481612436565b634e487b7160e01b600052603260045260246000fd5b6000600182016124c4576124c4612436565b5060010190565b6020808252602b908201527f4d61726b6574706c6163653a20696e73756666696369656e742063757272656e60408201526a31bc903130b630b731b29760a91b606082015260800190565b60006020828403121561252857600080fd5b5051919050565b60006020828403121561254157600080fd5b815161242f816121c3565b6000806040838503121561255f57600080fd5b825161256a816121c3565b602084015190925061ffff8116811461258257600080fd5b809150509250929050565b808202811582820484141761148157611481612436565b6000826125c157634e487b7160e01b600052601260045260246000fd5b500490565b600067ffffffffffffffff8211156125e0576125e061217c565b5060051b60200190565b600082601f8301126125fb57600080fd5b8151602061261061260b836125c6565b612192565b82815260059290921b8401810191818101908684111561262f57600080fd5b8286015b8481101561264a5780518352918301918301612633565b509695505050505050565b6000806040838503121561266857600080fd5b825167ffffffffffffffff8082111561268057600080fd5b818501915085601f83011261269457600080fd5b815160206126a461260b836125c6565b82815260059290921b840181019181810190898411156126c357600080fd5b948201945b838610156126ea5785516126db816121c3565b825294820194908201906126c8565b9188015191965090935050508082111561270357600080fd5b50612710858286016125ea565b9150509250929050565b60005b8381101561273557818101518382015260200161271d565b50506000910152565b6000825161275081846020870161271a565b9190910192915050565b602081526000825180602084015261277981604085016020870161271a565b601f01601f1916919091016040019291505056fe8f8effea55e8d961f30e12024b944289ed8a7f60abcf4b3989df2dc98a9143008f8effea55e8d961f30e12024b944289ed8a7f60abcf4b3989df2dc98a914301a26469706673582212208454fef86821bd7c805f5db4e9bb7c6e2986087fecba04493262f1271775b9ab64736f6c63430008130033"; + + public OffersLogicDeploymentBase() + : base(BYTECODE) { } + + public OffersLogicDeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class MsgDataFunction : MsgDataFunctionBase { } + + [Function("_msgData", "bytes")] + public class MsgDataFunctionBase : FunctionMessage { } + + public partial class MsgSenderFunction : MsgSenderFunctionBase { } + + [Function("_msgSender", "address")] + public class MsgSenderFunctionBase : FunctionMessage { } + + public partial class AcceptOfferFunction : AcceptOfferFunctionBase { } + + [Function("acceptOffer")] + public class AcceptOfferFunctionBase : FunctionMessage + { + [Parameter("uint256", "_offerId", 1)] + public virtual BigInteger OfferId { get; set; } + } + + public partial class CancelOfferFunction : CancelOfferFunctionBase { } + + [Function("cancelOffer")] + public class CancelOfferFunctionBase : FunctionMessage + { + [Parameter("uint256", "_offerId", 1)] + public virtual BigInteger OfferId { get; set; } + } + + public partial class GetAllOffersFunction : GetAllOffersFunctionBase { } + + [Function("getAllOffers", typeof(GetAllOffersOutputDTO))] + public class GetAllOffersFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetAllValidOffersFunction : GetAllValidOffersFunctionBase { } + + [Function("getAllValidOffers", typeof(GetAllValidOffersOutputDTO))] + public class GetAllValidOffersFunctionBase : FunctionMessage + { + [Parameter("uint256", "_startId", 1)] + public virtual BigInteger StartId { get; set; } + + [Parameter("uint256", "_endId", 2)] + public virtual BigInteger EndId { get; set; } + } + + public partial class GetOfferFunction : GetOfferFunctionBase { } + + [Function("getOffer", typeof(GetOfferOutputDTO))] + public class GetOfferFunctionBase : FunctionMessage + { + [Parameter("uint256", "_offerId", 1)] + public virtual BigInteger OfferId { get; set; } + } + + public partial class MakeOfferFunction : MakeOfferFunctionBase { } + + [Function("makeOffer", "uint256")] + public class MakeOfferFunctionBase : FunctionMessage + { + [Parameter("tuple", "_params", 1)] + public virtual OfferParams Params { get; set; } + } + + public partial class TotalOffersFunction : TotalOffersFunctionBase { } + + [Function("totalOffers", "uint256")] + public class TotalOffersFunctionBase : FunctionMessage { } + + public partial class AcceptedOfferEventDTO : AcceptedOfferEventDTOBase { } + + [Event("AcceptedOffer")] + public class AcceptedOfferEventDTOBase : IEventDTO + { + [Parameter("address", "offeror", 1, true)] + public virtual string Offeror { get; set; } + + [Parameter("uint256", "offerId", 2, true)] + public virtual BigInteger OfferId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("uint256", "tokenId", 4, false)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "seller", 5, false)] + public virtual string Seller { get; set; } + + [Parameter("uint256", "quantityBought", 6, false)] + public virtual BigInteger QuantityBought { get; set; } + + [Parameter("uint256", "totalPricePaid", 7, false)] + public virtual BigInteger TotalPricePaid { get; set; } + } + + public partial class CancelledOfferEventDTO : CancelledOfferEventDTOBase { } + + [Event("CancelledOffer")] + public class CancelledOfferEventDTOBase : IEventDTO + { + [Parameter("address", "offeror", 1, true)] + public virtual string Offeror { get; set; } + + [Parameter("uint256", "offerId", 2, true)] + public virtual BigInteger OfferId { get; set; } + } + + public partial class NewOfferEventDTO : NewOfferEventDTOBase { } + + [Event("NewOffer")] + public class NewOfferEventDTOBase : IEventDTO + { + [Parameter("address", "offeror", 1, true)] + public virtual string Offeror { get; set; } + + [Parameter("uint256", "offerId", 2, true)] + public virtual BigInteger OfferId { get; set; } + + [Parameter("address", "assetContract", 3, true)] + public virtual string AssetContract { get; set; } + + [Parameter("tuple", "offer", 4, false)] + public virtual Offer Offer { get; set; } + } + + public partial class MsgDataOutputDTO : MsgDataOutputDTOBase { } + + [FunctionOutput] + public class MsgDataOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class MsgSenderOutputDTO : MsgSenderOutputDTOBase { } + + [FunctionOutput] + public class MsgSenderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "sender", 1)] + public virtual string Sender { get; set; } + } + + public partial class GetAllOffersOutputDTO : GetAllOffersOutputDTOBase { } + + [FunctionOutput] + public class GetAllOffersOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_allOffers", 1)] + public virtual List AllOffers { get; set; } + } + + public partial class GetAllValidOffersOutputDTO : GetAllValidOffersOutputDTOBase { } + + [FunctionOutput] + public class GetAllValidOffersOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "_validOffers", 1)] + public virtual List ValidOffers { get; set; } + } + + public partial class GetOfferOutputDTO : GetOfferOutputDTOBase { } + + [FunctionOutput] + public class GetOfferOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "_offer", 1)] + public virtual Offer Offer { get; set; } + } + + public partial class TotalOffersOutputDTO : TotalOffersOutputDTOBase { } + + [FunctionOutput] + public class TotalOffersOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs.meta new file mode 100644 index 00000000..a0969986 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/OffersLogic/ContractDefinition/OffersLogicDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5459090971d9fbb42ab3668736f7c430 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack.meta b/Assets/Thirdweb/Core/Contract Definitions/Pack.meta new file mode 100644 index 00000000..f6febbec --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93f19319a7e77b74bb2b368fe1410796 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition.meta new file mode 100644 index 00000000..7e81fc4b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f657d4afae02ca04d88bd1b451a03af6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs new file mode 100644 index 00000000..ad5ee5da --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs @@ -0,0 +1,1085 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.Pack.ContractDefinition +{ + public partial class PackDeployment : PackDeploymentBase + { + public PackDeployment() + : base(BYTECODE) { } + + public PackDeployment(string byteCode) + : base(byteCode) { } + } + + public class PackDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60c06040523480156200001157600080fd5b5060405162005ecb38038062005ecb833981016040819052620000349162000184565b6001600160a01b038216608052600054610100900460ff1615808015620000625750600054600160ff909116105b806200007e5750303b1580156200007e575060005460ff166001145b620000e65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156200010a576000805461ff0019166101001790555b6001600160a01b03821660a05280156200015e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050620001bc565b80516001600160a01b03811681146200017f57600080fd5b919050565b600080604083850312156200019857600080fd5b620001a38362000167565b9150620001b36020840162000167565b90509250929050565b60805160a051615ce2620001e960003960006114530152600081816102900152613fb00152615ce26000f3fe6080604052600436106102805760003560e01c8063914e126a1161014f578063b0381b08116100c1578063d0d2fe251161007a578063d0d2fe251461090c578063d547741f14610939578063e8a3d48514610959578063e985e9c51461096e578063f23a6e61146109b8578063f242432a146109e457600080fd5b8063b0381b081461081c578063b24f2d391461084d578063bc197c8114610878578063bd85b039146108a4578063ca15c873146108d2578063cb2ef6f7146108f257600080fd5b8063a0a8e46011610113578063a0a8e4601461076b578063a217fddf14610787578063a22cb4651461079c578063a32fa5b3146107bc578063a96b1438146107dc578063ac9650d8146107ef57600080fd5b8063914e126a146106c957806391d14854146106f6578063938e3d7b1461071657806395d89b41146107365780639bcf7a151461074b57600080fd5b80632f2ff15d116101f3578063600dd5ea116101ac578063600dd5ea146105e957806361195e9414610609578063754b8fe7146106295780638d4c446a146106495780638da5cb5b146106775780639010d07c146106a957600080fd5b80632f2ff15d146104ea57806336568abe1461050a5780633b1475a71461052a5780634cc157df146105415780634e1273f414610583578063572b6c05146105b057600080fd5b806313af40351161024557806313af4035146103cd578063150b7a02146103ed5780631da799c914610431578063248a9ca31461045e5780632a55205a1461048b5780632eb2c2d6146104ca57600080fd5b8062fdd58e1461030057806301ffc9a71461033357806306fdde0314610363578063092e6075146103855780630e89341c146103ad57600080fd5b366102fb57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102f95760405162461bcd60e51b815260206004820152601460248201527310b730ba34bb32aa37b5b2b72bb930b83832b91760611b60448201526064015b60405180910390fd5b005b600080fd5b34801561030c57600080fd5b5061032061031b366004614a84565b610a04565b6040519081526020015b60405180910390f35b34801561033f57600080fd5b5061035361034e366004614ac6565b610a9b565b604051901515815260200161032a565b34801561036f57600080fd5b50610378610af9565b60405161032a9190614b33565b610398610393366004614ca1565b610b88565b6040805192835260208301919091520161032a565b3480156103b957600080fd5b506103786103c8366004614d69565b610d8a565b3480156103d957600080fd5b506102f96103e8366004614d82565b610d95565b3480156103f957600080fd5b50610418610408366004614d9f565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161032a565b34801561043d57600080fd5b5061045161044c366004614e0a565b610dc5565b60405161032a9190614e8c565b34801561046a57600080fd5b50610320610479366004614d69565b60009081526007602052604090205490565b34801561049757600080fd5b506104ab6104a6366004614e0a565b610e78565b604080516001600160a01b03909316835260208301919091520161032a565b3480156104d657600080fd5b506102f96104e5366004614f2e565b610eb5565b3480156104f657600080fd5b506102f9610505366004614fdb565b610f13565b34801561051657600080fd5b506102f9610525366004614fdb565b610fad565b34801561053657600080fd5b5061032061013a5481565b34801561054d57600080fd5b5061056161055c366004614d69565b61100f565b604080516001600160a01b03909316835261ffff90911660208301520161032a565b34801561058f57600080fd5b506105a361059e36600461507a565b61107a565b60405161032a9190615118565b3480156105bc57600080fd5b506103536105cb366004614d82565b6001600160a01b03166000908152606d602052604090205460ff1690565b3480156105f557600080fd5b506102f9610604366004614a84565b6111a3565b34801561061557600080fd5b50610378610624366004614d69565b6111d1565b34801561063557600080fd5b506102f961064436600461512b565b611276565b34801561065557600080fd5b50610669610664366004614d69565b611584565b60405161032a92919061523c565b34801561068357600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161032a565b3480156106b557600080fd5b506106916106c4366004614e0a565b611741565b3480156106d557600080fd5b506106e96106e4366004614e0a565b61182f565b60405161032a9190615261565b34801561070257600080fd5b50610353610711366004614fdb565b611a35565b34801561072257600080fd5b506102f9610731366004615274565b611a60565b34801561074257600080fd5b50610378611a8d565b34801561075757600080fd5b506102f96107663660046152a8565b611a9b565b34801561077757600080fd5b506040516002815260200161032a565b34801561079357600080fd5b50610320600081565b3480156107a857600080fd5b506102f96107b73660046152ee565b611acf565b3480156107c857600080fd5b506103536107d7366004614fdb565b611ae1565b6103986107ea36600461531c565b611b37565b3480156107fb57600080fd5b5061080f61080a3660046153a7565b611da5565b60405161032a91906153e8565b34801561082857600080fd5b50610353610837366004614d69565b61013d6020526000908152604090205460ff1681565b34801561085957600080fd5b506004546001600160a01b03811690600160a01b900461ffff16610561565b34801561088457600080fd5b50610418610893366004614f2e565b63bc197c8160e01b95945050505050565b3480156108b057600080fd5b506103206108bf366004614d69565b61013b6020526000908152604090205481565b3480156108de57600080fd5b506103206108ed366004614d69565b611e99565b3480156108fe57600080fd5b50635061636b60e01b610320565b34801561091857600080fd5b50610320610927366004614d69565b60009081526003602052604090205490565b34801561094557600080fd5b506102f9610954366004614fdb565b611f22565b34801561096557600080fd5b50610378611f3b565b34801561097a57600080fd5b5061035361098936600461544a565b6001600160a01b0391821660009081526101046020908152604080832093909416825291909152205460ff1690565b3480156109c457600080fd5b506104186109d3366004615478565b63f23a6e6160e01b95945050505050565b3480156109f057600080fd5b506102f96109ff366004615478565b611f48565b60006001600160a01b038316610a6f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084016102f0565b506000818152610103602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610aa682611f9f565b80610ac1575063152a902d60e11b6001600160e01b03198316145b80610adc5750630a85bd0160e11b6001600160e01b03198316145b80610a955750506001600160e01b031916630271189760e51b1490565b6101358054610b07906154e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b33906154e0565b8015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b60008061013854610ba081610b9b611fef565b611ffe565b600260095403610bf25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f0565b60026009558915801590610c0557508988145b610c3a5760405162461bcd60e51b81526004016102f09060208082526004908201526310a632b760e11b604082015260600190565b610c48610139546000611a35565b610c9f5760005b8a811015610c9d57610c8b610139548d8d84818110610c7057610c70615514565b610c869260206080909202019081019150614d82565b612062565b610c96600182615540565b9050610c4f565b505b61013a805493506001906000610cb58387615540565b90915550610cd590508b8b8b8b8b886001600160801b038c1660006120a0565b600084815261013c602090815260408083206001600160801b038a8116600160801b02908c161760019182015561013d8352818420805460ff1916909117905580519182019052908152909250610d31908590859085906123cf565b604080516001600160a01b03861681526020810184905284917f529034575398e71312a0b7b951d8ca42dce1529d774f4a255a587f64f649fff8910160405180910390a250600160095590999098509650505050505050565b6060610a95826111d1565b610d9d612500565b610db95760405162461bcd60e51b81526004016102f090615553565b610dc28161250e565b50565b610df1604080516080810190915260008082526020820190815260200160008152602001600081525090565b6000838152600360209081526040808320858452600290810183529281902081516080810190925280546001600160a01b038116835291939092840191600160a01b900460ff1690811115610e4857610e48614e2c565b6002811115610e5957610e59614e2c565b8152600182015460208201526002909101546040909101529392505050565b600080600080610e878661100f565b90945084925061ffff169050612710610ea0828761557b565b610eaa91906155a8565b925050509250929050565b610ebd611fef565b6001600160a01b0316856001600160a01b03161480610ee35750610ee385610989611fef565b610eff5760405162461bcd60e51b81526004016102f0906155bc565b610f0c8585858585612560565b5050505050565b600082815260076020526040902054610f2c9033612062565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff1615610f9f5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c6465727300000060448201526064016102f0565b610fa9828261275b565b5050565b336001600160a01b038216146110055760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c6600000000000060448201526064016102f0565b610fa9828261276f565b6000818152600560209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156110565780516020820151611070565b6004546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b606081518351146110df5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016102f0565b600083516001600160401b038111156110fa576110fa614bd5565b604051908082528060200260200182016040528015611123578160200160208202803683370190505b50905060005b845181101561119b5761116e85828151811061114757611147615514565b602002602001015185838151811061116157611161615514565b6020026020010151610a04565b82828151811061118057611180615514565b60209081029190910101526111948161560b565b9050611129565b509392505050565b6111ab612500565b6111c75760405162461bcd60e51b81526004016102f090615553565b610fa982826127c6565b60008181526003602052604090206001018054606091906111f1906154e0565b80601f016020809104026020016040519081016040528092919081815260200182805461121d906154e0565b801561126a5780601f1061123f5761010080835404028352916020019161126a565b820191906000526020600020905b81548152906001019060200180831161124d57829003601f168201915b50505050509050919050565b600054610100900460ff16158080156112965750600054600160ff909116105b806112b05750303b1580156112b0575060005460ff166001145b6113135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102f0565b6000805460ff191660011790558015611336576000805461ff0019166101001790555b83517f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6907f86d5cf0a6bdc8d859ba3bdc97043337c82a0e609035f378e419298b6a3e00ae6906000906113ac906001615540565b6001600160401b038111156113c3576113c3614bd5565b6040519080825280602002602001820160405280156113ec578160200160208202803683370190505b50905060005b88518110156114515788818151811061140d5761140d615514565b602002602001015182828151811061142757611427615514565b6001600160a01b0390921660209283029190910190910152806114498161560b565b9150506113f2565b7f000000000000000000000000000000000000000000000000000000000000000082828151811061148457611484615514565b60200260200101906001600160a01b031690816001600160a01b0316815250506114ad8261286c565b6114b68a6128a4565b6101356114c38d8261566a565b506101366114d18c8261566a565b506114db8a6128d4565b6114e48d61250e565b6114ef60008e61275b565b6114f9858e61275b565b611503848e61275b565b61150e85600061275b565b61151983600061275b565b61152388886127c6565b5050610137929092556101385561013955801561157a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b600081815261013c602090815260408083208151815460809481028201850190935260608181018481529095869590949293928492918491908401828280156115ec57602002820191906000526020600020905b8154815260200190600101908083116115d8575b5050509183525050600191909101546001600160801b038082166020840152600160801b90910416604090910152905060006116348560009081526003602052604090205490565b9050806001600160401b0381111561164e5761164e614bd5565b6040519080825280602002602001820160405280156116ab57816020015b611698604080516080810190915260008082526020820190815260200160008152602001600081525090565b81526020019060019003908161166c5790505b509350806001600160401b038111156116c6576116c6614bd5565b6040519080825280602002602001820160405280156116ef578160200160208202803683370190505b50925060005b81811015611736576117078682610dc5565b85828151811061171957611719615514565b602090810291909101015261172f600182615540565b90506116f5565b505051919391925050565b60008281526008602052604081205481805b828110156118265760008681526008602090815260408083208484526001019091529020546001600160a01b0316156117cf578482036117bd5760008681526008602090815260408083209383526001909301905220546001600160a01b03169250610a95915050565b6117c8600183615540565b9150611814565b6117da866000611a35565b80156118015750600086815260086020908152604080832083805260020190915290205481145b1561181457611811600183615540565b91505b61181f600182615540565b9050611753565b50505092915050565b6060600061183b611fef565b336000908152606d602052604090205490915060ff168061186457506001600160a01b03811632145b6118995760405162461bcd60e51b81526004016102f09060208082526004908201526321454f4160e01b604082015260600190565b826118a48286610a04565b10156118db5760405162461bcd60e51b81526004016102f0906020808252600490820152630850985b60e21b604082015260600190565b600084815261013c60209081526040808320815181546080948102820185019093526060810183815290939192849284919084018282801561193c57602002820191906000526020600020905b815481526020019060010190808311611928575b5050509183525050600191909101546001600160801b03808216602080850191909152600160801b909204811660409093019290925282015191925042911611156119b55760405162461bcd60e51b815260206004820152600960248201526831b0b73a1037b832b760b91b60448201526064016102f0565b60006119d0868684604001516001600160801b0316856129b0565b90506119dd838787612dc3565b6119e8308483612f64565b826001600160a01b0316867f58bbfaa763248693d05ac650926341943af86affd998d80e41dbcc9adfdae6078784604051611a24929190615729565b60405180910390a395945050505050565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a68612500565b611a845760405162461bcd60e51b81526004016102f090615553565b610dc2816128d4565b6101368054610b07906154e0565b611aa3612500565b611abf5760405162461bcd60e51b81526004016102f090615553565b611aca838383613086565b505050565b610fa9611ada611fef565b8383613150565b600082815260066020908152604080832083805290915281205460ff16611b2e575060008281526006602090815260408083206001600160a01b038516845290915290205460ff16610a95565b50600192915050565b60008061013854611b4a81610b9b611fef565b600260095403611b9c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f0565b6002600955600089815261013d602052604090205460ff16611beb5760405162461bcd60e51b815260206004820152600860248201526708505b1b1bddd95960c21b60448201526064016102f0565b8615801590611bf957508685145b611c2e5760405162461bcd60e51b81526004016102f09060208082526004908201526310a632b760e11b604082015260600190565b611c38848a610a04565b600003611c705760405162461bcd60e51b81526004016102f0906020808252600490820152630850985b60e21b604082015260600190565b611c7e610139546000611a35565b611cba5760005b87811015611cb857611ca6610139548a8a84818110610c7057610c70615514565b611cb1600182615540565b9050611c85565b505b600061013c60008b815260200190815260200160002060010160109054906101000a90046001600160801b03166001600160801b03169050611d1289898989604051806020016040528060008152508f8760016120a0565b60008b815261013b6020526040902054909350611d30908490615540565b9350611d4d858b85604051806020016040528060008152506123cf565b604080516001600160a01b0387168152602081018590528b917fdf54045461e7fa6cda88afd9b979d29bb9ef67b8271562cec9a7a95ddc3afe72910160405180910390a2505060016009559097909650945050505050565b6060816001600160401b03811115611dbf57611dbf614bd5565b604051908082528060200260200182016040528015611df257816020015b6060815260200190600190039081611ddd5790505b50905060005b82811015611e9257611e6230858584818110611e1657611e16615514565b9050602002810190611e289190615742565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061322992505050565b828281518110611e7457611e74615514565b60200260200101819052508080611e8a9061560b565b915050611df8565b5092915050565b600081815260086020526040812054815b81811015611efd5760008481526008602090815260408083208484526001019091529020546001600160a01b031615611eeb57611ee8600184615540565b92505b611ef6600182615540565b9050611eaa565b50611f09836000611a35565b15611f1c57611f19600183615540565b91505b50919050565b6000828152600760205260409020546110059033612062565b60018054610b07906154e0565b611f50611fef565b6001600160a01b0316856001600160a01b03161480611f765750611f7685610989611fef565b611f925760405162461bcd60e51b81526004016102f0906155bc565b610f0c858585858561331d565b60006001600160e01b03198216636cdb3d1360e11b1480611fd057506001600160e01b031982166303a24d0760e21b145b80610a9557506301ffc9a760e01b6001600160e01b0319831614610a95565b6000611ff9613466565b905090565b6120088282611ae1565b610fa957612020816001600160a01b03166014613493565b61202b836020613493565b60405160200161203c929190615788565b60408051601f198184030181529082905262461bcd60e51b82526102f091600401614b33565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16610fa957612020816001600160a01b03166014613493565b60008060005b898110156122a3578a8a828181106120c0576120c0615514565b905060800201606001356000036121015760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b60448201526064016102f0565b88888281811061211357612113615514565b905060200201358b8b8381811061212c5761212c615514565b9050608002016060013561214091906157f5565b156121725760405162461bcd60e51b815260206004820152600260248201526110a960f11b60448201526064016102f0565b60018b8b8381811061218657612186615514565b905060800201602001602081019061219e9190615816565b60028111156121af576121af614e2c565b1415806121d757508a8a828181106121c9576121c9615514565b905060800201606001356001145b6122085760405162461bcd60e51b815260206004820152600260248201526110a960f11b60448201526064016102f0565b88888281811061221a5761221a615514565b905060200201358261222c9190615540565b600087815261013c6020526040902090925089898381811061225057612250615514565b905060200201358c8c8481811061226957612269615514565b9050608002016060013561227d91906155a8565b81546001818101845560009384526020909320015561229c9082615540565b90506120a6565b506122ae84826157f5565b156122e45760405162461bcd60e51b81526004016102f09060208082526004908201526308505b5d60e21b604082015260600190565b6122ee84826155a8565b915082156123ae5760005b89811015612344576123328b8b8381811061231657612316615514565b90506080020180360381019061232c9190615833565b87613635565b61233d600182615540565b90506122f9565b506123a9612350611fef565b308c8c808060200260200160405190810160405280939291908181526020016000905b8282101561239f5761239060808302860136819003810190615833565b81526020019060010190612373565b5050505050612f64565b6123c2565b6123c26123b9611fef565b8b8b89896136fa565b5098975050505050505050565b6001600160a01b03841661242f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016102f0565b6000612439611fef565b9050600061244685613762565b9050600061245385613762565b9050612464836000898585896137ad565b6000868152610103602090815260408083206001600160a01b038b16845290915281208054879290612497908490615540565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46124f783600089898989613a1d565b50505050505050565b6000611ff981610711611fef565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b81518351146125c25760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016102f0565b6001600160a01b0384166125e85760405162461bcd60e51b81526004016102f0906158a7565b60006125f2611fef565b90506126028187878787876137ad565b60005b84518110156126ed57600085828151811061262257612622615514565b60200260200101519050600085838151811061264057612640615514565b6020908102919091018101516000848152610103835260408082206001600160a01b038e1683529093529190912054909150818110156126925760405162461bcd60e51b81526004016102f0906158ec565b6000838152610103602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906126d2908490615540565b92505081905550505050806126e69061560b565b9050612605565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161273d929190615936565b60405180910390a4612753818787878787613b78565b505050505050565b6127658282613c33565b610fa98282613c8e565b6127798282613cfb565b60008281526008602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b61271081111561280a5760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b60448201526064016102f0565b600480546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b600054610100900460ff166128935760405162461bcd60e51b81526004016102f090615949565b61289b613d5d565b610dc281613d86565b600054610100900460ff166128cb5760405162461bcd60e51b81526004016102f090615949565b610dc281613e15565b6000600180546128e3906154e0565b80601f016020809104026020016040519081016040528092919081815260200182805461290f906154e0565b801561295c5780601f106129315761010080835404028352916020019161295c565b820191906000526020600020905b81548152906001019060200180831161293f57829003601f168201915b505050505090508160019081612972919061566a565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516129a4929190615994565b60405180910390a15050565b606060006129be848661557b565b9050806001600160401b038111156129d8576129d8614bd5565b604051908082528060200260200182016040528015612a3557816020015b612a22604080516080810190915260008082526020820190815260200160008152602001600081525090565b8152602001906001900390816129f65790505b50600087815261013b602052604081205491935090612a5590869061557b565b600088815260036020526040812054919250612a6f613e45565b90506000612a7c8a611584565b5090506000836001600160401b03811115612a9957612a99614bd5565b604051908082528060200260200182016040528015612ac2578160200160208202803683370190505b50905060005b86811015612d5357604080516020808201879052818301849052825180830384018152606090920190925280519101206000612b0488836157f5565b90506000805b88811015612d3b5760008d600001518281518110612b2a57612b2a615514565b6020026020010151888381518110612b4457612b44615514565b602002602001015160600151612b5a91906155a8565b9050612b668184615540565b841015612d1c578d51805183908110612b8157612b81615514565b6020026020010151888381518110612b9b57612b9b615514565b6020026020010151606001818151612bb391906159b9565b9052508651600190889084908110612bcd57612bcd615514565b602002602001019015159081151581525050878281518110612bf157612bf1615514565b6020026020010151600001518d8781518110612c0f57612c0f615514565b60209081029190910101516001600160a01b0390911690528751889083908110612c3b57612c3b615514565b6020026020010151602001518d8781518110612c5957612c59615514565b6020026020010151602001906002811115612c7657612c76614e2c565b90816002811115612c8957612c89614e2c565b81525050878281518110612c9f57612c9f615514565b6020026020010151604001518d8781518110612cbd57612cbd615514565b6020908102919091010151604001528d51805183908110612ce057612ce0615514565b60200260200101518d8781518110612cfa57612cfa615514565b602090810291909101015160600152612d1460018c6159b9565b9a5050612d3b565b612d268184615540565b925050612d34600182615540565b9050612b0a565b50505050600181612d4c9190615540565b9050612ac8565b5060005b84811015612db457818181518110612d7157612d71615514565b602002602001015115612da257612da2838281518110612d9357612d93615514565b60200260200101518d83613ea4565b612dad600182615540565b9050612d57565b50505050505050949350505050565b6001600160a01b038316612e255760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016102f0565b6000612e2f611fef565b90506000612e3c84613762565b90506000612e4984613762565b9050612e69838760008585604051806020016040528060008152506137ad565b6000858152610103602090815260408083206001600160a01b038a16845290915290205484811015612ee95760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016102f0565b6000868152610103602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090526124f7565b6000805b82518110156130365773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110612fa157612fa1615514565b6020026020010151600001516001600160a01b0316148015612fcb57506001600160a01b03841630145b1561300057828181518110612fe257612fe2615514565b60200260200101516060015182612ff99190615540565b9150613024565b613024858585848151811061301757613017615514565b6020026020010151613f82565b61302f600182615540565b9050612f68565b508015613080576040805160808101825273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81526000602082018190529181019190915260608101829052610f0c858583613f82565b50505050565b6127108111156130ca5760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b60448201526064016102f0565b6040805180820182526001600160a01b038481168083526020808401868152600089815260058352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b0316036131c35760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016102f0565b6001600160a01b0383811660008181526101046020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101613143565b60606001600160a01b0383163b6132915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102f0565b600080846001600160a01b0316846040516132ac91906159cc565b600060405180830381855af49150503d80600081146132e7576040519150601f19603f3d011682016040523d82523d6000602084013e6132ec565b606091505b50915091506133148282604051806060016040528060278152602001615c86602791396140de565b95945050505050565b6001600160a01b0384166133435760405162461bcd60e51b81526004016102f0906158a7565b600061334d611fef565b9050600061335a85613762565b9050600061336785613762565b90506133778389898585896137ad565b6000868152610103602090815260408083206001600160a01b038c168452909152902054858110156133bb5760405162461bcd60e51b81526004016102f0906158ec565b6000878152610103602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906133fb908490615540565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461345b848a8a8a8a8a613a1d565b505050505050505050565b336000908152606d602052604081205460ff161561348b575060131936013560601c90565b503390565b90565b606060006134a283600261557b565b6134ad906002615540565b6001600160401b038111156134c4576134c4614bd5565b6040519080825280601f01601f1916602001820160405280156134ee576020820181803683370190505b509050600360fc1b8160008151811061350957613509615514565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061353857613538615514565b60200101906001600160f81b031916908160001a905350600061355c84600261557b565b613567906001615540565b90505b60018111156135df576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061359b5761359b615514565b1a60f81b8282815181106135b1576135b1615514565b60200101906001600160f81b031916908160001a90535060049490941c936135d8816159e8565b905061356a565b50831561362e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102f0565b9392505050565b61363e82614117565b600081815260036020908152604080832080548085526002918201845291909320855181546001600160a01b039091166001600160a01b0319821681178355938701519294879492939284926001600160a81b0319161790600160a01b9084908111156136ad576136ad614e2c565b0217905550604082015181600101556060820151816002015590505060016003600084815260200190815260200160002060000160008282546136f09190615540565b9091555050505050565b6137058484836143d2565b61370f82826144fb565b610f0c85308686808060200260200160405190810160405280939291908181526020016000905b8282101561239f5761375360808302860136819003810190615833565b81526020019060010190613736565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061379c5761379c615514565b602090810291909101015292915050565b6137bb610137546000611a35565b1580156137d057506001600160a01b03851615155b80156137e457506001600160a01b03841615155b15613846576137f66101375486611a35565b8061380957506138096101375485611a35565b6138465760405162461bcd60e51b815260206004820152600e60248201526d215452414e534645525f524f4c4560901b60448201526064016102f0565b6001600160a01b0385166138d25760005b83518110156138cc5782818151811061387257613872615514565b602002602001015161013b600086848151811061389157613891615514565b6020026020010151815260200190815260200160002060008282546138b69190615540565b909155506138c590508161560b565b9050613857565b50613997565b60005b83518110156139955761013d60008583815181106138f5576138f5615514565b60209081029190910181015182528101919091526040016000205460ff168015613939575082818151811061392c5761392c615514565b6020026020010151600014155b1561398557600061013d600086848151811061395757613957615514565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61398e8161560b565b90506138d5565b505b6001600160a01b0384166127535760005b83518110156124f7578281815181106139c3576139c3615514565b602002602001015161013b60008684815181106139e2576139e2615514565b602002602001015181526020019081526020016000206000828254613a0791906159b9565b90915550613a1690508161560b565b90506139a8565b6001600160a01b0384163b156127535760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190613a6190899089908890889088906004016159ff565b6020604051808303816000875af1925050508015613a9c575060408051601f3d908101601f19168201909252613a9991810190615a39565b60015b613b4857613aa8615a56565b806308c379a003613ae15750613abc615a71565b80613ac75750613ae3565b8060405162461bcd60e51b81526004016102f09190614b33565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016102f0565b6001600160e01b0319811663f23a6e6160e01b146124f75760405162461bcd60e51b81526004016102f090615afa565b6001600160a01b0384163b156127535760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190613bbc9089908990889088908890600401615b42565b6020604051808303816000875af1925050508015613bf7575060408051601f3d908101601f19168201909252613bf491810190615a39565b60015b613c0357613aa8615a56565b6001600160e01b0319811663bc197c8160e01b146124f75760405162461bcd60e51b81526004016102f090615afa565b60008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600082815260086020526040812080549160019190613cad8385615540565b9091555050600092835260086020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b613d058282612062565b60008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff16613d845760405162461bcd60e51b81526004016102f090615949565b565b600054610100900460ff16613dad5760405162461bcd60e51b81526004016102f090615949565b60005b8151811015610fa9576001606d6000848481518110613dd157613dd1615514565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580613e0d8161560b565b915050613db0565b600054610100900460ff16613e3c5760405162461bcd60e51b81526004016102f090615949565b610dc281614516565b6000613e4f611fef565b613e5a6001436159b9565b60405160609290921b6bffffffffffffffffffffffff191660208301524060348201524460548201526074016040516020818303038152906040528051906020012060001c905090565b6000828152600360205260409020548110613eed5760405162461bcd60e51b8152602060048201526009602482015268696e64657820444e4560b81b60448201526064016102f0565b613ef683614117565b6000828152600360209081526040808320848452600290810183529220855181546001600160a01b039091166001600160a01b03198216811783559287015187949293909284926001600160a81b03191690911790600160a01b908490811115613f6257613f62614e2c565b021790555060408201516001820155606090910151600290910155505050565b600081602001516002811115613f9a57613f9a614e2c565b03613fd457611aca8160000151848484606001517f0000000000000000000000000000000000000000000000000000000000000000614523565b600181602001516002811115613fec57613fec614e2c565b036140605780516040808301519051632142170760e11b81526001600160a01b038681166004830152858116602483015260448201929092529116906342842e0e906064015b600060405180830381600087803b15801561404c57600080fd5b505af11580156124f7573d6000803e3d6000fd5b60028160200151600281111561407857614078614e2c565b03611aca57805160408083015160608401519151637921219560e11b81526001600160a01b03878116600483015286811660248301526044820192909252606481019290925260a06084830152600060a48301529091169063f242432a9060c401614032565b606083156140ed57508161362e565b8251156140fd5782518084602001fd5b8160405162461bcd60e51b81526004016102f09190614b33565b60018160200151600281111561412f5761412f614e2c565b036141d95780516040516301ffc9a760e01b81526001600160a01b03909116906301ffc9a790614167906380ac58cd90600401615ba0565b602060405180830381865afa9250505080156141a0575060408051601f3d908101601f1916820190925261419d91810190615bb8565b60015b6141bc5760405162461bcd60e51b81526004016102f090615bd5565b80610fa95760405162461bcd60e51b81526004016102f090615bd5565b6002816020015160028111156141f1576141f1614e2c565b036142295780516040516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906141679063d9b67a2690600401615ba0565b60008160200151600281111561424157614241614e2c565b03610dc25780516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610dc25780516040516301ffc9a760e01b81526001600160a01b03909116906301ffc9a79061429e906380ac58cd90600401615ba0565b602060405180830381865afa9250505080156142d7575060408051601f3d908101601f191682019092526142d491810190615bb8565b60015b614300576142e3615a56565b806308c379a003610fa957506142f7615a71565b80610fa9575050565b801561431e5760405162461bcd60e51b81526004016102f090615bd5565b81516040516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906143519063d9b67a2690600401615ba0565b602060405180830381865afa92505050801561438a575060408051601f3d908101601f1916820190925261438791810190615bb8565b60015b6143b457614396615a56565b806308c379a003611aca57506143aa615a71565b80611aca57505050565b8015611aca5760405162461bcd60e51b81526004016102f090615bd5565b818061440a5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b60448201526064016102f0565b600082815260036020526040902054156144525760405162461bcd60e51b815260206004820152600960248201526869642065786973747360b81b60448201526064016102f0565b60005b818110156144e65761448d85858381811061447257614472615514565b9050608002018036038101906144889190615833565b614117565b84848281811061449f5761449f615514565b600086815260036020908152604080832087845260020190915290206080909102929092019190506144d18282615bf9565b506144df9050600182615540565b9050614455565b50600091825260036020526040909120555050565b6000818152600360205260409020600101611aca838261566a565b610105610fa9828261566a565b8115610f0c5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0386160161468157306001600160a01b038516036145c857604051632e1a7d4d60e01b8152600481018390526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156145a057600080fd5b505af11580156145b4573d6000803e3d6000fd5b505050506145c383838361468d565b610f0c565b306001600160a01b038416036146765734821461461d5760405162461bcd60e51b81526020600482015260136024820152721b5cd9cb9d985b1d5948084f48185b5bdd5b9d606a1b60448201526064016102f0565b806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561465857600080fd5b505af115801561466c573d6000803e3d6000fd5b5050505050610f0c565b6145c383838361468d565b610f0c85858585614752565b6000836001600160a01b03168360405160006040518083038185875af1925050503d80600081146146da576040519150601f19603f3d011682016040523d82523d6000602084013e6146df565b606091505b505090508061308057816001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561472357600080fd5b505af1158015614737573d6000803e3d6000fd5b50613080935050506001600160a01b038416905085856147aa565b816001600160a01b0316836001600160a01b0316031561308057306001600160a01b03841603614795576147906001600160a01b03851683836147aa565b613080565b6130806001600160a01b03851684848461480d565b6040516001600160a01b038316602482015260448101829052611aca90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614845565b6040516001600160a01b03808516602483015283166044820152606481018290526130809085906323b872dd60e01b906084016147d6565b600061489a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149179092919063ffffffff16565b805190915015611aca57808060200190518101906148b89190615bb8565b611aca5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f0565b6060614926848460008561492e565b949350505050565b60608247101561498f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f0565b6001600160a01b0385163b6149e65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f0565b600080866001600160a01b03168587604051614a0291906159cc565b60006040518083038185875af1925050503d8060008114614a3f576040519150601f19603f3d011682016040523d82523d6000602084013e614a44565b606091505b5091509150614a548282866140de565b979650505050505050565b6001600160a01b0381168114610dc257600080fd5b8035614a7f81614a5f565b919050565b60008060408385031215614a9757600080fd5b8235614aa281614a5f565b946020939093013593505050565b6001600160e01b031981168114610dc257600080fd5b600060208284031215614ad857600080fd5b813561362e81614ab0565b60005b83811015614afe578181015183820152602001614ae6565b50506000910152565b60008151808452614b1f816020860160208601614ae3565b601f01601f19169290920160200192915050565b60208152600061362e6020830184614b07565b60008083601f840112614b5857600080fd5b5081356001600160401b03811115614b6f57600080fd5b6020830191508360208260071b8501011115614b8a57600080fd5b9250929050565b60008083601f840112614ba357600080fd5b5081356001600160401b03811115614bba57600080fd5b6020830191508360208260051b8501011115614b8a57600080fd5b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715614c1057614c10614bd5565b6040525050565b600082601f830112614c2857600080fd5b81356001600160401b03811115614c4157614c41614bd5565b604051614c58601f8301601f191660200182614beb565b818152846020838601011115614c6d57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160801b0381168114614a7f57600080fd5b60008060008060008060008060c0898b031215614cbd57600080fd5b88356001600160401b0380821115614cd457600080fd5b614ce08c838d01614b46565b909a50985060208b0135915080821115614cf957600080fd5b614d058c838d01614b91565b909850965060408b0135915080821115614d1e57600080fd5b50614d2b8b828c01614c17565b945050614d3a60608a01614c8a565b9250614d4860808a01614c8a565b915060a0890135614d5881614a5f565b809150509295985092959890939650565b600060208284031215614d7b57600080fd5b5035919050565b600060208284031215614d9457600080fd5b813561362e81614a5f565b60008060008060808587031215614db557600080fd5b8435614dc081614a5f565b93506020850135614dd081614a5f565b92506040850135915060608501356001600160401b03811115614df257600080fd5b614dfe87828801614c17565b91505092959194509250565b60008060408385031215614e1d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b80516001600160a01b03168252602081015160038110614e7257634e487b7160e01b600052602160045260246000fd5b602083015260408181015190830152606090810151910152565b60808101610a958284614e42565b60006001600160401b03821115614eb357614eb3614bd5565b5060051b60200190565b600082601f830112614ece57600080fd5b81356020614edb82614e9a565b604051614ee88282614beb565b83815260059390931b8501820192828101915086841115614f0857600080fd5b8286015b84811015614f235780358352918301918301614f0c565b509695505050505050565b600080600080600060a08688031215614f4657600080fd5b8535614f5181614a5f565b94506020860135614f6181614a5f565b935060408601356001600160401b0380821115614f7d57600080fd5b614f8989838a01614ebd565b94506060880135915080821115614f9f57600080fd5b614fab89838a01614ebd565b93506080880135915080821115614fc157600080fd5b50614fce88828901614c17565b9150509295509295909350565b60008060408385031215614fee57600080fd5b82359150602083013561500081614a5f565b809150509250929050565b600082601f83011261501c57600080fd5b8135602061502982614e9a565b6040516150368282614beb565b83815260059390931b850182019282810191508684111561505657600080fd5b8286015b84811015614f2357803561506d81614a5f565b835291830191830161505a565b6000806040838503121561508d57600080fd5b82356001600160401b03808211156150a457600080fd5b6150b08683870161500b565b935060208501359150808211156150c657600080fd5b506150d385828601614ebd565b9150509250929050565b600081518084526020808501945080840160005b8381101561510d578151875295820195908201906001016150f1565b509495945050505050565b60208152600061362e60208301846150dd565b600080600080600080600060e0888a03121561514657600080fd5b61514f88614a74565b965060208801356001600160401b038082111561516b57600080fd5b6151778b838c01614c17565b975060408a013591508082111561518d57600080fd5b6151998b838c01614c17565b965060608a01359150808211156151af57600080fd5b6151bb8b838c01614c17565b955060808a01359150808211156151d157600080fd5b506151de8a828b0161500b565b9350506151ed60a08901614a74565b915060c0880135905092959891949750929550565b600081518084526020808501945080840160005b8381101561510d57615229878351614e42565b6080969096019590820190600101615216565b60408152600061524f6040830185615202565b828103602084015261331481856150dd565b60208152600061362e6020830184615202565b60006020828403121561528657600080fd5b81356001600160401b0381111561529c57600080fd5b61492684828501614c17565b6000806000606084860312156152bd57600080fd5b8335925060208401356152cf81614a5f565b929592945050506040919091013590565b8015158114610dc257600080fd5b6000806040838503121561530157600080fd5b823561530c81614a5f565b91506020830135615000816152e0565b6000806000806000806080878903121561533557600080fd5b8635955060208701356001600160401b038082111561535357600080fd5b61535f8a838b01614b46565b9097509550604089013591508082111561537857600080fd5b5061538589828a01614b91565b909450925050606087013561539981614a5f565b809150509295509295509295565b600080602083850312156153ba57600080fd5b82356001600160401b038111156153d057600080fd5b6153dc85828601614b91565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561543d57603f1988860301845261542b858351614b07565b9450928501929085019060010161540f565b5092979650505050505050565b6000806040838503121561545d57600080fd5b823561546881614a5f565b9150602083013561500081614a5f565b600080600080600060a0868803121561549057600080fd5b853561549b81614a5f565b945060208601356154ab81614a5f565b9350604086013592506060860135915060808601356001600160401b038111156154d457600080fd5b614fce88828901614c17565b600181811c908216806154f457607f821691505b602082108103611f1c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a9557610a9561552a565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b8082028115828204841417610a9557610a9561552a565b634e487b7160e01b600052601260045260246000fd5b6000826155b7576155b7615592565b500490565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b60006001820161561d5761561d61552a565b5060010190565b601f821115611aca57600081815260208120601f850160051c8101602086101561564b5750805b601f850160051c820191505b8181101561275357828155600101615657565b81516001600160401b0381111561568357615683614bd5565b6156978161569184546154e0565b84615624565b602080601f8311600181146156cc57600084156156b45750858301515b600019600386901b1c1916600185901b178555612753565b600085815260208120601f198616915b828110156156fb578886015182559484019460019091019084016156dc565b50858210156157195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8281526040602082015260006149266040830184615202565b6000808335601e1984360301811261575957600080fd5b8301803591506001600160401b0382111561577357600080fd5b602001915036819003821315614b8a57600080fd5b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b8152600083516157b8816015850160208801614ae3565b7001034b99036b4b9b9b4b733903937b6329607d1b60159184019182015283516157e9816026840160208801614ae3565b01602601949350505050565b60008261580457615804615592565b500690565b60038110610dc257600080fd5b60006020828403121561582857600080fd5b813561362e81615809565b60006080828403121561584557600080fd5b604051608081018181106001600160401b038211171561586757615867614bd5565b604052823561587581614a5f565b8152602083013561588581615809565b6020820152604083810135908201526060928301359281019290925250919050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60408152600061524f60408301856150dd565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006159a76040830185614b07565b82810360208401526133148185614b07565b81810381811115610a9557610a9561552a565b600082516159de818460208701614ae3565b9190910192915050565b6000816159f7576159f761552a565b506000190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614a5490830184614b07565b600060208284031215615a4b57600080fd5b815161362e81614ab0565b600060033d11156134905760046000803e5060005160e01c90565b600060443d1015615a7f5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615aae57505050505090565b8285019150815181811115615ac65750505050505090565b843d8701016020828501011115615ae05750505050505090565b615aef60208286010187614beb565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090615b6e908301866150dd565b8281036060840152615b8081866150dd565b90508281036080840152615b948185614b07565b98975050505050505050565b60e09190911b6001600160e01b031916815260200190565b600060208284031215615bca57600080fd5b815161362e816152e0565b6020808252600a908201526921546f6b656e5479706560b01b604082015260600190565b8135615c0481614a5f565b81546001600160a01b031981166001600160a01b039290921691821783556020840135615c3081615809565b60038110615c4e57634e487b7160e01b600052602160045260246000fd5b6001600160a81b03199190911690911760a09190911b60ff60a01b161781556040820135600182015560609091013560029091015556fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220718c3aabc4f91a76cd8fcd3533a24375dfac006f35a169ca7c7ec32c60d358bb64736f6c63430008130033"; + + public PackDeploymentBase() + : base(BYTECODE) { } + + public PackDeploymentBase(string byteCode) + : base(byteCode) { } + + [Parameter("address", "_nativeTokenWrapper", 1)] + public virtual string NativeTokenWrapper { get; set; } + + [Parameter("address", "_trustedForwarder", 2)] + public virtual string TrustedForwarder { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class AddPackContentsFunction : AddPackContentsFunctionBase { } + + [Function("addPackContents", typeof(AddPackContentsOutputDTO))] + public class AddPackContentsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_packId", 1)] + public virtual BigInteger PackId { get; set; } + + [Parameter("tuple[]", "_contents", 2)] + public virtual List Contents { get; set; } + + [Parameter("uint256[]", "_numOfRewardUnits", 3)] + public virtual List NumOfRewardUnits { get; set; } + + [Parameter("address", "_recipient", 4)] + public virtual string Recipient { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "id", 2)] + public virtual BigInteger Id { get; set; } + } + + public partial class BalanceOfBatchFunction : BalanceOfBatchFunctionBase { } + + [Function("balanceOfBatch", "uint256[]")] + public class BalanceOfBatchFunctionBase : FunctionMessage + { + [Parameter("address[]", "accounts", 1)] + public virtual List Accounts { get; set; } + + [Parameter("uint256[]", "ids", 2)] + public virtual List Ids { get; set; } + } + + public partial class CanUpdatePackFunction : CanUpdatePackFunctionBase { } + + [Function("canUpdatePack", "bool")] + public class CanUpdatePackFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class CreatePackFunction : CreatePackFunctionBase { } + + [Function("createPack", typeof(CreatePackOutputDTO))] + public class CreatePackFunctionBase : FunctionMessage + { + [Parameter("tuple[]", "_contents", 1)] + public virtual List Contents { get; set; } + + [Parameter("uint256[]", "_numOfRewardUnits", 2)] + public virtual List NumOfRewardUnits { get; set; } + + [Parameter("string", "_packUri", 3)] + public virtual string PackUri { get; set; } + + [Parameter("uint128", "_openStartTimestamp", 4)] + public virtual BigInteger OpenStartTimestamp { get; set; } + + [Parameter("uint128", "_amountDistributedPerOpen", 5)] + public virtual BigInteger AmountDistributedPerOpen { get; set; } + + [Parameter("address", "_recipient", 6)] + public virtual string Recipient { get; set; } + } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetPackContentsFunction : GetPackContentsFunctionBase { } + + [Function("getPackContents", typeof(GetPackContentsOutputDTO))] + public class GetPackContentsFunctionBase : FunctionMessage + { + [Parameter("uint256", "_packId", 1)] + public virtual BigInteger PackId { get; set; } + } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetTokenCountOfBundleFunction : GetTokenCountOfBundleFunctionBase { } + + [Function("getTokenCountOfBundle", "uint256")] + public class GetTokenCountOfBundleFunctionBase : FunctionMessage + { + [Parameter("uint256", "_bundleId", 1)] + public virtual BigInteger BundleId { get; set; } + } + + public partial class GetTokenOfBundleFunction : GetTokenOfBundleFunctionBase { } + + [Function("getTokenOfBundle", typeof(GetTokenOfBundleOutputDTO))] + public class GetTokenOfBundleFunctionBase : FunctionMessage + { + [Parameter("uint256", "_bundleId", 1)] + public virtual BigInteger BundleId { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetUriOfBundleFunction : GetUriOfBundleFunctionBase { } + + [Function("getUriOfBundle", "string")] + public class GetUriOfBundleFunctionBase : FunctionMessage + { + [Parameter("uint256", "_bundleId", 1)] + public virtual BigInteger BundleId { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_royaltyRecipient", 6)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 7)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OnERC1155BatchReceivedFunction : OnERC1155BatchReceivedFunctionBase { } + + [Function("onERC1155BatchReceived", "bytes4")] + public class OnERC1155BatchReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256[]", "", 3)] + public virtual List ReturnValue3 { get; set; } + + [Parameter("uint256[]", "", 4)] + public virtual List ReturnValue4 { get; set; } + + [Parameter("bytes", "", 5)] + public virtual byte[] ReturnValue5 { get; set; } + } + + public partial class OnERC1155ReceivedFunction : OnERC1155ReceivedFunctionBase { } + + [Function("onERC1155Received", "bytes4")] + public class OnERC1155ReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256", "", 3)] + public virtual BigInteger ReturnValue3 { get; set; } + + [Parameter("uint256", "", 4)] + public virtual BigInteger ReturnValue4 { get; set; } + + [Parameter("bytes", "", 5)] + public virtual byte[] ReturnValue5 { get; set; } + } + + public partial class OnERC721ReceivedFunction : OnERC721ReceivedFunctionBase { } + + [Function("onERC721Received", "bytes4")] + public class OnERC721ReceivedFunctionBase : FunctionMessage + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + + [Parameter("uint256", "", 3)] + public virtual BigInteger ReturnValue3 { get; set; } + + [Parameter("bytes", "", 4)] + public virtual byte[] ReturnValue4 { get; set; } + } + + public partial class OpenPackFunction : OpenPackFunctionBase { } + + [Function("openPack", typeof(OpenPackOutputDTO))] + public class OpenPackFunctionBase : FunctionMessage + { + [Parameter("uint256", "_packId", 1)] + public virtual BigInteger PackId { get; set; } + + [Parameter("uint256", "_amountToOpen", 2)] + public virtual BigInteger AmountToOpen { get; set; } + } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeBatchTransferFromFunction : SafeBatchTransferFromFunctionBase { } + + [Function("safeBatchTransferFrom")] + public class SafeBatchTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 3)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "amounts", 4)] + public virtual List Amounts { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 3)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "amount", 4)] + public virtual BigInteger Amount { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriFunction : UriFunctionBase { } + + [Function("uri", "string")] + public class UriFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PackCreatedEventDTO : PackCreatedEventDTOBase { } + + [Event("PackCreated")] + public class PackCreatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "packId", 1, true)] + public virtual BigInteger PackId { get; set; } + + [Parameter("address", "recipient", 2, false)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "totalPacksCreated", 3, false)] + public virtual BigInteger TotalPacksCreated { get; set; } + } + + public partial class PackOpenedEventDTO : PackOpenedEventDTOBase { } + + [Event("PackOpened")] + public class PackOpenedEventDTOBase : IEventDTO + { + [Parameter("uint256", "packId", 1, true)] + public virtual BigInteger PackId { get; set; } + + [Parameter("address", "opener", 2, true)] + public virtual string Opener { get; set; } + + [Parameter("uint256", "numOfPacksOpened", 3, false)] + public virtual BigInteger NumOfPacksOpened { get; set; } + + [Parameter("tuple[]", "rewardUnitsDistributed", 4, false)] + public virtual List RewardUnitsDistributed { get; set; } + } + + public partial class PackUpdatedEventDTO : PackUpdatedEventDTOBase { } + + [Event("PackUpdated")] + public class PackUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint256", "packId", 1, true)] + public virtual BigInteger PackId { get; set; } + + [Parameter("address", "recipient", 2, false)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "totalPacksCreated", 3, false)] + public virtual BigInteger TotalPacksCreated { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class TransferBatchEventDTO : TransferBatchEventDTOBase { } + + [Event("TransferBatch")] + public class TransferBatchEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 4, false)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "values", 5, false)] + public virtual List Values { get; set; } + } + + public partial class TransferSingleEventDTO : TransferSingleEventDTOBase { } + + [Event("TransferSingle")] + public class TransferSingleEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 4, false)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "value", 5, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class URIEventDTO : URIEventDTOBase { } + + [Event("URI")] + public class URIEventDTOBase : IEventDTO + { + [Parameter("string", "value", 1, false)] + public virtual string Value { get; set; } + + [Parameter("uint256", "id", 2, true)] + public virtual BigInteger Id { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class AddPackContentsOutputDTO : AddPackContentsOutputDTOBase { } + + [FunctionOutput] + public class AddPackContentsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "packTotalSupply", 1)] + public virtual BigInteger PackTotalSupply { get; set; } + + [Parameter("uint256", "newSupplyAdded", 2)] + public virtual BigInteger NewSupplyAdded { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfBatchOutputDTO : BalanceOfBatchOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfBatchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class CanUpdatePackOutputDTO : CanUpdatePackOutputDTOBase { } + + [FunctionOutput] + public class CanUpdatePackOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class CreatePackOutputDTO : CreatePackOutputDTOBase { } + + [FunctionOutput] + public class CreatePackOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "packId", 1)] + public virtual BigInteger PackId { get; set; } + + [Parameter("uint256", "packTotalSupply", 2)] + public virtual BigInteger PackTotalSupply { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPackContentsOutputDTO : GetPackContentsOutputDTOBase { } + + [FunctionOutput] + public class GetPackContentsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "contents", 1)] + public virtual List Contents { get; set; } + + [Parameter("uint256[]", "perUnitAmounts", 2)] + public virtual List PerUnitAmounts { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetTokenCountOfBundleOutputDTO : GetTokenCountOfBundleOutputDTOBase { } + + [FunctionOutput] + public class GetTokenCountOfBundleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetTokenOfBundleOutputDTO : GetTokenOfBundleOutputDTOBase { } + + [FunctionOutput] + public class GetTokenOfBundleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "", 1)] + public virtual Token ReturnValue1 { get; set; } + } + + public partial class GetUriOfBundleOutputDTO : GetUriOfBundleOutputDTOBase { } + + [FunctionOutput] + public class GetUriOfBundleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OpenPackOutputDTO : OpenPackOutputDTOBase { } + + [FunctionOutput] + public class OpenPackOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriOutputDTO : UriOutputDTOBase { } + + [FunctionOutput] + public class UriOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs.meta new file mode 100644 index 00000000..54d5c16e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/PackDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 515b5cbda9ce0434b9c0e015ca291514 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs new file mode 100644 index 00000000..78dc1e96 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.Pack.ContractDefinition +{ + public partial class Token : TokenBase { } + + public class TokenBase + { + [Parameter("address", "assetContract", 1)] + public virtual string AssetContract { get; set; } + + [Parameter("uint8", "tokenType", 2)] + public virtual byte TokenType { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "totalAmount", 4)] + public virtual BigInteger TotalAmount { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs.meta new file mode 100644 index 00000000..44a4b207 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/ContractDefinition/Token.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad864f6dacc6b8042849f7e069d80ef1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs b/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs new file mode 100644 index 00000000..1e30b839 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs @@ -0,0 +1,1016 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.Pack.ContractDefinition; + +namespace Thirdweb.Contracts.Pack +{ + public partial class PackService + { + public static Task DeployContractAndWaitForReceiptAsync(Nethereum.Web3.Web3 web3, PackDeployment packDeployment, CancellationTokenSource cancellationTokenSource = null) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(packDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, PackDeployment packDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(packDeployment); + } + + public static async Task DeployContractAndGetServiceAsync(Nethereum.Web3.Web3 web3, PackDeployment packDeployment, CancellationTokenSource cancellationTokenSource = null) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, packDeployment, cancellationTokenSource); + return new PackService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public PackService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task AddPackContentsRequestAsync(AddPackContentsFunction addPackContentsFunction) + { + return ContractHandler.SendRequestAsync(addPackContentsFunction); + } + + public Task AddPackContentsRequestAndWaitForReceiptAsync(AddPackContentsFunction addPackContentsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(addPackContentsFunction, cancellationToken); + } + + public Task AddPackContentsRequestAsync(BigInteger packId, List contents, List numOfRewardUnits, string recipient) + { + var addPackContentsFunction = new AddPackContentsFunction(); + addPackContentsFunction.PackId = packId; + addPackContentsFunction.Contents = contents; + addPackContentsFunction.NumOfRewardUnits = numOfRewardUnits; + addPackContentsFunction.Recipient = recipient; + + return ContractHandler.SendRequestAsync(addPackContentsFunction); + } + + public Task AddPackContentsRequestAndWaitForReceiptAsync( + BigInteger packId, + List contents, + List numOfRewardUnits, + string recipient, + CancellationTokenSource cancellationToken = null + ) + { + var addPackContentsFunction = new AddPackContentsFunction(); + addPackContentsFunction.PackId = packId; + addPackContentsFunction.Contents = contents; + addPackContentsFunction.NumOfRewardUnits = numOfRewardUnits; + addPackContentsFunction.Recipient = recipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(addPackContentsFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BigInteger id, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + balanceOfFunction.Id = id; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(BalanceOfBatchFunction balanceOfBatchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(List accounts, List ids, BlockParameter blockParameter = null) + { + var balanceOfBatchFunction = new BalanceOfBatchFunction(); + balanceOfBatchFunction.Accounts = accounts; + balanceOfBatchFunction.Ids = ids; + + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task CanUpdatePackQueryAsync(CanUpdatePackFunction canUpdatePackFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(canUpdatePackFunction, blockParameter); + } + + public Task CanUpdatePackQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var canUpdatePackFunction = new CanUpdatePackFunction(); + canUpdatePackFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(canUpdatePackFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task CreatePackRequestAsync(CreatePackFunction createPackFunction) + { + return ContractHandler.SendRequestAsync(createPackFunction); + } + + public Task CreatePackRequestAndWaitForReceiptAsync(CreatePackFunction createPackFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(createPackFunction, cancellationToken); + } + + public Task CreatePackRequestAsync( + List contents, + List numOfRewardUnits, + string packUri, + BigInteger openStartTimestamp, + BigInteger amountDistributedPerOpen, + string recipient + ) + { + var createPackFunction = new CreatePackFunction(); + createPackFunction.Contents = contents; + createPackFunction.NumOfRewardUnits = numOfRewardUnits; + createPackFunction.PackUri = packUri; + createPackFunction.OpenStartTimestamp = openStartTimestamp; + createPackFunction.AmountDistributedPerOpen = amountDistributedPerOpen; + createPackFunction.Recipient = recipient; + + return ContractHandler.SendRequestAsync(createPackFunction); + } + + public Task CreatePackRequestAndWaitForReceiptAsync( + List contents, + List numOfRewardUnits, + string packUri, + BigInteger openStartTimestamp, + BigInteger amountDistributedPerOpen, + string recipient, + CancellationTokenSource cancellationToken = null + ) + { + var createPackFunction = new CreatePackFunction(); + createPackFunction.Contents = contents; + createPackFunction.NumOfRewardUnits = numOfRewardUnits; + createPackFunction.PackUri = packUri; + createPackFunction.OpenStartTimestamp = openStartTimestamp; + createPackFunction.AmountDistributedPerOpen = amountDistributedPerOpen; + createPackFunction.Recipient = recipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(createPackFunction, cancellationToken); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPackContentsQueryAsync(GetPackContentsFunction getPackContentsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPackContentsFunction, blockParameter); + } + + public Task GetPackContentsQueryAsync(BigInteger packId, BlockParameter blockParameter = null) + { + var getPackContentsFunction = new GetPackContentsFunction(); + getPackContentsFunction.PackId = packId; + + return ContractHandler.QueryDeserializingToObjectAsync(getPackContentsFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetTokenCountOfBundleQueryAsync(GetTokenCountOfBundleFunction getTokenCountOfBundleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getTokenCountOfBundleFunction, blockParameter); + } + + public Task GetTokenCountOfBundleQueryAsync(BigInteger bundleId, BlockParameter blockParameter = null) + { + var getTokenCountOfBundleFunction = new GetTokenCountOfBundleFunction(); + getTokenCountOfBundleFunction.BundleId = bundleId; + + return ContractHandler.QueryAsync(getTokenCountOfBundleFunction, blockParameter); + } + + public Task GetTokenOfBundleQueryAsync(GetTokenOfBundleFunction getTokenOfBundleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getTokenOfBundleFunction, blockParameter); + } + + public Task GetTokenOfBundleQueryAsync(BigInteger bundleId, BigInteger index, BlockParameter blockParameter = null) + { + var getTokenOfBundleFunction = new GetTokenOfBundleFunction(); + getTokenOfBundleFunction.BundleId = bundleId; + getTokenOfBundleFunction.Index = index; + + return ContractHandler.QueryDeserializingToObjectAsync(getTokenOfBundleFunction, blockParameter); + } + + public Task GetUriOfBundleQueryAsync(GetUriOfBundleFunction getUriOfBundleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getUriOfBundleFunction, blockParameter); + } + + public Task GetUriOfBundleQueryAsync(BigInteger bundleId, BlockParameter blockParameter = null) + { + var getUriOfBundleFunction = new GetUriOfBundleFunction(); + getUriOfBundleFunction.BundleId = bundleId; + + return ContractHandler.QueryAsync(getUriOfBundleFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync(string defaultAdmin, string name, string symbol, string contractURI, List trustedForwarders, string royaltyRecipient, BigInteger royaltyBps) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string royaltyRecipient, + BigInteger royaltyBps, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string account, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Account = account; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OnERC1155BatchReceivedRequestAsync(OnERC1155BatchReceivedFunction onERC1155BatchReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC1155BatchReceivedFunction); + } + + public Task OnERC1155BatchReceivedRequestAndWaitForReceiptAsync( + OnERC1155BatchReceivedFunction onERC1155BatchReceivedFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155BatchReceivedFunction, cancellationToken); + } + + public Task OnERC1155BatchReceivedRequestAsync(string returnValue1, string returnValue2, List returnValue3, List returnValue4, byte[] returnValue5) + { + var onERC1155BatchReceivedFunction = new OnERC1155BatchReceivedFunction(); + onERC1155BatchReceivedFunction.ReturnValue1 = returnValue1; + onERC1155BatchReceivedFunction.ReturnValue2 = returnValue2; + onERC1155BatchReceivedFunction.ReturnValue3 = returnValue3; + onERC1155BatchReceivedFunction.ReturnValue4 = returnValue4; + onERC1155BatchReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAsync(onERC1155BatchReceivedFunction); + } + + public Task OnERC1155BatchReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + List returnValue3, + List returnValue4, + byte[] returnValue5, + CancellationTokenSource cancellationToken = null + ) + { + var onERC1155BatchReceivedFunction = new OnERC1155BatchReceivedFunction(); + onERC1155BatchReceivedFunction.ReturnValue1 = returnValue1; + onERC1155BatchReceivedFunction.ReturnValue2 = returnValue2; + onERC1155BatchReceivedFunction.ReturnValue3 = returnValue3; + onERC1155BatchReceivedFunction.ReturnValue4 = returnValue4; + onERC1155BatchReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155BatchReceivedFunction, cancellationToken); + } + + public Task OnERC1155ReceivedRequestAsync(OnERC1155ReceivedFunction onERC1155ReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC1155ReceivedFunction); + } + + public Task OnERC1155ReceivedRequestAndWaitForReceiptAsync(OnERC1155ReceivedFunction onERC1155ReceivedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155ReceivedFunction, cancellationToken); + } + + public Task OnERC1155ReceivedRequestAsync(string returnValue1, string returnValue2, BigInteger returnValue3, BigInteger returnValue4, byte[] returnValue5) + { + var onERC1155ReceivedFunction = new OnERC1155ReceivedFunction(); + onERC1155ReceivedFunction.ReturnValue1 = returnValue1; + onERC1155ReceivedFunction.ReturnValue2 = returnValue2; + onERC1155ReceivedFunction.ReturnValue3 = returnValue3; + onERC1155ReceivedFunction.ReturnValue4 = returnValue4; + onERC1155ReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAsync(onERC1155ReceivedFunction); + } + + public Task OnERC1155ReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + BigInteger returnValue3, + BigInteger returnValue4, + byte[] returnValue5, + CancellationTokenSource cancellationToken = null + ) + { + var onERC1155ReceivedFunction = new OnERC1155ReceivedFunction(); + onERC1155ReceivedFunction.ReturnValue1 = returnValue1; + onERC1155ReceivedFunction.ReturnValue2 = returnValue2; + onERC1155ReceivedFunction.ReturnValue3 = returnValue3; + onERC1155ReceivedFunction.ReturnValue4 = returnValue4; + onERC1155ReceivedFunction.ReturnValue5 = returnValue5; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC1155ReceivedFunction, cancellationToken); + } + + public Task OnERC721ReceivedRequestAsync(OnERC721ReceivedFunction onERC721ReceivedFunction) + { + return ContractHandler.SendRequestAsync(onERC721ReceivedFunction); + } + + public Task OnERC721ReceivedRequestAndWaitForReceiptAsync(OnERC721ReceivedFunction onERC721ReceivedFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC721ReceivedFunction, cancellationToken); + } + + public Task OnERC721ReceivedRequestAsync(string returnValue1, string returnValue2, BigInteger returnValue3, byte[] returnValue4) + { + var onERC721ReceivedFunction = new OnERC721ReceivedFunction(); + onERC721ReceivedFunction.ReturnValue1 = returnValue1; + onERC721ReceivedFunction.ReturnValue2 = returnValue2; + onERC721ReceivedFunction.ReturnValue3 = returnValue3; + onERC721ReceivedFunction.ReturnValue4 = returnValue4; + + return ContractHandler.SendRequestAsync(onERC721ReceivedFunction); + } + + public Task OnERC721ReceivedRequestAndWaitForReceiptAsync( + string returnValue1, + string returnValue2, + BigInteger returnValue3, + byte[] returnValue4, + CancellationTokenSource cancellationToken = null + ) + { + var onERC721ReceivedFunction = new OnERC721ReceivedFunction(); + onERC721ReceivedFunction.ReturnValue1 = returnValue1; + onERC721ReceivedFunction.ReturnValue2 = returnValue2; + onERC721ReceivedFunction.ReturnValue3 = returnValue3; + onERC721ReceivedFunction.ReturnValue4 = returnValue4; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(onERC721ReceivedFunction, cancellationToken); + } + + public Task OpenPackRequestAsync(OpenPackFunction openPackFunction) + { + return ContractHandler.SendRequestAsync(openPackFunction); + } + + public Task OpenPackRequestAndWaitForReceiptAsync(OpenPackFunction openPackFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(openPackFunction, cancellationToken); + } + + public Task OpenPackRequestAsync(BigInteger packId, BigInteger amountToOpen) + { + var openPackFunction = new OpenPackFunction(); + openPackFunction.PackId = packId; + openPackFunction.AmountToOpen = amountToOpen; + + return ContractHandler.SendRequestAsync(openPackFunction); + } + + public Task OpenPackRequestAndWaitForReceiptAsync(BigInteger packId, BigInteger amountToOpen, CancellationTokenSource cancellationToken = null) + { + var openPackFunction = new OpenPackFunction(); + openPackFunction.PackId = packId; + openPackFunction.AmountToOpen = amountToOpen; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(openPackFunction, cancellationToken); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeBatchTransferFromRequestAsync(SafeBatchTransferFromFunction safeBatchTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + SafeBatchTransferFromFunction safeBatchTransferFromFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeBatchTransferFromRequestAsync(string from, string to, List ids, List amounts, byte[] data) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + List ids, + List amounts, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger id, BigInteger amount, byte[] data) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + BigInteger id, + BigInteger amount, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var totalSupplyFunction = new TotalSupplyFunction(); + totalSupplyFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task UriQueryAsync(UriFunction uriFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + + public Task UriQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var uriFunction = new UriFunction(); + uriFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs.meta new file mode 100644 index 00000000..ca85e8f5 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/Pack/PackService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46efe41b4f41cbe45aa3a5ef7ba68e06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop.meta new file mode 100644 index 00000000..fddecdcd --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 79fd0f38e03a0eb4ebd0c0a24a015e8d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition.meta new file mode 100644 index 00000000..a773bf55 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 21334a197ada5204bb1526ad01c98a9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs new file mode 100644 index 00000000..ed12a0a8 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.SignatureDrop.ContractDefinition +{ + public partial class AllowlistProof : AllowlistProofBase { } + + public class AllowlistProofBase + { + [Parameter("bytes32[]", "proof", 1)] + public virtual List Proof { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 2)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("uint256", "pricePerToken", 3)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 4)] + public virtual string Currency { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs.meta new file mode 100644 index 00000000..0cdd4602 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/AllowlistProof.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 851df5e71890f6243a7c1d22e866858b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs new file mode 100644 index 00000000..4358879f --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.SignatureDrop.ContractDefinition +{ + public partial class ClaimCondition : ClaimConditionBase { } + + public class ClaimConditionBase + { + [Parameter("uint256", "startTimestamp", 1)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint256", "maxClaimableSupply", 2)] + public virtual BigInteger MaxClaimableSupply { get; set; } + + [Parameter("uint256", "supplyClaimed", 3)] + public virtual BigInteger SupplyClaimed { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 4)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("bytes32", "merkleRoot", 5)] + public virtual byte[] MerkleRoot { get; set; } + + [Parameter("uint256", "pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("string", "metadata", 8)] + public virtual string Metadata { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs.meta new file mode 100644 index 00000000..c65f819e --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/ClaimCondition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a33e3ab04a8cf64885b64f34b967491 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs new file mode 100644 index 00000000..47bd9d34 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.SignatureDrop.ContractDefinition +{ + public partial class MintRequest : MintRequestBase { } + + public class MintRequestBase + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("address", "royaltyRecipient", 2)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("address", "primarySaleRecipient", 4)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("string", "uri", 5)] + public virtual string Uri { get; set; } + + [Parameter("uint256", "quantity", 6)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "pricePerToken", 7)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 8)] + public virtual string Currency { get; set; } + + [Parameter("uint128", "validityStartTimestamp", 9)] + public virtual BigInteger ValidityStartTimestamp { get; set; } + + [Parameter("uint128", "validityEndTimestamp", 10)] + public virtual BigInteger ValidityEndTimestamp { get; set; } + + [Parameter("bytes32", "uid", 11)] + public virtual byte[] Uid { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs.meta new file mode 100644 index 00000000..eee0cae8 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/MintRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96a2aa4d685190743804f4c8a3b20d19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs new file mode 100644 index 00000000..c76fb996 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs @@ -0,0 +1,1402 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.SignatureDrop.ContractDefinition +{ + public partial class SignatureDropDeployment : SignatureDropDeploymentBase + { + public SignatureDropDeployment() + : base(BYTECODE) { } + + public SignatureDropDeployment(string byteCode) + : base(byteCode) { } + } + + public class SignatureDropDeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "608060405234801561001057600080fd5b50615f1580620000216000396000f3fe6080604052600436106103b85760003560e01c80638da5cb5b116101f2578063b88d4fde1161010d578063d637ed59116100a0578063e8a3d4851161006f578063e8a3d48514610bd8578063e985e9c514610bed578063eec8897c14610c37578063f28083c314610c5757600080fd5b8063d637ed5914610b4b578063e159163414610b74578063e57553da14610b94578063e715032214610bb857600080fd5b8063ce805642116100dc578063ce80564214610ac0578063d37c353b14610ae0578063d45573f614610b00578063d547741f14610b2b57600080fd5b8063b88d4fde14610a3d578063c87b56dd14610a5d578063ca15c87314610a7d578063cb2ef6f714610a9d57600080fd5b8063a0a8e46011610185578063a32fa5b311610154578063a32fa5b3146109a1578063ac9650d8146109c1578063b24f2d39146109ee578063b6f10c7914610a1d57600080fd5b8063a0a8e4601461093a578063a217fddf14610956578063a22cb4651461096b578063a2309ff81461098b57600080fd5b806395d89b41116101c157806395d89b41146108c55780639bcf7a15146108da5780639fc4d68f146108fa578063a05112fc1461091a57600080fd5b80638da5cb5b146108475780639010d07c1461086557806391d1485414610885578063938e3d7b146108a557600080fd5b806336568abe116102e2578063572b6c05116102755780636f4f2837116102445780636f4f2837146107d457806370a08231146107f45780637e54523c1461081457806384bb1e421461083457600080fd5b8063572b6c0514610746578063600dd5ea1461077f5780636352211e1461079f57806363b45e2d146107bf57600080fd5b806342966c68116102b157806342966c68146106b1578063439c7be5146106d1578063492e224b146106e45780634cc157df1461070457600080fd5b806336568abe1461063c5780633b1475a71461065c578063426cfaf31461067157806342842e0e1461069157600080fd5b80631e7ac4881161035a578063252e82e811610329578063252e82e81461055a5780632a55205a146105995780632f2ff15d146105d857806335b65e1f146105f857600080fd5b80631e7ac488146104cd57806323b872dd146104ed5780632419f51b1461050d578063248a9ca31461052d57600080fd5b8063081812fc11610396578063081812fc14610446578063095ea7b31461046657806313af40351461048857806318160ddd146104a857600080fd5b806301ffc9a7146103bd57806306fdde03146103f2578063079fe40e14610414575b600080fd5b3480156103c957600080fd5b506103dd6103d8366004614cb4565b610c77565b60405190151581526020015b60405180910390f35b3480156103fe57600080fd5b50610407610ca3565b6040516103e99190614d21565b34801561042057600080fd5b506006546001600160a01b03165b6040516001600160a01b0390911681526020016103e9565b34801561045257600080fd5b5061042e610461366004614d34565b610d36565b34801561047257600080fd5b50610486610481366004614d69565b610d7b565b005b34801561049457600080fd5b506104866104a3366004614d93565b610e13565b3480156104b457600080fd5b506101175461011654035b6040519081526020016103e9565b3480156104d957600080fd5b506104866104e8366004614d69565b610e4c565b3480156104f957600080fd5b50610486610508366004614dae565b610e7e565b34801561051957600080fd5b506104bf610528366004614d34565b610e89565b34801561053957600080fd5b506104bf610548366004614d34565b6000908152600d602052604090205490565b34801561056657600080fd5b5061057a610575366004614e2b565b610ef7565b6040805192151583526001600160a01b039091166020830152016103e9565b3480156105a557600080fd5b506105b96105b4366004614e9c565b610f3b565b604080516001600160a01b0390931683526020830191909152016103e9565b3480156105e457600080fd5b506104866105f3366004614ebe565b610f78565b34801561060457600080fd5b506104bf610613366004614d93565b60175460009081526018602090815260408083206001600160a01b039094168352929052205490565b34801561064857600080fd5b50610486610657366004614ebe565b61100e565b34801561066857600080fd5b50600b546104bf565b34801561067d57600080fd5b5061048661068c366004614ef8565b611070565b34801561069d57600080fd5b506104866106ac366004614dae565b611288565b3480156106bd57600080fd5b506104866106cc366004614d34565b6112a3565b61042e6106df366004614e2b565b6112ae565b3480156106f057600080fd5b506103dd6106ff366004614d34565b611402565b34801561071057600080fd5b5061072461071f366004614d34565b611428565b604080516001600160a01b03909316835261ffff9091166020830152016103e9565b34801561075257600080fd5b506103dd610761366004614d93565b6001600160a01b031660009081526080602052604090205460ff1690565b34801561078b57600080fd5b5061048661079a366004614d69565b611497565b3480156107ab57600080fd5b5061042e6107ba366004614d34565b6114c5565b3480156107cb57600080fd5b506009546104bf565b3480156107e057600080fd5b506104866107ef366004614d93565b6114d7565b34801561080057600080fd5b506104bf61080f366004614d93565b611504565b34801561082057600080fd5b5061048661082f366004614d69565b611553565b610486610842366004615024565b611581565b34801561085357600080fd5b506007546001600160a01b031661042e565b34801561087157600080fd5b5061042e610880366004614e9c565b611688565b34801561089157600080fd5b506103dd6108a0366004614ebe565b611776565b3480156108b157600080fd5b506104866108c03660046150ba565b6117a1565b3480156108d157600080fd5b506104076117ce565b3480156108e657600080fd5b506104866108f53660046150ee565b6117de565b34801561090657600080fd5b50610407610915366004615113565b61180d565b34801561092657600080fd5b50610407610935366004614d34565b61198d565b34801561094657600080fd5b50604051600581526020016103e9565b34801561096257600080fd5b506104bf600081565b34801561097757600080fd5b50610486610986366004615151565b611a27565b34801561099757600080fd5b50610116546104bf565b3480156109ad57600080fd5b506103dd6109bc366004614ebe565b611afa565b3480156109cd57600080fd5b506109e16109dc36600461516d565b611b50565b6040516103e991906151e1565b3480156109fa57600080fd5b5060045461010081046001600160a01b031690600160a81b900461ffff16610724565b348015610a2957600080fd5b50610486610a38366004615243565b611c44565b348015610a4957600080fd5b50610486610a58366004615264565b611cc5565b348015610a6957600080fd5b50610407610a78366004614d34565b611d0f565b348015610a8957600080fd5b506104bf610a98366004614d34565b611d7e565b348015610aa957600080fd5b506c05369676e617475726544726f7609c1b6104bf565b348015610acc57600080fd5b50610407610adb366004615113565b611e07565b348015610aec57600080fd5b506104bf610afb3660046152cb565b611e95565b348015610b0c57600080fd5b506002546001600160a01b03811690600160a01b900461ffff16610724565b348015610b3757600080fd5b50610486610b46366004614ebe565b611f2d565b348015610b5757600080fd5b50610b60611f46565b6040516103e9989796959493929190615344565b348015610b8057600080fd5b50610486610b8f36600461542b565b612005565b348015610ba057600080fd5b506105b96002546003546001600160a01b0390911691565b348015610bc457600080fd5b50610407610bd336600461553d565b6121eb565b348015610be457600080fd5b50610407612260565b348015610bf957600080fd5b506103dd610c0836600461558b565b6001600160a01b03918216600090815261011d6020908152604080832093909416825291909152205460ff1690565b348015610c4357600080fd5b506103dd610c523660046155b5565b61226d565b348015610c6357600080fd5b5060045460ff166040516103e9919061563c565b6000610c828261261f565b80610c9d575063152a902d60e11b6001600160e01b03198316145b92915050565b60606101188054610cb390615664565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdf90615664565b8015610d2c5780601f10610d0157610100808354040283529160200191610d2c565b820191906000526020600020905b815481529060010190602001808311610d0f57829003601f168201915b5050505050905090565b6000610d418261266f565b610d5e576040516333d1c03960e21b815260040160405180910390fd5b50600090815261011c60205260409020546001600160a01b031690565b6000610d86826114c5565b9050806001600160a01b0316836001600160a01b031603610dba5760405163250fdee360e21b815260040160405180910390fd5b806001600160a01b0316610dcc61269d565b6001600160a01b031614610e0357610de681610c0861269d565b610e03576040516367d9dca160e11b815260040160405180910390fd5b610e0e8383836126ac565b505050565b610e1b612709565b610e405760405162461bcd60e51b8152600401610e3790615698565b60405180910390fd5b610e4981612717565b50565b610e54612709565b610e705760405162461bcd60e51b8152600401610e3790615698565b610e7a8282612769565b5050565b610e0e8383836127f7565b6000610e9460095490565b8210610ed25760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610e37565b60098281548110610ee557610ee56156c0565b90600052602060002001549050919050565b600080610f05858585612a04565b6101408601356000908152604d602052604090205490915060ff16158015610f315750610f3181612a6a565b9150935093915050565b600080600080610f4a86611428565b90945084925061ffff169050612710610f6382876156ec565b610f6d9190615719565b925050509250929050565b6000828152600d6020526040902054610f919033612a79565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16156110045760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610e37565b610e7a8282612af9565b336001600160a01b038216146110665760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610e37565b610e7a8282612b0d565b611078612709565b6110945760405162461bcd60e51b8152600401610e3790615698565b60175460115482156110ea575060006110ab612b64565b60405160609190911b6bffffffffffffffffffffffff191660208201524360348201526054016040516020818303038152906040528051906020012091505b83602001358111156111335760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610e37565b604051806101000160405280856000013581526020018560200135815260200182815260200185606001358152602001856080013581526020018560a0013581526020018560c001602081019061118a9190614d93565b6001600160a01b031681526020016111a560e087018761572d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152508051600f908155602082015160105560408201516011556060820151601255608082015160135560a082015160145560c0820151601580546001600160a01b0319166001600160a01b0390921691909117905560e082015160169061124090826157b9565b50505060178290556040517f6dab9d7d05d468100139089b2516cb8ff286c3972ff070d3b509e371f0d0d4b89061127a90869086906158e6565b60405180910390a150505050565b610e0e83838360405180602001604052806000815250611cc5565b610e49816001612b6e565b61011654600b54600091906112c760a08701358361597d565b11156112ff5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606401610e37565b61130a858585612d56565b9150600061131b6020870187614d93565b90506113506113306080880160608901614d93565b60a08801356113466101008a0160e08b01614d93565b8960c00135612ede565b60006113626040880160208901614d93565b6001600160a01b03161415801561137c5750604086013515155b1561139f5761139f826113956040890160208a01614d93565b886040013561301e565b6113ad818760a001356130c5565b81816001600160a01b0316846001600160a01b03167fee0cf9c3e87795b1932d13f80f892f620f567b4465e768ced5d64aa44ca1d64c896040516113f19190615990565b60405180910390a450509392505050565b6000818152600860205260408120805482919061141e90615664565b9050119050919050565b6000818152600560209081526040808320815180830190925280546001600160a01b03168083526001909101549282019290925282911561146f578051602082015161148d565b60045461010081046001600160a01b031690600160a81b900461ffff165b9250925050915091565b61149f612709565b6114bb5760405162461bcd60e51b8152600401610e3790615698565b610e7a82826130df565b60006114d08261316b565b5192915050565b6114df612709565b6114fb5760405162461bcd60e51b8152600401610e3790615698565b610e4981613288565b60006001600160a01b03821661152d576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b0316600090815261011b60205260409020546001600160401b031690565b61155b612709565b6115775760405162461bcd60e51b8152600401610e3790615698565b610e7a82826132d2565b61158f868686868686613333565b6017546115a661159d612b64565b8787878761226d565b5085600f60020160008282546115bc919061597d565b9091555050600081815260186020526040812087916115d9612b64565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611608919061597d565b9091555061161b90506000878787612ede565b60006116278888613385565b905080886001600160a01b031661163c612b64565b6001600160a01b03167fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de68a60405161167691815260200190565b60405180910390a45050505050505050565b6000828152600e602052604081205481805b8281101561176d576000868152600e602090815260408083208484526001019091529020546001600160a01b03161561171657848203611704576000868152600e602090815260408083209383526001909301905220546001600160a01b03169250610c9d915050565b61170f60018361597d565b915061175b565b611721866000611776565b801561174857506000868152600e6020908152604080832083805260020190915290205481145b1561175b5761175860018361597d565b91505b61176660018261597d565b905061169a565b50505092915050565b6000918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6117a9612709565b6117c55760405162461bcd60e51b8152600401610e3790615698565b610e4981613393565b60606101198054610cb390615664565b6117e6612709565b6118025760405162461bcd60e51b8152600401610e3790615698565b610e0e83838361301e565b60008381526008602052604081208054606092919061182b90615664565b80601f016020809104026020016040519081016040528092919081815260200182805461185790615664565b80156118a45780601f10611879576101008083540402835291602001916118a4565b820191906000526020600020905b81548152906001019060200180831161188757829003601f168201915b5050505050905080516000036118f05760405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81d1bc81c995d99585b607a1b6044820152606401610e37565b600080828060200190518101906119079190615ab2565b915091506119168287876121eb565b935080848787466040516020016119309493929190615b32565b60405160208183030381529060405280519060200120146119835760405162461bcd60e51b815260206004820152600d60248201526c496e636f7272656374206b657960981b6044820152606401610e37565b5050509392505050565b600860205260009081526040902080546119a690615664565b80601f01602080910402602001604051908101604052809291908181526020018280546119d290615664565b8015611a1f5780601f106119f457610100808354040283529160200191611a1f565b820191906000526020600020905b815481529060010190602001808311611a0257829003601f168201915b505050505081565b611a2f61269d565b6001600160a01b0316826001600160a01b031603611a605760405163b06307db60e01b815260040160405180910390fd5b8061011d6000611a6e61269d565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611ab261269d565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611aee911515815260200190565b60405180910390a35050565b6000828152600c6020908152604080832083805290915281205460ff16611b4757506000828152600c602090815260408083206001600160a01b038516845290915290205460ff16610c9d565b50600192915050565b6060816001600160401b03811115611b6a57611b6a614f61565b604051908082528060200260200182016040528015611b9d57816020015b6060815260200190600190039081611b885790505b50905060005b82811015611c3d57611c0d30858584818110611bc157611bc16156c0565b9050602002810190611bd3919061572d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061346392505050565b828281518110611c1f57611c1f6156c0565b60200260200101819052508080611c3590615b5b565b915050611ba3565b5092915050565b611c4c612709565b611c685760405162461bcd60e51b8152600401610e3790615698565b6004805482919060ff191660018381811115611c8657611c86615626565b02179055507fd246da9440709ce0dd3f4fd669abc85ada012ab9774b8ecdcc5059ba1486b9c181604051611cba919061563c565b60405180910390a150565b611cd08484846127f7565b6001600160a01b0383163b15611d0957611cec84848484613557565b611d09576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606000611d1c83613649565b5090506000611d2a8461374e565b9050611d3582611402565b15611d635780604051602001611d4b9190615b74565b60405160208183030381529060405292505050919050565b80611d6d856138af565b604051602001611d4b929190615b99565b6000818152600e6020526040812054815b81811015611de2576000848152600e602090815260408083208484526001019091529020546001600160a01b031615611dd057611dcd60018461597d565b92505b611ddb60018261597d565b9050611d8f565b50611dee836000611776565b15611e0157611dfe60018361597d565b91505b50919050565b606061014954611e178133612a79565b6000611e2286610e89565b9050611e2f81868661180d565b9250611e4a81604051806020016040528060008152506139af565b611e5481846139c7565b857f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d84604051611e849190614d21565b60405180910390a250509392505050565b60008115611f1657600080611eac84860186615bc8565b915091508151600014158015611ec157508015155b15611f1357611f1388600b54611ed7919061597d565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139af92505050565b50505b611f2386868686866139df565b9695505050505050565b6000828152600d60205260409020546110669033612a79565b600f8054601054601154601254601354601454601554601680549798969795969495939492936001600160a01b039092169291611f8290615664565b80601f0160208091040260200160405190810160405280929190818152602001828054611fae90615664565b8015611ffb5780601f10611fd057610100808354040283529160200191611ffb565b820191906000526020600020905b815481529060010190602001808311611fde57829003601f168201915b5050505050905088565b600054610100900460ff16158080156120255750600054600160ff909116105b8061203f5750303b15801561203f575060005460ff166001145b6120a25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e37565b6000805460ff1916600117905580156120c5576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661211089613aec565b61211a8c8c613b24565b612122613b55565b61212b8a613393565b6121348d612717565b61213f60008e612af9565b612149818e612af9565b612153828e612af9565b61215e826000612af9565b61217184866001600160801b0316612769565b61218487876001600160801b03166130df565b61218d88613288565b610148919091556101495580156121de576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b8251604080518083016020019091528181529060005b8181101561225757600085858360405160200161222093929190615c0c565b60408051601f1981840301815291905280516020918201208884018201511885840182015261225091508261597d565b9050612201565b50509392505050565b600180546119a690615664565b6040805161010081018252600f805482526010546020830152601154928201929092526012546060820152601354608082015260145460a08201526015546001600160a01b031660c082015260168054600093849392909160e0840191906122d490615664565b80601f016020809104026020016040519081016040528092919081815260200182805461230090615664565b801561234d5780601f106123225761010080835404028352916020019161234d565b820191906000526020600020905b81548152906001019060200180831161233057829003601f168201915b50505091909252505050606081015160a082015160c083015160808401519394509192909190156124325761242e6123858780615c1e565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508d9060208b01359060408c0135906123da908d0160608e01614d93565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b16607482015260880160405160208183030381529060405280519060200120613bcc565b5094505b84156124b957856020013560000361244a5782612450565b85602001355b9250600019866040013503612465578161246b565b85604001355b915060001986604001351415801561249c575060006124906080880160608901614d93565b6001600160a01b031614155b6124a657806124b6565b6124b66080870160608801614d93565b90505b60175460009081526018602090815260408083206001600160a01b03808f168552925290912054908981169083161415806124f45750828814155b156125345760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610e37565b891580612549575083612547828c61597d565b115b1561257f5760405162461bcd60e51b8152600401610e37906020808252600490820152632151747960e01b604082015260600190565b84602001518a8660400151612594919061597d565b11156125cf5760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610e37565b84514210156126115760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610e37565b505050505095945050505050565b60006001600160e01b031982166380ac58cd60e01b148061265057506001600160e01b03198216635b5e139f60e01b145b80610c9d57506301ffc9a760e01b6001600160e01b0319831614610c9d565b60006101165482108015610c9d575050600090815261011a6020526040902054600160e01b900460ff161590565b60006126a7613c9a565b905090565b600082815261011c602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006126a7816108a061269d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b61271081111561278b5760405162461bcd60e51b8152600401610e3790615c67565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b60006128028261316b565b9050836001600160a01b031681600001516001600160a01b0316146128395760405162a1148160e81b815260040160405180910390fd5b6000846001600160a01b031661284d61269d565b6001600160a01b03161480612869575061286985610c0861269d565b80612894575061287761269d565b6001600160a01b031661288984610d36565b6001600160a01b0316145b9050806128b457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166128db57604051633a954ecd60e21b815260040160405180910390fd5b6128e88585856001613cc4565b6128f4600084876126ac565b6001600160a01b03858116600090815261011b60209081526040808320805467ffffffffffffffff198082166001600160401b039283166000190183161790925589861680865283862080549384169383166001908101841694909417905589865261011a90945282852080546001600160e01b031916909417600160a01b429092169190910217835587018084529220805491939091166129cb576101165482146129cb57805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020615ec083398151915260405160405180910390a45050505050565b6000612a6083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a5a9250612a4e9150889050613d62565b80519060200120613ea9565b90613ef7565b90505b9392505050565b6000610c9d6101495483611776565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16610e7a57612ab7816001600160a01b03166014613f1b565b612ac2836020613f1b565b604051602001612ad3929190615c90565b60408051601f198184030181529082905262461bcd60e51b8252610e3791600401614d21565b612b0382826140b6565b610e7a8282614111565b612b17828261417e565b6000828152600e602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b60006126a761269d565b6000612b798361316b565b80519091508215612c01576000816001600160a01b0316612b9861269d565b6001600160a01b03161480612bb45750612bb482610c0861269d565b80612bdf5750612bc261269d565b6001600160a01b0316612bd486610d36565b6001600160a01b0316145b905080612bff57604051632ce44b5f60e11b815260040160405180910390fd5b505b612c0f816000866001613cc4565b612c1b600085836126ac565b6001600160a01b03808216600081815261011b602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b865261011a909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b178555918901808452922080549194909116612d1c57610116548214612d1c57805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020615ec0833981519152908390a45050610117805460010190555050565b600080612d64858585610ef7565b9250905080612da35760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642072657160a81b6044820152606401610e37565b42612db661012087016101008801615cfd565b6001600160801b03161180612de45750612dd861014086016101208701615cfd565b6001600160801b031642115b15612e1f5760405162461bcd60e51b815260206004820152600b60248201526a14995c48195e1c1a5c995960aa1b6044820152606401610e37565b6000612e2e6020870187614d93565b6001600160a01b031603612e7a5760405162461bcd60e51b81526020600482015260136024820152721c9958da5c1a595b9d081d5b9919599a5b9959606a1b6044820152606401610e37565b60008560a0013511612eb65760405162461bcd60e51b8152602060048201526005602482015264302071747960d81b6044820152606401610e37565b50610140909301356000908152604d60205260409020805460ff191660011790555090919050565b8015611d09576002546001600160a01b0380821691600160a01b900461ffff1690600090871615612f0f5786612f1c565b6006546001600160a01b03165b90506000612f2a85886156ec565b90506000612710612f3f61ffff8616846156ec565b612f499190615719565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03881601612fad57813414612fa85760405162461bcd60e51b815260206004820152600660248201526521507269636560d01b6044820152606401610e37565b612fe4565b3415612fe45760405162461bcd60e51b81526020600482015260066024820152652156616c756560d01b6044820152606401610e37565b612ff787612ff061269d565b87846141e0565b6130138761300361269d565b8561300e8587615d18565b6141e0565b505050505050505050565b6127108111156130405760405162461bcd60e51b8152600401610e3790615c67565b6040805180820182526001600160a01b038481168083526020808401868152600089815260058352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b610e7a828260405180602001604052806000815250614226565b6127108111156131015760405162461bcd60e51b8152600401610e3790615c67565b60048054610100600160b81b0319166101006001600160a01b03851690810261ffff60a81b191691909117600160a81b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb906020016127eb565b6040805160608101825260008082526020820181905291810191909152816101165481101561326f57600081815261011a6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529061326d5780516001600160a01b031615613203579392505050565b5060001901600081815261011a6020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215613268579392505050565b613203565b505b604051636f96cda160e11b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6003819055600280546001600160a01b0319166001600160a01b03841690811790915560408051918252602082018390527ff8086cee80709bd44c82f89dbca54115ebd05e840a88ab81df9cf5be9754eb6391015b60405180910390a15050565b600b548561011654613345919061597d565b111561337d5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606401610e37565b505050505050565b61011654610c9d83836130c5565b6000600180546133a290615664565b80601f01602080910402602001604051908101604052809291908181526020018280546133ce90615664565b801561341b5780601f106133f05761010080835404028352916020019161341b565b820191906000526020600020905b8154815290600101906020018083116133fe57829003601f168201915b50505050509050816001908161343191906157b9565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051613327929190615d2b565b60606001600160a01b0383163b6134cb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e37565b600080846001600160a01b0316846040516134e69190615d50565b600060405180830381855af49150503d8060008114613521576040519150601f19603f3d011682016040523d82523d6000602084013e613526565b606091505b509150915061354e8282604051806060016040528060278152602001615e99602791396143da565b95945050505050565b6000836001600160a01b031663150b7a0261357061269d565b8786866040518563ffffffff1660e01b81526004016135929493929190615d6c565b6020604051808303816000875af19250505080156135cd575060408051601f3d908101601f191682019092526135ca91810190615d9f565b60015b61362b573d8080156135fb576040519150601f19603f3d011682016040523d82523d6000602084013e613600565b606091505b508051600003613623576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b600080600061365760095490565b9050600060098054806020026020016040519081016040528092919081815260200182805480156136a757602002820191906000526020600020905b815481526020019060010190808311613693575b5050505050905060005b82811015613713578181815181106136cb576136cb6156c0565b6020026020010151861015613701578093508181815181106136ef576136ef6156c0565b60200260200101519450505050915091565b61370c60018261597d565b90506136b1565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610e37565b6060600061375b60095490565b9050600060098054806020026020016040519081016040528092919081815260200182805480156137ab57602002820191906000526020600020905b815481526020019060010190808311613797575b5050505050905060005b82811015613713578181815181106137cf576137cf6156c0565b602002602001015185101561389d57600a60008383815181106137f4576137f46156c0565b60200260200101518152602001908152602001600020805461381590615664565b80601f016020809104026020016040519081016040528092919081815260200182805461384190615664565b801561388e5780601f106138635761010080835404028352916020019161388e565b820191906000526020600020905b81548152906001019060200180831161387157829003601f168201915b50505050509350505050919050565b6138a860018261597d565b90506137b5565b6060816000036138d65750506040805180820190915260018152600360fc1b602082015290565b8160005b811561390057806138ea81615b5b565b91506138f99050600a83615719565b91506138da565b6000816001600160401b0381111561391a5761391a614f61565b6040519080825280601f01601f191660200182016040528015613944576020820181803683370190505b5090505b841561364157613959600183615d18565b9150613966600a86615dbc565b61397190603061597d565b60f81b818381518110613986576139866156c0565b60200101906001600160f81b031916908160001a9053506139a8600a86615719565b9450613948565b6000828152600860205260409020610e0e82826157b9565b6000828152600a60205260409020610e0e82826157b9565b60006139e9614413565b613a055760405162461bcd60e51b8152600401610e3790615698565b85600003613a3d5760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610e37565b6000600b549050613a85818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061442492505050565b600b919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001613abb8a8461597d565b613ac59190615d18565b88888888604051613ada959493929190615dd0565b60405180910390a25095945050505050565b600054610100900460ff16613b135760405162461bcd60e51b8152600401610e3790615e09565b613b1b614488565b610e49816144af565b600054610100900460ff16613b4b5760405162461bcd60e51b8152600401610e3790615e09565b610e7a828261453e565b600054610100900460ff16613b7c5760405162461bcd60e51b8152600401610e3790615e09565b613bca604051806040016040528060138152602001725369676e61747572654d696e7445524337323160681b815250604051806040016040528060018152602001603160f81b81525061458b565b565b6000808281805b8751811015613c8e57613be76002836156ec565b91506000888281518110613bfd57613bfd6156c0565b60200260200101519050808411613c3f576040805160208101869052908101829052606001604051602081830303815290604052805190602001209350613c7b565b6040805160208101839052908101859052606001604051602081830303815290604052805190602001209350600183613c78919061597d565b92505b5080613c8681615b5b565b915050613bd3565b50941495939450505050565b3360009081526080602052604081205460ff1615613cbf575060131936013560601c90565b503390565b613cd2610148546000611776565b158015613ce757506001600160a01b03841615155b8015613cfb57506001600160a01b03831615155b15611d0957613d0d6101485485611776565b158015613d245750613d226101485484611776565b155b15611d095760405162461bcd60e51b815260206004820152600e60248201526d215472616e736665722d526f6c6560901b6044820152606401610e37565b60607fef2a0374db4a48b74209fd1a525c32d62e54c4185cbabd807193b07a40081d44613d926020840184614d93565b613da26040850160208601614d93565b6040850135613db76080870160608801614d93565b613dc4608088018861572d565b604051613dd2929190615e54565b60405190819003902060a088013560c0890135613df66101008b0160e08c01614d93565b613e086101208c016101008d01615cfd565b613e1a6101408d016101208e01615cfd565b60408051602081019c909c526001600160a01b039a8b16908c015297891660608b015260808a019690965293871660a089015260c088019290925260e08701526101008601529092166101208401526001600160801b039182166101408085019190915291166101608301528301356101808201526101a0016040516020818303038152906040529050919050565b6000610c9d613eb66145bc565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000613f068585614637565b91509150613f138161467c565b509392505050565b60606000613f2a8360026156ec565b613f3590600261597d565b6001600160401b03811115613f4c57613f4c614f61565b6040519080825280601f01601f191660200182016040528015613f76576020820181803683370190505b509050600360fc1b81600081518110613f9157613f916156c0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613fc057613fc06156c0565b60200101906001600160f81b031916908160001a9053506000613fe48460026156ec565b613fef90600161597d565b90505b6001811115614067576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614023576140236156c0565b1a60f81b828281518110614039576140396156c0565b60200101906001600160f81b031916908160001a90535060049490941c9361406081615e64565b9050613ff2565b508315612a635760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e37565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600e6020526040812080549160019190614130838561597d565b90915550506000928352600e6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b6141888282612a79565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b8015611d095773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0385160161421a576142158282614832565b611d09565b611d09848484846148d5565b610116546001600160a01b03841661425057604051622e076360e81b815260040160405180910390fd5b826000036142715760405163b562e8dd60e01b815260040160405180910390fd5b61427e6000858386613cc4565b6001600160a01b038416600081815261011b6020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b0181169092021790915585845261011a90925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15614397575b60405182906001600160a01b03881690600090600080516020615ec0833981519152908290a461435f6000878480600101955087613557565b61437c576040516368d2bf6b60e11b815260040160405180910390fd5b8082106143265782610116541461439257600080fd5b6143ca565b5b6040516001830192906001600160a01b03881690600090600080516020615ec0833981519152908290a4808210614398575b5061011655611d09600085838684565b606083156143e9575081612a63565b8251156143f95782518084602001fd5b8160405162461bcd60e51b8152600401610e379190614d21565b60006126a7610149546108a061269d565b600080614431848661597d565b60098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af018190556000818152600a6020526040902090925082915061447f84826157b9565b50935093915050565b600054610100900460ff16613bca5760405162461bcd60e51b8152600401610e3790615e09565b600054610100900460ff166144d65760405162461bcd60e51b8152600401610e3790615e09565b60005b8151811015610e7a576001608060008484815181106144fa576144fa6156c0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061453681615b5b565b9150506144d9565b600054610100900460ff166145655760405162461bcd60e51b8152600401610e3790615e09565b61011861457283826157b9565b5061011961458082826157b9565b506000610116555050565b600054610100900460ff166145b25760405162461bcd60e51b8152600401610e3790615e09565b610e7a8282614928565b60006126a77f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6145eb60195490565b601a546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b600080825160410361466d5760208301516040840151606085015160001a61466187828585614969565b94509450505050614675565b506000905060025b9250929050565b600081600481111561469057614690615626565b036146985750565b60018160048111156146ac576146ac615626565b036146f95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610e37565b600281600481111561470d5761470d615626565b0361475a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610e37565b600381600481111561476e5761476e615626565b036147c65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610e37565b60048160048111156147da576147da615626565b03610e495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610e37565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461487f576040519150601f19603f3d011682016040523d82523d6000602084013e614884565b606091505b5050905080610e0e5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610e37565b816001600160a01b0316836001600160a01b03160315611d0957306001600160a01b03841603614913576142156001600160a01b0385168383614a56565b611d096001600160a01b038516848484614ab9565b600054610100900460ff1661494f5760405162461bcd60e51b8152600401610e3790615e09565b815160209283012081519190920120601991909155601a55565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a05750600090506003614a4d565b8460ff16601b141580156149b857508460ff16601c14155b156149c95750600090506004614a4d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a1d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4657600060019250925050614a4d565b9150600090505b94509492505050565b6040516001600160a01b038316602482015260448101829052610e0e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614af1565b6040516001600160a01b0380851660248301528316604482015260648101829052611d099085906323b872dd60e01b90608401614a82565b6000614b46826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bc39092919063ffffffff16565b805190915015610e0e5780806020019051810190614b649190615e7b565b610e0e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e37565b6060612a608484600085856001600160a01b0385163b614c255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e37565b600080866001600160a01b03168587604051614c419190615d50565b60006040518083038185875af1925050503d8060008114614c7e576040519150601f19603f3d011682016040523d82523d6000602084013e614c83565b606091505b5091509150614c938282866143da565b979650505050505050565b6001600160e01b031981168114610e4957600080fd5b600060208284031215614cc657600080fd5b8135612a6381614c9e565b60005b83811015614cec578181015183820152602001614cd4565b50506000910152565b60008151808452614d0d816020860160208601614cd1565b601f01601f19169290920160200192915050565b602081526000612a636020830184614cf5565b600060208284031215614d4657600080fd5b5035919050565b80356001600160a01b0381168114614d6457600080fd5b919050565b60008060408385031215614d7c57600080fd5b614d8583614d4d565b946020939093013593505050565b600060208284031215614da557600080fd5b612a6382614d4d565b600080600060608486031215614dc357600080fd5b614dcc84614d4d565b9250614dda60208501614d4d565b9150604084013590509250925092565b60008083601f840112614dfc57600080fd5b5081356001600160401b03811115614e1357600080fd5b60208301915083602082850101111561467557600080fd5b600080600060408486031215614e4057600080fd5b83356001600160401b0380821115614e5757600080fd5b908501906101608288031215614e6c57600080fd5b90935060208501359080821115614e8257600080fd5b50614e8f86828701614dea565b9497909650939450505050565b60008060408385031215614eaf57600080fd5b50508035926020909101359150565b60008060408385031215614ed157600080fd5b82359150614ee160208401614d4d565b90509250929050565b8015158114610e4957600080fd5b60008060408385031215614f0b57600080fd5b82356001600160401b03811115614f2157600080fd5b83016101008186031215614f3457600080fd5b91506020830135614f4481614eea565b809150509250929050565b600060808284031215611e0157600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f9f57614f9f614f61565b604052919050565b60006001600160401b03821115614fc057614fc0614f61565b50601f01601f191660200190565b600082601f830112614fdf57600080fd5b8135614ff2614fed82614fa7565b614f77565b81815284602083860101111561500757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561503d57600080fd5b61504687614d4d565b95506020870135945061505b60408801614d4d565b93506060870135925060808701356001600160401b038082111561507e57600080fd5b61508a8a838b01614f4f565b935060a08901359150808211156150a057600080fd5b506150ad89828a01614fce565b9150509295509295509295565b6000602082840312156150cc57600080fd5b81356001600160401b038111156150e257600080fd5b61364184828501614fce565b60008060006060848603121561510357600080fd5b83359250614dda60208501614d4d565b60008060006040848603121561512857600080fd5b8335925060208401356001600160401b0381111561514557600080fd5b614e8f86828701614dea565b6000806040838503121561516457600080fd5b614f3483614d4d565b6000806020838503121561518057600080fd5b82356001600160401b038082111561519757600080fd5b818501915085601f8301126151ab57600080fd5b8135818111156151ba57600080fd5b8660208260051b85010111156151cf57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561523657603f19888603018452615224858351614cf5565b94509285019290850190600101615208565b5092979650505050505050565b60006020828403121561525557600080fd5b813560028110612a6357600080fd5b6000806000806080858703121561527a57600080fd5b61528385614d4d565b935061529160208601614d4d565b92506040850135915060608501356001600160401b038111156152b357600080fd5b6152bf87828801614fce565b91505092959194509250565b6000806000806000606086880312156152e357600080fd5b8535945060208601356001600160401b038082111561530157600080fd5b61530d89838a01614dea565b9096509450604088013591508082111561532657600080fd5b5061533388828901614dea565b969995985093965092949392505050565b60006101008a83528960208401528860408401528760608401528660808401528560a084015260018060a01b03851660c08401528060e084015261538a81840185614cf5565b9b9a5050505050505050505050565b600082601f8301126153aa57600080fd5b813560206001600160401b038211156153c5576153c5614f61565b8160051b6153d4828201614f77565b92835284810182019282810190878511156153ee57600080fd5b83870192505b84831015614c935761540583614d4d565b825291830191908301906153f4565b80356001600160801b0381168114614d6457600080fd5b6000806000806000806000806000806101408b8d03121561544b57600080fd5b6154548b614d4d565b995060208b01356001600160401b038082111561547057600080fd5b61547c8e838f01614fce565b9a5060408d013591508082111561549257600080fd5b61549e8e838f01614fce565b995060608d01359150808211156154b457600080fd5b6154c08e838f01614fce565b985060808d01359150808211156154d657600080fd5b506154e38d828e01615399565b9650506154f260a08c01614d4d565b945061550060c08c01614d4d565b935061550e60e08c01615414565b925061551d6101008c01615414565b915061552c6101208c01614d4d565b90509295989b9194979a5092959850565b60008060006040848603121561555257600080fd5b83356001600160401b038082111561556957600080fd5b61557587838801614fce565b94506020860135915080821115614e8257600080fd5b6000806040838503121561559e57600080fd5b6155a783614d4d565b9150614ee160208401614d4d565b600080600080600060a086880312156155cd57600080fd5b6155d686614d4d565b9450602086013593506155eb60408701614d4d565b92506060860135915060808601356001600160401b0381111561560d57600080fd5b61561988828901614f4f565b9150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b602081016002831061565e57634e487b7160e01b600052602160045260246000fd5b91905290565b600181811c9082168061567857607f821691505b602082108103611e0157634e487b7160e01b600052602260045260246000fd5b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c9d57610c9d6156d6565b634e487b7160e01b600052601260045260246000fd5b60008261572857615728615703565b500490565b6000808335601e1984360301811261574457600080fd5b8301803591506001600160401b0382111561575e57600080fd5b60200191503681900382131561467557600080fd5b601f821115610e0e57600081815260208120601f850160051c8101602086101561579a5750805b601f850160051c820191505b8181101561337d578281556001016157a6565b81516001600160401b038111156157d2576157d2614f61565b6157e6816157e08454615664565b84615773565b602080601f83116001811461581b57600084156158035750858301515b600019600386901b1c1916600185901b17855561337d565b600085815260208120601f198616915b8281101561584a5788860151825594840194600190910190840161582b565b50858210156158685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e1984360301811261588f57600080fd5b83016020810192503590506001600160401b038111156158ae57600080fd5b80360382131561467557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152823560408201526020830135606082015260408301356080820152606083013560a0820152608083013560c082015260a083013560e0820152600061593160c08501614d4d565b6001600160a01b0381166101008481019190915261595260e0870187615878565b92508161012086015261596a610140860184836158bd565b9350505050612a63602083018415159052565b80820180821115610c9d57610c9d6156d6565b602081526159b1602082016159a484614d4d565b6001600160a01b03169052565b60006159bf60208401614d4d565b6001600160a01b038116604084015250604083013560608301526159e560608401614d4d565b6001600160a01b038116608084015250615a026080840184615878565b6101608060a0860152615a1a610180860183856158bd565b925060a086013560c086015260c086013560e0860152615a3c60e08701614d4d565b9150610100615a55818701846001600160a01b03169052565b615a60818801615414565b925050610120615a7a818701846001600160801b03169052565b615a85818801615414565b925050610140615a9f818701846001600160801b03169052565b9590950135939094019290925250919050565b60008060408385031215615ac557600080fd5b82516001600160401b03811115615adb57600080fd5b8301601f81018513615aec57600080fd5b8051615afa614fed82614fa7565b818152866020838501011115615b0f57600080fd5b615b20826020830160208601614cd1565b60209590950151949694955050505050565b60008551615b44818460208a01614cd1565b820184868237909301918252506020019392505050565b600060018201615b6d57615b6d6156d6565b5060010190565b60008251615b86818460208701614cd1565b600360fc1b920191825250600101919050565b60008351615bab818460208801614cd1565b835190830190615bbf818360208801614cd1565b01949350505050565b60008060408385031215615bdb57600080fd5b82356001600160401b03811115615bf157600080fd5b615bfd85828601614fce565b95602094909401359450505050565b82848237909101908152602001919050565b6000808335601e19843603018112615c3557600080fd5b8301803591506001600160401b03821115615c4f57600080fd5b6020019150600581901b360382131561467557600080fd5b6020808252600f908201526e45786365656473206d61782062707360881b604082015260600190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615cc0816015850160208801614cd1565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615cf1816026840160208801614cd1565b01602601949350505050565b600060208284031215615d0f57600080fd5b612a6382615414565b81810381811115610c9d57610c9d6156d6565b604081526000615d3e6040830185614cf5565b828103602084015261354e8185614cf5565b60008251615d62818460208701614cd1565b9190910192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f2390830184614cf5565b600060208284031215615db157600080fd5b8151612a6381614c9e565b600082615dcb57615dcb615703565b500690565b858152606060208201526000615dea6060830186886158bd565b8281036040840152615dfd8185876158bd565b98975050505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8183823760009101908152919050565b600081615e7357615e736156d6565b506000190190565b600060208284031215615e8d57600080fd5b8151612a6381614eea56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205153075a0baaad0b40148fcc70e5adb3869a9e048dc05b930411df862d41165464736f6c63430008130033"; + + public SignatureDropDeploymentBase() + : base(BYTECODE) { } + + public SignatureDropDeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DefaultAdminRoleFunction : DefaultAdminRoleFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DefaultAdminRoleFunctionBase : FunctionMessage { } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ClaimFunction : ClaimFunctionBase { } + + [Function("claim")] + public class ClaimFunctionBase : FunctionMessage + { + [Parameter("address", "_receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "_quantity", 2)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 3)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 4)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 5)] + public virtual AllowlistProof AllowlistProof { get; set; } + + [Parameter("bytes", "_data", 6)] + public virtual byte[] Data { get; set; } + } + + public partial class ClaimConditionFunction : ClaimConditionFunctionBase { } + + [Function("claimCondition", typeof(ClaimConditionOutputDTO))] + public class ClaimConditionFunctionBase : FunctionMessage { } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class EncryptDecryptFunction : EncryptDecryptFunctionBase { } + + [Function("encryptDecrypt", "bytes")] + public class EncryptDecryptFunctionBase : FunctionMessage + { + [Parameter("bytes", "data", 1)] + public virtual byte[] Data { get; set; } + + [Parameter("bytes", "key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class EncryptedDataFunction : EncryptedDataFunctionBase { } + + [Function("encryptedData", "bytes")] + public class EncryptedDataFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetApprovedFunction : GetApprovedFunctionBase { } + + [Function("getApproved", "address")] + public class GetApprovedFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetBaseURICountFunction : GetBaseURICountFunctionBase { } + + [Function("getBaseURICount", "uint256")] + public class GetBaseURICountFunctionBase : FunctionMessage { } + + public partial class GetBatchIdAtIndexFunction : GetBatchIdAtIndexFunctionBase { } + + [Function("getBatchIdAtIndex", "uint256")] + public class GetBatchIdAtIndexFunctionBase : FunctionMessage + { + [Parameter("uint256", "_index", 1)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetFlatPlatformFeeInfoFunction : GetFlatPlatformFeeInfoFunctionBase { } + + [Function("getFlatPlatformFeeInfo", typeof(GetFlatPlatformFeeInfoOutputDTO))] + public class GetFlatPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeTypeFunction : GetPlatformFeeTypeFunctionBase { } + + [Function("getPlatformFeeType", "uint8")] + public class GetPlatformFeeTypeFunctionBase : FunctionMessage { } + + public partial class GetRevealURIFunction : GetRevealURIFunctionBase { } + + [Function("getRevealURI", "string")] + public class GetRevealURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "_batchId", 1)] + public virtual BigInteger BatchId { get; set; } + + [Parameter("bytes", "_key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetSupplyClaimedByWalletFunction : GetSupplyClaimedByWalletFunctionBase { } + + [Function("getSupplyClaimedByWallet", "uint256")] + public class GetSupplyClaimedByWalletFunctionBase : FunctionMessage + { + [Parameter("address", "_claimer", 1)] + public virtual string Claimer { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleWithSwitchFunction : HasRoleWithSwitchFunctionBase { } + + [Function("hasRoleWithSwitch", "bool")] + public class HasRoleWithSwitchFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_saleRecipient", 6)] + public virtual string SaleRecipient { get; set; } + + [Parameter("address", "_royaltyRecipient", 7)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint128", "_royaltyBps", 8)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("uint128", "_platformFeeBps", 9)] + public virtual BigInteger PlatformFeeBps { get; set; } + + [Parameter("address", "_platformFeeRecipient", 10)] + public virtual string PlatformFeeRecipient { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsEncryptedBatchFunction : IsEncryptedBatchFunctionBase { } + + [Function("isEncryptedBatch", "bool")] + public class IsEncryptedBatchFunctionBase : FunctionMessage + { + [Parameter("uint256", "_batchId", 1)] + public virtual BigInteger BatchId { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class LazyMintFunction : LazyMintFunctionBase { } + + [Function("lazyMint", "uint256")] + public class LazyMintFunctionBase : FunctionMessage + { + [Parameter("uint256", "_amount", 1)] + public virtual BigInteger Amount { get; set; } + + [Parameter("string", "_baseURIForTokens", 2)] + public virtual string BaseURIForTokens { get; set; } + + [Parameter("bytes", "_data", 3)] + public virtual byte[] Data { get; set; } + } + + public partial class MintWithSignatureFunction : MintWithSignatureFunctionBase { } + + [Function("mintWithSignature", "address")] + public class MintWithSignatureFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class OwnerOfFunction : OwnerOfFunctionBase { } + + [Function("ownerOf", "address")] + public class OwnerOfFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevealFunction : RevealFunctionBase { } + + [Function("reveal", "string")] + public class RevealFunctionBase : FunctionMessage + { + [Parameter("uint256", "_index", 1)] + public virtual BigInteger Index { get; set; } + + [Parameter("bytes", "_key", 2)] + public virtual byte[] Key { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class SafeTransferFrom1Function : SafeTransferFrom1FunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFrom1FunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("bytes", "_data", 4)] + public virtual byte[] Data { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetClaimConditionsFunction : SetClaimConditionsFunctionBase { } + + [Function("setClaimConditions")] + public class SetClaimConditionsFunctionBase : FunctionMessage + { + [Parameter("tuple", "_condition", 1)] + public virtual ClaimCondition Condition { get; set; } + + [Parameter("bool", "_resetClaimEligibility", 2)] + public virtual bool ResetClaimEligibility { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetFlatPlatformFeeInfoFunction : SetFlatPlatformFeeInfoFunctionBase { } + + [Function("setFlatPlatformFeeInfo")] + public class SetFlatPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_flatFee", 2)] + public virtual BigInteger FlatFee { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPlatformFeeTypeFunction : SetPlatformFeeTypeFunctionBase { } + + [Function("setPlatformFeeType")] + public class SetPlatformFeeTypeFunctionBase : FunctionMessage + { + [Parameter("uint8", "_feeType", 1)] + public virtual byte FeeType { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TokenURIFunction : TokenURIFunctionBase { } + + [Function("tokenURI", "string")] + public class TokenURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class TotalMintedFunction : TotalMintedFunctionBase { } + + [Function("totalMinted", "uint256")] + public class TotalMintedFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class VerifyFunction : VerifyFunctionBase { } + + [Function("verify", typeof(VerifyOutputDTO))] + public class VerifyFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class VerifyClaimFunction : VerifyClaimFunctionBase { } + + [Function("verifyClaim", "bool")] + public class VerifyClaimFunctionBase : FunctionMessage + { + [Parameter("address", "_claimer", 1)] + public virtual string Claimer { get; set; } + + [Parameter("uint256", "_quantity", 2)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("address", "_currency", 3)] + public virtual string Currency { get; set; } + + [Parameter("uint256", "_pricePerToken", 4)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("tuple", "_allowlistProof", 5)] + public virtual AllowlistProof AllowlistProof { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "approved", 2, true)] + public virtual string Approved { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class ClaimConditionUpdatedEventDTO : ClaimConditionUpdatedEventDTOBase { } + + [Event("ClaimConditionUpdated")] + public class ClaimConditionUpdatedEventDTOBase : IEventDTO + { + [Parameter("tuple", "condition", 1, false)] + public virtual ClaimCondition Condition { get; set; } + + [Parameter("bool", "resetEligibility", 2, false)] + public virtual bool ResetEligibility { get; set; } + } + + public partial class ContractURIUpdatedEventDTO : ContractURIUpdatedEventDTOBase { } + + [Event("ContractURIUpdated")] + public class ContractURIUpdatedEventDTOBase : IEventDTO + { + [Parameter("string", "prevURI", 1, false)] + public virtual string PrevURI { get; set; } + + [Parameter("string", "newURI", 2, false)] + public virtual string NewURI { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class FlatPlatformFeeUpdatedEventDTO : FlatPlatformFeeUpdatedEventDTOBase { } + + [Event("FlatPlatformFeeUpdated")] + public class FlatPlatformFeeUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, false)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "flatFee", 2, false)] + public virtual BigInteger FlatFee { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PlatformFeeTypeUpdatedEventDTO : PlatformFeeTypeUpdatedEventDTOBase { } + + [Event("PlatformFeeTypeUpdated")] + public class PlatformFeeTypeUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint8", "feeType", 1, false)] + public virtual byte FeeType { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class TokenURIRevealedEventDTO : TokenURIRevealedEventDTOBase { } + + [Event("TokenURIRevealed")] + public class TokenURIRevealedEventDTOBase : IEventDTO + { + [Parameter("uint256", "index", 1, true)] + public virtual BigInteger Index { get; set; } + + [Parameter("string", "revealedURI", 2, false)] + public virtual string RevealedURI { get; set; } + } + + public partial class TokensClaimedEventDTO : TokensClaimedEventDTOBase { } + + [Event("TokensClaimed")] + public class TokensClaimedEventDTOBase : IEventDTO + { + [Parameter("address", "claimer", 1, true)] + public virtual string Claimer { get; set; } + + [Parameter("address", "receiver", 2, true)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "startTokenId", 3, true)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "quantityClaimed", 4, false)] + public virtual BigInteger QuantityClaimed { get; set; } + } + + public partial class TokensLazyMintedEventDTO : TokensLazyMintedEventDTOBase { } + + [Event("TokensLazyMinted")] + public class TokensLazyMintedEventDTOBase : IEventDTO + { + [Parameter("uint256", "startTokenId", 1, true)] + public virtual BigInteger StartTokenId { get; set; } + + [Parameter("uint256", "endTokenId", 2, false)] + public virtual BigInteger EndTokenId { get; set; } + + [Parameter("string", "baseURI", 3, false)] + public virtual string BaseURI { get; set; } + + [Parameter("bytes", "encryptedBaseURI", 4, false)] + public virtual byte[] EncryptedBaseURI { get; set; } + } + + public partial class TokensMintedWithSignatureEventDTO : TokensMintedWithSignatureEventDTOBase { } + + [Event("TokensMintedWithSignature")] + public class TokensMintedWithSignatureEventDTOBase : IEventDTO + { + [Parameter("address", "signer", 1, true)] + public virtual string Signer { get; set; } + + [Parameter("address", "mintedTo", 2, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "tokenIdMinted", 3, true)] + public virtual BigInteger TokenIdMinted { get; set; } + + [Parameter("tuple", "mintRequest", 4, false)] + public virtual MintRequest MintRequest { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalCallerNotOwnerNorApprovedError : ApprovalCallerNotOwnerNorApprovedErrorBase { } + + [Error("ApprovalCallerNotOwnerNorApproved")] + public class ApprovalCallerNotOwnerNorApprovedErrorBase : IErrorDTO { } + + public partial class ApprovalQueryForNonexistentTokenError : ApprovalQueryForNonexistentTokenErrorBase { } + + [Error("ApprovalQueryForNonexistentToken")] + public class ApprovalQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class ApprovalToCurrentOwnerError : ApprovalToCurrentOwnerErrorBase { } + + [Error("ApprovalToCurrentOwner")] + public class ApprovalToCurrentOwnerErrorBase : IErrorDTO { } + + public partial class ApproveToCallerError : ApproveToCallerErrorBase { } + + [Error("ApproveToCaller")] + public class ApproveToCallerErrorBase : IErrorDTO { } + + public partial class BalanceQueryForZeroAddressError : BalanceQueryForZeroAddressErrorBase { } + + [Error("BalanceQueryForZeroAddress")] + public class BalanceQueryForZeroAddressErrorBase : IErrorDTO { } + + public partial class MintToZeroAddressError : MintToZeroAddressErrorBase { } + + [Error("MintToZeroAddress")] + public class MintToZeroAddressErrorBase : IErrorDTO { } + + public partial class MintZeroQuantityError : MintZeroQuantityErrorBase { } + + [Error("MintZeroQuantity")] + public class MintZeroQuantityErrorBase : IErrorDTO { } + + public partial class OwnerQueryForNonexistentTokenError : OwnerQueryForNonexistentTokenErrorBase { } + + [Error("OwnerQueryForNonexistentToken")] + public class OwnerQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class TransferCallerNotOwnerNorApprovedError : TransferCallerNotOwnerNorApprovedErrorBase { } + + [Error("TransferCallerNotOwnerNorApproved")] + public class TransferCallerNotOwnerNorApprovedErrorBase : IErrorDTO { } + + public partial class TransferFromIncorrectOwnerError : TransferFromIncorrectOwnerErrorBase { } + + [Error("TransferFromIncorrectOwner")] + public class TransferFromIncorrectOwnerErrorBase : IErrorDTO { } + + public partial class TransferToNonERC721ReceiverImplementerError : TransferToNonERC721ReceiverImplementerErrorBase { } + + [Error("TransferToNonERC721ReceiverImplementer")] + public class TransferToNonERC721ReceiverImplementerErrorBase : IErrorDTO { } + + public partial class TransferToZeroAddressError : TransferToZeroAddressErrorBase { } + + [Error("TransferToZeroAddress")] + public class TransferToZeroAddressErrorBase : IErrorDTO { } + + public partial class URIQueryForNonexistentTokenError : URIQueryForNonexistentTokenErrorBase { } + + [Error("URIQueryForNonexistentToken")] + public class URIQueryForNonexistentTokenErrorBase : IErrorDTO { } + + public partial class DefaultAdminRoleOutputDTO : DefaultAdminRoleOutputDTOBase { } + + [FunctionOutput] + public class DefaultAdminRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ClaimConditionOutputDTO : ClaimConditionOutputDTOBase { } + + [FunctionOutput] + public class ClaimConditionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "startTimestamp", 1)] + public virtual BigInteger StartTimestamp { get; set; } + + [Parameter("uint256", "maxClaimableSupply", 2)] + public virtual BigInteger MaxClaimableSupply { get; set; } + + [Parameter("uint256", "supplyClaimed", 3)] + public virtual BigInteger SupplyClaimed { get; set; } + + [Parameter("uint256", "quantityLimitPerWallet", 4)] + public virtual BigInteger QuantityLimitPerWallet { get; set; } + + [Parameter("bytes32", "merkleRoot", 5)] + public virtual byte[] MerkleRoot { get; set; } + + [Parameter("uint256", "pricePerToken", 6)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("string", "metadata", 8)] + public virtual string Metadata { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class EncryptDecryptOutputDTO : EncryptDecryptOutputDTOBase { } + + [FunctionOutput] + public class EncryptDecryptOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "result", 1)] + public virtual byte[] Result { get; set; } + } + + public partial class EncryptedDataOutputDTO : EncryptedDataOutputDTOBase { } + + [FunctionOutput] + public class EncryptedDataOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetApprovedOutputDTO : GetApprovedOutputDTOBase { } + + [FunctionOutput] + public class GetApprovedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetBaseURICountOutputDTO : GetBaseURICountOutputDTOBase { } + + [FunctionOutput] + public class GetBaseURICountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetBatchIdAtIndexOutputDTO : GetBatchIdAtIndexOutputDTOBase { } + + [FunctionOutput] + public class GetBatchIdAtIndexOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetFlatPlatformFeeInfoOutputDTO : GetFlatPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetFlatPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint256", "", 2)] + public virtual BigInteger ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeTypeOutputDTO : GetPlatformFeeTypeOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class GetRevealURIOutputDTO : GetRevealURIOutputDTOBase { } + + [FunctionOutput] + public class GetRevealURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "revealedURI", 1)] + public virtual string RevealedURI { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "member", 1)] + public virtual string Member { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "count", 1)] + public virtual BigInteger Count { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetSupplyClaimedByWalletOutputDTO : GetSupplyClaimedByWalletOutputDTOBase { } + + [FunctionOutput] + public class GetSupplyClaimedByWalletOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class HasRoleWithSwitchOutputDTO : HasRoleWithSwitchOutputDTOBase { } + + [FunctionOutput] + public class HasRoleWithSwitchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsEncryptedBatchOutputDTO : IsEncryptedBatchOutputDTOBase { } + + [FunctionOutput] + public class IsEncryptedBatchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class OwnerOfOutputDTO : OwnerOfOutputDTOBase { } + + [FunctionOutput] + public class OwnerOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TokenURIOutputDTO : TokenURIOutputDTOBase { } + + [FunctionOutput] + public class TokenURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalMintedOutputDTO : TotalMintedOutputDTOBase { } + + [FunctionOutput] + public class TotalMintedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyOutputDTO : VerifyOutputDTOBase { } + + [FunctionOutput] + public class VerifyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "success", 1)] + public virtual bool Success { get; set; } + + [Parameter("address", "signer", 2)] + public virtual string Signer { get; set; } + } + + public partial class VerifyClaimOutputDTO : VerifyClaimOutputDTOBase { } + + [FunctionOutput] + public class VerifyClaimOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "isOverride", 1)] + public virtual bool IsOverride { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs.meta new file mode 100644 index 00000000..f958e99b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/ContractDefinition/SignatureDropDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75e39426e86f32944bf525a3a9db4259 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs new file mode 100644 index 00000000..bd98360a --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs @@ -0,0 +1,1266 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.SignatureDrop.ContractDefinition; + +namespace Thirdweb.Contracts.SignatureDrop +{ + public partial class SignatureDropService + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + SignatureDropDeployment signatureDropDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(signatureDropDeployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, SignatureDropDeployment signatureDropDeployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(signatureDropDeployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + SignatureDropDeployment signatureDropDeployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, signatureDropDeployment, cancellationTokenSource); + return new SignatureDropService(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.IWeb3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public SignatureDropService(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public SignatureDropService(Nethereum.Web3.IWeb3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DefaultAdminRoleQueryAsync(DefaultAdminRoleFunction defaultAdminRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(defaultAdminRoleFunction, blockParameter); + } + + public Task DefaultAdminRoleQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string to, BigInteger tokenId) + { + var approveFunction = new ApproveFunction(); + approveFunction.To = to; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.To = to; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string owner, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Owner = owner; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(BigInteger tokenId) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task ClaimRequestAsync(ClaimFunction claimFunction) + { + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync(ClaimFunction claimFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimRequestAsync(string receiver, BigInteger quantity, string currency, BigInteger pricePerToken, AllowlistProof allowlistProof, byte[] data) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAsync(claimFunction); + } + + public Task ClaimRequestAndWaitForReceiptAsync( + string receiver, + BigInteger quantity, + string currency, + BigInteger pricePerToken, + AllowlistProof allowlistProof, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var claimFunction = new ClaimFunction(); + claimFunction.Receiver = receiver; + claimFunction.Quantity = quantity; + claimFunction.Currency = currency; + claimFunction.PricePerToken = pricePerToken; + claimFunction.AllowlistProof = allowlistProof; + claimFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(claimFunction, cancellationToken); + } + + public Task ClaimConditionQueryAsync(ClaimConditionFunction claimConditionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(claimConditionFunction, blockParameter); + } + + public Task ClaimConditionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task EncryptDecryptQueryAsync(EncryptDecryptFunction encryptDecryptFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(encryptDecryptFunction, blockParameter); + } + + public Task EncryptDecryptQueryAsync(byte[] data, byte[] key, BlockParameter blockParameter = null) + { + var encryptDecryptFunction = new EncryptDecryptFunction(); + encryptDecryptFunction.Data = data; + encryptDecryptFunction.Key = key; + + return ContractHandler.QueryAsync(encryptDecryptFunction, blockParameter); + } + + public Task EncryptedDataQueryAsync(EncryptedDataFunction encryptedDataFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(encryptedDataFunction, blockParameter); + } + + public Task EncryptedDataQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var encryptedDataFunction = new EncryptedDataFunction(); + encryptedDataFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(encryptedDataFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(GetApprovedFunction getApprovedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getApprovedFunction = new GetApprovedFunction(); + getApprovedFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(GetBaseURICountFunction getBaseURICountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBaseURICountFunction, blockParameter); + } + + public Task GetBaseURICountQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(GetBatchIdAtIndexFunction getBatchIdAtIndexFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetBatchIdAtIndexQueryAsync(BigInteger index, BlockParameter blockParameter = null) + { + var getBatchIdAtIndexFunction = new GetBatchIdAtIndexFunction(); + getBatchIdAtIndexFunction.Index = index; + + return ContractHandler.QueryAsync(getBatchIdAtIndexFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetFlatPlatformFeeInfoQueryAsync(GetFlatPlatformFeeInfoFunction getFlatPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getFlatPlatformFeeInfoFunction, blockParameter); + } + + public Task GetFlatPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeTypeQueryAsync(GetPlatformFeeTypeFunction getPlatformFeeTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPlatformFeeTypeFunction, blockParameter); + } + + public Task GetPlatformFeeTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetRevealURIQueryAsync(GetRevealURIFunction getRevealURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRevealURIFunction, blockParameter); + } + + public Task GetRevealURIQueryAsync(BigInteger batchId, byte[] key, BlockParameter blockParameter = null) + { + var getRevealURIFunction = new GetRevealURIFunction(); + getRevealURIFunction.BatchId = batchId; + getRevealURIFunction.Key = key; + + return ContractHandler.QueryAsync(getRevealURIFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(GetSupplyClaimedByWalletFunction getSupplyClaimedByWalletFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GetSupplyClaimedByWalletQueryAsync(string claimer, BlockParameter blockParameter = null) + { + var getSupplyClaimedByWalletFunction = new GetSupplyClaimedByWalletFunction(); + getSupplyClaimedByWalletFunction.Claimer = claimer; + + return ContractHandler.QueryAsync(getSupplyClaimedByWalletFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(HasRoleWithSwitchFunction hasRoleWithSwitchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task HasRoleWithSwitchQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleWithSwitchFunction = new HasRoleWithSwitchFunction(); + hasRoleWithSwitchFunction.Role = role; + hasRoleWithSwitchFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleWithSwitchFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string owner, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Owner = owner; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsEncryptedBatchQueryAsync(IsEncryptedBatchFunction isEncryptedBatchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isEncryptedBatchFunction, blockParameter); + } + + public Task IsEncryptedBatchQueryAsync(BigInteger batchId, BlockParameter blockParameter = null) + { + var isEncryptedBatchFunction = new IsEncryptedBatchFunction(); + isEncryptedBatchFunction.BatchId = batchId; + + return ContractHandler.QueryAsync(isEncryptedBatchFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task LazyMintRequestAsync(LazyMintFunction lazyMintFunction) + { + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(LazyMintFunction lazyMintFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task LazyMintRequestAsync(BigInteger amount, string baseURIForTokens, byte[] data) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAsync(lazyMintFunction); + } + + public Task LazyMintRequestAndWaitForReceiptAsync(BigInteger amount, string baseURIForTokens, byte[] data, CancellationTokenSource cancellationToken = null) + { + var lazyMintFunction = new LazyMintFunction(); + lazyMintFunction.Amount = amount; + lazyMintFunction.BaseURIForTokens = baseURIForTokens; + lazyMintFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(lazyMintFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintWithSignatureFunction mintWithSignatureFunction) + { + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintWithSignatureFunction mintWithSignatureFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintRequest req, byte[] signature) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerOfQueryAsync(OwnerOfFunction ownerOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task OwnerOfQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var ownerOfFunction = new OwnerOfFunction(); + ownerOfFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevealRequestAsync(RevealFunction revealFunction) + { + return ContractHandler.SendRequestAsync(revealFunction); + } + + public Task RevealRequestAndWaitForReceiptAsync(RevealFunction revealFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revealFunction, cancellationToken); + } + + public Task RevealRequestAsync(BigInteger index, byte[] key) + { + var revealFunction = new RevealFunction(); + revealFunction.Index = index; + revealFunction.Key = key; + + return ContractHandler.SendRequestAsync(revealFunction); + } + + public Task RevealRequestAndWaitForReceiptAsync(BigInteger index, byte[] key, CancellationTokenSource cancellationToken = null) + { + var revealFunction = new RevealFunction(); + revealFunction.Index = index; + revealFunction.Key = key; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revealFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFrom1Function safeTransferFrom1Function) + { + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFrom1Function safeTransferFrom1Function, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId, byte[] data) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, byte[] data, CancellationTokenSource cancellationToken = null) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(SetClaimConditionsFunction setClaimConditionsFunction) + { + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(SetClaimConditionsFunction setClaimConditionsFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetClaimConditionsRequestAsync(ClaimCondition condition, bool resetClaimEligibility) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Condition = condition; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAsync(setClaimConditionsFunction); + } + + public Task SetClaimConditionsRequestAndWaitForReceiptAsync(ClaimCondition condition, bool resetClaimEligibility, CancellationTokenSource cancellationToken = null) + { + var setClaimConditionsFunction = new SetClaimConditionsFunction(); + setClaimConditionsFunction.Condition = condition; + setClaimConditionsFunction.ResetClaimEligibility = resetClaimEligibility; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setClaimConditionsFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetFlatPlatformFeeInfoRequestAsync(SetFlatPlatformFeeInfoFunction setFlatPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setFlatPlatformFeeInfoFunction); + } + + public Task SetFlatPlatformFeeInfoRequestAndWaitForReceiptAsync( + SetFlatPlatformFeeInfoFunction setFlatPlatformFeeInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setFlatPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetFlatPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger flatFee) + { + var setFlatPlatformFeeInfoFunction = new SetFlatPlatformFeeInfoFunction(); + setFlatPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setFlatPlatformFeeInfoFunction.FlatFee = flatFee; + + return ContractHandler.SendRequestAsync(setFlatPlatformFeeInfoFunction); + } + + public Task SetFlatPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger flatFee, CancellationTokenSource cancellationToken = null) + { + var setFlatPlatformFeeInfoFunction = new SetFlatPlatformFeeInfoFunction(); + setFlatPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setFlatPlatformFeeInfoFunction.FlatFee = flatFee; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setFlatPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeTypeRequestAsync(SetPlatformFeeTypeFunction setPlatformFeeTypeFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeTypeFunction); + } + + public Task SetPlatformFeeTypeRequestAndWaitForReceiptAsync(SetPlatformFeeTypeFunction setPlatformFeeTypeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeTypeFunction, cancellationToken); + } + + public Task SetPlatformFeeTypeRequestAsync(byte feeType) + { + var setPlatformFeeTypeFunction = new SetPlatformFeeTypeFunction(); + setPlatformFeeTypeFunction.FeeType = feeType; + + return ContractHandler.SendRequestAsync(setPlatformFeeTypeFunction); + } + + public Task SetPlatformFeeTypeRequestAndWaitForReceiptAsync(byte feeType, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeTypeFunction = new SetPlatformFeeTypeFunction(); + setPlatformFeeTypeFunction.FeeType = feeType; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeTypeFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TokenURIQueryAsync(TokenURIFunction tokenURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TokenURIQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var tokenURIFunction = new TokenURIFunction(); + tokenURIFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TotalMintedQueryAsync(TotalMintedFunction totalMintedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalMintedFunction, blockParameter); + } + + public Task TotalMintedQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task VerifyQueryAsync(VerifyFunction verifyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + + public Task VerifyQueryAsync(MintRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifyFunction = new VerifyFunction(); + verifyFunction.Req = req; + verifyFunction.Signature = signature; + + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync(VerifyClaimFunction verifyClaimFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + + public Task VerifyClaimQueryAsync(string claimer, BigInteger quantity, string currency, BigInteger pricePerToken, AllowlistProof allowlistProof, BlockParameter blockParameter = null) + { + var verifyClaimFunction = new VerifyClaimFunction(); + verifyClaimFunction.Claimer = claimer; + verifyClaimFunction.Quantity = quantity; + verifyClaimFunction.Currency = currency; + verifyClaimFunction.PricePerToken = pricePerToken; + verifyClaimFunction.AllowlistProof = allowlistProof; + + return ContractHandler.QueryAsync(verifyClaimFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs.meta new file mode 100644 index 00000000..5457f8b8 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/SignatureDrop/SignatureDropService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 169df73faedcc3d40b1a09a017549ce4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155.meta new file mode 100644 index 00000000..a13b0fec --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0180dea7225110849b61f418d7c9e726 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition.meta new file mode 100644 index 00000000..6ff21f7d --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 689885425c2cedc4db45c7cb2771f88f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs new file mode 100644 index 00000000..55175262 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs @@ -0,0 +1,50 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.TokenERC1155.ContractDefinition +{ + public partial class MintRequest : MintRequestBase { } + + public class MintRequestBase + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("address", "royaltyRecipient", 2)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("address", "primarySaleRecipient", 4)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("uint256", "tokenId", 5)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("string", "uri", 6)] + public virtual string Uri { get; set; } + + [Parameter("uint256", "quantity", 7)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "pricePerToken", 8)] + public virtual BigInteger PricePerToken { get; set; } + + [Parameter("address", "currency", 9)] + public virtual string Currency { get; set; } + + [Parameter("uint128", "validityStartTimestamp", 10)] + public virtual BigInteger ValidityStartTimestamp { get; set; } + + [Parameter("uint128", "validityEndTimestamp", 11)] + public virtual BigInteger ValidityEndTimestamp { get; set; } + + [Parameter("bytes32", "uid", 12)] + public virtual byte[] Uid { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs.meta new file mode 100644 index 00000000..61b75f1b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/MintRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dc1f62c4ecaef0458fe37c7bd840df1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs new file mode 100644 index 00000000..f24e77a4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs @@ -0,0 +1,1103 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.TokenERC1155.ContractDefinition +{ + public partial class TokenERC1155Deployment : TokenERC1155DeploymentBase + { + public TokenERC1155Deployment() + : base(BYTECODE) { } + + public TokenERC1155Deployment(string byteCode) + : base(byteCode) { } + } + + public class TokenERC1155DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506157dd80620001336000396000f3fe6080604052600436106102e35760003560e01c8063938e3d7b11610190578063ca15c873116100dc578063e8a3d48511610095578063eb13554f1161006f578063eb13554f146109dd578063f242432a146109fe578063f28083c314610a1e578063f5298aca14610a3f57600080fd5b8063e8a3d48514610947578063e985e9c51461095c578063ea500d69146109a657600080fd5b8063ca15c87314610869578063cb2ef6f714610889578063d45573f6146108ab578063d547741f146108e1578063e159163414610901578063e57553da1461092157600080fd5b8063a22cb46511610149578063b17cd86f11610123578063b17cd86f146107ad578063b24f2d39146107ec578063b6f10c791461081b578063bd85b0391461083b57600080fd5b8063a22cb46514610740578063ac9650d814610760578063b03f45281461078d57600080fd5b8063938e3d7b146106a757806395d89b41146106c757806398a6e993146106dc5780639bcf7a15146106ef578063a0a8e4601461070f578063a217fddf1461072b57600080fd5b806336568abe1161024f578063600dd5ea116102085780637e54523c116101e25780637e54523c146106325780638da5cb5b146106525780639010d07c1461066757806391d148541461068757600080fd5b8063600dd5ea146105d25780636b20c454146105f25780636f4f28371461061257600080fd5b806336568abe146104d85780633b1475a7146104f85780634cc157df1461050f5780634e1273f414610551578063504c6e011461057e578063572b6c051461059957600080fd5b80631e7ac488116102a15780631e7ac488146103e8578063248a9ca3146104085780632a55205a146104395780632eb2c2d6146104785780632f2ff15d1461049857806332f0cd64146104b857600080fd5b8062fdd58e146102e857806301ffc9a71461031b57806306fdde031461034b578063079fe40e1461036d5780630e89341c146103a657806313af4035146103c6575b600080fd5b3480156102f457600080fd5b5061030861030336600461436a565b610a5f565b6040519081526020015b60405180910390f35b34801561032757600080fd5b5061033b6103363660046143aa565b610afb565b6040519015158152602001610312565b34801561035757600080fd5b50610360610b41565b6040516103129190614417565b34801561037957600080fd5b506101ca5461038e906001600160a01b031681565b6040516001600160a01b039091168152602001610312565b3480156103b257600080fd5b506103606103c136600461442a565b610bd0565b3480156103d257600080fd5b506103e66103e1366004614443565b610c73565b005b3480156103f457600080fd5b506103e661040336600461436a565b610d29565b34801561041457600080fd5b5061030861042336600461442a565b600090815261012f602052604090206001015490565b34801561044557600080fd5b5061045961045436600461445e565b610df1565b604080516001600160a01b039093168352602083019190915201610312565b34801561048457600080fd5b506103e66104933660046145c9565b610e2e565b3480156104a457600080fd5b506103e66104b3366004614672565b610f1a565b3480156104c457600080fd5b506103e66104d33660046146ac565b610f45565b3480156104e457600080fd5b506103e66104f3366004614672565b610fb9565b34801561050457600080fd5b506103086101c95481565b34801561051b57600080fd5b5061052f61052a36600461442a565b611047565b604080516001600160a01b03909316835261ffff909116602083015201610312565b34801561055d57600080fd5b5061057161056c366004614736565b6110b7565b60405161031291906147d4565b34801561058a57600080fd5b506101935461033b9060ff1681565b3480156105a557600080fd5b5061033b6105b4366004614443565b6001600160a01b031660009081526099602052604090205460ff1690565b3480156105de57600080fd5b506103e66105ed36600461436a565b6111e0565b3480156105fe57600080fd5b506103e661060d3660046147e7565b61129d565b34801561061e57600080fd5b506103e661062d366004614443565b6112f2565b34801561063e57600080fd5b506103e661064d36600461436a565b611349565b34801561065e57600080fd5b5061038e6113b7565b34801561067357600080fd5b5061038e61068236600461445e565b6113ef565b34801561069357600080fd5b5061033b6106a2366004614672565b61140f565b3480156106b357600080fd5b506103e66106c236600461489b565b61143b565b3480156106d357600080fd5b5061036061145a565b6103e66106ea3660046148dc565b611468565b3480156106fb57600080fd5b506103e661070a36600461494d565b611659565b34801561071b57600080fd5b5060405160028152602001610312565b34801561073757600080fd5b50610308600081565b34801561074c57600080fd5b506103e661075b366004614982565b611732565b34801561076c57600080fd5b5061078061077b3660046149b9565b611803565b6040516103129190614a2d565b34801561079957600080fd5b506103e66107a8366004614a8f565b6118f7565b3480156107b957600080fd5b506107cd6107c83660046148dc565b6119a5565b6040805192151583526001600160a01b03909116602083015201610312565b3480156107f857600080fd5b506101cc546101cd546001600160a01b03909116906001600160801b031661052f565b34801561082757600080fd5b506103e6610836366004614af0565b611a0e565b34801561084757600080fd5b5061030861085636600461442a565b6101d36020526000908152604090205481565b34801561087557600080fd5b5061030861088436600461442a565b611a78565b34801561089557600080fd5b506b546f6b656e4552433131353560a01b610308565b3480156108b757600080fd5b506101cb546101cd546001600160a01b0390911690600160801b90046001600160801b031661052f565b3480156108ed57600080fd5b506103e66108fc366004614672565b611a90565b34801561090d57600080fd5b506103e661091c366004614b28565b611ab6565b34801561092d57600080fd5b506104596101cb546101ce546001600160a01b0390911691565b34801561095357600080fd5b50610360611dbf565b34801561096857600080fd5b5061033b610977366004614c3a565b6001600160a01b0391821660009081526101956020908152604080832093909416825291909152205460ff1690565b3480156109b257600080fd5b5061038e6109c136600461442a565b6101d4602052600090815260409020546001600160a01b031681565b3480156109e957600080fd5b506101cb5461038e906001600160a01b031681565b348015610a0a57600080fd5b506103e6610a19366004614c64565b611dcd565b348015610a2a57600080fd5b506101cf5460ff166040516103129190614cde565b348015610a4b57600080fd5b506103e6610a5a366004614d06565b611eac565b60006001600160a01b038316610acf5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152610194602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610b0682611f01565b80610b2157506001600160e01b03198216636cdb3d1360e11b145b80610af557506001600160e01b0319821663152a902d60e11b1492915050565b6101c68054610b4f90614d39565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7b90614d39565b8015610bc85780601f10610b9d57610100808354040283529160200191610bc8565b820191906000526020600020905b815481529060010190602001808311610bab57829003601f168201915b505050505081565b60008181526101d260205260409020805460609190610bee90614d39565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1a90614d39565b8015610c675780601f10610c3c57610100808354040283529160200191610c67565b820191906000526020600020905b815481529060010190602001808311610c4a57829003601f168201915b50505050509050919050565b6000610c7e81611f41565b610c8960008361140f565b610cd55760405162461bcd60e51b815260206004820152601b60248201527f6e6577206f776e6572206e6f74206d6f64756c652061646d696e2e00000000006044820152606401610ac6565b6101c880546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a3505050565b6000610d3481611f41565b612710821115610d785760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610ac6565b6101cd80546001600160801b03166001600160401b038416600160801b021790556101cb80546001600160a01b0319166001600160a01b0385169081179091556040518381527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a2505050565b600080600080610e0086611047565b90945084925061ffff169050612710610e198287614d89565b610e239190614da0565b925050509250929050565b61019354859060ff1615610f05576daaeb6d7670e522a718067333cd4e3b15610f0557336001600160a01b03821603610e7357610e6e8686868686611f52565b610f12565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee69190614dc2565b610f0557604051633b79c77360e21b8152336004820152602401610ac6565b610f128686868686611f52565b505050505050565b600082815261012f6020526040902060010154610f3681611f41565b610f408383611fb0565b505050565b610f4d611fd3565b610fad5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420617574686f72697a656420746f20736574206f70657261746f72207260448201526a32b9ba3934b1ba34b7b71760a91b6064820152608401610ac6565b610fb681611fe1565b50565b610fc1612029565b6001600160a01b0316816001600160a01b0316146110395760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610ac6565b6110438282612033565b5050565b60008181526101d560209081526040808320815180830190925280546001600160a01b03168083526001909101549282019290925282911561108f57805160208201516110ad565b6101cc546101cd546001600160a01b03909116906001600160801b03165b9250925050915091565b6060815183511461111c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610ac6565b600083516001600160401b0381111561113757611137614480565b604051908082528060200260200182016040528015611160578160200160208202803683370190505b50905060005b84518110156111d8576111ab85828151811061118457611184614ddf565b602002602001015185838151811061119e5761119e614ddf565b6020026020010151610a5f565b8282815181106111bd576111bd614ddf565b60209081029190910101526111d181614df5565b9050611166565b509392505050565b60006111eb81611f41565b6127108211156112325760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610ac6565b6101cc80546001600160a01b0319166001600160a01b0385169081179091556101cd80546001600160801b0319166001600160801b0385161790556040518381527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001610de4565b6112a5612029565b6001600160a01b0316836001600160a01b031614806112cb57506112cb83610977612029565b6112e75760405162461bcd60e51b8152600401610ac690614e0e565b610f40838383612056565b60006112fd81611f41565b6101ca80546001600160a01b0319166001600160a01b0384169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a25050565b600061135481611f41565b6101ce8290556101cb80546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018490527ff8086cee80709bd44c82f89dbca54115ebd05e840a88ab81df9cf5be9754eb63910160405180910390a1505050565b6101c8546000906113d29082906001600160a01b031661140f565b6113dc5750600090565b6101c8546001600160a01b03165b905090565b60008281526101616020526040812061140890836121fe565b9392505050565b600091825261012f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061144681611f41565b6101d0611454838583614e9e565b50505050565b6101c78054610b4f90614d39565b6002603554036114ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ac6565b600260355560006114cc84848461220a565b905060006114dd6020860186614443565b9050600060001986608001350361150f57506101c980549060019060006115048385614f5d565b909155506115599050565b6101c9548660800135106115525760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b6044820152606401610ac6565b5060808501355b600061156b6040880160208901614443565b6001600160a01b0316146115db5760405180604001604052808760200160208101906115979190614443565b6001600160a01b03908116825260408981013560209384015260008581526101d5845220835181546001600160a01b03191692169190911781559101516001909101555b6115f7826115ec60a0890189614f70565b848a60c001356123aa565b6116008661249c565b80826001600160a01b0316846001600160a01b03167f0b35afaf155daeef41cc46df86f058df2855c57d30ab134647a6b587e7cc8c39896040516116449190615024565b60405180910390a45050600160355550505050565b600061166481611f41565b6127108211156116ab5760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610ac6565b6040805180820182526001600160a01b03858116808352602080840187815260008a81526101d58352869020945185546001600160a01b031916941693909317845591516001909301929092559151848152909186917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a350505050565b61019354829060ff16156117f9576daaeb6d7670e522a718067333cd4e3b156117f957604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156117ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d19190614dc2565b6117f957604051633b79c77360e21b81526001600160a01b0382166004820152602401610ac6565b610f4083836126d2565b6060816001600160401b0381111561181d5761181d614480565b60405190808252806020026020018201604052801561185057816020015b606081526020019060019003908161183b5790505b50905060005b828110156118f0576118c03085858481811061187457611874614ddf565b90506020028101906118869190614f70565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126e492505050565b8282815181106118d2576118d2614ddf565b602002602001018190525080806118e890614df5565b915050611856565b5092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661192181611f41565b6000600019860361194d57506101c980549060019060006119428385614f5d565b9091555061198f9050565b6101c954861061198c5760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b6044820152606401610ac6565b50845b61199c87868684876123aa565b50505050505050565b60008060006119b58686866127d8565b61016087013560009081526101d1602052604090205490915060ff16158015611a035750611a037f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261140f565b969095509350505050565b6000611a1981611f41565b6101cf805483919060ff191660018381811115611a3857611a38614cc8565b02179055507fd246da9440709ce0dd3f4fd669abc85ada012ab9774b8ecdcc5059ba1486b9c182604051611a6c9190614cde565b60405180910390a15050565b600081815261016160205260408120610af59061283c565b600082815261012f6020526040902060010154611aac81611f41565b610f408383612033565b600054610100900460ff1615808015611ad65750600054600160ff909116105b80611af05750303b158015611af0575060005460ff166001145b611b535760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ac6565b6000805460ff191660011790558015611b76576000805461ff0019166101001790555b611b7e612846565b611bc56040518060400160405280600c81526020016b546f6b656e4552433131353560a01b815250604051806040016040528060018152602001603160f81b815250612877565b611bce876128a8565b611be6604051806020016040528060008152506128e0565b611bf06001611fe1565b6101c6611bfd8b82615153565b506101c7611c0b8a82615153565b506101cc80546001600160a01b03199081166001600160a01b03888116919091179092556101cd80546001600160801b0319166001600160801b0388161790556101cb805482168584161790556101ca80549091169188169190911790556101d0611c768982615153565b50612710836001600160801b03161115611cc45760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610ac6565b6101cd80546001600160801b03858116600160801b0291161790556101cf805460ff191690556101c880546001600160a01b0319166001600160a01b038d16179055611d1160008c612910565b611d3b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68c612910565b611d536000805160206157618339815191528c612910565b611d6c6000805160206157618339815191526000612910565b8015611db2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6101d08054610b4f90614d39565b61019354859060ff1615611e9f576daaeb6d7670e522a718067333cd4e3b15611e9f57336001600160a01b03821603611e0d57610e6e868686868661291a565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e809190614dc2565b611e9f57604051633b79c77360e21b8152336004820152602401610ac6565b610f12868686868661291a565b611eb4612029565b6001600160a01b0316836001600160a01b03161480611eda5750611eda83610977612029565b611ef65760405162461bcd60e51b8152600401610ac690614e0e565b610f40838383612971565b60006001600160e01b03198216636cdb3d1360e11b1480611f3257506001600160e01b031982166303a24d0760e21b145b80610af55750610af582612a9a565b610fb681611f4d612029565b612abf565b611f5a612029565b6001600160a01b0316856001600160a01b03161480611f805750611f8085610977612029565b611f9c5760405162461bcd60e51b8152600401610ac690615212565b611fa98585858585612b23565b5050505050565b611fba8282612cd5565b600082815261016160205260409020610f409082612d5d565b60006113ea816106a2612029565b610193805460ff19168215159081179091556040519081527f38475885990d8dfe9ca01f0ef160a1b5514426eab9ddbc953a3353410ba780969060200160405180910390a150565b60006113ea612d72565b61203d8282612d9f565b600082815261016160205260409020610f409082612e25565b6001600160a01b03831661207c5760405162461bcd60e51b8152600401610ac690615261565b805182511461209d5760405162461bcd60e51b8152600401610ac6906152a4565b60006120a7612029565b90506120c781856000868660405180602001604052806000815250612e3a565b60005b83518110156121915760008482815181106120e7576120e7614ddf565b60200260200101519050600084838151811061210557612105614ddf565b6020908102919091018101516000848152610194835260408082206001600160a01b038c1683529093529190912054909150818110156121575760405162461bcd60e51b8152600401610ac6906152ec565b6000928352610194602090815260408085206001600160a01b038b168652909152909220910390558061218981614df5565b9150506120ca565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516121e2929190615330565b60405180910390a4604080516020810190915260009052611454565b6000611408838361301d565b600080600061221a8686866119a5565b915091508161225f5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610ac6565b4261227261014088016101208901615355565b6001600160801b0316111580156122a357504261229761016088016101408901615355565b6001600160801b031610155b6122e15760405162461bcd60e51b815260206004820152600f60248201526e1c995c5d595cdd08195e1c1a5c9959608a1b6044820152606401610ac6565b60006122f06020880188614443565b6001600160a01b03160361233c5760405162461bcd60e51b81526020600482015260136024820152721c9958da5c1a595b9d081d5b9919599a5b9959606a1b6044820152606401610ac6565b60008660c00135116123805760405162461bcd60e51b815260206004820152600d60248201526c7a65726f207175616e7469747960981b6044820152606401610ac6565b61016086013560009081526101d160205260409020805460ff191660011790559150509392505050565b60008281526101d26020526040902080546123c490614d39565b905060000361242357826124075760405162461bcd60e51b815260206004820152600a60248201526932b6b83a3c903ab9349760b11b6044820152606401610ac6565b60008281526101d260205260409020612421848683614e9e565b505b61243e85838360405180602001604052806000815250613047565b81856001600160a01b03167f04133ee4cb027e1c5fce5e3481289278a93bd16a65a3b65b428a6d239e706bfb6101d260008681526020019081526020016000208460405161248d929190615370565b60405180910390a35050505050565b8060e001356000036124ab5750565b60006124bf60c083013560e0840135614d89565b9050600060016101cf5460ff1660018111156124dd576124dd614cc8565b14612513576101cd546127109061250490600160801b90046001600160801b031684614d89565b61250e9190614da0565b612518565b6101ce545b90508082101561256a5760405162461bcd60e51b815260206004820152601c60248201527f7072696365206c657373207468616e20706c6174666f726d20666565000000006044820152606401610ac6565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61259161012085016101008601614443565b6001600160a01b0316036125ec578134146125e75760405162461bcd60e51b815260206004820152601660248201527536bab9ba1039b2b732103a37ba30b610383934b1b29760511b6044820152606401610ac6565b61262f565b341561262f5760405162461bcd60e51b81526020600482015260126024820152716d73672076616c7565206e6f74207a65726f60701b6044820152606401610ac6565b6000806126426080860160608701614443565b6001600160a01b031614612665576126606080850160608601614443565b612673565b6101ca546001600160a01b03165b90506126a561268a61012086016101008701614443565b612692612029565b6101cb546001600160a01b03168561316f565b6114546126ba61012086016101008701614443565b6126c2612029565b836126cd8688615404565b61316f565b6110436126dd612029565b83836131b5565b60606001600160a01b0383163b61274c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610ac6565b600080846001600160a01b0316846040516127679190615417565b600060405180830381855af49150503d80600081146127a2576040519150601f19603f3d011682016040523d82523d6000602084013e6127a7565b606091505b50915091506127cf828260405180606001604052806027815260200161578160279139613296565b95945050505050565b600061283483838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061282e925061282291508890506132cf565b80519060200120613425565b90613473565b949350505050565b6000610af5825490565b600054610100900460ff1661286d5760405162461bcd60e51b8152600401610ac690615433565b61287561348f565b565b600054610100900460ff1661289e5760405162461bcd60e51b8152600401610ac690615433565b61104382826134bd565b600054610100900460ff166128cf5760405162461bcd60e51b8152600401610ac690615433565b6128d76134fe565b610fb681613525565b600054610100900460ff166129075760405162461bcd60e51b8152600401610ac690615433565b610fb6816135b4565b6110438282611fb0565b612922612029565b6001600160a01b0316856001600160a01b03161480612948575061294885610977612029565b6129645760405162461bcd60e51b8152600401610ac690615212565b611fa985858585856135e4565b6001600160a01b0383166129975760405162461bcd60e51b8152600401610ac690615261565b60006129a1612029565b905060006129ae8461372d565b905060006129bb8461372d565b90506129db83876000858560405180602001604052806000815250612e3a565b6000858152610194602090815260408083206001600160a01b038a16845290915290205484811015612a1f5760405162461bcd60e51b8152600401610ac6906152ec565b6000868152610194602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261199c565b60006001600160e01b03198216635a05180f60e01b1480610af55750610af582613778565b612ac9828261140f565b61104357612ae1816001600160a01b031660146137ad565b612aec8360206137ad565b604051602001612afd92919061547e565b60408051601f198184030181529082905262461bcd60e51b8252610ac691600401614417565b8151835114612b445760405162461bcd60e51b8152600401610ac6906152a4565b6001600160a01b038416612b6a5760405162461bcd60e51b8152600401610ac6906154f3565b6000612b74612029565b9050612b84818787878787612e3a565b60005b8451811015612c6f576000858281518110612ba457612ba4614ddf565b602002602001015190506000858381518110612bc257612bc2614ddf565b6020908102919091018101516000848152610194835260408082206001600160a01b038e168352909352919091205490915081811015612c145760405162461bcd60e51b8152600401610ac690615538565b6000838152610194602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290612c54908490614f5d565b9250508190555050505080612c6890614df5565b9050612b87565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612cbf929190615330565b60405180910390a4610f12818787878787613948565b612cdf828261140f565b61104357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612d19612029565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611408836001600160a01b038416613aa3565b3360009081526099602052604081205460ff1615612d97575060131936013560601c90565b503390565b90565b612da9828261140f565b1561104357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19169055612de1612029565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000611408836001600160a01b038416613af2565b612e53600080516020615761833981519152600061140f565b158015612e6857506001600160a01b03851615155b8015612e7c57506001600160a01b03841615155b15612f0f57612e996000805160206157618339815191528661140f565b80612eb75750612eb76000805160206157618339815191528561140f565b612f0f5760405162461bcd60e51b8152602060048201526024808201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526332b9399760e11b6064820152608401610ac6565b6001600160a01b038516612f975760005b8351811015612f9557828181518110612f3b57612f3b614ddf565b60200260200101516101d36000868481518110612f5a57612f5a614ddf565b602002602001015181526020019081526020016000206000828254612f7f9190614f5d565b90915550612f8e905081614df5565b9050612f20565b505b6001600160a01b038416610f125760005b835181101561199c57828181518110612fc357612fc3614ddf565b60200260200101516101d36000868481518110612fe257612fe2614ddf565b6020026020010151815260200190815260200160002060008282546130079190615404565b90915550613016905081614df5565b9050612fa8565b600082600001828154811061303457613034614ddf565b9060005260206000200154905092915050565b6001600160a01b0384166130a75760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610ac6565b60006130b1612029565b905060006130be8561372d565b905060006130cb8561372d565b90506130dc83600089858589612e3a565b6000868152610194602090815260408083206001600160a01b038b1684529091528120805487929061310f908490614f5d565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461199c83600089898989613be5565b80156114545773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016131a9576131a48282613ca0565b611454565b61145484848484613d43565b816001600160a01b0316836001600160a01b0316036132285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610ac6565b6001600160a01b0383811660008181526101956020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606083156132a5575081611408565b8251156132b55782518084602001fd5b8160405162461bcd60e51b8152600401610ac69190614417565b60607fc7a95ef88f83fa833ccfce325157b7111633b181b6a27181b86415d8d501134d6132ff6020840184614443565b61330f6040850160208601614443565b60408501356133246080870160608801614443565b608087013561333660a0890189614f70565b604051613344929190615582565b60405190819003902060c089013560e08a01356133696101208c016101008d01614443565b61337b6101408d016101208e01615355565b61338d6101608e016101408f01615355565b60408051602081019d909d526001600160a01b039b8c16908d0152988a1660608c015260808b019790975294881660a08a015260c089019390935260e08801919091526101008701526101208601529092166101408401526001600160801b039182166101608085019190915291166101808301528301356101a08201526101c0016040516020818303038152906040529050919050565b6000610af5613432613d96565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006134828585613e11565b915091506111d881613e56565b600054610100900460ff166134b65760405162461bcd60e51b8152600401610ac690615433565b6001603555565b600054610100900460ff166134e45760405162461bcd60e51b8152600401610ac690615433565b815160209283012081519190920120600191909155600255565b600054610100900460ff166128755760405162461bcd60e51b8152600401610ac690615433565b600054610100900460ff1661354c5760405162461bcd60e51b8152600401610ac690615433565b60005b81518110156110435760016099600084848151811061357057613570614ddf565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806135ac81614df5565b91505061354f565b600054610100900460ff166135db5760405162461bcd60e51b8152600401610ac690615433565b610fb68161400c565b6001600160a01b03841661360a5760405162461bcd60e51b8152600401610ac6906154f3565b6000613614612029565b905060006136218561372d565b9050600061362e8561372d565b905061363e838989858589612e3a565b6000868152610194602090815260408083206001600160a01b038c168452909152902054858110156136825760405162461bcd60e51b8152600401610ac690615538565b6000878152610194602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906136c2908490614f5d565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4613722848a8a8a8a8a613be5565b505050505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061376757613767614ddf565b602090810291909101015292915050565b60006001600160e01b03198216637965db0b60e01b1480610af557506301ffc9a760e01b6001600160e01b0319831614610af5565b606060006137bc836002614d89565b6137c7906002614f5d565b6001600160401b038111156137de576137de614480565b6040519080825280601f01601f191660200182016040528015613808576020820181803683370190505b509050600360fc1b8160008151811061382357613823614ddf565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061385257613852614ddf565b60200101906001600160f81b031916908160001a9053506000613876846002614d89565b613881906001614f5d565b90505b60018111156138f9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106138b5576138b5614ddf565b1a60f81b8282815181106138cb576138cb614ddf565b60200101906001600160f81b031916908160001a90535060049490941c936138f281615592565b9050613884565b5083156114085760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ac6565b6001600160a01b0384163b15610f125760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061398c90899089908890889088906004016155a9565b6020604051808303816000875af19250505080156139c7575060408051601f3d908101601f191682019092526139c491810190615607565b60015b613a73576139d3615624565b806308c379a003613a0c57506139e761563f565b806139f25750613a0e565b8060405162461bcd60e51b8152600401610ac69190614417565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610ac6565b6001600160e01b0319811663bc197c8160e01b1461199c5760405162461bcd60e51b8152600401610ac6906156c8565b6000818152600183016020526040812054613aea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610af5565b506000610af5565b60008181526001830160205260408120548015613bdb576000613b16600183615404565b8554909150600090613b2a90600190615404565b9050818114613b8f576000866000018281548110613b4a57613b4a614ddf565b9060005260206000200154905080876000018481548110613b6d57613b6d614ddf565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ba057613ba0615710565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610af5565b6000915050610af5565b6001600160a01b0384163b15610f125760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190613c299089908990889088908890600401615726565b6020604051808303816000875af1925050508015613c64575060408051601f3d908101601f19168201909252613c6191810190615607565b60015b613c70576139d3615624565b6001600160e01b0319811663f23a6e6160e01b1461199c5760405162461bcd60e51b8152600401610ac6906156c8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613ced576040519150601f19603f3d011682016040523d82523d6000602084013e613cf2565b606091505b5050905080610f405760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610ac6565b816001600160a01b0316836001600160a01b0316031561145457306001600160a01b03841603613d81576131a46001600160a01b0385168383614019565b6114546001600160a01b03851684848461407c565b60006113ea7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613dc560015490565b6002546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6000808251604103613e475760208301516040840151606085015160001a613e3b878285856140b4565b94509450505050613e4f565b506000905060025b9250929050565b6000816004811115613e6a57613e6a614cc8565b03613e725750565b6001816004811115613e8657613e86614cc8565b03613ed35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ac6565b6002816004811115613ee757613ee7614cc8565b03613f345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ac6565b6003816004811115613f4857613f48614cc8565b03613fa05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ac6565b6004816004811115613fb457613fb4614cc8565b03610fb65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ac6565b6101966110438282615153565b6040516001600160a01b038316602482015260448101829052610f4090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526141a1565b6040516001600160a01b03808516602483015283166044820152606481018290526114549085906323b872dd60e01b90608401614045565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156140eb5750600090506003614198565b8460ff16601b1415801561410357508460ff16601c14155b156141145750600090506004614198565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614168573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661419157600060019250925050614198565b9150600090505b94509492505050565b60006141f6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142739092919063ffffffff16565b805190915015610f4057808060200190518101906142149190614dc2565b610f405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ac6565b60606128348484600085856001600160a01b0385163b6142d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac6565b600080866001600160a01b031685876040516142f19190615417565b60006040518083038185875af1925050503d806000811461432e576040519150601f19603f3d011682016040523d82523d6000602084013e614333565b606091505b5091509150614343828286613296565b979650505050505050565b80356001600160a01b038116811461436557600080fd5b919050565b6000806040838503121561437d57600080fd5b6143868361434e565b946020939093013593505050565b6001600160e01b031981168114610fb657600080fd5b6000602082840312156143bc57600080fd5b813561140881614394565b60005b838110156143e25781810151838201526020016143ca565b50506000910152565b600081518084526144038160208601602086016143c7565b601f01601f19169290920160200192915050565b60208152600061140860208301846143eb565b60006020828403121561443c57600080fd5b5035919050565b60006020828403121561445557600080fd5b6114088261434e565b6000806040838503121561447157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156144bb576144bb614480565b6040525050565b60006001600160401b038211156144db576144db614480565b5060051b60200190565b600082601f8301126144f657600080fd5b81356020614503826144c2565b6040516145108282614496565b83815260059390931b850182019282810191508684111561453057600080fd5b8286015b8481101561454b5780358352918301918301614534565b509695505050505050565b600082601f83011261456757600080fd5b81356001600160401b0381111561458057614580614480565b604051614597601f8301601f191660200182614496565b8181528460208386010111156145ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156145e157600080fd5b6145ea8661434e565b94506145f86020870161434e565b935060408601356001600160401b038082111561461457600080fd5b61462089838a016144e5565b9450606088013591508082111561463657600080fd5b61464289838a016144e5565b9350608088013591508082111561465857600080fd5b5061466588828901614556565b9150509295509295909350565b6000806040838503121561468557600080fd5b823591506146956020840161434e565b90509250929050565b8015158114610fb657600080fd5b6000602082840312156146be57600080fd5b81356114088161469e565b600082601f8301126146da57600080fd5b813560206146e7826144c2565b6040516146f48282614496565b83815260059390931b850182019282810191508684111561471457600080fd5b8286015b8481101561454b576147298161434e565b8352918301918301614718565b6000806040838503121561474957600080fd5b82356001600160401b038082111561476057600080fd5b61476c868387016146c9565b9350602085013591508082111561478257600080fd5b5061478f858286016144e5565b9150509250929050565b600081518084526020808501945080840160005b838110156147c9578151875295820195908201906001016147ad565b509495945050505050565b6020815260006114086020830184614799565b6000806000606084860312156147fc57600080fd5b6148058461434e565b925060208401356001600160401b038082111561482157600080fd5b61482d878388016144e5565b9350604086013591508082111561484357600080fd5b50614850868287016144e5565b9150509250925092565b60008083601f84011261486c57600080fd5b5081356001600160401b0381111561488357600080fd5b602083019150836020828501011115613e4f57600080fd5b600080602083850312156148ae57600080fd5b82356001600160401b038111156148c457600080fd5b6148d08582860161485a565b90969095509350505050565b6000806000604084860312156148f157600080fd5b83356001600160401b038082111561490857600080fd5b90850190610180828803121561491d57600080fd5b9093506020850135908082111561493357600080fd5b506149408682870161485a565b9497909650939450505050565b60008060006060848603121561496257600080fd5b833592506149726020850161434e565b9150604084013590509250925092565b6000806040838503121561499557600080fd5b61499e8361434e565b915060208301356149ae8161469e565b809150509250929050565b600080602083850312156149cc57600080fd5b82356001600160401b03808211156149e357600080fd5b818501915085601f8301126149f757600080fd5b813581811115614a0657600080fd5b8660208260051b8501011115614a1b57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614a8257603f19888603018452614a708583516143eb565b94509285019290850190600101614a54565b5092979650505050505050565b600080600080600060808688031215614aa757600080fd5b614ab08661434e565b94506020860135935060408601356001600160401b03811115614ad257600080fd5b614ade8882890161485a565b96999598509660600135949350505050565b600060208284031215614b0257600080fd5b81356002811061140857600080fd5b80356001600160801b038116811461436557600080fd5b6000806000806000806000806000806101408b8d031215614b4857600080fd5b614b518b61434e565b995060208b01356001600160401b0380821115614b6d57600080fd5b614b798e838f01614556565b9a5060408d0135915080821115614b8f57600080fd5b614b9b8e838f01614556565b995060608d0135915080821115614bb157600080fd5b614bbd8e838f01614556565b985060808d0135915080821115614bd357600080fd5b50614be08d828e016146c9565b965050614bef60a08c0161434e565b9450614bfd60c08c0161434e565b9350614c0b60e08c01614b11565b9250614c1a6101008c01614b11565b9150614c296101208c0161434e565b90509295989b9194979a5092959850565b60008060408385031215614c4d57600080fd5b614c568361434e565b91506146956020840161434e565b600080600080600060a08688031215614c7c57600080fd5b614c858661434e565b9450614c936020870161434e565b9350604086013592506060860135915060808601356001600160401b03811115614cbc57600080fd5b61466588828901614556565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614d0057634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060608486031215614d1b57600080fd5b614d248461434e565b95602085013595506040909401359392505050565b600181811c90821680614d4d57607f821691505b602082108103614d6d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610af557610af5614d73565b600082614dbd57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215614dd457600080fd5b81516114088161469e565b634e487b7160e01b600052603260045260246000fd5b600060018201614e0757614e07614d73565b5060010190565b6020808252602a908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f726040820152691030b8383937bb32b21760b11b606082015260800190565b601f821115610f4057600081815260208120601f850160051c81016020861015614e7f5750805b601f850160051c820191505b81811015610f1257828155600101614e8b565b6001600160401b03831115614eb557614eb5614480565b614ec983614ec38354614d39565b83614e58565b6000601f841160018114614efd5760008515614ee55750838201355b600019600387901b1c1916600186901b178355611fa9565b600083815260209020601f19861690835b82811015614f2e5786850135825560209485019460019092019101614f0e565b5086821015614f4b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610af557610af5614d73565b6000808335601e19843603018112614f8757600080fd5b8301803591506001600160401b03821115614fa157600080fd5b602001915036819003821315613e4f57600080fd5b6000808335601e19843603018112614fcd57600080fd5b83016020810192503590506001600160401b03811115614fec57600080fd5b803603821315613e4f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152615045602082016150388461434e565b6001600160a01b03169052565b60006150536020840161434e565b6001600160a01b038116604084015250604083013560608301526150796060840161434e565b6001600160a01b038116608084015250608083013560a08301526150a060a0840184614fb6565b6101808060c08601526150b86101a086018385614ffb565b925060c086013560e0860152610100915060e0860135828601526150dd82870161434e565b91506101206150f6818701846001600160a01b03169052565b615101818801614b11565b92505061014061511b818701846001600160801b03169052565b615126818801614b11565b925050610160615140818701846001600160801b03169052565b9590950135939094019290925250919050565b81516001600160401b0381111561516c5761516c614480565b6151808161517a8454614d39565b84614e58565b602080601f8311600181146151b5576000841561519d5750858301515b600019600386901b1c1916600185901b178555610f12565b600085815260208120601f198616915b828110156151e4578886015182559484019460019091019084016151c5565b50858210156152025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6040815260006153436040830185614799565b82810360208401526127cf8185614799565b60006020828403121561536757600080fd5b61140882614b11565b60408152600080845461538281614d39565b80604086015260606001808416600081146153a457600181146153be576153ef565b60ff1985168884015283151560051b8801830195506153ef565b8960005260208060002060005b868110156153e65781548b82018701529084019082016153cb565b8a018501975050505b50505050506020929092019290925292915050565b81810381811115610af557610af5614d73565b600082516154298184602087016143c7565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516154b68160178501602088016143c7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516154e78160288401602088016143c7565b01602801949350505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b8183823760009101908152919050565b6000816155a1576155a1614d73565b506000190190565b6001600160a01b0386811682528516602082015260a0604082018190526000906155d590830186614799565b82810360608401526155e78186614799565b905082810360808401526155fb81856143eb565b98975050505050505050565b60006020828403121561561957600080fd5b815161140881614394565b600060033d1115612d9c5760046000803e5060005160e01c90565b600060443d101561564d5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561567c57505050505090565b82850191508151818111156156945750505050505090565b843d87010160208285010111156156ae5750505050505090565b6156bd60208286010187614496565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614343908301846143eb56fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209387498bf9f7c9d382e4e60426b37fe0e0855f8f887e56b77947c186601676cf64736f6c63430008130033"; + + public TokenERC1155DeploymentBase() + : base(BYTECODE) { } + + public TokenERC1155DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "id", 2)] + public virtual BigInteger Id { get; set; } + } + + public partial class BalanceOfBatchFunction : BalanceOfBatchFunctionBase { } + + [Function("balanceOfBatch", "uint256[]")] + public class BalanceOfBatchFunctionBase : FunctionMessage + { + [Parameter("address[]", "accounts", 1)] + public virtual List Accounts { get; set; } + + [Parameter("uint256[]", "ids", 2)] + public virtual List Ids { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "id", 2)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "value", 3)] + public virtual BigInteger Value { get; set; } + } + + public partial class BurnBatchFunction : BurnBatchFunctionBase { } + + [Function("burnBatch")] + public class BurnBatchFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256[]", "ids", 2)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "values", 3)] + public virtual List Values { get; set; } + } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetFlatPlatformFeeInfoFunction : GetFlatPlatformFeeInfoFunctionBase { } + + [Function("getFlatPlatformFeeInfo", typeof(GetFlatPlatformFeeInfoOutputDTO))] + public class GetFlatPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeTypeFunction : GetPlatformFeeTypeFunctionBase { } + + [Function("getPlatformFeeType", "uint8")] + public class GetPlatformFeeTypeFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_primarySaleRecipient", 6)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("address", "_royaltyRecipient", 7)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint128", "_royaltyBps", 8)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("uint128", "_platformFeeBps", 9)] + public virtual BigInteger PlatformFeeBps { get; set; } + + [Parameter("address", "_platformFeeRecipient", 10)] + public virtual string PlatformFeeRecipient { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class MintToFunction : MintToFunctionBase { } + + [Function("mintTo")] + public class MintToFunctionBase : FunctionMessage + { + [Parameter("address", "_to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "_tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("string", "_uri", 3)] + public virtual string Uri { get; set; } + + [Parameter("uint256", "_amount", 4)] + public virtual BigInteger Amount { get; set; } + } + + public partial class MintWithSignatureFunction : MintWithSignatureFunctionBase { } + + [Function("mintWithSignature")] + public class MintWithSignatureFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OperatorRestrictionFunction : OperatorRestrictionFunctionBase { } + + [Function("operatorRestriction", "bool")] + public class OperatorRestrictionFunctionBase : FunctionMessage { } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class PlatformFeeRecipientFunction : PlatformFeeRecipientFunctionBase { } + + [Function("platformFeeRecipient", "address")] + public class PlatformFeeRecipientFunctionBase : FunctionMessage { } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeBatchTransferFromFunction : SafeBatchTransferFromFunctionBase { } + + [Function("safeBatchTransferFrom")] + public class SafeBatchTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 3)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "amounts", 4)] + public virtual List Amounts { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 3)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "amount", 4)] + public virtual BigInteger Amount { get; set; } + + [Parameter("bytes", "data", 5)] + public virtual byte[] Data { get; set; } + } + + public partial class SaleRecipientForTokenFunction : SaleRecipientForTokenFunctionBase { } + + [Function("saleRecipientForToken", "address")] + public class SaleRecipientForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetFlatPlatformFeeInfoFunction : SetFlatPlatformFeeInfoFunctionBase { } + + [Function("setFlatPlatformFeeInfo")] + public class SetFlatPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_flatFee", 2)] + public virtual BigInteger FlatFee { get; set; } + } + + public partial class SetOperatorRestrictionFunction : SetOperatorRestrictionFunctionBase { } + + [Function("setOperatorRestriction")] + public class SetOperatorRestrictionFunctionBase : FunctionMessage + { + [Parameter("bool", "_restriction", 1)] + public virtual bool Restriction { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPlatformFeeTypeFunction : SetPlatformFeeTypeFunctionBase { } + + [Function("setPlatformFeeType")] + public class SetPlatformFeeTypeFunctionBase : FunctionMessage + { + [Parameter("uint8", "_feeType", 1)] + public virtual byte FeeType { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriFunction : UriFunctionBase { } + + [Function("uri", "string")] + public class UriFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class VerifyFunction : VerifyFunctionBase { } + + [Function("verify", typeof(VerifyOutputDTO))] + public class VerifyFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "account", 1, true)] + public virtual string Account { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class FlatPlatformFeeUpdatedEventDTO : FlatPlatformFeeUpdatedEventDTOBase { } + + [Event("FlatPlatformFeeUpdated")] + public class FlatPlatformFeeUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, false)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "flatFee", 2, false)] + public virtual BigInteger FlatFee { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class OperatorRestrictionEventDTO : OperatorRestrictionEventDTOBase { } + + [Event("OperatorRestriction")] + public class OperatorRestrictionEventDTOBase : IEventDTO + { + [Parameter("bool", "restriction", 1, false)] + public virtual bool Restriction { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PlatformFeeTypeUpdatedEventDTO : PlatformFeeTypeUpdatedEventDTOBase { } + + [Event("PlatformFeeTypeUpdated")] + public class PlatformFeeTypeUpdatedEventDTOBase : IEventDTO + { + [Parameter("uint8", "feeType", 1, false)] + public virtual byte FeeType { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class TokensMintedEventDTO : TokensMintedEventDTOBase { } + + [Event("TokensMinted")] + public class TokensMintedEventDTOBase : IEventDTO + { + [Parameter("address", "mintedTo", 1, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "tokenIdMinted", 2, true)] + public virtual BigInteger TokenIdMinted { get; set; } + + [Parameter("string", "uri", 3, false)] + public virtual string Uri { get; set; } + + [Parameter("uint256", "quantityMinted", 4, false)] + public virtual BigInteger QuantityMinted { get; set; } + } + + public partial class TokensMintedWithSignatureEventDTO : TokensMintedWithSignatureEventDTOBase { } + + [Event("TokensMintedWithSignature")] + public class TokensMintedWithSignatureEventDTOBase : IEventDTO + { + [Parameter("address", "signer", 1, true)] + public virtual string Signer { get; set; } + + [Parameter("address", "mintedTo", 2, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "tokenIdMinted", 3, true)] + public virtual BigInteger TokenIdMinted { get; set; } + + [Parameter("tuple", "mintRequest", 4, false)] + public virtual MintRequest MintRequest { get; set; } + } + + public partial class TransferBatchEventDTO : TransferBatchEventDTOBase { } + + [Event("TransferBatch")] + public class TransferBatchEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256[]", "ids", 4, false)] + public virtual List Ids { get; set; } + + [Parameter("uint256[]", "values", 5, false)] + public virtual List Values { get; set; } + } + + public partial class TransferSingleEventDTO : TransferSingleEventDTOBase { } + + [Event("TransferSingle")] + public class TransferSingleEventDTOBase : IEventDTO + { + [Parameter("address", "operator", 1, true)] + public virtual string Operator { get; set; } + + [Parameter("address", "from", 2, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 3, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "id", 4, false)] + public virtual BigInteger Id { get; set; } + + [Parameter("uint256", "value", 5, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class URIEventDTO : URIEventDTOBase { } + + [Event("URI")] + public class URIEventDTOBase : IEventDTO + { + [Parameter("string", "value", 1, false)] + public virtual string Value { get; set; } + + [Parameter("uint256", "id", 2, true)] + public virtual BigInteger Id { get; set; } + } + + public partial class OperatorNotAllowedError : OperatorNotAllowedErrorBase { } + + [Error("OperatorNotAllowed")] + public class OperatorNotAllowedErrorBase : IErrorDTO + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfBatchOutputDTO : BalanceOfBatchOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfBatchOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256[]", "", 1)] + public virtual List ReturnValue1 { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetFlatPlatformFeeInfoOutputDTO : GetFlatPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetFlatPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint256", "", 2)] + public virtual BigInteger ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeTypeOutputDTO : GetPlatformFeeTypeOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OperatorRestrictionOutputDTO : OperatorRestrictionOutputDTOBase { } + + [FunctionOutput] + public class OperatorRestrictionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PlatformFeeRecipientOutputDTO : PlatformFeeRecipientOutputDTOBase { } + + [FunctionOutput] + public class PlatformFeeRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SaleRecipientForTokenOutputDTO : SaleRecipientForTokenOutputDTOBase { } + + [FunctionOutput] + public class SaleRecipientForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class UriOutputDTO : UriOutputDTOBase { } + + [FunctionOutput] + public class UriOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class VerifyOutputDTO : VerifyOutputDTOBase { } + + [FunctionOutput] + public class VerifyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs.meta new file mode 100644 index 00000000..da563ace --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/ContractDefinition/TokenERC1155Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2d677e14366edff4a83986e1e33336a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs new file mode 100644 index 00000000..48f59ad4 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs @@ -0,0 +1,1074 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.TokenERC1155.ContractDefinition; + +namespace Thirdweb.Contracts.TokenERC1155 +{ + public partial class TokenERC1155Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + TokenERC1155Deployment tokenERC1155Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(tokenERC1155Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, TokenERC1155Deployment tokenERC1155Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(tokenERC1155Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + TokenERC1155Deployment tokenERC1155Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, tokenERC1155Deployment, cancellationTokenSource); + return new TokenERC1155Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public TokenERC1155Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BigInteger id, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + balanceOfFunction.Id = id; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(BalanceOfBatchFunction balanceOfBatchFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task> BalanceOfBatchQueryAsync(List accounts, List ids, BlockParameter blockParameter = null) + { + var balanceOfBatchFunction = new BalanceOfBatchFunction(); + balanceOfBatchFunction.Accounts = accounts; + balanceOfBatchFunction.Ids = ids; + + return ContractHandler.QueryAsync>(balanceOfBatchFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(string account, BigInteger id, BigInteger value) + { + var burnFunction = new BurnFunction(); + burnFunction.Account = account; + burnFunction.Id = id; + burnFunction.Value = value; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(string account, BigInteger id, BigInteger value, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.Account = account; + burnFunction.Id = id; + burnFunction.Value = value; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnBatchRequestAsync(BurnBatchFunction burnBatchFunction) + { + return ContractHandler.SendRequestAsync(burnBatchFunction); + } + + public Task BurnBatchRequestAndWaitForReceiptAsync(BurnBatchFunction burnBatchFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnBatchFunction, cancellationToken); + } + + public Task BurnBatchRequestAsync(string account, List ids, List values) + { + var burnBatchFunction = new BurnBatchFunction(); + burnBatchFunction.Account = account; + burnBatchFunction.Ids = ids; + burnBatchFunction.Values = values; + + return ContractHandler.SendRequestAsync(burnBatchFunction); + } + + public Task BurnBatchRequestAndWaitForReceiptAsync(string account, List ids, List values, CancellationTokenSource cancellationToken = null) + { + var burnBatchFunction = new BurnBatchFunction(); + burnBatchFunction.Account = account; + burnBatchFunction.Ids = ids; + burnBatchFunction.Values = values; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnBatchFunction, cancellationToken); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetFlatPlatformFeeInfoQueryAsync(GetFlatPlatformFeeInfoFunction getFlatPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getFlatPlatformFeeInfoFunction, blockParameter); + } + + public Task GetFlatPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeTypeQueryAsync(GetPlatformFeeTypeFunction getPlatformFeeTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPlatformFeeTypeFunction, blockParameter); + } + + public Task GetPlatformFeeTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string primarySaleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.PrimarySaleRecipient = primarySaleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string primarySaleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.PrimarySaleRecipient = primarySaleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string account, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Account = account; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task MintToRequestAsync(MintToFunction mintToFunction) + { + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(MintToFunction mintToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintToRequestAsync(string to, BigInteger tokenId, string uri, BigInteger amount) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.TokenId = tokenId; + mintToFunction.Uri = uri; + mintToFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(string to, BigInteger tokenId, string uri, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.TokenId = tokenId; + mintToFunction.Uri = uri; + mintToFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintWithSignatureFunction mintWithSignatureFunction) + { + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintWithSignatureFunction mintWithSignatureFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintRequest req, byte[] signature) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(OperatorRestrictionFunction operatorRestrictionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(operatorRestrictionFunction, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task PlatformFeeRecipientQueryAsync(PlatformFeeRecipientFunction platformFeeRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(platformFeeRecipientFunction, blockParameter); + } + + public Task PlatformFeeRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeBatchTransferFromRequestAsync(SafeBatchTransferFromFunction safeBatchTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + SafeBatchTransferFromFunction safeBatchTransferFromFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeBatchTransferFromRequestAsync(string from, string to, List ids, List amounts, byte[] data) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeBatchTransferFromFunction); + } + + public Task SafeBatchTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + List ids, + List amounts, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeBatchTransferFromFunction = new SafeBatchTransferFromFunction(); + safeBatchTransferFromFunction.From = from; + safeBatchTransferFromFunction.To = to; + safeBatchTransferFromFunction.Ids = ids; + safeBatchTransferFromFunction.Amounts = amounts; + safeBatchTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeBatchTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger id, BigInteger amount, byte[] data) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync( + string from, + string to, + BigInteger id, + BigInteger amount, + byte[] data, + CancellationTokenSource cancellationToken = null + ) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.Id = id; + safeTransferFromFunction.Amount = amount; + safeTransferFromFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SaleRecipientForTokenQueryAsync(SaleRecipientForTokenFunction saleRecipientForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(saleRecipientForTokenFunction, blockParameter); + } + + public Task SaleRecipientForTokenQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var saleRecipientForTokenFunction = new SaleRecipientForTokenFunction(); + saleRecipientForTokenFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(saleRecipientForTokenFunction, blockParameter); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetFlatPlatformFeeInfoRequestAsync(SetFlatPlatformFeeInfoFunction setFlatPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setFlatPlatformFeeInfoFunction); + } + + public Task SetFlatPlatformFeeInfoRequestAndWaitForReceiptAsync( + SetFlatPlatformFeeInfoFunction setFlatPlatformFeeInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setFlatPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetFlatPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger flatFee) + { + var setFlatPlatformFeeInfoFunction = new SetFlatPlatformFeeInfoFunction(); + setFlatPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setFlatPlatformFeeInfoFunction.FlatFee = flatFee; + + return ContractHandler.SendRequestAsync(setFlatPlatformFeeInfoFunction); + } + + public Task SetFlatPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger flatFee, CancellationTokenSource cancellationToken = null) + { + var setFlatPlatformFeeInfoFunction = new SetFlatPlatformFeeInfoFunction(); + setFlatPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setFlatPlatformFeeInfoFunction.FlatFee = flatFee; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setFlatPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(SetOperatorRestrictionFunction setOperatorRestrictionFunction) + { + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync( + SetOperatorRestrictionFunction setOperatorRestrictionFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(bool restriction) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync(bool restriction, CancellationTokenSource cancellationToken = null) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeTypeRequestAsync(SetPlatformFeeTypeFunction setPlatformFeeTypeFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeTypeFunction); + } + + public Task SetPlatformFeeTypeRequestAndWaitForReceiptAsync(SetPlatformFeeTypeFunction setPlatformFeeTypeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeTypeFunction, cancellationToken); + } + + public Task SetPlatformFeeTypeRequestAsync(byte feeType) + { + var setPlatformFeeTypeFunction = new SetPlatformFeeTypeFunction(); + setPlatformFeeTypeFunction.FeeType = feeType; + + return ContractHandler.SendRequestAsync(setPlatformFeeTypeFunction); + } + + public Task SetPlatformFeeTypeRequestAndWaitForReceiptAsync(byte feeType, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeTypeFunction = new SetPlatformFeeTypeFunction(); + setPlatformFeeTypeFunction.FeeType = feeType; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeTypeFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BigInteger returnValue1, BlockParameter blockParameter = null) + { + var totalSupplyFunction = new TotalSupplyFunction(); + totalSupplyFunction.ReturnValue1 = returnValue1; + + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task UriQueryAsync(UriFunction uriFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + + public Task UriQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var uriFunction = new UriFunction(); + uriFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(uriFunction, blockParameter); + } + + public Task VerifyQueryAsync(VerifyFunction verifyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + + public Task VerifyQueryAsync(MintRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifyFunction = new VerifyFunction(); + verifyFunction.Req = req; + verifyFunction.Signature = signature; + + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs.meta new file mode 100644 index 00000000..49ef94f3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC1155/TokenERC1155Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 382b9916e53800d43922ee7af19ad59a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20.meta new file mode 100644 index 00000000..7901c003 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 54b6ff5f86e4fe34895fd9c604372615 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition.meta new file mode 100644 index 00000000..0e94f903 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a494700a355737246ba2ab5cb19ad358 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs new file mode 100644 index 00000000..c09e724b --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs @@ -0,0 +1,20 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.TokenERC20.ContractDefinition +{ + public partial class Checkpoint : CheckpointBase { } + + public class CheckpointBase + { + [Parameter("uint32", "fromBlock", 1)] + public virtual uint FromBlock { get; set; } + + [Parameter("uint224", "votes", 2)] + public virtual BigInteger Votes { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs.meta new file mode 100644 index 00000000..1f689da0 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/Checkpoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0fd8cc6286d35d645bf3b18b21e3a781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs new file mode 100644 index 00000000..586462b1 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.TokenERC20.ContractDefinition +{ + public partial class MintRequest : MintRequestBase { } + + public class MintRequestBase + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("address", "primarySaleRecipient", 2)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("uint256", "quantity", 3)] + public virtual BigInteger Quantity { get; set; } + + [Parameter("uint256", "price", 4)] + public virtual BigInteger Price { get; set; } + + [Parameter("address", "currency", 5)] + public virtual string Currency { get; set; } + + [Parameter("uint128", "validityStartTimestamp", 6)] + public virtual BigInteger ValidityStartTimestamp { get; set; } + + [Parameter("uint128", "validityEndTimestamp", 7)] + public virtual BigInteger ValidityEndTimestamp { get; set; } + + [Parameter("bytes32", "uid", 8)] + public virtual byte[] Uid { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs.meta new file mode 100644 index 00000000..0fc0fb19 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/MintRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b17e4d46fe10c14594a4cab4d04c5c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs new file mode 100644 index 00000000..608a43b3 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs @@ -0,0 +1,936 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.TokenERC20.ContractDefinition +{ + public partial class TokenERC20Deployment : TokenERC20DeploymentBase + { + public TokenERC20Deployment() + : base(BYTECODE) { } + + public TokenERC20Deployment(string byteCode) + : base(byteCode) { } + } + + public class TokenERC20DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b620018541760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6145e6806200015c6000396000f3fe6080604052600436106102885760003560e01c80637ecebe001161015a578063ac9650d8116100c1578063d505accf1161007a578063d505accf14610858578063d547741f14610878578063dd62ed3e14610898578063dfad80a6146108b8578063e8a3d485146108d8578063f1127ed8146108ed57600080fd5b8063ac9650d814610755578063c1b606e214610782578063c3cda520146107c1578063ca15c873146107e1578063cb2ef6f714610801578063d45573f61461082157600080fd5b806395d89b411161011357806395d89b41146106b75780639ab24eb0146106cc578063a0a8e460146106ec578063a217fddf14610700578063a457c2d714610715578063a9059cbb1461073557600080fd5b80637ecebe00146106045780638e539e8c146106245780638f0fefbb146106445780639010d07c1461065757806391d1485414610677578063938e3d7b1461069757600080fd5b806336568abe116101fe578063587cde1e116101b7578063587cde1e146104ff5780635c19a95c146105395780636f4f2837146105595780636fcfff451461057957806370a08231146105ae57806379cc6790146105e457600080fd5b806336568abe1461042657806339509351146104465780633a46b1a81461046657806342966c6814610486578063449a52f8146104a6578063572b6c05146104c657600080fd5b80631e7ac488116102505780631e7ac4881461035c57806323b872dd1461037e578063248a9ca31461039e5780632f2ff15d146103cf578063313ce567146103ef5780633644e5151461041157600080fd5b806301ffc9a71461028d57806306fdde03146102c2578063079fe40e146102e4578063095ea7b31461031d57806318160ddd1461033d575b600080fd5b34801561029957600080fd5b506102ad6102a83660046139db565b610937565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102d7610962565b6040516102b99190613a55565b3480156102f057600080fd5b5061025f54610305906001600160a01b031681565b6040516001600160a01b0390911681526020016102b9565b34801561032957600080fd5b506102ad610338366004613a84565b6109f4565b34801561034957600080fd5b5060cb545b6040519081526020016102b9565b34801561036857600080fd5b5061037c610377366004613a84565b610a16565b005b34801561038a57600080fd5b506102ad610399366004613aae565b610ade565b3480156103aa57600080fd5b5061034e6103b9366004613aea565b60009081526101f8602052604090206001015490565b3480156103db57600080fd5b5061037c6103ea366004613b03565b610b0e565b3480156103fb57600080fd5b5060125b60405160ff90911681526020016102b9565b34801561041d57600080fd5b5061034e610b39565b34801561043257600080fd5b5061037c610441366004613b03565b610b48565b34801561045257600080fd5b506102ad610461366004613a84565b610bd6565b34801561047257600080fd5b5061034e610481366004613a84565b610c02565b34801561049257600080fd5b5061037c6104a1366004613aea565b610c76565b3480156104b257600080fd5b5061037c6104c1366004613a84565b610c8a565b3480156104d257600080fd5b506102ad6104e1366004613b2f565b6001600160a01b031660009081526065602052604090205460ff1690565b34801561050b57600080fd5b5061030561051a366004613b2f565b6001600160a01b03908116600090815261019460205260409020541690565b34801561054557600080fd5b5061037c610554366004613b2f565b610cfa565b34801561056557600080fd5b5061037c610574366004613b2f565b610d0b565b34801561058557600080fd5b50610599610594366004613b2f565b610d62565b60405163ffffffff90911681526020016102b9565b3480156105ba57600080fd5b5061034e6105c9366004613b2f565b6001600160a01b0316600090815260c9602052604090205490565b3480156105f057600080fd5b5061037c6105ff366004613a84565b610d85565b34801561061057600080fd5b5061034e61061f366004613b2f565b610da1565b34801561063057600080fd5b5061034e61063f366004613aea565b610dc0565b61037c610652366004613b8b565b610e1d565b34801561066357600080fd5b50610305610672366004613be7565b610f01565b34801561068357600080fd5b506102ad610692366004613b03565b610f1a565b3480156106a357600080fd5b5061037c6106b2366004613c09565b610f46565b3480156106c357600080fd5b506102d7610f65565b3480156106d857600080fd5b5061034e6106e7366004613b2f565b610f74565b3480156106f857600080fd5b5060016103ff565b34801561070c57600080fd5b5061034e600081565b34801561072157600080fd5b506102ad610730366004613a84565b610ffd565b34801561074157600080fd5b506102ad610750366004613a84565b61108e565b34801561076157600080fd5b50610775610770366004613c4a565b6110a6565b6040516102b99190613cbe565b34801561078e57600080fd5b506107a261079d366004613b8b565b61119a565b6040805192151583526001600160a01b039091166020830152016102b9565b3480156107cd57600080fd5b5061037c6107dc366004613d31565b611202565b3480156107ed57600080fd5b5061034e6107fc366004613aea565b611338565b34801561080d57600080fd5b50690546f6b656e45524332360b41b61034e565b34801561082d57600080fd5b5061025e5461025d54604080516001600160a01b03909316835261ffff9091166020830152016102b9565b34801561086457600080fd5b5061037c610873366004613d89565b611350565b34801561088457600080fd5b5061037c610893366004613b03565b6114b4565b3480156108a457600080fd5b5061034e6108b3366004613df3565b6114da565b3480156108c457600080fd5b5061037c6108d3366004613f4d565b611505565b3480156108e457600080fd5b506102d7611740565b3480156108f957600080fd5b5061090d610908366004614035565b6117cf565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016102b9565b60006001600160e01b03198216635a05180f60e01b148061095c575061095c82611863565b92915050565b606060cc805461097190614075565b80601f016020809104026020016040519081016040528092919081815260200182805461099d90614075565b80156109ea5780601f106109bf576101008083540402835291602001916109ea565b820191906000526020600020905b8154815290600101906020018083116109cd57829003601f168201915b5050505050905090565b6000806109ff611898565b9050610a0c8185856118a2565b5060019392505050565b6000610a21816119c6565b612710821115610a6a5760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b60448201526064015b60405180910390fd5b61025d80546001600160801b0319166001600160401b03841617905561025e80546001600160a01b0385166001600160a01b031990911681179091556040518381527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f183049060200160405180910390a2505050565b600080610ae9611898565b9050610af68582856119d7565b610b01858585611a4b565b60019150505b9392505050565b60008281526101f86020526040902060010154610b2a816119c6565b610b348383611c2a565b505050565b6000610b43611c4d565b905090565b610b50611898565b6001600160a01b0316816001600160a01b031614610bc85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a61565b610bd28282611cca565b5050565b600080610be1611898565b9050610a0c818585610bf385896114da565b610bfd91906140bf565b6118a2565b6000438210610c535760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610a61565b6001600160a01b038316600090815261019560205260409020610b079083611ced565b610c87610c81611898565b82611daa565b50565b610cb67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610692611898565b610cf05760405162461bcd60e51b815260206004820152600b60248201526a3737ba1036b4b73a32b91760a91b6044820152606401610a61565b610bd28282611db4565b610c87610d05611898565b82611e05565b6000610d16816119c6565b61025f80546001600160a01b0319166001600160a01b0384169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a25050565b6001600160a01b0381166000908152610195602052604081205461095c90611e80565b610d9782610d91611898565b836119d7565b610bd28282611daa565b6001600160a01b0381166000908152610161602052604081205461095c565b6000438210610e115760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610a61565b61095c61019683611ced565b600260015403610e6f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a61565b60026001556000610e81848484611ee9565b90506000610e926020860186613b2f565b9050610e9d85612084565b610eab818660400135611db4565b806001600160a01b0316826001600160a01b03167fc4d88b1adde72eb5acf63f3e219ef5b223262233acf507c3b171277c91973c6787604051610eee91906140e9565b60405180910390a3505060018055505050565b600082815261022a60205260408120610b07908361222b565b60009182526101f8602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610f51816119c6565b61025c610f5f8385836141cd565b50505050565b606060cd805461097190614075565b6001600160a01b038116600090815261019560205260408120548015610fea576001600160a01b038316600090815261019560205260409020610fb860018361428d565b81548110610fc857610fc86142a0565b60009182526020909120015464010000000090046001600160e01b0316610fed565b60005b6001600160e01b03169392505050565b600080611008611898565b9050600061101682866114da565b9050838110156110765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a61565b61108382868684036118a2565b506001949350505050565b600080611099611898565b9050610a0c818585611a4b565b6060816001600160401b038111156110c0576110c0613e1d565b6040519080825280602002602001820160405280156110f357816020015b60608152602001906001900390816110de5790505b50905060005b828110156111935761116330858584818110611117576111176142a0565b905060200281019061112991906142b6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061223792505050565b828281518110611175576111756142a0565b6020026020010181905250808061118b906142fc565b9150506110f9565b5092915050565b60008060006111aa86868661232b565b60e08701356000908152610260602052604090205490915060ff161580156111f757506111f77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610f1a565b969095509350505050565b834211156112525760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610a61565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906112cc906112c49060a0016040516020818303038152906040528051906020012061238f565b8585856123dd565b90506112d781612405565b86146113255760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610a61565b61132f8188611e05565b50505050505050565b600081815261022a6020526040812061095c9061242e565b834211156113a05760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a61565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886113cf8c612405565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061142a8261238f565b9050600061143a828787876123dd565b9050896001600160a01b0316816001600160a01b03161461149d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a61565b6114a88a8a8a6118a2565b50505050505050505050565b60008281526101f860205260409020600101546114d0816119c6565b610b348383611cca565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b600054610100900460ff16158080156115255750600054600160ff909116105b8061153f5750303b15801561153f575060005460ff166001145b6115a25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a61565b6000805460ff1916600117905580156115c5576000805461ff0019166101001790555b6115cd612438565b6115d685612469565b6115df886124f8565b6115e98888612542565b61025c6115f68782614315565b5061025f80546001600160a01b038087166001600160a01b03199283161790925561025e80549286169290911691909117905561271082111561166d5760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610a61565b61025d80546001600160801b0319166001600160801b03841617905561169460008a612582565b6116ac60008051602061456a8339815191528a612582565b6116d67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68a612582565b6116ef60008051602061456a8339815191526000612582565b8015611735576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61025c805461174e90614075565b80601f016020809104026020016040519081016040528092919081815260200182805461177a90614075565b80156117c75780601f1061179c576101008083540402835291602001916117c7565b820191906000526020600020905b8154815290600101906020018083116117aa57829003601f168201915b505050505081565b60408051808201909152600080825260208201526001600160a01b038316600090815261019560205260409020805463ffffffff8416908110611814576118146142a0565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b148061095c57506301ffc9a760e01b6001600160e01b031983161461095c565b6000610b4361258c565b6001600160a01b0383166119045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a61565b6001600160a01b0382166119655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a61565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610c87816119d2611898565b6125b6565b60006119e384846114da565b90506000198114610f5f5781811015611a3e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a61565b610f5f84848484036118a2565b6001600160a01b038316611aaf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a61565b6001600160a01b038216611b115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a61565b611b1c83838361261a565b6001600160a01b038316600090815260c9602052604090205481811015611b945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a61565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290611bcb9084906140bf565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1791815260200190565b60405180910390a3610f5f8484846126db565b611c3482826126e6565b600082815261022a60205260409020610b34908261276e565b6000610b437f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611c7d61012d5490565b61012e546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b611cd48282612783565b600082815261022a60205260409020610b349082612809565b8154600090815b81811015611d51576000611d08828461281e565b905084868281548110611d1d57611d1d6142a0565b60009182526020909120015463ffffffff161115611d3d57809250611d4b565b611d488160016140bf565b91505b50611cf4565b8115611d955784611d6360018461428d565b81548110611d7357611d736142a0565b60009182526020909120015464010000000090046001600160e01b0316611d98565b60005b6001600160e01b031695945050505050565b610bd28282612839565b611dbe8282612852565b816001600160a01b03167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a427382604051611df991815260200190565b60405180910390a25050565b6001600160a01b03828116600081815261019460208181526040808420805460c9845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610f5f82848361285c565b600063ffffffff821115611ee55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610a61565b5090565b6000806000611ef986868661119a565b9150915081611f3e5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610a61565b42611f4f60c0880160a089016143d4565b6001600160801b031611158015611f7e575042611f7260e0880160c089016143d4565b6001600160801b031610155b611fbc5760405162461bcd60e51b815260206004820152600f60248201526e1c995c5d595cdd08195e1c1a5c9959608a1b6044820152606401610a61565b6000611fcb6020880188613b2f565b6001600160a01b0316036120175760405162461bcd60e51b81526020600482015260136024820152721c9958da5c1a595b9d081d5b9919599a5b9959606a1b6044820152606401610a61565b600086604001351161205b5760405162461bcd60e51b815260206004820152600d60248201526c7a65726f207175616e7469747960981b6044820152606401610a61565b60e0860135600090815261026060205260409020805460ff191660011790559150509392505050565b80606001356000036120935750565b61025d54600090612710906120b5906001600160801b031660608501356143ef565b6120bf9190614406565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6120e660a0840160808501613b2f565b6001600160a01b03160361214557816060013534146121405760405162461bcd60e51b815260206004820152601660248201527536bab9ba1039b2b732103a37ba30b610383934b1b29760511b6044820152606401610a61565b612188565b34156121885760405162461bcd60e51b81526020600482015260126024820152716d73672076616c7565206e6f74207a65726f60701b6044820152606401610a61565b60008061219b6040850160208601613b2f565b6001600160a01b0316146121be576121b96040840160208501613b2f565b6121cc565b61025f546001600160a01b03165b90506121fc6121e160a0850160808601613b2f565b6121e9611898565b61025e546001600160a01b03168561299b565b610b3461220f60a0850160808601613b2f565b612217611898565b8361222686606089013561428d565b61299b565b6000610b0783836129e1565b60606001600160a01b0383163b61229f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a61565b600080846001600160a01b0316846040516122ba9190614428565b600060405180830381855af49150503d80600081146122f5576040519150601f19603f3d011682016040523d82523d6000602084013e6122fa565b606091505b5091509150612322828260405180606001604052806027815260200161458a60279139612a0b565b95945050505050565b600061238783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061238192506123759150889050612a44565b8051906020012061238f565b90612b38565b949350505050565b600061095c61239c611c4d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006123ee87878787612b5c565b915091506123fb81612c49565b5095945050505050565b6001600160a01b0381166000908152610161602052604090208054600181018255905b50919050565b600061095c825490565b600054610100900460ff1661245f5760405162461bcd60e51b8152600401610a6190614444565b612467612dff565b565b600054610100900460ff166124905760405162461bcd60e51b8152600401610a6190614444565b60005b8151811015610bd2576001606560008484815181106124b4576124b46142a0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806124f0816142fc565b915050612493565b600054610100900460ff1661251f5760405162461bcd60e51b8152600401610a6190614444565b610c8781604051806040016040528060018152602001603160f81b815250612e2c565b600054610100900460ff166125695760405162461bcd60e51b8152600401610a6190614444565b60cc6125758382614315565b5060cd610b348282614315565b610bd28282611c2a565b3360009081526065602052604081205460ff16156125b1575060131936013560601c90565b503390565b6125c08282610f1a565b610bd2576125d8816001600160a01b03166014612e6f565b6125e3836020612e6f565b6040516020016125f492919061448f565b60408051601f198184030181529082905262461bcd60e51b8252610a6191600401613a55565b61263360008051602061456a8339815191526000610f1a565b15801561264857506001600160a01b03831615155b801561265c57506001600160a01b03821615155b15610b345761267960008051602061456a83398151915284610f1a565b80612697575061269760008051602061456a83398151915283610f1a565b610b345760405162461bcd60e51b81526020600482015260156024820152743a3930b739b332b939903932b9ba3934b1ba32b21760591b6044820152606401610a61565b610b3483838361300a565b6126f08282610f1a565b610bd25760008281526101f8602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561272a611898565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610b07836001600160a01b03841661303d565b61278d8282610f1a565b15610bd25760008281526101f8602090815260408083206001600160a01b03851684529091529020805460ff191690556127c5611898565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610b07836001600160a01b03841661308c565b600061282d6002848418614406565b610b07908484166140bf565b612843828261317f565b610f5f6101966132e0836132ec565b610bd28282613465565b816001600160a01b0316836001600160a01b03161415801561287e5750600081115b15610b34576001600160a01b0383161561290d576001600160a01b03831660009081526101956020526040812081906128ba906132e0856132ec565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612902929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610b34576001600160a01b0382166000908152610195602052604081208190612944906134f0856132ec565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161298c929190918252602082015260400190565b60405180910390a25050505050565b8015610f5f5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016129d5576129d082826134fc565b610f5f565b610f5f8484848461359f565b60008260000182815481106129f8576129f86142a0565b9060005260206000200154905092915050565b60608315612a1a575081610b07565b825115612a2a5782518084602001fd5b8160405162461bcd60e51b8152600401610a619190613a55565b60607fbac245dbd9b8b2bb334c0675db20a7a7a8506de563990c4ce3207f4c3c5b75e1612a746020840184613b2f565b612a846040850160208601613b2f565b60408501356060860135612a9e60a0880160808901613b2f565b612aae60c0890160a08a016143d4565b612abe60e08a0160c08b016143d4565b6040805160208101999099526001600160a01b03978816908901529486166060880152608087019390935260a086019190915290921660c08401526001600160801b0391821660e0808501919091529116610100830152830135610120820152610140016040516020818303038152906040529050919050565b6000806000612b4785856135f2565b91509150612b5481612c49565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612b935750600090506003612c40565b8460ff16601b14158015612bab57508460ff16601c14155b15612bbc5750600090506004612c40565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c10573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3957600060019250925050612c40565b9150600090505b94509492505050565b6000816004811115612c5d57612c5d614504565b03612c655750565b6001816004811115612c7957612c79614504565b03612cc65760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a61565b6002816004811115612cda57612cda614504565b03612d275760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a61565b6003816004811115612d3b57612d3b614504565b03612d935760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a61565b6004816004811115612da757612da7614504565b03610c875760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610a61565b600054610100900460ff16612e265760405162461bcd60e51b8152600401610a6190614444565b60018055565b600054610100900460ff16612e535760405162461bcd60e51b8152600401610a6190614444565b81516020928301208151919092012061012d9190915561012e55565b60606000612e7e8360026143ef565b612e899060026140bf565b6001600160401b03811115612ea057612ea0613e1d565b6040519080825280601f01601f191660200182016040528015612eca576020820181803683370190505b509050600360fc1b81600081518110612ee557612ee56142a0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612f1457612f146142a0565b60200101906001600160f81b031916908160001a9053506000612f388460026143ef565b612f439060016140bf565b90505b6001811115612fbb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612f7757612f776142a0565b1a60f81b828281518110612f8d57612f8d6142a0565b60200101906001600160f81b031916908160001a90535060049490941c93612fb48161451a565b9050612f46565b508315610b075760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a61565b6001600160a01b0383811660009081526101946020526040808220548584168352912054610b349291821691168361285c565b60008181526001830160205260408120546130845750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561095c565b50600061095c565b600081815260018301602052604081205480156131755760006130b060018361428d565b85549091506000906130c49060019061428d565b90508181146131295760008660000182815481106130e4576130e46142a0565b9060005260206000200154905080876000018481548110613107576131076142a0565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061313a5761313a614531565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061095c565b600091505061095c565b6001600160a01b0382166131df5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a61565b6131eb8260008361261a565b6001600160a01b038216600090815260c960205260409020548181101561325f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a61565b6001600160a01b038316600090815260c960205260408120838303905560cb805484929061328e90849061428d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610b34836000846126db565b6000610b07828461428d565b825460009081908015613337578561330560018361428d565b81548110613315576133156142a0565b60009182526020909120015464010000000090046001600160e01b031661333a565b60005b6001600160e01b0316925061335383858763ffffffff16565b91506000811180156133915750438661336d60018461428d565b8154811061337d5761337d6142a0565b60009182526020909120015463ffffffff16145b156133f15761339f82613637565b866133ab60018461428d565b815481106133bb576133bb6142a0565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061345c565b85604051806040016040528061340643611e80565b63ffffffff16815260200161341a85613637565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b61346f82826136a0565b60cb546001600160e01b0310156134e15760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610a61565b610f5f6101966134f0836132ec565b6000610b0782846140bf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613549576040519150601f19603f3d011682016040523d82523d6000602084013e61354e565b606091505b5050905080610b345760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610a61565b816001600160a01b0316836001600160a01b03160315610f5f57306001600160a01b038416036135dd576129d06001600160a01b0385168383613793565b610f5f6001600160a01b0385168484846137f6565b60008082516041036136285760208301516040840151606085015160001a61361c87828585612b5c565b94509450505050613630565b506000905060025b9250929050565b60006001600160e01b03821115611ee55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610a61565b6001600160a01b0382166136f65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a61565b6137026000838361261a565b8060cb600082825461371491906140bf565b90915550506001600160a01b038216600090815260c96020526040812080548392906137419084906140bf565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610bd2600083836126db565b6040516001600160a01b038316602482015260448101829052610b3490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261382e565b6040516001600160a01b0380851660248301528316604482015260648101829052610f5f9085906323b872dd60e01b906084016137bf565b6000613883826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139009092919063ffffffff16565b805190915015610b3457808060200190518101906138a19190614547565b610b345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a61565b60606123878484600085856001600160a01b0385163b6139625760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a61565b600080866001600160a01b0316858760405161397e9190614428565b60006040518083038185875af1925050503d80600081146139bb576040519150601f19603f3d011682016040523d82523d6000602084013e6139c0565b606091505b50915091506139d0828286612a0b565b979650505050505050565b6000602082840312156139ed57600080fd5b81356001600160e01b031981168114610b0757600080fd5b60005b83811015613a20578181015183820152602001613a08565b50506000910152565b60008151808452613a41816020860160208601613a05565b601f01601f19169290920160200192915050565b602081526000610b076020830184613a29565b80356001600160a01b0381168114613a7f57600080fd5b919050565b60008060408385031215613a9757600080fd5b613aa083613a68565b946020939093013593505050565b600080600060608486031215613ac357600080fd5b613acc84613a68565b9250613ada60208501613a68565b9150604084013590509250925092565b600060208284031215613afc57600080fd5b5035919050565b60008060408385031215613b1657600080fd5b82359150613b2660208401613a68565b90509250929050565b600060208284031215613b4157600080fd5b610b0782613a68565b60008083601f840112613b5c57600080fd5b5081356001600160401b03811115613b7357600080fd5b60208301915083602082850101111561363057600080fd5b6000806000838503610120811215613ba257600080fd5b61010080821215613bb257600080fd5b85945084013590506001600160401b03811115613bce57600080fd5b613bda86828701613b4a565b9497909650939450505050565b60008060408385031215613bfa57600080fd5b50508035926020909101359150565b60008060208385031215613c1c57600080fd5b82356001600160401b03811115613c3257600080fd5b613c3e85828601613b4a565b90969095509350505050565b60008060208385031215613c5d57600080fd5b82356001600160401b0380821115613c7457600080fd5b818501915085601f830112613c8857600080fd5b813581811115613c9757600080fd5b8660208260051b8501011115613cac57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613d1357603f19888603018452613d01858351613a29565b94509285019290850190600101613ce5565b5092979650505050505050565b803560ff81168114613a7f57600080fd5b60008060008060008060c08789031215613d4a57600080fd5b613d5387613a68565b95506020870135945060408701359350613d6f60608801613d20565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215613da457600080fd5b613dad88613a68565b9650613dbb60208901613a68565b95506040880135945060608801359350613dd760808901613d20565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613e0657600080fd5b613e0f83613a68565b9150613b2660208401613a68565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613e5b57613e5b613e1d565b604052919050565b600082601f830112613e7457600080fd5b81356001600160401b03811115613e8d57613e8d613e1d565b613ea0601f8201601f1916602001613e33565b818152846020838601011115613eb557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613ee357600080fd5b813560206001600160401b03821115613efe57613efe613e1d565b8160051b613f0d828201613e33565b9283528481018201928281019087851115613f2757600080fd5b83870192505b848310156139d057613f3e83613a68565b82529183019190830190613f2d565b600080600080600080600080610100898b031215613f6a57600080fd5b613f7389613a68565b975060208901356001600160401b0380821115613f8f57600080fd5b613f9b8c838d01613e63565b985060408b0135915080821115613fb157600080fd5b613fbd8c838d01613e63565b975060608b0135915080821115613fd357600080fd5b613fdf8c838d01613e63565b965060808b0135915080821115613ff557600080fd5b506140028b828c01613ed2565b94505061401160a08a01613a68565b925061401f60c08a01613a68565b915060e089013590509295985092959890939650565b6000806040838503121561404857600080fd5b61405183613a68565b9150602083013563ffffffff8116811461406a57600080fd5b809150509250929050565b600181811c9082168061408957607f821691505b60208210810361242857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561095c5761095c6140a9565b80356001600160801b0381168114613a7f57600080fd5b61010081016001600160a01b038061410085613a68565b1683528061411060208601613a68565b16602084015260408401356040840152606084013560608401528061413760808601613a68565b1660808401525061414a60a084016140d2565b6001600160801b0380821660a08501528061416760c087016140d2565b1660c0850152505060e083013560e083015292915050565b601f821115610b3457600081815260208120601f850160051c810160208610156141a65750805b601f850160051c820191505b818110156141c5578281556001016141b2565b505050505050565b6001600160401b038311156141e4576141e4613e1d565b6141f8836141f28354614075565b8361417f565b6000601f84116001811461422c57600085156142145750838201355b600019600387901b1c1916600186901b178355614286565b600083815260209020601f19861690835b8281101561425d578685013582556020948501946001909201910161423d565b508682101561427a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8181038181111561095c5761095c6140a9565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126142cd57600080fd5b8301803591506001600160401b038211156142e757600080fd5b60200191503681900382131561363057600080fd5b60006001820161430e5761430e6140a9565b5060010190565b81516001600160401b0381111561432e5761432e613e1d565b6143428161433c8454614075565b8461417f565b602080601f831160018114614377576000841561435f5750858301515b600019600386901b1c1916600185901b1785556141c5565b600085815260208120601f198616915b828110156143a657888601518255948401946001909101908401614387565b50858210156143c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156143e657600080fd5b610b07826140d2565b808202811582820484141761095c5761095c6140a9565b60008261442357634e487b7160e01b600052601260045260246000fd5b500490565b6000825161443a818460208701613a05565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516144c7816017850160208801613a05565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516144f8816028840160208801613a05565b01602801949350505050565b634e487b7160e01b600052602160045260246000fd5b600081614529576145296140a9565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561455957600080fd5b81518015158114610b0757600080fdfe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220500c31501e6de45fc52204992374e78a6c006594b638b4ab144e80468d51039264736f6c63430008110033"; + + public TokenERC20DeploymentBase() + : base(BYTECODE) { } + + public TokenERC20DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class DOMAIN_SEPARATORFunction : DOMAIN_SEPARATORFunctionBase { } + + [Function("DOMAIN_SEPARATOR", "bytes32")] + public class DOMAIN_SEPARATORFunctionBase : FunctionMessage { } + + public partial class AllowanceFunction : AllowanceFunctionBase { } + + [Function("allowance", "uint256")] + public class AllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2)] + public virtual string Spender { get; set; } + } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve", "bool")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("uint256", "amount", 1)] + public virtual BigInteger Amount { get; set; } + } + + public partial class BurnFromFunction : BurnFromFunctionBase { } + + [Function("burnFrom")] + public class BurnFromFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class CheckpointsFunction : CheckpointsFunctionBase { } + + [Function("checkpoints", typeof(CheckpointsOutputDTO))] + public class CheckpointsFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint32", "pos", 2)] + public virtual uint Pos { get; set; } + } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class DecimalsFunction : DecimalsFunctionBase { } + + [Function("decimals", "uint8")] + public class DecimalsFunctionBase : FunctionMessage { } + + public partial class DecreaseAllowanceFunction : DecreaseAllowanceFunctionBase { } + + [Function("decreaseAllowance", "bool")] + public class DecreaseAllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "subtractedValue", 2)] + public virtual BigInteger SubtractedValue { get; set; } + } + + public partial class DelegateFunction : DelegateFunctionBase { } + + [Function("delegate")] + public class DelegateFunctionBase : FunctionMessage + { + [Parameter("address", "delegatee", 1)] + public virtual string Delegatee { get; set; } + } + + public partial class DelegateBySigFunction : DelegateBySigFunctionBase { } + + [Function("delegateBySig")] + public class DelegateBySigFunctionBase : FunctionMessage + { + [Parameter("address", "delegatee", 1)] + public virtual string Delegatee { get; set; } + + [Parameter("uint256", "nonce", 2)] + public new virtual BigInteger Nonce { get; set; } + + [Parameter("uint256", "expiry", 3)] + public virtual BigInteger Expiry { get; set; } + + [Parameter("uint8", "v", 4)] + public virtual byte V { get; set; } + + [Parameter("bytes32", "r", 5)] + public virtual byte[] R { get; set; } + + [Parameter("bytes32", "s", 6)] + public virtual byte[] S { get; set; } + } + + public partial class DelegatesFunction : DelegatesFunctionBase { } + + [Function("delegates", "address")] + public class DelegatesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class GetPastTotalSupplyFunction : GetPastTotalSupplyFunctionBase { } + + [Function("getPastTotalSupply", "uint256")] + public class GetPastTotalSupplyFunctionBase : FunctionMessage + { + [Parameter("uint256", "blockNumber", 1)] + public virtual BigInteger BlockNumber { get; set; } + } + + public partial class GetPastVotesFunction : GetPastVotesFunctionBase { } + + [Function("getPastVotes", "uint256")] + public class GetPastVotesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + + [Parameter("uint256", "blockNumber", 2)] + public virtual BigInteger BlockNumber { get; set; } + } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetVotesFunction : GetVotesFunctionBase { } + + [Function("getVotes", "uint256")] + public class GetVotesFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class IncreaseAllowanceFunction : IncreaseAllowanceFunctionBase { } + + [Function("increaseAllowance", "bool")] + public class IncreaseAllowanceFunctionBase : FunctionMessage + { + [Parameter("address", "spender", 1)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "addedValue", 2)] + public virtual BigInteger AddedValue { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_primarySaleRecipient", 6)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("address", "_platformFeeRecipient", 7)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 8)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class MintToFunction : MintToFunctionBase { } + + [Function("mintTo")] + public class MintToFunctionBase : FunctionMessage + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class MintWithSignatureFunction : MintWithSignatureFunctionBase { } + + [Function("mintWithSignature")] + public class MintWithSignatureFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NoncesFunction : NoncesFunctionBase { } + + [Function("nonces", "uint256")] + public class NoncesFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class NumCheckpointsFunction : NumCheckpointsFunctionBase { } + + [Function("numCheckpoints", "uint32")] + public class NumCheckpointsFunctionBase : FunctionMessage + { + [Parameter("address", "account", 1)] + public virtual string Account { get; set; } + } + + public partial class PermitFunction : PermitFunctionBase { } + + [Function("permit")] + public class PermitFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "value", 3)] + public virtual BigInteger Value { get; set; } + + [Parameter("uint256", "deadline", 4)] + public virtual BigInteger Deadline { get; set; } + + [Parameter("uint8", "v", 5)] + public virtual byte V { get; set; } + + [Parameter("bytes32", "r", 6)] + public virtual byte[] R { get; set; } + + [Parameter("bytes32", "s", 7)] + public virtual byte[] S { get; set; } + } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFunction : TransferFunctionBase { } + + [Function("transfer", "bool")] + public class TransferFunctionBase : FunctionMessage + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("uint256", "amount", 2)] + public virtual BigInteger Amount { get; set; } + } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom", "bool")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "amount", 3)] + public virtual BigInteger Amount { get; set; } + } + + public partial class VerifyFunction : VerifyFunctionBase { } + + [Function("verify", typeof(VerifyOutputDTO))] + public class VerifyFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "spender", 2, true)] + public virtual string Spender { get; set; } + + [Parameter("uint256", "value", 3, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class DelegateChangedEventDTO : DelegateChangedEventDTOBase { } + + [Event("DelegateChanged")] + public class DelegateChangedEventDTOBase : IEventDTO + { + [Parameter("address", "delegator", 1, true)] + public virtual string Delegator { get; set; } + + [Parameter("address", "fromDelegate", 2, true)] + public virtual string FromDelegate { get; set; } + + [Parameter("address", "toDelegate", 3, true)] + public virtual string ToDelegate { get; set; } + } + + public partial class DelegateVotesChangedEventDTO : DelegateVotesChangedEventDTOBase { } + + [Event("DelegateVotesChanged")] + public class DelegateVotesChangedEventDTOBase : IEventDTO + { + [Parameter("address", "delegate", 1, true)] + public virtual string Delegate { get; set; } + + [Parameter("uint256", "previousBalance", 2, false)] + public virtual BigInteger PreviousBalance { get; set; } + + [Parameter("uint256", "newBalance", 3, false)] + public virtual BigInteger NewBalance { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class TokensMintedEventDTO : TokensMintedEventDTOBase { } + + [Event("TokensMinted")] + public class TokensMintedEventDTOBase : IEventDTO + { + [Parameter("address", "mintedTo", 1, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "quantityMinted", 2, false)] + public virtual BigInteger QuantityMinted { get; set; } + } + + public partial class TokensMintedWithSignatureEventDTO : TokensMintedWithSignatureEventDTOBase { } + + [Event("TokensMintedWithSignature")] + public class TokensMintedWithSignatureEventDTOBase : IEventDTO + { + [Parameter("address", "signer", 1, true)] + public virtual string Signer { get; set; } + + [Parameter("address", "mintedTo", 2, true)] + public virtual string MintedTo { get; set; } + + [Parameter("tuple", "mintRequest", 3, false)] + public virtual MintRequest MintRequest { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "value", 3, false)] + public virtual BigInteger Value { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class DOMAIN_SEPARATOROutputDTO : DOMAIN_SEPARATOROutputDTOBase { } + + [FunctionOutput] + public class DOMAIN_SEPARATOROutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class AllowanceOutputDTO : AllowanceOutputDTOBase { } + + [FunctionOutput] + public class AllowanceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class CheckpointsOutputDTO : CheckpointsOutputDTOBase { } + + [FunctionOutput] + public class CheckpointsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("tuple", "", 1)] + public virtual Checkpoint ReturnValue1 { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class DecimalsOutputDTO : DecimalsOutputDTOBase { } + + [FunctionOutput] + public class DecimalsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class DelegatesOutputDTO : DelegatesOutputDTOBase { } + + [FunctionOutput] + public class DelegatesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetPastTotalSupplyOutputDTO : GetPastTotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class GetPastTotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetPastVotesOutputDTO : GetPastVotesOutputDTOBase { } + + [FunctionOutput] + public class GetPastVotesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetVotesOutputDTO : GetVotesOutputDTOBase { } + + [FunctionOutput] + public class GetVotesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NoncesOutputDTO : NoncesOutputDTOBase { } + + [FunctionOutput] + public class NoncesOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class NumCheckpointsOutputDTO : NumCheckpointsOutputDTOBase { } + + [FunctionOutput] + public class NumCheckpointsOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint32", "", 1)] + public virtual uint ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyOutputDTO : VerifyOutputDTOBase { } + + [FunctionOutput] + public class VerifyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs.meta new file mode 100644 index 00000000..92737f39 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/ContractDefinition/TokenERC20Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6b7267708aff9d43bdfa90570202b06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs new file mode 100644 index 00000000..c6f39ac8 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs @@ -0,0 +1,998 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.TokenERC20.ContractDefinition; + +namespace Thirdweb.Contracts.TokenERC20 +{ + public partial class TokenERC20Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + TokenERC20Deployment tokenERC20Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(tokenERC20Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, TokenERC20Deployment tokenERC20Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(tokenERC20Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + TokenERC20Deployment tokenERC20Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, tokenERC20Deployment, cancellationTokenSource); + return new TokenERC20Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public TokenERC20Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DOMAIN_SEPARATORQueryAsync(DOMAIN_SEPARATORFunction dOMAIN_SEPARATORFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dOMAIN_SEPARATORFunction, blockParameter); + } + + public Task DOMAIN_SEPARATORQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task AllowanceQueryAsync(AllowanceFunction allowanceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(allowanceFunction, blockParameter); + } + + public Task AllowanceQueryAsync(string owner, string spender, BlockParameter blockParameter = null) + { + var allowanceFunction = new AllowanceFunction(); + allowanceFunction.Owner = owner; + allowanceFunction.Spender = spender; + + return ContractHandler.QueryAsync(allowanceFunction, blockParameter); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string spender, BigInteger amount) + { + var approveFunction = new ApproveFunction(); + approveFunction.Spender = spender; + approveFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string spender, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.Spender = spender; + approveFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string account, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Account = account; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(BigInteger amount) + { + var burnFunction = new BurnFunction(); + burnFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnFromRequestAsync(BurnFromFunction burnFromFunction) + { + return ContractHandler.SendRequestAsync(burnFromFunction); + } + + public Task BurnFromRequestAndWaitForReceiptAsync(BurnFromFunction burnFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFromFunction, cancellationToken); + } + + public Task BurnFromRequestAsync(string account, BigInteger amount) + { + var burnFromFunction = new BurnFromFunction(); + burnFromFunction.Account = account; + burnFromFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(burnFromFunction); + } + + public Task BurnFromRequestAndWaitForReceiptAsync(string account, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var burnFromFunction = new BurnFromFunction(); + burnFromFunction.Account = account; + burnFromFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFromFunction, cancellationToken); + } + + public Task CheckpointsQueryAsync(CheckpointsFunction checkpointsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(checkpointsFunction, blockParameter); + } + + public Task CheckpointsQueryAsync(string account, uint pos, BlockParameter blockParameter = null) + { + var checkpointsFunction = new CheckpointsFunction(); + checkpointsFunction.Account = account; + checkpointsFunction.Pos = pos; + + return ContractHandler.QueryDeserializingToObjectAsync(checkpointsFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DecimalsQueryAsync(DecimalsFunction decimalsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(decimalsFunction, blockParameter); + } + + public Task DecimalsQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task DecreaseAllowanceRequestAsync(DecreaseAllowanceFunction decreaseAllowanceFunction) + { + return ContractHandler.SendRequestAsync(decreaseAllowanceFunction); + } + + public Task DecreaseAllowanceRequestAndWaitForReceiptAsync(DecreaseAllowanceFunction decreaseAllowanceFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(decreaseAllowanceFunction, cancellationToken); + } + + public Task DecreaseAllowanceRequestAsync(string spender, BigInteger subtractedValue) + { + var decreaseAllowanceFunction = new DecreaseAllowanceFunction(); + decreaseAllowanceFunction.Spender = spender; + decreaseAllowanceFunction.SubtractedValue = subtractedValue; + + return ContractHandler.SendRequestAsync(decreaseAllowanceFunction); + } + + public Task DecreaseAllowanceRequestAndWaitForReceiptAsync(string spender, BigInteger subtractedValue, CancellationTokenSource cancellationToken = null) + { + var decreaseAllowanceFunction = new DecreaseAllowanceFunction(); + decreaseAllowanceFunction.Spender = spender; + decreaseAllowanceFunction.SubtractedValue = subtractedValue; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(decreaseAllowanceFunction, cancellationToken); + } + + public Task DelegateRequestAsync(DelegateFunction @delegateFunction) + { + return ContractHandler.SendRequestAsync(@delegateFunction); + } + + public Task DelegateRequestAndWaitForReceiptAsync(DelegateFunction @delegateFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(@delegateFunction, cancellationToken); + } + + public Task DelegateRequestAsync(string delegatee) + { + var @delegateFunction = new DelegateFunction(); + @delegateFunction.Delegatee = delegatee; + + return ContractHandler.SendRequestAsync(@delegateFunction); + } + + public Task DelegateRequestAndWaitForReceiptAsync(string delegatee, CancellationTokenSource cancellationToken = null) + { + var @delegateFunction = new DelegateFunction(); + @delegateFunction.Delegatee = delegatee; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(@delegateFunction, cancellationToken); + } + + public Task DelegateBySigRequestAsync(DelegateBySigFunction delegateBySigFunction) + { + return ContractHandler.SendRequestAsync(delegateBySigFunction); + } + + public Task DelegateBySigRequestAndWaitForReceiptAsync(DelegateBySigFunction delegateBySigFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(delegateBySigFunction, cancellationToken); + } + + public Task DelegateBySigRequestAsync(string delegatee, BigInteger nonce, BigInteger expiry, byte v, byte[] r, byte[] s) + { + var delegateBySigFunction = new DelegateBySigFunction(); + delegateBySigFunction.Delegatee = delegatee; + delegateBySigFunction.Nonce = nonce; + delegateBySigFunction.Expiry = expiry; + delegateBySigFunction.V = v; + delegateBySigFunction.R = r; + delegateBySigFunction.S = s; + + return ContractHandler.SendRequestAsync(delegateBySigFunction); + } + + public Task DelegateBySigRequestAndWaitForReceiptAsync( + string delegatee, + BigInteger nonce, + BigInteger expiry, + byte v, + byte[] r, + byte[] s, + CancellationTokenSource cancellationToken = null + ) + { + var delegateBySigFunction = new DelegateBySigFunction(); + delegateBySigFunction.Delegatee = delegatee; + delegateBySigFunction.Nonce = nonce; + delegateBySigFunction.Expiry = expiry; + delegateBySigFunction.V = v; + delegateBySigFunction.R = r; + delegateBySigFunction.S = s; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(delegateBySigFunction, cancellationToken); + } + + public Task DelegatesQueryAsync(DelegatesFunction delegatesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(delegatesFunction, blockParameter); + } + + public Task DelegatesQueryAsync(string account, BlockParameter blockParameter = null) + { + var delegatesFunction = new DelegatesFunction(); + delegatesFunction.Account = account; + + return ContractHandler.QueryAsync(delegatesFunction, blockParameter); + } + + public Task GetPastTotalSupplyQueryAsync(GetPastTotalSupplyFunction getPastTotalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPastTotalSupplyFunction, blockParameter); + } + + public Task GetPastTotalSupplyQueryAsync(BigInteger blockNumber, BlockParameter blockParameter = null) + { + var getPastTotalSupplyFunction = new GetPastTotalSupplyFunction(); + getPastTotalSupplyFunction.BlockNumber = blockNumber; + + return ContractHandler.QueryAsync(getPastTotalSupplyFunction, blockParameter); + } + + public Task GetPastVotesQueryAsync(GetPastVotesFunction getPastVotesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getPastVotesFunction, blockParameter); + } + + public Task GetPastVotesQueryAsync(string account, BigInteger blockNumber, BlockParameter blockParameter = null) + { + var getPastVotesFunction = new GetPastVotesFunction(); + getPastVotesFunction.Account = account; + getPastVotesFunction.BlockNumber = blockNumber; + + return ContractHandler.QueryAsync(getPastVotesFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetVotesQueryAsync(GetVotesFunction getVotesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getVotesFunction, blockParameter); + } + + public Task GetVotesQueryAsync(string account, BlockParameter blockParameter = null) + { + var getVotesFunction = new GetVotesFunction(); + getVotesFunction.Account = account; + + return ContractHandler.QueryAsync(getVotesFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task IncreaseAllowanceRequestAsync(IncreaseAllowanceFunction increaseAllowanceFunction) + { + return ContractHandler.SendRequestAsync(increaseAllowanceFunction); + } + + public Task IncreaseAllowanceRequestAndWaitForReceiptAsync(IncreaseAllowanceFunction increaseAllowanceFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(increaseAllowanceFunction, cancellationToken); + } + + public Task IncreaseAllowanceRequestAsync(string spender, BigInteger addedValue) + { + var increaseAllowanceFunction = new IncreaseAllowanceFunction(); + increaseAllowanceFunction.Spender = spender; + increaseAllowanceFunction.AddedValue = addedValue; + + return ContractHandler.SendRequestAsync(increaseAllowanceFunction); + } + + public Task IncreaseAllowanceRequestAndWaitForReceiptAsync(string spender, BigInteger addedValue, CancellationTokenSource cancellationToken = null) + { + var increaseAllowanceFunction = new IncreaseAllowanceFunction(); + increaseAllowanceFunction.Spender = spender; + increaseAllowanceFunction.AddedValue = addedValue; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(increaseAllowanceFunction, cancellationToken); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string primarySaleRecipient, + string platformFeeRecipient, + BigInteger platformFeeBps + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.PrimarySaleRecipient = primarySaleRecipient; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + initializeFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string primarySaleRecipient, + string platformFeeRecipient, + BigInteger platformFeeBps, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.PrimarySaleRecipient = primarySaleRecipient; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + initializeFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task MintToRequestAsync(MintToFunction mintToFunction) + { + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(MintToFunction mintToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintToRequestAsync(string to, BigInteger amount) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(string to, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintWithSignatureFunction mintWithSignatureFunction) + { + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintWithSignatureFunction mintWithSignatureFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintRequest req, byte[] signature) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NoncesQueryAsync(NoncesFunction noncesFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(noncesFunction, blockParameter); + } + + public Task NoncesQueryAsync(string owner, BlockParameter blockParameter = null) + { + var noncesFunction = new NoncesFunction(); + noncesFunction.Owner = owner; + + return ContractHandler.QueryAsync(noncesFunction, blockParameter); + } + + public Task NumCheckpointsQueryAsync(NumCheckpointsFunction numCheckpointsFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(numCheckpointsFunction, blockParameter); + } + + public Task NumCheckpointsQueryAsync(string account, BlockParameter blockParameter = null) + { + var numCheckpointsFunction = new NumCheckpointsFunction(); + numCheckpointsFunction.Account = account; + + return ContractHandler.QueryAsync(numCheckpointsFunction, blockParameter); + } + + public Task PermitRequestAsync(PermitFunction permitFunction) + { + return ContractHandler.SendRequestAsync(permitFunction); + } + + public Task PermitRequestAndWaitForReceiptAsync(PermitFunction permitFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(permitFunction, cancellationToken); + } + + public Task PermitRequestAsync(string owner, string spender, BigInteger value, BigInteger deadline, byte v, byte[] r, byte[] s) + { + var permitFunction = new PermitFunction(); + permitFunction.Owner = owner; + permitFunction.Spender = spender; + permitFunction.Value = value; + permitFunction.Deadline = deadline; + permitFunction.V = v; + permitFunction.R = r; + permitFunction.S = s; + + return ContractHandler.SendRequestAsync(permitFunction); + } + + public Task PermitRequestAndWaitForReceiptAsync( + string owner, + string spender, + BigInteger value, + BigInteger deadline, + byte v, + byte[] r, + byte[] s, + CancellationTokenSource cancellationToken = null + ) + { + var permitFunction = new PermitFunction(); + permitFunction.Owner = owner; + permitFunction.Spender = spender; + permitFunction.Value = value; + permitFunction.Deadline = deadline; + permitFunction.V = v; + permitFunction.R = r; + permitFunction.S = s; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(permitFunction, cancellationToken); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferRequestAsync(TransferFunction transferFunction) + { + return ContractHandler.SendRequestAsync(transferFunction); + } + + public Task TransferRequestAndWaitForReceiptAsync(TransferFunction transferFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFunction, cancellationToken); + } + + public Task TransferRequestAsync(string to, BigInteger amount) + { + var transferFunction = new TransferFunction(); + transferFunction.To = to; + transferFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(transferFunction); + } + + public Task TransferRequestAndWaitForReceiptAsync(string to, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var transferFunction = new TransferFunction(); + transferFunction.To = to; + transferFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger amount) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.Amount = amount; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger amount, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.Amount = amount; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task VerifyQueryAsync(VerifyFunction verifyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + + public Task VerifyQueryAsync(MintRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifyFunction = new VerifyFunction(); + verifyFunction.Req = req; + verifyFunction.Signature = signature; + + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs.meta new file mode 100644 index 00000000..7d151bf1 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC20/TokenERC20Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36ba33db9696cbc4a9ba07e9a3a1bf2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721.meta new file mode 100644 index 00000000..8c2cf853 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 341e92873ad8da64283d20ad352f3fd1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition.meta new file mode 100644 index 00000000..5751378d --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4b79c700acbc9a46ade383da10c6ca5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs new file mode 100644 index 00000000..37baeafb --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs @@ -0,0 +1,44 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; + +namespace Thirdweb.Contracts.TokenERC721.ContractDefinition +{ + public partial class MintRequest : MintRequestBase { } + + public class MintRequestBase + { + [Parameter("address", "to", 1)] + public virtual string To { get; set; } + + [Parameter("address", "royaltyRecipient", 2)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("address", "primarySaleRecipient", 4)] + public virtual string PrimarySaleRecipient { get; set; } + + [Parameter("string", "uri", 5)] + public virtual string Uri { get; set; } + + [Parameter("uint256", "price", 6)] + public virtual BigInteger Price { get; set; } + + [Parameter("address", "currency", 7)] + public virtual string Currency { get; set; } + + [Parameter("uint128", "validityStartTimestamp", 8)] + public virtual BigInteger ValidityStartTimestamp { get; set; } + + [Parameter("uint128", "validityEndTimestamp", 9)] + public virtual BigInteger ValidityEndTimestamp { get; set; } + + [Parameter("bytes32", "uid", 10)] + public virtual byte[] Uid { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs.meta new file mode 100644 index 00000000..6b6ca965 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/MintRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14bf48a1acf7b6b489f22d8276158df8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs new file mode 100644 index 00000000..237c1359 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs @@ -0,0 +1,1023 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts; +using System.Threading; + +namespace Thirdweb.Contracts.TokenERC721.ContractDefinition +{ + public partial class TokenERC721Deployment : TokenERC721DeploymentBase + { + public TokenERC721Deployment() + : base(BYTECODE) { } + + public TokenERC721Deployment(string byteCode) + : base(byteCode) { } + } + + public class TokenERC721DeploymentBase : ContractDeploymentMessage + { + public static string BYTECODE = + "60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506151cc80620001336000396000f3fe6080604052600436106102c85760003560e01c80636352211e11610175578063ac9650d8116100dc578063d45573f611610095578063e15916341161006f578063e159163414610940578063e8a3d48514610960578063e985e9c514610975578063eb13554f146109bf57600080fd5b8063d45573f6146108ab578063d547741f146108e1578063de9037741461090157600080fd5b8063ac9650d8146107ce578063b24f2d39146107fb578063b88d4fde1461082a578063c87b56dd1461084a578063ca15c8731461086a578063cb2ef6f71461088a57600080fd5b8063938e3d7b1161012e578063938e3d7b1461072857806395d89b41146107485780639bcf7a151461075d578063a0a8e4601461077d578063a217fddf14610799578063a22cb465146107ae57600080fd5b80636352211e146106735780636f4f28371461069357806370a08231146106b35780638da5cb5b146106d35780639010d07c146106e857806391d148541461070857600080fd5b80632c4510f81161023457806342842e0e116101ed5780634f6ccce7116101c75780634f6ccce7146105df578063504c6e01146105ff578063572b6c051461061a578063600dd5ea1461065357600080fd5b806342842e0e1461055d57806342966c681461057d5780634cc157df1461059d57600080fd5b80632c4510f8146104b35780632f2ff15d146104c65780632f745c59146104e657806332f0cd641461050657806336568abe146105265780633b1475a71461054657600080fd5b806313af40351161028657806313af4035146103cd57806318160ddd146103ed5780631e7ac4881461040357806323b872dd14610423578063248a9ca3146104435780632a55205a1461047457600080fd5b806275a317146102cd57806301ffc9a71461030057806306fdde0314610330578063079fe40e14610352578063081812fc1461038b578063095ea7b3146103ab575b600080fd5b3480156102d957600080fd5b506102ed6102e836600461439c565b6109e0565b6040519081526020015b60405180910390f35b34801561030c57600080fd5b5061032061031b366004614404565b610a20565b60405190151581526020016102f7565b34801561033c57600080fd5b50610345610a4c565b6040516102f79190614471565b34801561035e57600080fd5b506101fa54610373906001600160a01b031681565b6040516001600160a01b0390911681526020016102f7565b34801561039757600080fd5b506103736103a6366004614484565b610adf565b3480156103b757600080fd5b506103cb6103c636600461449d565b610b07565b005b3480156103d957600080fd5b506103cb6103e83660046144c7565b610be2565b3480156103f957600080fd5b506101c8546102ed565b34801561040f57600080fd5b506103cb61041e36600461449d565b610c98565b34801561042f57600080fd5b506103cb61043e3660046144e2565b610d60565b34801561044f57600080fd5b506102ed61045e366004614484565b600090815261012f602052604090206001015490565b34801561048057600080fd5b5061049461048f36600461451e565b610e46565b604080516001600160a01b0390931683526020830191909152016102f7565b6102ed6104c1366004614540565b610e83565b3480156104d257600080fd5b506103cb6104e13660046145a4565b610ff8565b3480156104f257600080fd5b506102ed61050136600461449d565b61101e565b34801561051257600080fd5b506103cb6105213660046145de565b6110b5565b34801561053257600080fd5b506103cb6105413660046145a4565b611129565b34801561055257600080fd5b506102ed6101f95481565b34801561056957600080fd5b506103cb6105783660046144e2565b6111b7565b34801561058957600080fd5b506103cb610598366004614484565b611292565b3480156105a957600080fd5b506105bd6105b8366004614484565b611311565b604080516001600160a01b03909316835261ffff9091166020830152016102f7565b3480156105eb57600080fd5b506102ed6105fa366004614484565b611381565b34801561060b57600080fd5b50610193546103209060ff1681565b34801561062657600080fd5b506103206106353660046144c7565b6001600160a01b031660009081526099602052604090205460ff1690565b34801561065f57600080fd5b506103cb61066e36600461449d565b611416565b34801561067f57600080fd5b5061037361068e366004614484565b6114d3565b34801561069f57600080fd5b506103cb6106ae3660046144c7565b611534565b3480156106bf57600080fd5b506102ed6106ce3660046144c7565b61158b565b3480156106df57600080fd5b50610373611612565b3480156106f457600080fd5b5061037361070336600461451e565b61164a565b34801561071457600080fd5b506103206107233660046145a4565b61166a565b34801561073457600080fd5b506103cb6107433660046145fb565b611696565b34801561075457600080fd5b506103456116af565b34801561076957600080fd5b506103cb61077836600461463c565b6116bf565b34801561078957600080fd5b50604051600181526020016102f7565b3480156107a557600080fd5b506102ed600081565b3480156107ba57600080fd5b506103cb6107c9366004614661565b611798565b3480156107da57600080fd5b506107ee6107e9366004614698565b611869565b6040516102f7919061470c565b34801561080757600080fd5b506101fc546101fd546001600160a01b03909116906001600160801b03166105bd565b34801561083657600080fd5b506103cb61084536600461480b565b61195d565b34801561085657600080fd5b50610345610865366004614484565b611a46565b34801561087657600080fd5b506102ed610885366004614484565b611ae9565b34801561089657600080fd5b506a546f6b656e45524337323160a81b6102ed565b3480156108b757600080fd5b506101fb546101fd546001600160a01b0390911690600160801b90046001600160801b03166105bd565b3480156108ed57600080fd5b506103cb6108fc3660046145a4565b611b01565b34801561090d57600080fd5b5061092161091c366004614540565b611b27565b6040805192151583526001600160a01b039091166020830152016102f7565b34801561094c57600080fd5b506103cb61095b366004614938565b611b90565b34801561096c57600080fd5b50610345611e6d565b34801561098157600080fd5b50610320610990366004614a4a565b6001600160a01b0391821660009081526101996020908152604080832093909416825291909152205460ff1690565b3480156109cb57600080fd5b506101fb54610373906001600160a01b031681565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a0c81611efc565b610a17858585611f0d565b95945050505050565b6000610a2b82611fd1565b80610a4657506001600160e01b0319821663152a902d60e11b145b92915050565b60606101948054610a5c90614a74565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8890614a74565b8015610ad55780601f10610aaa57610100808354040283529160200191610ad5565b820191906000526020600020905b815481529060010190602001808311610ab857829003601f168201915b5050505050905090565b6000610aea82611ff6565b50600090815261019860205260409020546001600160a01b031690565b61019354829060ff1615610bd3576daaeb6d7670e522a718067333cd4e3b15610bd357604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190614aae565b610bd357604051633b79c77360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b610bdd8383612056565b505050565b6000610bed81611efc565b610bf860008361166a565b610c445760405162461bcd60e51b815260206004820152601b60248201527f6e6577206f776e6572206e6f74206d6f64756c652061646d696e2e00000000006044820152606401610bca565b6101f880546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a3505050565b6000610ca381611efc565b612710821115610ce75760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610bca565b6101fd80546001600160801b03166001600160401b038416600160801b021790556101fb80546001600160a01b0319166001600160a01b0385169081179091556040518381527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a2505050565b61019354839060ff1615610e35576daaeb6d7670e522a718067333cd4e3b15610e3557336001600160a01b03821603610da357610d9e848484612178565b610e40565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e169190614aae565b610e3557604051633b79c77360e21b8152336004820152602401610bca565b610e40848484612178565b50505050565b600080600080610e5586611311565b90945084925061ffff169050612710610e6e8287614ae1565b610e789190614af8565b925050509250929050565b6000600260015403610ed75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bca565b60026001556000610ee98585856121aa565b90506000610efa60208701876144c7565b9050610f1281610f0d6080890189614b1a565b611f0d565b92506000610f2660408801602089016144c7565b6001600160a01b031614610f96576040518060400160405280876020016020810190610f5291906144c7565b6001600160a01b0390811682526040898101356020938401526000878152610201845220835181546001600160a01b03191692169190911781559101516001909101555b610f9f86612305565b82816001600160a01b0316836001600160a01b03167f110d160a1bedeea919a88fbc4b2a9fb61b7e664084391b6ca2740db66fef80fe89604051610fe39190614bce565b60405180910390a45050600180559392505050565b600082815261012f602052604090206001015461101481611efc565b610bdd83836124ad565b60006110298361158b565b821061108b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610bca565b506001600160a01b039190911660009081526101c660209081526040808320938352929052205490565b6110bd6124d0565b61111d5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420617574686f72697a656420746f20736574206f70657261746f72207260448201526a32b9ba3934b1ba34b7b71760a91b6064820152608401610bca565b611126816124de565b50565b611131612526565b6001600160a01b0316816001600160a01b0316146111a95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610bca565b6111b38282612530565b5050565b61019354839060ff1615611287576daaeb6d7670e522a718067333cd4e3b1561128757336001600160a01b038216036111f557610d9e848484612553565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112689190614aae565b61128757604051633b79c77360e21b8152336004820152602401610bca565b610e40848484612553565b6112a361129d612526565b8261256e565b6113085760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610bca565b611126816125ee565b600081815261020160209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156113595780516020820151611377565b6101fc546101fd546001600160a01b03909116906001600160801b03165b9250925050915091565b600061138d6101c85490565b82106113f05760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610bca565b6101c8828154811061140457611404614cde565b90600052602060002001549050919050565b600061142181611efc565b6127108211156114685760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610bca565b6101fc80546001600160a01b0319166001600160a01b0385169081179091556101fd80546001600160801b0319166001600160801b0385161790556040518381527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001610d53565b600081815261019660205260408120546001600160a01b031680610a465760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bca565b600061153f81611efc565b6101fa80546001600160a01b0319166001600160a01b0384169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a25050565b60006001600160a01b0382166115f55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610bca565b506001600160a01b03166000908152610197602052604090205490565b6101f85460009061162d9082906001600160a01b031661166a565b6116375750600090565b6101f8546001600160a01b03165b905090565b6000828152610161602052604081206116639083612697565b9392505050565b600091825261012f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006116a181611efc565b6101fe610e40838583614d3a565b60606101958054610a5c90614a74565b60006116ca81611efc565b6127108211156117115760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610bca565b6040805180820182526001600160a01b03858116808352602080840187815260008a81526102018352869020945185546001600160a01b031916941693909317845591516001909301929092559151848152909186917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a350505050565b61019354829060ff161561185f576daaeb6d7670e522a718067333cd4e3b1561185f57604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190614aae565b61185f57604051633b79c77360e21b81526001600160a01b0382166004820152602401610bca565b610bdd83836126a3565b6060816001600160401b038111156118835761188361476e565b6040519080825280602002602001820160405280156118b657816020015b60608152602001906001900390816118a15790505b50905060005b8281101561195657611926308585848181106118da576118da614cde565b90506020028101906118ec9190614b1a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126b592505050565b82828151811061193857611938614cde565b6020026020010181905250808061194e90614df9565b9150506118bc565b5092915050565b61019354849060ff1615611a33576daaeb6d7670e522a718067333cd4e3b15611a3357336001600160a01b038216036119a15761199c858585856127a0565b611a3f565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a149190614aae565b611a3357604051633b79c77360e21b8152336004820152602401610bca565b611a3f858585856127a0565b5050505050565b600081815261020060205260409020805460609190611a6490614a74565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9090614a74565b8015611add5780601f10611ab257610100808354040283529160200191611add565b820191906000526020600020905b815481529060010190602001808311611ac057829003601f168201915b50505050509050919050565b600081815261016160205260408120610a46906127d9565b600082815261012f6020526040902060010154611b1d81611efc565b610bdd8383612530565b6000806000611b378686866127e3565b61012087013560009081526101ff602052604090205490915060ff16158015611b855750611b857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261166a565b969095509350505050565b600054610100900460ff1615808015611bb05750600054600160ff909116105b80611bca5750303b158015611bca575060005460ff166001145b611c2d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b6000805460ff191660011790558015611c50576000805461ff0019166101001790555b611c5861283f565b611c9e6040518060400160405280600b81526020016a546f6b656e45524337323160a81b815250604051806040016040528060018152602001603160f81b815250612870565b611ca7876128a1565b611cb18a8a6128d9565b611cb961290a565b611cc360016124de565b6101fc80546001600160a01b03199081166001600160a01b03888116919091179092556101fd80546001600160801b0319166001600160801b0388161790556101fb805482168584161790556101fa80549091169188169190911790556101fe611d2d8982614e12565b50612710836001600160801b03161115611d7b5760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610bca565b6101fd80546001600160801b03808616600160801b0291161790556101f880546001600160a01b038d166001600160a01b0319909116179055611dbf60008c612929565b611de97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68c612929565b611e016000805160206151508339815191528c612929565b611e1a6000805160206151508339815191526000612929565b8015611e60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6101fe8054611e7b90614a74565b80601f0160208091040260200160405190810160405280929190818152602001828054611ea790614a74565b8015611ef45780601f10611ec957610100808354040283529160200191611ef4565b820191906000526020600020905b815481529060010190602001808311611ed757829003601f168201915b505050505081565b61112681611f08612526565b612933565b6101f98054906001906000611f228385614ed1565b909155505081611f615760405162461bcd60e51b815260206004820152600a60248201526932b6b83a3c903ab9349760b11b6044820152606401610bca565b600081815261020060205260409020611f7b838583614d3a565b50611f868482612997565b80846001600160a01b03167f9d89e36eadf856db0ad9ffb5a569e07f95634dddd9501141ecf04820484ad0dc8585604051611fc2929190614ee4565b60405180910390a39392505050565b60006001600160e01b0319821663780e9d6360e01b1480610a465750610a46826129b1565b600081815261019660205260409020546001600160a01b03166111265760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bca565b6000612061826114d3565b9050806001600160a01b0316836001600160a01b0316036120ce5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610bca565b806001600160a01b03166120e0612526565b6001600160a01b031614806120fc57506120fc81610990612526565b61216e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610bca565b610bdd83836129f1565b61218361129d612526565b61219f5760405162461bcd60e51b8152600401610bca90614ef8565b610bdd838383612a60565b60008060006121ba868686611b27565b91509150816121ff5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610bca565b42612211610100880160e08901614f46565b6001600160801b03161115801561224257504261223661012088016101008901614f46565b6001600160801b031610155b6122805760405162461bcd60e51b815260206004820152600f60248201526e1c995c5d595cdd08195e1c1a5c9959608a1b6044820152606401610bca565b600061228f60208801886144c7565b6001600160a01b0316036122db5760405162461bcd60e51b81526020600482015260136024820152721c9958da5c1a595b9d081d5b9919599a5b9959606a1b6044820152606401610bca565b61012086013560009081526101ff60205260409020805460ff191660011790559150509392505050565b8060a001356000036123145750565b6101fd5460a0820135906000906127109061233f90600160801b90046001600160801b031684614ae1565b6123499190614af8565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61237060e0850160c086016144c7565b6001600160a01b0316036123cb578134146123c65760405162461bcd60e51b815260206004820152601660248201527536bab9ba1039b2b732103a37ba30b610383934b1b29760511b6044820152606401610bca565b61240e565b341561240e5760405162461bcd60e51b81526020600482015260126024820152716d73672076616c7565206e6f74207a65726f60701b6044820152606401610bca565b60008061242160808601606087016144c7565b6001600160a01b0316146124445761243f60808501606086016144c7565b612452565b6101fa546001600160a01b03165b905061248261246760e0860160c087016144c7565b61246f612526565b6101fb546001600160a01b031685612c0a565b610e4061249560e0860160c087016144c7565b61249d612526565b836124a88688614f61565b612c0a565b6124b78282612c4b565b600082815261016160205260409020610bdd9082612cd3565b600061164581610723612526565b610193805460ff19168215159081179091556040519081527f38475885990d8dfe9ca01f0ef160a1b5514426eab9ddbc953a3353410ba780969060200160405180910390a150565b6000611645612ce8565b61253a8282612d12565b600082815261016160205260409020610bdd9082612d98565b610bdd8383836040518060200160405280600081525061195d565b60008061257a836114d3565b9050806001600160a01b0316846001600160a01b031614806125c257506001600160a01b038082166000908152610199602090815260408083209388168352929052205460ff165b806125e65750836001600160a01b03166125db84610adf565b6001600160a01b0316145b949350505050565b60006125f9826114d3565b905061260781600084612dad565b6126126000836129f1565b6001600160a01b03811660009081526101976020526040812080546001929061263c908490614f61565b90915550506000828152610196602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006116638383612e8d565b6111b36126ae612526565b8383612eb7565b60606001600160a01b0383163b61271d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bca565b600080846001600160a01b0316846040516127389190614f74565b600060405180830381855af49150503d8060008114612773576040519150601f19603f3d011682016040523d82523d6000602084013e612778565b606091505b5091509150610a17828260405180606001604052806027815260200161517060279139612f86565b6127b16127ab612526565b8361256e565b6127cd5760405162461bcd60e51b8152600401610bca90614ef8565b610e4084848484612fbf565b6000610a46825490565b60006125e683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612839925061282d9150889050612ff2565b8051906020012061312c565b9061317a565b600054610100900460ff166128665760405162461bcd60e51b8152600401610bca90614f90565b61286e61319e565b565b600054610100900460ff166128975760405162461bcd60e51b8152600401610bca90614f90565b6111b382826131cb565b600054610100900460ff166128c85760405162461bcd60e51b8152600401610bca90614f90565b6128d061320c565b61112681613233565b600054610100900460ff166129005760405162461bcd60e51b8152600401610bca90614f90565b6111b382826132c2565b61286e733cc6cdda760b79bafa08df41ecfa224f810dceb66001613304565b6111b382826124ad565b61293d828261166a565b6111b357612955816001600160a01b03166014613484565b612960836020613484565b604051602001612971929190614fdb565b60408051601f198184030181529082905262461bcd60e51b8252610bca91600401614471565b6111b382826040518060200160405280600081525061361f565b60006001600160e01b031982166380ac58cd60e01b14806129e257506001600160e01b03198216635b5e139f60e01b145b80610a465750610a4682613652565b60008181526101986020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612a27826114d3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b826001600160a01b0316612a73826114d3565b6001600160a01b031614612ad75760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610bca565b6001600160a01b038216612b395760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610bca565b612b44838383612dad565b612b4f6000826129f1565b6001600160a01b038316600090815261019760205260408120805460019290612b79908490614f61565b90915550506001600160a01b038216600090815261019760205260408120805460019290612ba8908490614ed1565b90915550506000818152610196602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8015610e405773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601612c3f57610d9e8282613677565b610e408484848461371a565b612c55828261166a565b6111b357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612c8f612526565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611663836001600160a01b03841661376d565b3360009081526099602052604081205460ff1615612d0d575060131936013560601c90565b503390565b612d1c828261166a565b156111b357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19169055612d54612526565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000611663836001600160a01b0384166137bc565b612db88383836138af565b612dd1600080516020615150833981519152600061166a565b158015612de657506001600160a01b03831615155b8015612dfa57506001600160a01b03821615155b15610bdd57612e176000805160206151508339815191528461166a565b80612e355750612e356000805160206151508339815191528361166a565b610bdd5760405162461bcd60e51b815260206004820152602360248201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526265727360e81b6064820152608401610bca565b6000826000018281548110612ea457612ea4614cde565b9060005260206000200154905092915050565b816001600160a01b0316836001600160a01b031603612f185760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610bca565b6001600160a01b0383811660008181526101996020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60608315612f95575081611663565b825115612fa55782518084602001fd5b8160405162461bcd60e51b8152600401610bca9190614471565b612fca848484612a60565b612fd684848484613969565b610e405760405162461bcd60e51b8152600401610bca90615050565b60607f86633b4ffa94b7c3d316ca70d7d2700f3fdfa7a7806efd31499b513d9176692e61302260208401846144c7565b61303260408501602086016144c7565b604085013561304760808701606088016144c7565b6130546080880188614b1a565b6040516130629291906150a2565b60405190819003902060a088013561308060e08a0160c08b016144c7565b6130916101008b0160e08c01614f46565b6130a36101208c016101008d01614f46565b60408051602081019b909b526001600160a01b03998a16908b015296881660608a0152608089019590955292861660a088015260c087019190915260e08601529092166101008401526001600160801b03918216610120808501919091529116610140830152830135610160820152610180016040516020818303038152906040529050919050565b6000610a46613139613a71565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006131898585613aec565b9150915061319681613b31565b509392505050565b600054610100900460ff166131c55760405162461bcd60e51b8152600401610bca90614f90565b60018055565b600054610100900460ff166131f25760405162461bcd60e51b8152600401610bca90614f90565b815160209283012081519190920120603391909155603455565b600054610100900460ff1661286e5760405162461bcd60e51b8152600401610bca90614f90565b600054610100900460ff1661325a5760405162461bcd60e51b8152600401610bca90614f90565b60005b81518110156111b35760016099600084848151811061327e5761327e614cde565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806132ba81614df9565b91505061325d565b600054610100900460ff166132e95760405162461bcd60e51b8152600401610bca90614f90565b6101946132f68382614e12565b50610195610bdd8282614e12565b6daaeb6d7670e522a718067333cd4e3b156111b35760405163c3c5a54760e01b81523060048201526daaeb6d7670e522a718067333cd4e9063c3c5a547906024016020604051808303816000875af1158015613364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133889190614aae565b6111b357801561340457604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156133e857600080fd5b505af11580156133fc573d6000803e3d6000fd5b505050505050565b6001600160a01b038216156134535760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af2903906044016133ce565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e486906024016133ce565b60606000613493836002614ae1565b61349e906002614ed1565b6001600160401b038111156134b5576134b561476e565b6040519080825280601f01601f1916602001820160405280156134df576020820181803683370190505b509050600360fc1b816000815181106134fa576134fa614cde565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061352957613529614cde565b60200101906001600160f81b031916908160001a905350600061354d846002614ae1565b613558906001614ed1565b90505b60018111156135d0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061358c5761358c614cde565b1a60f81b8282815181106135a2576135a2614cde565b60200101906001600160f81b031916908160001a90535060049490941c936135c9816150b2565b905061355b565b5083156116635760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bca565b6136298383613ce7565b6136366000848484613969565b610bdd5760405162461bcd60e51b8152600401610bca90615050565b60006001600160e01b03198216635a05180f60e01b1480610a465750610a4682613e38565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146136c4576040519150601f19603f3d011682016040523d82523d6000602084013e6136c9565b606091505b5050905080610bdd5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610bca565b816001600160a01b0316836001600160a01b03160315610e4057306001600160a01b0384160361375857610d9e6001600160a01b0385168383613e6d565b610e406001600160a01b038516848484613ed0565b60008181526001830160205260408120546137b457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a46565b506000610a46565b600081815260018301602052604081205480156138a55760006137e0600183614f61565b85549091506000906137f490600190614f61565b905081811461385957600086600001828154811061381457613814614cde565b906000526020600020015490508087600001848154811061383757613837614cde565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061386a5761386a6150c9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a46565b6000915050610a46565b6001600160a01b03831661390c57613907816101c8805460008381526101c960205260408120829055600182018355919091527f8cdee82cb3ac6d59f1f417405a3eecf497b31f3d06d4c506f96deb67789f61e90155565b61392f565b816001600160a01b0316836001600160a01b03161461392f5761392f8382613f08565b6001600160a01b03821661394657610bdd81613faa565b826001600160a01b0316826001600160a01b031614610bdd57610bdd828261405f565b60006001600160a01b0384163b15613a6657836001600160a01b031663150b7a02613992612526565b8786866040518563ffffffff1660e01b81526004016139b494939291906150df565b6020604051808303816000875af19250505080156139ef575060408051601f3d908101601f191682019092526139ec9181019061511c565b60015b613a4c573d808015613a1d576040519150601f19603f3d011682016040523d82523d6000602084013e613a22565b606091505b508051600003613a445760405162461bcd60e51b8152600401610bca90615050565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506125e6565b506001949350505050565b60006116457f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613aa060335490565b6034546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6000808251604103613b225760208301516040840151606085015160001a613b16878285856140a5565b94509450505050613b2a565b506000905060025b9250929050565b6000816004811115613b4557613b45615139565b03613b4d5750565b6001816004811115613b6157613b61615139565b03613bae5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610bca565b6002816004811115613bc257613bc2615139565b03613c0f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610bca565b6003816004811115613c2357613c23615139565b03613c7b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610bca565b6004816004811115613c8f57613c8f615139565b036111265760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610bca565b6001600160a01b038216613d3d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610bca565b600081815261019660205260409020546001600160a01b031615613da35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610bca565b613daf60008383612dad565b6001600160a01b038216600090815261019760205260408120805460019290613dd9908490614ed1565b90915550506000818152610196602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b03198216637965db0b60e01b1480610a4657506301ffc9a760e01b6001600160e01b0319831614610a46565b6040516001600160a01b038316602482015260448101829052610bdd90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614192565b6040516001600160a01b0380851660248301528316604482015260648101829052610e409085906323b872dd60e01b90608401613e99565b60006001613f158461158b565b613f1f9190614f61565b60008381526101c76020526040902054909150808214613f75576001600160a01b03841660009081526101c66020908152604080832085845282528083205484845281842081905583526101c790915290208190555b5060009182526101c7602090815260408084208490556001600160a01b0390941683526101c681528383209183525290812055565b6101c854600090613fbd90600190614f61565b60008381526101c960205260408120546101c88054939450909284908110613fe757613fe7614cde565b90600052602060002001549050806101c8838154811061400957614009614cde565b60009182526020808320909101929092558281526101c990915260408082208490558582528120556101c8805480614043576140436150c9565b6001900381819060005260206000200160009055905550505050565b600061406a8361158b565b6001600160a01b0390931660009081526101c66020908152604080832086845282528083208590559382526101c79052919091209190915550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156140dc5750600090506003614189565b8460ff16601b141580156140f457508460ff16601c14155b156141055750600090506004614189565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614159573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661418257600060019250925050614189565b9150600090505b94509492505050565b60006141e7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142649092919063ffffffff16565b805190915015610bdd57808060200190518101906142059190614aae565b610bdd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bca565b60606125e68484600085856001600160a01b0385163b6142c65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bca565b600080866001600160a01b031685876040516142e29190614f74565b60006040518083038185875af1925050503d806000811461431f576040519150601f19603f3d011682016040523d82523d6000602084013e614324565b606091505b5091509150614334828286612f86565b979650505050505050565b80356001600160a01b038116811461435657600080fd5b919050565b60008083601f84011261436d57600080fd5b5081356001600160401b0381111561438457600080fd5b602083019150836020828501011115613b2a57600080fd5b6000806000604084860312156143b157600080fd5b6143ba8461433f565b925060208401356001600160401b038111156143d557600080fd5b6143e18682870161435b565b9497909650939450505050565b6001600160e01b03198116811461112657600080fd5b60006020828403121561441657600080fd5b8135611663816143ee565b60005b8381101561443c578181015183820152602001614424565b50506000910152565b6000815180845261445d816020860160208601614421565b601f01601f19169290920160200192915050565b6020815260006116636020830184614445565b60006020828403121561449657600080fd5b5035919050565b600080604083850312156144b057600080fd5b6144b98361433f565b946020939093013593505050565b6000602082840312156144d957600080fd5b6116638261433f565b6000806000606084860312156144f757600080fd5b6145008461433f565b925061450e6020850161433f565b9150604084013590509250925092565b6000806040838503121561453157600080fd5b50508035926020909101359150565b60008060006040848603121561455557600080fd5b83356001600160401b038082111561456c57600080fd5b90850190610140828803121561458157600080fd5b9093506020850135908082111561459757600080fd5b506143e18682870161435b565b600080604083850312156145b757600080fd5b823591506145c76020840161433f565b90509250929050565b801515811461112657600080fd5b6000602082840312156145f057600080fd5b8135611663816145d0565b6000806020838503121561460e57600080fd5b82356001600160401b0381111561462457600080fd5b6146308582860161435b565b90969095509350505050565b60008060006060848603121561465157600080fd5b8335925061450e6020850161433f565b6000806040838503121561467457600080fd5b61467d8361433f565b9150602083013561468d816145d0565b809150509250929050565b600080602083850312156146ab57600080fd5b82356001600160401b03808211156146c257600080fd5b818501915085601f8301126146d657600080fd5b8135818111156146e557600080fd5b8660208260051b85010111156146fa57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561476157603f1988860301845261474f858351614445565b94509285019290850190600101614733565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156147ac576147ac61476e565b604052919050565b60006001600160401b038311156147cd576147cd61476e565b6147e0601f8401601f1916602001614784565b90508281528383830111156147f457600080fd5b828260208301376000602084830101529392505050565b6000806000806080858703121561482157600080fd5b61482a8561433f565b93506148386020860161433f565b92506040850135915060608501356001600160401b0381111561485a57600080fd5b8501601f8101871361486b57600080fd5b61487a878235602084016147b4565b91505092959194509250565b600082601f83011261489757600080fd5b611663838335602085016147b4565b600082601f8301126148b757600080fd5b813560206001600160401b038211156148d2576148d261476e565b8160051b6148e1828201614784565b92835284810182019282810190878511156148fb57600080fd5b83870192505b84831015614334576149128361433f565b82529183019190830190614901565b80356001600160801b038116811461435657600080fd5b6000806000806000806000806000806101408b8d03121561495857600080fd5b6149618b61433f565b995060208b01356001600160401b038082111561497d57600080fd5b6149898e838f01614886565b9a5060408d013591508082111561499f57600080fd5b6149ab8e838f01614886565b995060608d01359150808211156149c157600080fd5b6149cd8e838f01614886565b985060808d01359150808211156149e357600080fd5b506149f08d828e016148a6565b9650506149ff60a08c0161433f565b9450614a0d60c08c0161433f565b9350614a1b60e08c01614921565b9250614a2a6101008c01614921565b9150614a396101208c0161433f565b90509295989b9194979a5092959850565b60008060408385031215614a5d57600080fd5b614a668361433f565b91506145c76020840161433f565b600181811c90821680614a8857607f821691505b602082108103614aa857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ac057600080fd5b8151611663816145d0565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a4657610a46614acb565b600082614b1557634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e19843603018112614b3157600080fd5b8301803591506001600160401b03821115614b4b57600080fd5b602001915036819003821315613b2a57600080fd5b6000808335601e19843603018112614b7757600080fd5b83016020810192503590506001600160401b03811115614b9657600080fd5b803603821315613b2a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152614bef60208201614be28461433f565b6001600160a01b03169052565b6000614bfd6020840161433f565b6001600160a01b03811660408401525060408301356060830152614c236060840161433f565b6001600160a01b038116608084015250614c406080840184614b60565b6101408060a0860152614c5861016086018385614ba5565b925060a086013560c0860152614c7060c0870161433f565b6001600160a01b03811660e08701529150614c8d60e08701614921565b9150610100614ca6818701846001600160801b03169052565b614cb1818801614921565b925050610120614ccb818701846001600160801b03169052565b9590950135939094019290925250919050565b634e487b7160e01b600052603260045260246000fd5b601f821115610bdd57600081815260208120601f850160051c81016020861015614d1b5750805b601f850160051c820191505b818110156133fc57828155600101614d27565b6001600160401b03831115614d5157614d5161476e565b614d6583614d5f8354614a74565b83614cf4565b6000601f841160018114614d995760008515614d815750838201355b600019600387901b1c1916600186901b178355611a3f565b600083815260209020601f19861690835b82811015614dca5786850135825560209485019460019092019101614daa565b5086821015614de75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600060018201614e0b57614e0b614acb565b5060010190565b81516001600160401b03811115614e2b57614e2b61476e565b614e3f81614e398454614a74565b84614cf4565b602080601f831160018114614e745760008415614e5c5750858301515b600019600386901b1c1916600185901b1785556133fc565b600085815260208120601f198616915b82811015614ea357888601518255948401946001909101908401614e84565b5085821015614ec15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610a4657610a46614acb565b6020815260006125e6602083018486614ba5565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600060208284031215614f5857600080fd5b61166382614921565b81810381811115610a4657610a46614acb565b60008251614f86818460208701614421565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615013816017850160208801614421565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615044816028840160208801614421565b01602801949350505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b8183823760009101908152919050565b6000816150c1576150c1614acb565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061511290830184614445565b9695505050505050565b60006020828403121561512e57600080fd5b8151611663816143ee565b634e487b7160e01b600052602160045260246000fdfe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201d8897f301de4efd6e2a29bd5dbe799c4c987a1393f24d580d1dd5f137a2c95464736f6c63430008130033"; + + public TokenERC721DeploymentBase() + : base(BYTECODE) { } + + public TokenERC721DeploymentBase(string byteCode) + : base(byteCode) { } + } + + public partial class DEFAULT_ADMIN_ROLEFunction : DEFAULT_ADMIN_ROLEFunctionBase { } + + [Function("DEFAULT_ADMIN_ROLE", "bytes32")] + public class DEFAULT_ADMIN_ROLEFunctionBase : FunctionMessage { } + + public partial class ApproveFunction : ApproveFunctionBase { } + + [Function("approve")] + public class ApproveFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("uint256", "tokenId", 2)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class BalanceOfFunction : BalanceOfFunctionBase { } + + [Function("balanceOf", "uint256")] + public class BalanceOfFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + } + + public partial class BurnFunction : BurnFunctionBase { } + + [Function("burn")] + public class BurnFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ContractTypeFunction : ContractTypeFunctionBase { } + + [Function("contractType", "bytes32")] + public class ContractTypeFunctionBase : FunctionMessage { } + + public partial class ContractURIFunction : ContractURIFunctionBase { } + + [Function("contractURI", "string")] + public class ContractURIFunctionBase : FunctionMessage { } + + public partial class ContractVersionFunction : ContractVersionFunctionBase { } + + [Function("contractVersion", "uint8")] + public class ContractVersionFunctionBase : FunctionMessage { } + + public partial class GetApprovedFunction : GetApprovedFunctionBase { } + + [Function("getApproved", "address")] + public class GetApprovedFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GetDefaultRoyaltyInfoFunction : GetDefaultRoyaltyInfoFunctionBase { } + + [Function("getDefaultRoyaltyInfo", typeof(GetDefaultRoyaltyInfoOutputDTO))] + public class GetDefaultRoyaltyInfoFunctionBase : FunctionMessage { } + + public partial class GetPlatformFeeInfoFunction : GetPlatformFeeInfoFunctionBase { } + + [Function("getPlatformFeeInfo", typeof(GetPlatformFeeInfoOutputDTO))] + public class GetPlatformFeeInfoFunctionBase : FunctionMessage { } + + public partial class GetRoleAdminFunction : GetRoleAdminFunctionBase { } + + [Function("getRoleAdmin", "bytes32")] + public class GetRoleAdminFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoleMemberFunction : GetRoleMemberFunctionBase { } + + [Function("getRoleMember", "address")] + public class GetRoleMemberFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class GetRoleMemberCountFunction : GetRoleMemberCountFunctionBase { } + + [Function("getRoleMemberCount", "uint256")] + public class GetRoleMemberCountFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + } + + public partial class GetRoyaltyInfoForTokenFunction : GetRoyaltyInfoForTokenFunctionBase { } + + [Function("getRoyaltyInfoForToken", typeof(GetRoyaltyInfoForTokenOutputDTO))] + public class GetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class GrantRoleFunction : GrantRoleFunctionBase { } + + [Function("grantRole")] + public class GrantRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class HasRoleFunction : HasRoleFunctionBase { } + + [Function("hasRole", "bool")] + public class HasRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class InitializeFunction : InitializeFunctionBase { } + + [Function("initialize")] + public class InitializeFunctionBase : FunctionMessage + { + [Parameter("address", "_defaultAdmin", 1)] + public virtual string DefaultAdmin { get; set; } + + [Parameter("string", "_name", 2)] + public virtual string Name { get; set; } + + [Parameter("string", "_symbol", 3)] + public virtual string Symbol { get; set; } + + [Parameter("string", "_contractURI", 4)] + public virtual string ContractURI { get; set; } + + [Parameter("address[]", "_trustedForwarders", 5)] + public virtual List TrustedForwarders { get; set; } + + [Parameter("address", "_saleRecipient", 6)] + public virtual string SaleRecipient { get; set; } + + [Parameter("address", "_royaltyRecipient", 7)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint128", "_royaltyBps", 8)] + public virtual BigInteger RoyaltyBps { get; set; } + + [Parameter("uint128", "_platformFeeBps", 9)] + public virtual BigInteger PlatformFeeBps { get; set; } + + [Parameter("address", "_platformFeeRecipient", 10)] + public virtual string PlatformFeeRecipient { get; set; } + } + + public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { } + + [Function("isApprovedForAll", "bool")] + public class IsApprovedForAllFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2)] + public virtual string Operator { get; set; } + } + + public partial class IsTrustedForwarderFunction : IsTrustedForwarderFunctionBase { } + + [Function("isTrustedForwarder", "bool")] + public class IsTrustedForwarderFunctionBase : FunctionMessage + { + [Parameter("address", "forwarder", 1)] + public virtual string Forwarder { get; set; } + } + + public partial class MintToFunction : MintToFunctionBase { } + + [Function("mintTo", "uint256")] + public class MintToFunctionBase : FunctionMessage + { + [Parameter("address", "_to", 1)] + public virtual string To { get; set; } + + [Parameter("string", "_uri", 2)] + public virtual string Uri { get; set; } + } + + public partial class MintWithSignatureFunction : MintWithSignatureFunctionBase { } + + [Function("mintWithSignature", "uint256")] + public class MintWithSignatureFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class MulticallFunction : MulticallFunctionBase { } + + [Function("multicall", "bytes[]")] + public class MulticallFunctionBase : FunctionMessage + { + [Parameter("bytes[]", "data", 1)] + public virtual List Data { get; set; } + } + + public partial class NameFunction : NameFunctionBase { } + + [Function("name", "string")] + public class NameFunctionBase : FunctionMessage { } + + public partial class NextTokenIdToMintFunction : NextTokenIdToMintFunctionBase { } + + [Function("nextTokenIdToMint", "uint256")] + public class NextTokenIdToMintFunctionBase : FunctionMessage { } + + public partial class OperatorRestrictionFunction : OperatorRestrictionFunctionBase { } + + [Function("operatorRestriction", "bool")] + public class OperatorRestrictionFunctionBase : FunctionMessage { } + + public partial class OwnerFunction : OwnerFunctionBase { } + + [Function("owner", "address")] + public class OwnerFunctionBase : FunctionMessage { } + + public partial class OwnerOfFunction : OwnerOfFunctionBase { } + + [Function("ownerOf", "address")] + public class OwnerOfFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class PlatformFeeRecipientFunction : PlatformFeeRecipientFunctionBase { } + + [Function("platformFeeRecipient", "address")] + public class PlatformFeeRecipientFunctionBase : FunctionMessage { } + + public partial class PrimarySaleRecipientFunction : PrimarySaleRecipientFunctionBase { } + + [Function("primarySaleRecipient", "address")] + public class PrimarySaleRecipientFunctionBase : FunctionMessage { } + + public partial class RenounceRoleFunction : RenounceRoleFunctionBase { } + + [Function("renounceRole")] + public class RenounceRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RevokeRoleFunction : RevokeRoleFunctionBase { } + + [Function("revokeRole")] + public class RevokeRoleFunctionBase : FunctionMessage + { + [Parameter("bytes32", "role", 1)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2)] + public virtual string Account { get; set; } + } + + public partial class RoyaltyInfoFunction : RoyaltyInfoFunctionBase { } + + [Function("royaltyInfo", typeof(RoyaltyInfoOutputDTO))] + public class RoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("uint256", "tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("uint256", "salePrice", 2)] + public virtual BigInteger SalePrice { get; set; } + } + + public partial class SafeTransferFromFunction : SafeTransferFromFunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class SafeTransferFrom1Function : SafeTransferFrom1FunctionBase { } + + [Function("safeTransferFrom")] + public class SafeTransferFrom1FunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("bytes", "data", 4)] + public virtual byte[] Data { get; set; } + } + + public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { } + + [Function("setApprovalForAll")] + public class SetApprovalForAllFunctionBase : FunctionMessage + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 2)] + public virtual bool Approved { get; set; } + } + + public partial class SetContractURIFunction : SetContractURIFunctionBase { } + + [Function("setContractURI")] + public class SetContractURIFunctionBase : FunctionMessage + { + [Parameter("string", "_uri", 1)] + public virtual string Uri { get; set; } + } + + public partial class SetDefaultRoyaltyInfoFunction : SetDefaultRoyaltyInfoFunctionBase { } + + [Function("setDefaultRoyaltyInfo")] + public class SetDefaultRoyaltyInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_royaltyRecipient", 1)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "_royaltyBps", 2)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class SetOperatorRestrictionFunction : SetOperatorRestrictionFunctionBase { } + + [Function("setOperatorRestriction")] + public class SetOperatorRestrictionFunctionBase : FunctionMessage + { + [Parameter("bool", "_restriction", 1)] + public virtual bool Restriction { get; set; } + } + + public partial class SetOwnerFunction : SetOwnerFunctionBase { } + + [Function("setOwner")] + public class SetOwnerFunctionBase : FunctionMessage + { + [Parameter("address", "_newOwner", 1)] + public virtual string NewOwner { get; set; } + } + + public partial class SetPlatformFeeInfoFunction : SetPlatformFeeInfoFunctionBase { } + + [Function("setPlatformFeeInfo")] + public class SetPlatformFeeInfoFunctionBase : FunctionMessage + { + [Parameter("address", "_platformFeeRecipient", 1)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "_platformFeeBps", 2)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class SetPrimarySaleRecipientFunction : SetPrimarySaleRecipientFunctionBase { } + + [Function("setPrimarySaleRecipient")] + public class SetPrimarySaleRecipientFunctionBase : FunctionMessage + { + [Parameter("address", "_saleRecipient", 1)] + public virtual string SaleRecipient { get; set; } + } + + public partial class SetRoyaltyInfoForTokenFunction : SetRoyaltyInfoForTokenFunctionBase { } + + [Function("setRoyaltyInfoForToken")] + public class SetRoyaltyInfoForTokenFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "_recipient", 2)] + public virtual string Recipient { get; set; } + + [Parameter("uint256", "_bps", 3)] + public virtual BigInteger Bps { get; set; } + } + + public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { } + + [Function("supportsInterface", "bool")] + public class SupportsInterfaceFunctionBase : FunctionMessage + { + [Parameter("bytes4", "interfaceId", 1)] + public virtual byte[] InterfaceId { get; set; } + } + + public partial class SymbolFunction : SymbolFunctionBase { } + + [Function("symbol", "string")] + public class SymbolFunctionBase : FunctionMessage { } + + public partial class TokenByIndexFunction : TokenByIndexFunctionBase { } + + [Function("tokenByIndex", "uint256")] + public class TokenByIndexFunctionBase : FunctionMessage + { + [Parameter("uint256", "index", 1)] + public virtual BigInteger Index { get; set; } + } + + public partial class TokenOfOwnerByIndexFunction : TokenOfOwnerByIndexFunctionBase { } + + [Function("tokenOfOwnerByIndex", "uint256")] + public class TokenOfOwnerByIndexFunctionBase : FunctionMessage + { + [Parameter("address", "owner", 1)] + public virtual string Owner { get; set; } + + [Parameter("uint256", "index", 2)] + public virtual BigInteger Index { get; set; } + } + + public partial class TokenURIFunction : TokenURIFunctionBase { } + + [Function("tokenURI", "string")] + public class TokenURIFunctionBase : FunctionMessage + { + [Parameter("uint256", "_tokenId", 1)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class TotalSupplyFunction : TotalSupplyFunctionBase { } + + [Function("totalSupply", "uint256")] + public class TotalSupplyFunctionBase : FunctionMessage { } + + public partial class TransferFromFunction : TransferFromFunctionBase { } + + [Function("transferFrom")] + public class TransferFromFunctionBase : FunctionMessage + { + [Parameter("address", "from", 1)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class VerifyFunction : VerifyFunctionBase { } + + [Function("verify", typeof(VerifyOutputDTO))] + public class VerifyFunctionBase : FunctionMessage + { + [Parameter("tuple", "_req", 1)] + public virtual MintRequest Req { get; set; } + + [Parameter("bytes", "_signature", 2)] + public virtual byte[] Signature { get; set; } + } + + public partial class ApprovalEventDTO : ApprovalEventDTOBase { } + + [Event("Approval")] + public class ApprovalEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "approved", 2, true)] + public virtual string Approved { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class ApprovalForAllEventDTO : ApprovalForAllEventDTOBase { } + + [Event("ApprovalForAll")] + public class ApprovalForAllEventDTOBase : IEventDTO + { + [Parameter("address", "owner", 1, true)] + public virtual string Owner { get; set; } + + [Parameter("address", "operator", 2, true)] + public virtual string Operator { get; set; } + + [Parameter("bool", "approved", 3, false)] + public virtual bool Approved { get; set; } + } + + public partial class DefaultRoyaltyEventDTO : DefaultRoyaltyEventDTOBase { } + + [Event("DefaultRoyalty")] + public class DefaultRoyaltyEventDTOBase : IEventDTO + { + [Parameter("address", "newRoyaltyRecipient", 1, true)] + public virtual string NewRoyaltyRecipient { get; set; } + + [Parameter("uint256", "newRoyaltyBps", 2, false)] + public virtual BigInteger NewRoyaltyBps { get; set; } + } + + public partial class InitializedEventDTO : InitializedEventDTOBase { } + + [Event("Initialized")] + public class InitializedEventDTOBase : IEventDTO + { + [Parameter("uint8", "version", 1, false)] + public virtual byte Version { get; set; } + } + + public partial class OperatorRestrictionEventDTO : OperatorRestrictionEventDTOBase { } + + [Event("OperatorRestriction")] + public class OperatorRestrictionEventDTOBase : IEventDTO + { + [Parameter("bool", "restriction", 1, false)] + public virtual bool Restriction { get; set; } + } + + public partial class OwnerUpdatedEventDTO : OwnerUpdatedEventDTOBase { } + + [Event("OwnerUpdated")] + public class OwnerUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "prevOwner", 1, true)] + public virtual string PrevOwner { get; set; } + + [Parameter("address", "newOwner", 2, true)] + public virtual string NewOwner { get; set; } + } + + public partial class PlatformFeeInfoUpdatedEventDTO : PlatformFeeInfoUpdatedEventDTOBase { } + + [Event("PlatformFeeInfoUpdated")] + public class PlatformFeeInfoUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "platformFeeRecipient", 1, true)] + public virtual string PlatformFeeRecipient { get; set; } + + [Parameter("uint256", "platformFeeBps", 2, false)] + public virtual BigInteger PlatformFeeBps { get; set; } + } + + public partial class PrimarySaleRecipientUpdatedEventDTO : PrimarySaleRecipientUpdatedEventDTOBase { } + + [Event("PrimarySaleRecipientUpdated")] + public class PrimarySaleRecipientUpdatedEventDTOBase : IEventDTO + { + [Parameter("address", "recipient", 1, true)] + public virtual string Recipient { get; set; } + } + + public partial class RoleAdminChangedEventDTO : RoleAdminChangedEventDTOBase { } + + [Event("RoleAdminChanged")] + public class RoleAdminChangedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("bytes32", "previousAdminRole", 2, true)] + public virtual byte[] PreviousAdminRole { get; set; } + + [Parameter("bytes32", "newAdminRole", 3, true)] + public virtual byte[] NewAdminRole { get; set; } + } + + public partial class RoleGrantedEventDTO : RoleGrantedEventDTOBase { } + + [Event("RoleGranted")] + public class RoleGrantedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoleRevokedEventDTO : RoleRevokedEventDTOBase { } + + [Event("RoleRevoked")] + public class RoleRevokedEventDTOBase : IEventDTO + { + [Parameter("bytes32", "role", 1, true)] + public virtual byte[] Role { get; set; } + + [Parameter("address", "account", 2, true)] + public virtual string Account { get; set; } + + [Parameter("address", "sender", 3, true)] + public virtual string Sender { get; set; } + } + + public partial class RoyaltyForTokenEventDTO : RoyaltyForTokenEventDTOBase { } + + [Event("RoyaltyForToken")] + public class RoyaltyForTokenEventDTOBase : IEventDTO + { + [Parameter("uint256", "tokenId", 1, true)] + public virtual BigInteger TokenId { get; set; } + + [Parameter("address", "royaltyRecipient", 2, true)] + public virtual string RoyaltyRecipient { get; set; } + + [Parameter("uint256", "royaltyBps", 3, false)] + public virtual BigInteger RoyaltyBps { get; set; } + } + + public partial class TokensMintedEventDTO : TokensMintedEventDTOBase { } + + [Event("TokensMinted")] + public class TokensMintedEventDTOBase : IEventDTO + { + [Parameter("address", "mintedTo", 1, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "tokenIdMinted", 2, true)] + public virtual BigInteger TokenIdMinted { get; set; } + + [Parameter("string", "uri", 3, false)] + public virtual string Uri { get; set; } + } + + public partial class TokensMintedWithSignatureEventDTO : TokensMintedWithSignatureEventDTOBase { } + + [Event("TokensMintedWithSignature")] + public class TokensMintedWithSignatureEventDTOBase : IEventDTO + { + [Parameter("address", "signer", 1, true)] + public virtual string Signer { get; set; } + + [Parameter("address", "mintedTo", 2, true)] + public virtual string MintedTo { get; set; } + + [Parameter("uint256", "tokenIdMinted", 3, true)] + public virtual BigInteger TokenIdMinted { get; set; } + + [Parameter("tuple", "mintRequest", 4, false)] + public virtual MintRequest MintRequest { get; set; } + } + + public partial class TransferEventDTO : TransferEventDTOBase { } + + [Event("Transfer")] + public class TransferEventDTOBase : IEventDTO + { + [Parameter("address", "from", 1, true)] + public virtual string From { get; set; } + + [Parameter("address", "to", 2, true)] + public virtual string To { get; set; } + + [Parameter("uint256", "tokenId", 3, true)] + public virtual BigInteger TokenId { get; set; } + } + + public partial class OperatorNotAllowedError : OperatorNotAllowedErrorBase { } + + [Error("OperatorNotAllowed")] + public class OperatorNotAllowedErrorBase : IErrorDTO + { + [Parameter("address", "operator", 1)] + public virtual string Operator { get; set; } + } + + public partial class DEFAULT_ADMIN_ROLEOutputDTO : DEFAULT_ADMIN_ROLEOutputDTOBase { } + + [FunctionOutput] + public class DEFAULT_ADMIN_ROLEOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { } + + [FunctionOutput] + public class BalanceOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class ContractTypeOutputDTO : ContractTypeOutputDTOBase { } + + [FunctionOutput] + public class ContractTypeOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class ContractURIOutputDTO : ContractURIOutputDTOBase { } + + [FunctionOutput] + public class ContractURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class ContractVersionOutputDTO : ContractVersionOutputDTOBase { } + + [FunctionOutput] + public class ContractVersionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint8", "", 1)] + public virtual byte ReturnValue1 { get; set; } + } + + public partial class GetApprovedOutputDTO : GetApprovedOutputDTOBase { } + + [FunctionOutput] + public class GetApprovedOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetDefaultRoyaltyInfoOutputDTO : GetDefaultRoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class GetDefaultRoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetPlatformFeeInfoOutputDTO : GetPlatformFeeInfoOutputDTOBase { } + + [FunctionOutput] + public class GetPlatformFeeInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class GetRoleAdminOutputDTO : GetRoleAdminOutputDTOBase { } + + [FunctionOutput] + public class GetRoleAdminOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bytes32", "", 1)] + public virtual byte[] ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberOutputDTO : GetRoleMemberOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class GetRoleMemberCountOutputDTO : GetRoleMemberCountOutputDTOBase { } + + [FunctionOutput] + public class GetRoleMemberCountOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class GetRoyaltyInfoForTokenOutputDTO : GetRoyaltyInfoForTokenOutputDTOBase { } + + [FunctionOutput] + public class GetRoyaltyInfoForTokenOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + + [Parameter("uint16", "", 2)] + public virtual ushort ReturnValue2 { get; set; } + } + + public partial class HasRoleOutputDTO : HasRoleOutputDTOBase { } + + [FunctionOutput] + public class HasRoleOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { } + + [FunctionOutput] + public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class IsTrustedForwarderOutputDTO : IsTrustedForwarderOutputDTOBase { } + + [FunctionOutput] + public class IsTrustedForwarderOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class NameOutputDTO : NameOutputDTOBase { } + + [FunctionOutput] + public class NameOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class NextTokenIdToMintOutputDTO : NextTokenIdToMintOutputDTOBase { } + + [FunctionOutput] + public class NextTokenIdToMintOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class OperatorRestrictionOutputDTO : OperatorRestrictionOutputDTOBase { } + + [FunctionOutput] + public class OperatorRestrictionOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class OwnerOutputDTO : OwnerOutputDTOBase { } + + [FunctionOutput] + public class OwnerOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class OwnerOfOutputDTO : OwnerOfOutputDTOBase { } + + [FunctionOutput] + public class OwnerOfOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PlatformFeeRecipientOutputDTO : PlatformFeeRecipientOutputDTOBase { } + + [FunctionOutput] + public class PlatformFeeRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class PrimarySaleRecipientOutputDTO : PrimarySaleRecipientOutputDTOBase { } + + [FunctionOutput] + public class PrimarySaleRecipientOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class RoyaltyInfoOutputDTO : RoyaltyInfoOutputDTOBase { } + + [FunctionOutput] + public class RoyaltyInfoOutputDTOBase : IFunctionOutputDTO + { + [Parameter("address", "receiver", 1)] + public virtual string Receiver { get; set; } + + [Parameter("uint256", "royaltyAmount", 2)] + public virtual BigInteger RoyaltyAmount { get; set; } + } + + public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { } + + [FunctionOutput] + public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + + public partial class SymbolOutputDTO : SymbolOutputDTOBase { } + + [FunctionOutput] + public class SymbolOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TokenByIndexOutputDTO : TokenByIndexOutputDTOBase { } + + [FunctionOutput] + public class TokenByIndexOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class TokenOfOwnerByIndexOutputDTO : TokenOfOwnerByIndexOutputDTOBase { } + + [FunctionOutput] + public class TokenOfOwnerByIndexOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class TokenURIOutputDTO : TokenURIOutputDTOBase { } + + [FunctionOutput] + public class TokenURIOutputDTOBase : IFunctionOutputDTO + { + [Parameter("string", "", 1)] + public virtual string ReturnValue1 { get; set; } + } + + public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { } + + [FunctionOutput] + public class TotalSupplyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + + public partial class VerifyOutputDTO : VerifyOutputDTOBase { } + + [FunctionOutput] + public class VerifyOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + + [Parameter("address", "", 2)] + public virtual string ReturnValue2 { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs.meta new file mode 100644 index 00000000..52015cc5 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/ContractDefinition/TokenERC721Definition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62cd75241bf2481489ed4f30ca1746df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs new file mode 100644 index 00000000..02657917 --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs @@ -0,0 +1,1016 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Numerics; +using Nethereum.Hex.HexTypes; +using Nethereum.ABI.FunctionEncoding.Attributes; +using Nethereum.Web3; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Contracts.CQS; +using Nethereum.Contracts.ContractHandlers; +using Nethereum.Contracts; +using System.Threading; +using Thirdweb.Contracts.TokenERC721.ContractDefinition; + +namespace Thirdweb.Contracts.TokenERC721 +{ + public partial class TokenERC721Service + { + public static Task DeployContractAndWaitForReceiptAsync( + Nethereum.Web3.Web3 web3, + TokenERC721Deployment tokenERC721Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAndWaitForReceiptAsync(tokenERC721Deployment, cancellationTokenSource); + } + + public static Task DeployContractAsync(Nethereum.Web3.Web3 web3, TokenERC721Deployment tokenERC721Deployment) + { + return web3.Eth.GetContractDeploymentHandler().SendRequestAsync(tokenERC721Deployment); + } + + public static async Task DeployContractAndGetServiceAsync( + Nethereum.Web3.Web3 web3, + TokenERC721Deployment tokenERC721Deployment, + CancellationTokenSource cancellationTokenSource = null + ) + { + var receipt = await DeployContractAndWaitForReceiptAsync(web3, tokenERC721Deployment, cancellationTokenSource); + return new TokenERC721Service(web3, receipt.ContractAddress); + } + + protected Nethereum.Web3.Web3 Web3 { get; } + + public ContractHandler ContractHandler { get; } + + public TokenERC721Service(Nethereum.Web3.Web3 web3, string contractAddress) + { + Web3 = web3; + ContractHandler = web3.Eth.GetContractHandler(contractAddress); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(DEFAULT_ADMIN_ROLEFunction dEFAULT_ADMIN_ROLEFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(dEFAULT_ADMIN_ROLEFunction, blockParameter); + } + + public Task DEFAULT_ADMIN_ROLEQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ApproveRequestAsync(ApproveFunction approveFunction) + { + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(ApproveFunction approveFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task ApproveRequestAsync(string @operator, BigInteger tokenId) + { + var approveFunction = new ApproveFunction(); + approveFunction.Operator = @operator; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(approveFunction); + } + + public Task ApproveRequestAndWaitForReceiptAsync(string @operator, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var approveFunction = new ApproveFunction(); + approveFunction.Operator = @operator; + approveFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(approveFunction, cancellationToken); + } + + public Task BalanceOfQueryAsync(BalanceOfFunction balanceOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BalanceOfQueryAsync(string owner, BlockParameter blockParameter = null) + { + var balanceOfFunction = new BalanceOfFunction(); + balanceOfFunction.Owner = owner; + + return ContractHandler.QueryAsync(balanceOfFunction, blockParameter); + } + + public Task BurnRequestAsync(BurnFunction burnFunction) + { + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BurnFunction burnFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task BurnRequestAsync(BigInteger tokenId) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(burnFunction); + } + + public Task BurnRequestAndWaitForReceiptAsync(BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var burnFunction = new BurnFunction(); + burnFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(burnFunction, cancellationToken); + } + + public Task ContractTypeQueryAsync(ContractTypeFunction contractTypeFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractTypeFunction, blockParameter); + } + + public Task ContractTypeQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractURIQueryAsync(ContractURIFunction contractURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractURIFunction, blockParameter); + } + + public Task ContractURIQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task ContractVersionQueryAsync(ContractVersionFunction contractVersionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(contractVersionFunction, blockParameter); + } + + public Task ContractVersionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task GetApprovedQueryAsync(GetApprovedFunction getApprovedFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetApprovedQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getApprovedFunction = new GetApprovedFunction(); + getApprovedFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(getApprovedFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(GetDefaultRoyaltyInfoFunction getDefaultRoyaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getDefaultRoyaltyInfoFunction, blockParameter); + } + + public Task GetDefaultRoyaltyInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(GetPlatformFeeInfoFunction getPlatformFeeInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getPlatformFeeInfoFunction, blockParameter); + } + + public Task GetPlatformFeeInfoQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(null, blockParameter); + } + + public Task GetRoleAdminQueryAsync(GetRoleAdminFunction getRoleAdminFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleAdminQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleAdminFunction = new GetRoleAdminFunction(); + getRoleAdminFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleAdminFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(GetRoleMemberFunction getRoleMemberFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberQueryAsync(byte[] role, BigInteger index, BlockParameter blockParameter = null) + { + var getRoleMemberFunction = new GetRoleMemberFunction(); + getRoleMemberFunction.Role = role; + getRoleMemberFunction.Index = index; + + return ContractHandler.QueryAsync(getRoleMemberFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(GetRoleMemberCountFunction getRoleMemberCountFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoleMemberCountQueryAsync(byte[] role, BlockParameter blockParameter = null) + { + var getRoleMemberCountFunction = new GetRoleMemberCountFunction(); + getRoleMemberCountFunction.Role = role; + + return ContractHandler.QueryAsync(getRoleMemberCountFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(GetRoyaltyInfoForTokenFunction getRoyaltyInfoForTokenFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GetRoyaltyInfoForTokenQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var getRoyaltyInfoForTokenFunction = new GetRoyaltyInfoForTokenFunction(); + getRoyaltyInfoForTokenFunction.TokenId = tokenId; + + return ContractHandler.QueryDeserializingToObjectAsync(getRoyaltyInfoForTokenFunction, blockParameter); + } + + public Task GrantRoleRequestAsync(GrantRoleFunction grantRoleFunction) + { + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(GrantRoleFunction grantRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task GrantRoleRequestAsync(byte[] role, string account) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(grantRoleFunction); + } + + public Task GrantRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var grantRoleFunction = new GrantRoleFunction(); + grantRoleFunction.Role = role; + grantRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(grantRoleFunction, cancellationToken); + } + + public Task HasRoleQueryAsync(HasRoleFunction hasRoleFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task HasRoleQueryAsync(byte[] role, string account, BlockParameter blockParameter = null) + { + var hasRoleFunction = new HasRoleFunction(); + hasRoleFunction.Role = role; + hasRoleFunction.Account = account; + + return ContractHandler.QueryAsync(hasRoleFunction, blockParameter); + } + + public Task InitializeRequestAsync(InitializeFunction initializeFunction) + { + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync(InitializeFunction initializeFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task InitializeRequestAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAsync(initializeFunction); + } + + public Task InitializeRequestAndWaitForReceiptAsync( + string defaultAdmin, + string name, + string symbol, + string contractURI, + List trustedForwarders, + string saleRecipient, + string royaltyRecipient, + BigInteger royaltyBps, + BigInteger platformFeeBps, + string platformFeeRecipient, + CancellationTokenSource cancellationToken = null + ) + { + var initializeFunction = new InitializeFunction(); + initializeFunction.DefaultAdmin = defaultAdmin; + initializeFunction.Name = name; + initializeFunction.Symbol = symbol; + initializeFunction.ContractURI = contractURI; + initializeFunction.TrustedForwarders = trustedForwarders; + initializeFunction.SaleRecipient = saleRecipient; + initializeFunction.RoyaltyRecipient = royaltyRecipient; + initializeFunction.RoyaltyBps = royaltyBps; + initializeFunction.PlatformFeeBps = platformFeeBps; + initializeFunction.PlatformFeeRecipient = platformFeeRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(initializeFunction, cancellationToken); + } + + public Task IsApprovedForAllQueryAsync(IsApprovedForAllFunction isApprovedForAllFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsApprovedForAllQueryAsync(string owner, string @operator, BlockParameter blockParameter = null) + { + var isApprovedForAllFunction = new IsApprovedForAllFunction(); + isApprovedForAllFunction.Owner = owner; + isApprovedForAllFunction.Operator = @operator; + + return ContractHandler.QueryAsync(isApprovedForAllFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(IsTrustedForwarderFunction isTrustedForwarderFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task IsTrustedForwarderQueryAsync(string forwarder, BlockParameter blockParameter = null) + { + var isTrustedForwarderFunction = new IsTrustedForwarderFunction(); + isTrustedForwarderFunction.Forwarder = forwarder; + + return ContractHandler.QueryAsync(isTrustedForwarderFunction, blockParameter); + } + + public Task MintToRequestAsync(MintToFunction mintToFunction) + { + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(MintToFunction mintToFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintToRequestAsync(string to, string uri) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(mintToFunction); + } + + public Task MintToRequestAndWaitForReceiptAsync(string to, string uri, CancellationTokenSource cancellationToken = null) + { + var mintToFunction = new MintToFunction(); + mintToFunction.To = to; + mintToFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintToFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintWithSignatureFunction mintWithSignatureFunction) + { + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintWithSignatureFunction mintWithSignatureFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MintWithSignatureRequestAsync(MintRequest req, byte[] signature) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAsync(mintWithSignatureFunction); + } + + public Task MintWithSignatureRequestAndWaitForReceiptAsync(MintRequest req, byte[] signature, CancellationTokenSource cancellationToken = null) + { + var mintWithSignatureFunction = new MintWithSignatureFunction(); + mintWithSignatureFunction.Req = req; + mintWithSignatureFunction.Signature = signature; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(mintWithSignatureFunction, cancellationToken); + } + + public Task MulticallRequestAsync(MulticallFunction multicallFunction) + { + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(MulticallFunction multicallFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task MulticallRequestAsync(List data) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAsync(multicallFunction); + } + + public Task MulticallRequestAndWaitForReceiptAsync(List data, CancellationTokenSource cancellationToken = null) + { + var multicallFunction = new MulticallFunction(); + multicallFunction.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(multicallFunction, cancellationToken); + } + + public Task NameQueryAsync(NameFunction nameFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nameFunction, blockParameter); + } + + public Task NameQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(NextTokenIdToMintFunction nextTokenIdToMintFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(nextTokenIdToMintFunction, blockParameter); + } + + public Task NextTokenIdToMintQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(OperatorRestrictionFunction operatorRestrictionFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(operatorRestrictionFunction, blockParameter); + } + + public Task OperatorRestrictionQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerQueryAsync(OwnerFunction ownerFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerFunction, blockParameter); + } + + public Task OwnerQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task OwnerOfQueryAsync(OwnerOfFunction ownerOfFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task OwnerOfQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var ownerOfFunction = new OwnerOfFunction(); + ownerOfFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(ownerOfFunction, blockParameter); + } + + public Task PlatformFeeRecipientQueryAsync(PlatformFeeRecipientFunction platformFeeRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(platformFeeRecipientFunction, blockParameter); + } + + public Task PlatformFeeRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(PrimarySaleRecipientFunction primarySaleRecipientFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(primarySaleRecipientFunction, blockParameter); + } + + public Task PrimarySaleRecipientQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task RenounceRoleRequestAsync(RenounceRoleFunction renounceRoleFunction) + { + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(RenounceRoleFunction renounceRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RenounceRoleRequestAsync(byte[] role, string account) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(renounceRoleFunction); + } + + public Task RenounceRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var renounceRoleFunction = new RenounceRoleFunction(); + renounceRoleFunction.Role = role; + renounceRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(renounceRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(RevokeRoleFunction revokeRoleFunction) + { + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(RevokeRoleFunction revokeRoleFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RevokeRoleRequestAsync(byte[] role, string account) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAsync(revokeRoleFunction); + } + + public Task RevokeRoleRequestAndWaitForReceiptAsync(byte[] role, string account, CancellationTokenSource cancellationToken = null) + { + var revokeRoleFunction = new RevokeRoleFunction(); + revokeRoleFunction.Role = role; + revokeRoleFunction.Account = account; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(revokeRoleFunction, cancellationToken); + } + + public Task RoyaltyInfoQueryAsync(RoyaltyInfoFunction royaltyInfoFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice, BlockParameter blockParameter = null) + { + var royaltyInfoFunction = new RoyaltyInfoFunction(); + royaltyInfoFunction.TokenId = tokenId; + royaltyInfoFunction.SalePrice = salePrice; + + return ContractHandler.QueryDeserializingToObjectAsync(royaltyInfoFunction, blockParameter); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFromFunction safeTransferFromFunction) + { + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFromFunction safeTransferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(safeTransferFromFunction); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var safeTransferFromFunction = new SafeTransferFromFunction(); + safeTransferFromFunction.From = from; + safeTransferFromFunction.To = to; + safeTransferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFromFunction, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(SafeTransferFrom1Function safeTransferFrom1Function) + { + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(SafeTransferFrom1Function safeTransferFrom1Function, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SafeTransferFromRequestAsync(string from, string to, BigInteger tokenId, byte[] data) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAsync(safeTransferFrom1Function); + } + + public Task SafeTransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, byte[] data, CancellationTokenSource cancellationToken = null) + { + var safeTransferFrom1Function = new SafeTransferFrom1Function(); + safeTransferFrom1Function.From = from; + safeTransferFrom1Function.To = to; + safeTransferFrom1Function.TokenId = tokenId; + safeTransferFrom1Function.Data = data; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(safeTransferFrom1Function, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(SetApprovalForAllFunction setApprovalForAllFunction) + { + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(SetApprovalForAllFunction setApprovalForAllFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetApprovalForAllRequestAsync(string @operator, bool approved) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAsync(setApprovalForAllFunction); + } + + public Task SetApprovalForAllRequestAndWaitForReceiptAsync(string @operator, bool approved, CancellationTokenSource cancellationToken = null) + { + var setApprovalForAllFunction = new SetApprovalForAllFunction(); + setApprovalForAllFunction.Operator = @operator; + setApprovalForAllFunction.Approved = approved; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setApprovalForAllFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(SetContractURIFunction setContractURIFunction) + { + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(SetContractURIFunction setContractURIFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetContractURIRequestAsync(string uri) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAsync(setContractURIFunction); + } + + public Task SetContractURIRequestAndWaitForReceiptAsync(string uri, CancellationTokenSource cancellationToken = null) + { + var setContractURIFunction = new SetContractURIFunction(); + setContractURIFunction.Uri = uri; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setContractURIFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction) + { + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync( + SetDefaultRoyaltyInfoFunction setDefaultRoyaltyInfoFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetDefaultRoyaltyInfoRequestAsync(string royaltyRecipient, BigInteger royaltyBps) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAsync(setDefaultRoyaltyInfoFunction); + } + + public Task SetDefaultRoyaltyInfoRequestAndWaitForReceiptAsync(string royaltyRecipient, BigInteger royaltyBps, CancellationTokenSource cancellationToken = null) + { + var setDefaultRoyaltyInfoFunction = new SetDefaultRoyaltyInfoFunction(); + setDefaultRoyaltyInfoFunction.RoyaltyRecipient = royaltyRecipient; + setDefaultRoyaltyInfoFunction.RoyaltyBps = royaltyBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setDefaultRoyaltyInfoFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(SetOperatorRestrictionFunction setOperatorRestrictionFunction) + { + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync( + SetOperatorRestrictionFunction setOperatorRestrictionFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOperatorRestrictionRequestAsync(bool restriction) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAsync(setOperatorRestrictionFunction); + } + + public Task SetOperatorRestrictionRequestAndWaitForReceiptAsync(bool restriction, CancellationTokenSource cancellationToken = null) + { + var setOperatorRestrictionFunction = new SetOperatorRestrictionFunction(); + setOperatorRestrictionFunction.Restriction = restriction; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOperatorRestrictionFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(SetOwnerFunction setOwnerFunction) + { + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(SetOwnerFunction setOwnerFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetOwnerRequestAsync(string newOwner) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAsync(setOwnerFunction); + } + + public Task SetOwnerRequestAndWaitForReceiptAsync(string newOwner, CancellationTokenSource cancellationToken = null) + { + var setOwnerFunction = new SetOwnerFunction(); + setOwnerFunction.NewOwner = newOwner; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setOwnerFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction) + { + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(SetPlatformFeeInfoFunction setPlatformFeeInfoFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPlatformFeeInfoRequestAsync(string platformFeeRecipient, BigInteger platformFeeBps) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAsync(setPlatformFeeInfoFunction); + } + + public Task SetPlatformFeeInfoRequestAndWaitForReceiptAsync(string platformFeeRecipient, BigInteger platformFeeBps, CancellationTokenSource cancellationToken = null) + { + var setPlatformFeeInfoFunction = new SetPlatformFeeInfoFunction(); + setPlatformFeeInfoFunction.PlatformFeeRecipient = platformFeeRecipient; + setPlatformFeeInfoFunction.PlatformFeeBps = platformFeeBps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPlatformFeeInfoFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction) + { + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync( + SetPrimarySaleRecipientFunction setPrimarySaleRecipientFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetPrimarySaleRecipientRequestAsync(string saleRecipient) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAsync(setPrimarySaleRecipientFunction); + } + + public Task SetPrimarySaleRecipientRequestAndWaitForReceiptAsync(string saleRecipient, CancellationTokenSource cancellationToken = null) + { + var setPrimarySaleRecipientFunction = new SetPrimarySaleRecipientFunction(); + setPrimarySaleRecipientFunction.SaleRecipient = saleRecipient; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setPrimarySaleRecipientFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction) + { + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync( + SetRoyaltyInfoForTokenFunction setRoyaltyInfoForTokenFunction, + CancellationTokenSource cancellationToken = null + ) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SetRoyaltyInfoForTokenRequestAsync(BigInteger tokenId, string recipient, BigInteger bps) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAsync(setRoyaltyInfoForTokenFunction); + } + + public Task SetRoyaltyInfoForTokenRequestAndWaitForReceiptAsync(BigInteger tokenId, string recipient, BigInteger bps, CancellationTokenSource cancellationToken = null) + { + var setRoyaltyInfoForTokenFunction = new SetRoyaltyInfoForTokenFunction(); + setRoyaltyInfoForTokenFunction.TokenId = tokenId; + setRoyaltyInfoForTokenFunction.Recipient = recipient; + setRoyaltyInfoForTokenFunction.Bps = bps; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(setRoyaltyInfoForTokenFunction, cancellationToken); + } + + public Task SupportsInterfaceQueryAsync(SupportsInterfaceFunction supportsInterfaceFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SupportsInterfaceQueryAsync(byte[] interfaceId, BlockParameter blockParameter = null) + { + var supportsInterfaceFunction = new SupportsInterfaceFunction(); + supportsInterfaceFunction.InterfaceId = interfaceId; + + return ContractHandler.QueryAsync(supportsInterfaceFunction, blockParameter); + } + + public Task SymbolQueryAsync(SymbolFunction symbolFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(symbolFunction, blockParameter); + } + + public Task SymbolQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TokenByIndexQueryAsync(TokenByIndexFunction tokenByIndexFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenByIndexFunction, blockParameter); + } + + public Task TokenByIndexQueryAsync(BigInteger index, BlockParameter blockParameter = null) + { + var tokenByIndexFunction = new TokenByIndexFunction(); + tokenByIndexFunction.Index = index; + + return ContractHandler.QueryAsync(tokenByIndexFunction, blockParameter); + } + + public Task TokenOfOwnerByIndexQueryAsync(TokenOfOwnerByIndexFunction tokenOfOwnerByIndexFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenOfOwnerByIndexFunction, blockParameter); + } + + public Task TokenOfOwnerByIndexQueryAsync(string owner, BigInteger index, BlockParameter blockParameter = null) + { + var tokenOfOwnerByIndexFunction = new TokenOfOwnerByIndexFunction(); + tokenOfOwnerByIndexFunction.Owner = owner; + tokenOfOwnerByIndexFunction.Index = index; + + return ContractHandler.QueryAsync(tokenOfOwnerByIndexFunction, blockParameter); + } + + public Task TokenURIQueryAsync(TokenURIFunction tokenURIFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TokenURIQueryAsync(BigInteger tokenId, BlockParameter blockParameter = null) + { + var tokenURIFunction = new TokenURIFunction(); + tokenURIFunction.TokenId = tokenId; + + return ContractHandler.QueryAsync(tokenURIFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(TotalSupplyFunction totalSupplyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(totalSupplyFunction, blockParameter); + } + + public Task TotalSupplyQueryAsync(BlockParameter blockParameter = null) + { + return ContractHandler.QueryAsync(null, blockParameter); + } + + public Task TransferFromRequestAsync(TransferFromFunction transferFromFunction) + { + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(TransferFromFunction transferFromFunction, CancellationTokenSource cancellationToken = null) + { + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task TransferFromRequestAsync(string from, string to, BigInteger tokenId) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAsync(transferFromFunction); + } + + public Task TransferFromRequestAndWaitForReceiptAsync(string from, string to, BigInteger tokenId, CancellationTokenSource cancellationToken = null) + { + var transferFromFunction = new TransferFromFunction(); + transferFromFunction.From = from; + transferFromFunction.To = to; + transferFromFunction.TokenId = tokenId; + + return ContractHandler.SendRequestAndWaitForReceiptAsync(transferFromFunction, cancellationToken); + } + + public Task VerifyQueryAsync(VerifyFunction verifyFunction, BlockParameter blockParameter = null) + { + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + + public Task VerifyQueryAsync(MintRequest req, byte[] signature, BlockParameter blockParameter = null) + { + var verifyFunction = new VerifyFunction(); + verifyFunction.Req = req; + verifyFunction.Signature = signature; + + return ContractHandler.QueryDeserializingToObjectAsync(verifyFunction, blockParameter); + } + } +} diff --git a/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs.meta b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs.meta new file mode 100644 index 00000000..0467d08f --- /dev/null +++ b/Assets/Thirdweb/Core/Contract Definitions/TokenERC721/TokenERC721Service.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be6c43f091a02ba408e78288dd64b42f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugin.meta b/Assets/Thirdweb/Core/Plugin.meta new file mode 100644 index 00000000..95d40e20 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cf6ccd53e9c14c8b81a40069bca40f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugin/thirdweb.jslib b/Assets/Thirdweb/Core/Plugin/thirdweb.jslib new file mode 100644 index 00000000..551ab22b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugin/thirdweb.jslib @@ -0,0 +1,510 @@ +var plugin = { + ThirdwebInvoke: function (taskId, route, payload, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .invoke(UTF8ToString(route), UTF8ToString(payload)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + // callback into unity + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + console.error("ThirdwebSDK invoke error", err); + var msg = err.reason || err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebInvokeListener: function (taskId, route, payload, action) { + // execute bridge call + window.bridge.invokeListener( + UTF8ToString(taskId), + UTF8ToString(route), + UTF8ToString(payload), + action, + (jsAction, jsTaskId, jsResult) => { + // Handle Task ID + var jsId = jsTaskId; + var jsIdSize = lengthBytesUTF8(jsId) + 1; + var jsIdBuffer = _malloc(jsIdSize); + stringToUTF8(jsId, jsIdBuffer, jsIdSize); + + // Handle Result + var jsRes = jsResult; + var jsResSize = lengthBytesUTF8(jsRes) + 1; + var jsResBuffer = _malloc(jsResSize); + stringToUTF8(jsRes, jsResBuffer, jsResSize); + + dynCall_vii(jsAction, jsIdBuffer, jsResBuffer); + } + ); + }, + ThirdwebInitialize: function (chain, options) { + window.bridge.initialize(UTF8ToString(chain), UTF8ToString(options)); + }, + ThirdwebConnect: function ( + taskId, + wallet, + chainId, + password, + email, + personalWallet, + authOptions, + smartWalletAccountOverride, + cb + ) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .connect( + UTF8ToString(wallet), + UTF8ToString(chainId), + UTF8ToString(password), + UTF8ToString(email), + UTF8ToString(personalWallet), + UTF8ToString(authOptions), + UTF8ToString(smartWalletAccountOverride) + ) + .then((address) => { + if (address) { + var bufferSize = lengthBytesUTF8(address) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(address, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + } else { + dynCall_viii(cb, idPtr, null, null); + } + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSwitchNetwork: async function (taskId, chainId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .switchNetwork(UTF8ToString(chainId)) + .then(() => { + dynCall_viii(cb, idPtr, null, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebDisconnect: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .disconnect() + .then(() => { + dynCall_viii(cb, idPtr, idPtr, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebFundWallet: async function (taskId, payload, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .fundWallet(UTF8ToString(payload)) + .then(() => { + dynCall_viii(cb, idPtr, idPtr, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebExportWallet: async function (taskId, password, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .exportWallet(UTF8ToString(password)) + .then((encryptedJson) => { + if (encryptedJson) { + var bufferSize = lengthBytesUTF8(encryptedJson) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(encryptedJson, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + } else { + dynCall_viii(cb, idPtr, null, null); + } + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletAddAdmin: async function (taskId, admin, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletAddAdmin(UTF8ToString(admin)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletRemoveAdmin: async function (taskId, admin, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletRemoveAdmin(UTF8ToString(admin)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletCreateSessionKey: async function (taskId, options, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletCreateSessionKey(UTF8ToString(options)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletRevokeSessionKey: async function (taskId, signer, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletRevokeSessionKey(UTF8ToString(signer)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletGetAllActiveSigners: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletGetAllActiveSigners() + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebWaitForTransactionResult: async function (taskId, txHash, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .waitForTransactionResult(UTF8ToString(txHash)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebGetLatestBlockNumber: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .getLatestBlockNumber() + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebGetBlock: async function (taskId, blockNumber, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .getBlock(UTF8ToString(blockNumber)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebGetBlockWithTransactions: async function (taskId, blockNumber, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .getBlockWithTransactions(UTF8ToString(blockNumber)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebGetEmail: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .getEmail() + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebGetSignerAddress: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .getSignerAddress() + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebSmartWalletIsDeployed: async function (taskId, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .smartWalletIsDeployed() + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebResolveENSFromAddress: async function (taskId, address, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .resolveENSFromAddress(UTF8ToString(address)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, + ThirdwebResolveAddressFromENS: async function (taskId, ens, cb) { + // convert taskId from pointer to str and allocate it to keep in memory + var id = UTF8ToString(taskId); + var idSize = lengthBytesUTF8(id) + 1; + var idPtr = _malloc(idSize); + stringToUTF8(id, idPtr, idSize); + // execute bridge call + window.bridge + .resolveAddressFromENS(UTF8ToString(ens)) + .then((returnStr) => { + var bufferSize = lengthBytesUTF8(returnStr) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + dynCall_viii(cb, idPtr, buffer, null); + }) + .catch((err) => { + var msg = err.message; + var bufferSize = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(msg, buffer, bufferSize); + dynCall_viii(cb, idPtr, null, buffer); + }); + }, +}; + +mergeInto(LibraryManager.library, plugin); diff --git a/Assets/Thirdweb/Core/Plugin/thirdweb.jslib.meta b/Assets/Thirdweb/Core/Plugin/thirdweb.jslib.meta new file mode 100644 index 00000000..432b0da1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugin/thirdweb.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 141fd213918384e53871dd82c3e1797f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins.meta b/Assets/Thirdweb/Core/Plugins.meta new file mode 100644 index 00000000..0f88cf2f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: af0acc59a33f3874baa692f0fc9dc0fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/BouncyCastle.meta b/Assets/Thirdweb/Core/Plugins/BouncyCastle.meta new file mode 100644 index 00000000..9977c908 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/BouncyCastle.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c84d1b11408a4304199b98a677c53a90 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll b/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll new file mode 100644 index 00000000..b811138f Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll.meta b/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll.meta new file mode 100644 index 00000000..a6310681 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/BouncyCastle/BouncyCastle.Crypto.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: aabaf998ca8374871bc80db6a519ed39 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet.meta new file mode 100644 index 00000000..90d40cdf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93c14500b7d8806409b6ac676cf75882 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll new file mode 100644 index 00000000..8f3f8050 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll.meta new file mode 100644 index 00000000..4992aa2c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentity.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 79d53fa9671bcf9439da1e5276c0d703 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll new file mode 100644 index 00000000..de118fbf Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll.meta new file mode 100644 index 00000000..cd5bac29 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.CognitoIdentityProvider.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 60d9984dafaaede43927337e462891c2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll new file mode 100644 index 00000000..b83a1f4f Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll.meta new file mode 100644 index 00000000..ede74c64 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Core.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 1bd95a5cd8aed194b82a6da229e6df2a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll new file mode 100644 index 00000000..2f3147c9 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll.meta new file mode 100644 index 00000000..90546e7f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.Lambda.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 9c890505874431c488e4615a8b1a7928 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll new file mode 100644 index 00000000..d196b0d7 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll.meta new file mode 100644 index 00000000..eba3595f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/AWSSDK.SecurityToken.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 90c65d017907646429d5d62b163131a3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll new file mode 100644 index 00000000..852494e4 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll.meta new file mode 100644 index 00000000..fd5ba35c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/Amazon.Extensions.CognitoAuthentication.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 780202c7ab4192241bf2875c3aa15c93 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll new file mode 100644 index 00000000..c8fbdb18 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll.meta b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll.meta new file mode 100644 index 00000000..be3bb220 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/EmbeddedWallet/embedded-wallet.dll.meta @@ -0,0 +1,87 @@ +fileFormatVersion: 2 +guid: 76df54b45ff894045863fcf4def49f43 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager.meta new file mode 100644 index 00000000..bf85c281 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07bfe0a006c38014787c7ade2278fb37 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor.meta new file mode 100644 index 00000000..ae85b944 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f47be74bb31c83940a0dd6cd7e934086 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175.meta new file mode 100644 index 00000000..a5b8a8f3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c8a6a088bfa063458c4f4705fe9775c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll new file mode 100644 index 00000000..ab6ee50d Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll.meta new file mode 100644 index 00000000..e9646faf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 8b333f9c2c3c4d5c94788fa0722edc5c +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll +- gvhp_targets-editor +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll new file mode 100644 index 00000000..ea2c12d5 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll.meta new file mode 100644 index 00000000..ea364010 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: af3ced639768447f9ece45f038c5ee35 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll +- gvhp_targets-editor +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll new file mode 100644 index 00000000..d182cc9f Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll.meta new file mode 100644 index 00000000..394a87e0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 64763f5d36d84f789a31f8dbcc26cac9 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll +- gvhp_targets-editor +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll new file mode 100644 index 00000000..c1b45c3d Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll.meta new file mode 100644 index 00000000..5a1372aa --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 9e005ad5be4449918b55dae042a3b4b0 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll +- gvhp_targets-editor +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md new file mode 100644 index 00000000..70769778 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md @@ -0,0 +1,1374 @@ +# Version 1.2.175 - Nov 16, 2022 +* General - Added tvOS podfile support to the iOS resolver. + +# Version 1.2.174 - Oct 06, 2022 +* General - Added tvOS support to the iOS resolver. +* General - Fixed #484 - Changed `EditorMeasurement` to use secure connection. +* Android Resolver - Fixed Android Resolver unable to resolve + `mainTemplate.gradle` in Unity `2022.2+` or `2023.1+`. + +# Version 1.2.173 - Sep 28, 2022 +* General - Added tvOS library support to the export unity package scripts. + +# Version 1.2.172 - Jun 23, 2022 +* iOS Resolver - Stop forcing `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` to `YES`, + which seems to cause problem for some when submitting apps. See #526 for more + information. + +# Version 1.2.171 - May 11, 2022 +* iOS Resolver - Change `Enable Swift Framework Support Workaround` setting to + be `ON` by default since more pods are using Swift Framework now. + +# Version 1.2.170 - Apr 4, 2022 +* Android Resolver - Fixes #498 - Fix the path separator of the Maven repo + injected to `mainTemplate.gradle`. +* iOS Resolver - Fixes #470 - Switch default Cocoapods master repo from Github + to CDN. +* iOS Resolver - `Link Framework Statically` setting is now default to `true`. + That is, `use_frameworks! :linkage => static` will be added to `Podfile` by + default instead of `use_frameworks!`. This can be changed in iOS Resolver + settings. This fixes odd behaviors when pods include static libraries, ex. + Firebase Analytics. +* iOS Resolver - Added a workaround when app crashes on launch due to + `Library not loaded: @rpath/libswiftCore.dylib` when some pods includes Swift + framework. This is turned `OFF` by default and can be changed in iOS Resolver + settings. + +# Version 1.2.169 - Jan 20, 2022 +* General - Fixes #425 - Change to save `GvhProjectSettings.xml` without + Unicode byte order mark (BoM). +* Android Resolver - Remove reference to `jcenter()` +* iOS Resolver - Force setting `LANG` when executing Cocoapods in shell mode on + Mac. + +# Version 1.2.168 - Dec 9, 2021 +* All - Fixes #472 by removing the use of `System.Diagnostics.Debug.Assert` +* All - Fixed #477 by properly enabling EDM4U libraries for Unity 2021.2+ when + the package is installed through `.tgz` + +# Version 1.2.167 - Oct 6, 2021 +* All - Moved versioned `.dll` in EDM4U to a versioned folder and remove their + version postfix in their filename. For instance, `IOSResolver.dll` will be + placed at `ExternalDependencyManager/Editor/1.2.167/Google.IOSResolver.dll`. +* Android Resolver - Fixed #243 by only using the highest version in + `mainTemplate.gradle` when duplicated dependencies are presented. +* Android Resolver - Added supports to x86_64 to ABI list for Android apps on + Chrome OS. + +# Version 1.2.166 - Jun 30, 2021 +* All - Fixed #440 and fixed #447 by specifying the parameter type while calling + `GetApplicationIdentifier()` Unity API using reflection, due to a new + overloaded method introduced in Unity 2021.2. +* Android Resolver - Fixed #442 by patching `Dependency.IsGreater()` when the + version strings end '+'. + +# Version 1.2.165 - Apr 28, 2021 +## Bug Fixes +* Version Handler - Fixed #431 by replacing the use of `HttpUtility.UrlEncode()` + which causes NullReferenceException in certain version of Unity. +* Android Resolver - Check that androidSdkRootPath directory exists before using + as sdkPath. +* Android Resolver - Fixed Android Resolver integration tests with Unity + 2019.3+. + +# Version 1.2.164 - Feb 4, 2021 +## New Features +* Android Resolver - Added support for Android packages with classifier in their + namespaces. +* iOS Resolver - Added new settings in iOS Resolver to configure generated + Podfile. +* iOS Resolver - Added a new attribute `addToAllTargets` in Dependencies.xml. + +## Bug Fixes +* iOS Resolver - Fixed XML parsing for `bitcodeEnabled` attribute in + Dependencies.xml. + +# Version 1.2.163 - Dec 15, 2020 +## Bug Fixes +* Version Handler - Fixed measurement reporting + +# Version 1.2.162 - Nov 19, 2020 +## Bug Fixes +* Version Handler - Improved #413 by preventing Version Handler from running + from static constructor when it is disabled. +* Package Manager Resolver - Remove GPR + +# Version 1.2.161 - Oct 12, 2020 +## Bug Fixes +* Android Resolver - Fixed the issue that Android Resolver does not resolve + again before build in Unity 2020 if it failed to resolve previously. + +# Version 1.2.160 - Sep 30, 2020 +## Bug Fixes +* Android Resolver - Fixed a regression that gradleResolver can be null until + Initialize() is called. +* Android Resolver - Fixed a regression that Android Resolver failed in Unity + 2019.3+ due to `gradleTemplate.properties` not enabled when + `mainTemplate.gradle` is not enabled at all. + +# Version 1.2.159 - Sep 11, 2020 +## Bug Fixes +* Android Resolver - Fixed #322 where the Unity editor will lose its target SDK + setting between Unity restarts if `>28` is selected in 2019. This is due to + Unity AndroidSdkVersions enum does not contain values above 28. +* Android Resolver - Fixed #360 where building Android app with Untiy 2019.3+ + may fail due to Jetifier and AndroidX not enabled properly in generated + Gradle project. This fix requires the user to enable + `Custom Gradle Properties Template` found under + `Player Settings > Settings for Android > Publishing Settings`. + +# Version 1.2.158 - Sep 3, 2020 +## Bug Fixes +* Version Handler: Fixed editor freeze when `-executeMethod` is used in + non-batch mode. +* Android Resolver: Normalized file paths when generating local Maven repo + since the path may contains a mix of forward and backward slash on Windows. +* Export Unity Package: Fixed generation of .unitypackage with tarfile on + Windows. + +# Version 1.2.157 - Aug 6, 2020 +## Bug Fixes +* Android Resolver: Delay initialization until active build target is Android + and the editor is not in play mode. +* iOS Resolver: Delay initialization until active build target is iOS + and the editor is not in play mode. +* Export Unity Package: Workaround directory creation racy if multiple export + operations are spawned at the same time. + +# Version 1.2.156 - June 10, 2020 +## Bug Fixes +* Android Resolver: Fixed that the generated local repo assets contains + redundent labels which are causing Version Handler to failed while + uninstalling packages. +* Android Resolver: Fixed that the repo url injected into mainTemplate.gradle + is incorrect when Unity is configured to export gradle project. +* Android Resolver: Limited to only create local Maven repo when the source + repo contains ".srcaar" file. + +## Changes +* All: Described EDM4U analytics data usage in readme. + +# Version 1.2.155 - May 14, 2020 +## Bug Fixes +* All: Fixed compiler error when build with Unity 5.4 or below due to the + usage of Rect.zero. +* All: Ignore cases when checking command line arguments. + +# Version 1.2.154 - May 14, 2020 +## Bug Fixes +* All: Make each MultiSelectWindow for different purposes to have its own + unique window. + +## Changes +* All: Replace all dialog with DialogWindow which is implemented from + EditorWindow. +* Package Manager Resolver: Clarify how manifest.json will be changed in Package + Manager Resolver window. + +# Version 1.2.153 - Apr 24, 2020 +## Bug Fixes +* Android Resolver: Fixed an exception when repainting the Android resolution + window in Unity 2019.3.x. + +# Version 1.2.152 - Apr 17, 2020 +## Bug Fixes +* Version Handler: Fixed exception when waiting for enabled editor DLLs to + load. +* Android Resolver: Fixed regression when using a Custom Gradle Template + on Windows. + +# Version 1.2.151 - Apr 16, 2020 +## Bug Fixes +* Version Handler: When waiting for newly enabled editor DLLs to load, ignore + all DLLs that do not have a file-system location. +* Android Resolver: Fixed resolution when using a Custom Gradle Template with + libraries stored in a local maven repository distributed with a plugin + installed with the Unity Package Manager. + +# Version 1.2.150 - Apr 9, 2020 +## Bug Fixes +* All: The new packaging script when run on MacOS was generating a + .unitypackage archive that could not be read by Unity on Windows. + This release simply repackages the plugin with tar/gzip to fix the problem. + +# Version 1.2.149 - Apr 8, 2020 +## Bug Fixes +* Package Manager Resolver: Fixed spurious error message when resuming + migration after installing a UPM package. + +# Version 1.2.148 - Apr 8, 2020 +## Bug Fixes +* Package Manager Resolver: Fixed an exception when resuming migration + after installing a UPM package. + +# Version 1.2.147 - Apr 8, 2020 +## Bug Fixes +* Version Handler: Fixed alias traversal bug which caused problems when + migrating from installed .unitypackage files to UPM packages. + +# Version 1.2.146 - Apr 8, 2020 +## Bug Fixes +* Version Handler: Fixed exception in manifest parsing when a manifest is + detected with no aliases. + +# Version 1.2.145 - Apr 2, 2020 +## New Features +* Package Manager Resolver: Added a method to migrate Version Handler + managed packages installed via `.unitypackage` to Unity Package Manager + packages. This is initially used to migrate the External Dependency Manager + to UPM. + +## Changes +* All: Verbose logging is now no longer automatically enabled in batch mode + across all components. Instead logging can be configured using each + component's verbose logging setting or by using the `-gvh_log_debug` command + line flag when starting Unity. +* Version Handler: Sped up version handler updates when the app domain isn't + reloaded. + +## Bug Fixes +* Version Handler: Fixed the display of the obsolete files clean up dialog + when the asset database refreshes. +* Version Handler: Improved reliability of callback from + the VersionHandler.UpdateCompleteMethods event when an asset database + refresh occurs. +* Version Handler: Fixed duplicate exportPath labels when 'Assets/' is the + root of paths assigned to files. +* Version Handler: Handle empty lines in manifest files. + +# Version 1.2.144 - Mar 23, 2020 +## Changed +* iOS Resolver: Removed the ability to configure the Xcode target a Cocoapod + is added to. + +## Bug Fixes +* iOS Resolver: Reverted support for adding Cocoapods to multiple targets as + it caused a regression (exception thrown during post-build step) in some + versions of Unity. + +# Version 1.2.143 - Mar 20, 2020 +## Bug Fixes +* Android Resolver: Fixed caching of resolution state which was causing + the resolver to always run when no dependencies had changed. + +# Version 1.2.142 - Mar 19, 2020 +## Changes +* Package Manager Resolver: Enabled auto-add by default. + +# Version 1.2.141 - Mar 19, 2020 +## Bug Fixes +* Fixed a bug when retrieving project settings. If a plugin was configured + to fetch project settings, if a setting was fetched (e.g "foo") and this + setting existed in the system settings but not the project settings the + system value would override the default value leading to unexpected + behavior. +* Fixed a warning when caching web request classes in Unity 5.6. + +# Version 1.2.140 - Mar 19, 2020 +## Bug Fixes +* Fixed measurement reporting in Unity 5.x. +* Version Handler: Fixed NullReferenceException when an asset doesn't have + an AssetImporter. + +# Version 1.2.139 - Mar 18, 2020 +## Changed +* Added documentation to the built plugin. + +# Version 1.2.138 - Mar 17, 2020 +## New Features +* Package Manager Resolver: Added the Package Manager Resolver + component that allows developers to easily boostrap Unity Package Manager + (UPM) registry addition using unitypackage plugins. +* Version Handler: Added a window that allows plugins to managed by the + Version Handler to be uninstalled. +* Version Handler: Added support for displaying installed plugins. +* Version Handler: Added support for moving files in plugins to their install + locations (if the plugin has been configured to support this). +* iOS Resolver: Added the ability to configure the Xcode target a Cocoapod is + added to. + +## Bug Fixes +* Fixed upgrade from version 1.2.137 and below after the plugin rename to + EDM4U broke the upgrade process. +* Android Resolver: Worked around PlayerSettings.Android.targetSdkVersion + returning empty names for some values in 2019.x. +* Version Handler: Fixed the display of the obsolete files clean up window. +* Version Handler: Fixed managed file check when assets are modified in the + project after plugin import. + +# Version 1.2.137 - Mar 6, 2020 +## Changed +* Renamed package to External Package Manager for Unity (EDM4U). + We changed this to reflect what this plugin is doing today which is far more + than the original scope which just consisted of importing jar files from the + Android SDK maven repository. + Scripts that used to pull `play-services-resolver*.unitypackage` will now have + to request `external-dependency-manager*.unitypackage` instead. + We'll still be shipping a `play-services-resolver*_manifest.txt` file to + handle upgrading from older versions of the plugin. + +## New Features +* All Components: Added reporting of usage so that we can remotely detect + errors and target improvements. +* Android Resolver: Added support for *Dependencies.xml files in Unity Package + Manager packages. +* iOS Resolver: Added support for *Dependencies.xml files in Unity Package + Manager packages. + +## Bug Fixes +* Version Handler: Disabled attempts to disable asset metadata modification + when assets are in a Unity Package Manager managed package. + +# Version 1.2.136 - Feb 19, 2019 +## Bug Fixes +* Android Resolver: Fixed OpenJDK path discovery in Unity 2019.3.1. + +# Version 1.2.135 - Dec 5, 2019 +## Bug Fixes +* All Components: Fixed stack overflow when loading project settings. + +# Version 1.2.134 - Dec 4, 2019 +## Bug Fixes +* All Components: Fixed an issue which caused project settings to be cleared + when running in batch mode. + +# Version 1.2.133 - Nov 18, 2019 +## Bug Fixes +* All Components: Failure to save project settings will now report an error + to the log rather than throwing an exception. + +# Version 1.2.132 - Nov 11, 2019 +## Bug Fixes +* Android Resolver: Worked around expansion of DIR_UNITYPROJECT on Windows + breaking Gradle builds when used as part of a file URI. +* Android Resolver: mainTemplate.gradle is only written if it needs to be + modified. + +# Version 1.2.131 - Oct 29, 2019 +## Bug Fixes +* Version Handler: Improved execution of events on the main thread in batch + mode. +* Version Handler: Improved log level configuration at startup. +* Version Handler: Improved performance of class lookup in deferred method + calls. +* Version Handler: Fixed rename to enable / disable for editor assets. +* iOS Resolver: Improved log level configuration at startup. +* Android Resolver: Improved local maven repo path reference in + mainTemplate.gradle using DIR_UNITYPROJECT. DIR_UNITYPROJECT by Unity + to point to the local filesystem path of the Unity project when Unity + generates the Gradle project. + +# Version 1.2.130 - Oct 23, 2019 +## New Features +* iOS Resolver: Added support for modifying the Podfile before `pod install` + is executed. + +## Bug Fixes +* Version Handler: Fixed invalid classname error when calling + `VersionHandler.UpdateVersionedAssets()`. + +# Version 1.2.129 - Oct 2, 2019 +## Bug Fixes +* iOS Resolver: Changed Cocoapod integration in Unity 2019.3+ to + only add Pods to the UnityFramework target. + +# Version 1.2.128 - Oct 1, 2019 +## Bug Fixes +* iOS Resolver: Fixed Cocoapod project integration mode with Unity + 2019.3+. + +# Version 1.2.127 - Sep 30, 2019 +## Changes +* Android Resolver: All Android Resolver settings File paths are now + serialized with POSIX directory separators. + +# Version 1.2.126 - Sep 27, 2019 +## Changes +* Android Resolver: File paths are now serialized with POSIX directory + separators. +## Bug Fixes +* Android Resolver: Fixed resolution when the parent directory of a Unity + project contains a Gradle project (i.e `settings.gradle` file). + +# Version 1.2.125 - Sep 23, 2019 +## Bug Fixes +* All components: Silenced a warning about not being able to set the console + encoding to UTF8. +* Android Resolver: Worked around broken AndroidSDKTools class in some + versions of Unity. +* iOS Resolver: Fixed iOS target SDK version check +* Version Handler: Changed clean up obsolete files window so that it doesn't + exceed the screen size. + +# Version 1.2.124 - Jul 28, 2019 +## Bug Fixes +* All components: Fixed regression with source control integration when using + Unity 2019.1+. + +# Version 1.2.123 - Jul 23, 2019 +## New Features +* All components: Source control integration for project settings. +## Changes +* Android Resolver: Removed AAR cache as it now makes little difference to + incremental resolution performance. +* Android Resolver: Improved embedded resource management so that embedded + resources should upgrade when the plugin is updated without restarting + the Unity editor. +## Bug Fixes +* Version Handler: Fixed InvokeMethod() and InvokeStaticMethod() when calling + methods that have interface typed arguments. + +# Version 1.2.122 - Jul 2, 2019 +## Bug Fixes +* iOS Resolver: Worked around Unity not loading the iOS Resolver DLL as it + referenced the Xcode extension in a public interface. The iOS Resolver + DLL still references the Xcode extension internally and just handles + missing type exceptions dynamically. + +# Version 1.2.121 - Jun 27, 2019 +## Bug Fixes +* Android Resolver: Fixed warning about missing Packages folder when loading + XML dependencies files in versions of Unity without the package manager. +* Android Resolver: Fixed resolution window progress bar exceeding 100%. +* Android Resolver: If AndroidX is detected in the set of resolved libraries, + the user will be prompted to enable the Jetifier. +* Android Resolver: Improved text splitting in text area windows. +* iOS Resolver: Added support for Unity's breaking changes to the Xcode API + in 2019.3.+. Cocoapods are now added to build targets, Unity-iPhone and + UnityFramework in Unity 2019.3+. + +# Version 1.2.120 - Jun 26, 2019 +## New Features +* Android Resolver: Added support for loading *Dependencies.xml files from + Unity Package Manager packages. +* Android Resolver: Resolution window is now closed if resolution runs as + a pre-build step. +* iOS Resolver: Added support for loading *Dependencies.xml files from + Unity Package Manager packages. +## Bug Fixes +* Android Resolver: Fixed generation of relative repo paths when using + mainTemplate.gradle resolver. +* Android Resolver: Fixed copy of .srcaar to .aar files in repos embedded in a + project when a project path has characters (e.g whitespace) that are escaped + during conversion to URIs. +* Android Resolver: Fixed auto-resolution always running if the Android SDK + is managed by Unity Hub. + +# Version 1.2.119 - Jun 19, 2019 +## Bug Fixes +* Android Resolver: Fixed error reported when using Jetifier integration + in Unity 2018+ if the target SDK is set to "highest installed". + +# Version 1.2.118 - Jun 18, 2019 +## New Features +* Android Resolver: Added initial + [Jetifier](https://developer.android.com/studio/command-line/jetifier) + integration which simplifies + [migration](ttps://developer.android.com/jetpack/androidx/migrate) + to Jetpack ([AndroidX](https://developer.android.com/jetpack/androidx)) + libraries in cases where all dependencies are managed by the Android + Resolver. + This can be enabled via the `Use Jetifier` option in the + `Assets > Play Services Resolver > Android Resolver > Settings` menu. + Caveats: + - If your project contains legacy Android Support Library .jar and .aar + files, these files will need to be removed and replaced with references to + artifacts on Maven via `*Dependencies.xml` files so that the Jetifier + can map them to Jetpack (AndroidX) libraries. + For example, remove the file `support-v4-27.0.2.jar` and replace it with + `` in a + `*Dependencies.xml` file. + - If your project contains .jar or .aar files that use the legacy Android + Support Libraries, these will need to be moved into a local Maven repo + [See this guide](https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html) + and then these files should be removed from your Unity project and instead + referenced via `*Dependencies.xml` files so that the Jetifier can + patch them to reference the Jetpack lirbaries. + +## Bug Fixes +* Android Resolver: Disabled version locking of com.android.support:multidex + does not use the same versioning scheme as other legacy Android support + libraries. +* Version Handler: Made Google.VersionHandler.dll's asset GUID stable across + releases. This faciliates error-free import into projects where + Google.VersionHandler.dll is moved from the default install location. + +# Version 1.2.117 - Jun 12, 2019 +## Bug Fixes +* Android Resolver: Fix copying of .srcaar to .aar files for + mainTemplate.gradle resolution. PluginImporter configuration was previously + not being applied to .aar files unless the Unity project was saved. + +# Version 1.2.116 - Jun 7, 2019 +## Bug Fixes +* Android Resolver: Fixed resolution of Android dependencies without version + specifiers. +* Android Resolver: Fixed Maven repo not found warning in Android Resolver. +* Android Resolver: Fixed Android Player directory not found exception in + Unity 2019.x when the Android Player isn't installed. + +# Version 1.2.115 - May 28, 2019 +## Bug Fixes +* Android Resolver: Fixed exception due to Unity 2019.3.0a4 removing + x86 from the set of supported ABIs. + +# Version 1.2.114 - May 27, 2019 +## New Features +* Android Resolver: Added support for ABI stripping when using + mainTemplate.gradle. This only works with AARs stored in repos + on the local filesystem. + +# Version 1.2.113 - May 24, 2019 +## New Features +* Android Resolver: If local repos are moved, the plugin will search the + project for matching directories in an attempt to correct the error. +* Version Handler: Files can be now targeted to multiple build targets + using multiple "gvh_" asset labels. +## Bug Fixes +* Android Resolver: "implementation" or "compile" are now added correctly + to mainTemplate.gradle in Unity versions prior to 2019. + +# Version 1.2.112 - May 22, 2019 +## New Features +* Android Resolver: Added option to disable addition of dependencies to + mainTemplate.gradle. + See `Assets > Play Services Resolver > Android Resolver > Settings`. +* Android Resolver: Made paths to local maven repositories in + mainTemplate.gradle relative to the Unity project when a project is not + being exported. +## Bug Fixes +* Android Resolver: Fixed builds with mainTemplate.gradle integration in + Unity 2019. +* Android Resolver: Changed dependency inclusion in mainTemplate.gradle to + use "implementation" or "compile" depending upon the version of Gradle + included with Unity. +* Android Resolver: Gracefully handled exceptions if the console encoding + can't be modified. +* Android Resolver: Now gracefully fails if the AndroidPlayer directory + can't be found. + +# Version 1.2.111 - May 9, 2019 +## Bug Fixes +* Version Handler: Fixed invocation of methods with named arguments. +* Version Handler: Fixed occasional hang when the editor is compiling + while activating plugins. + +# Version 1.2.110 - May 7, 2019 +## Bug Fixes +* Android Resolver: Fixed inclusion of some srcaar artifacts in builds with + Gradle builds when using mainTemplate.gradle. + +# Version 1.2.109 - May 6, 2019 +## New Features: +* Added links to documentation from menu. +* Android Resolver: Added option to auto-resolve Android libraries on build. +* Android Resolver: Added support for packaging specs of Android libraries. +* Android Resolver: Pop up a window when displaying Android dependencies. + +## Bug Fixes +* Android Resolver: Support for Unity 2019 Android SDK and JDK install locations +* Android Resolver: e-enable AAR explosion if internal builds are enabled. +* Android Resolver: Gracefully handle exceptions on file deletion. +* Android Resolver: Fixed Android Resolver log spam on load. +* Android Resolver: Fixed save of Android Resolver PromptBeforeAutoResolution + setting. +* Android Resolver: Fixed AAR processing failure when an AAR without + classes.jar is found. +* Android Resolver: Removed use of EditorUtility.DisplayProgressBar which + was occasionally left displayed when resolution had completed. +* Version Handler: Fixed asset rename to disable when a disabled file exists. + +# Version 1.2.108 - May 3, 2019 +## Bug Fixes: +* Version Handler: Fixed occasional hang on startup. + +# Version 1.2.107 - May 3, 2019 +## New Features: +* Version Handler: Added support for enabling / disabling assets that do not + support the PluginImporter, based upon build target selection. +* Android Resolver: Added support for the global specification of maven repos. +* iOS Resolver: Added support for the global specification of Cocoapod sources. + +# Version 1.2.106 - May 1, 2019 +## New Features +* iOS Resolver: Added support for development pods in Xcode project integration + mode. +* iOS Resolver: Added support for source pods with resources in Xcode project + integration mode. + +# Version 1.2.105 - Apr 30, 2019 +## Bug fixes +* Android Resolver: Fixed reference to Java tool path in logs. +* Android and iOS Resolvers: Changed command line execution to emit a warning + rather than throwing an exception and failing, when it is not possible to + change the console input and output encoding to UTF-8. +* Android Resolver: Added menu option and API to delete resolved libraries. +* Android Resolver: Added menu option and API to log the repos and libraries + currently included in the project. +* Android Resolver: If Plugins/Android/mainTemplate.gradle file is present and + Gradle is selected as the build type, resolution will simply patch the file + with Android dependencies specified by plugins in the project. + +# Version 1.2.104 - Apr 10, 2019 +## Bug Fixes +* Android Resolver: Changed Android ABI selection method from using whitelisted + Unity versions to type availability. This fixes an exception on resolution + in some versions of Unity 2017.4. + +# Version 1.2.103 - Apr 2, 2019 +## Bug Fixes +* Android Resolver: Whitelisted Unity 2017.4 and above with ARM64 support. +* Android Resolver: Fixed Java version check to work with Java SE 12 and above. + +# Version 1.2.102 - Feb 13, 2019 +## Bug Fixes +* Android Resolver: Fixed the text overflow on the Android Resolver + prompt before initial run to fit inside the buttons for + smaller screens. + +# Version 1.2.101 - Feb 12, 2019 +## New Features +* Android Resolver: Prompt the user before the resolver runs for the + first time and allow the user to elect to disable from the prompt. +* Android Resolver: Change popup warning when resolver is disabled + to be a console warning. + +# Version 1.2.100 - Jan 25, 2019 +## Bug Fixes +* Android Resolver: Fixed AAR processing sometimes failing on Windows + due to file permissions. + +# Version 1.2.99 - Jan 23, 2019 +## Bug Fixes +* Android Resolver: Improved performance of project property polling. +* Version Handler: Fixed callback of VersionHandler.UpdateCompleteMethods + when the update process is complete. + +# Version 1.2.98 - Jan 9, 2019 +## New Features +* iOS Resolver: Pod declaration properties can now be set via XML pod + references. For example, this can enable pods for a subset of build + configurations. +## Bug Fixes +* iOS Resolver: Fixed incremental builds after local pods support caused + regression in 1.2.96. + +# Version 1.2.97 - Dec 17, 2018 +## Bug Fixes +* Android Resolver: Reduced memory allocation for logic that monitors build + settings when auto-resolution is enabled. If auto-resolution is disabled, + almost all build settings are no longer polled for changes. + +# Version 1.2.96 - Dec 17, 2018 +## Bug Fixes +* Android Resolver: Fixed repacking of AARs to exclude .meta files. +* Android Resolver: Only perform auto-resolution on the first scene while + building. +* Android Resolver: Fixed parsing of version ranges that include whitespace. +* iOS Resolver: Added support for local development pods. +* Version Handler: Fixed Version Handler failing to rename some files. + +# Version 1.2.95 - Oct 23, 2018 +## Bug Fixes: +* Android Resolver: Fixed auto-resolution running in a loop in some scenarios. + +# Version 1.2.94 - Oct 22, 2018 +## Bug Fixes +* iOS Resolver: Added support for PODS_TARGET_SRCROOT in source Cocoapods. + +# Version 1.2.93 - Oct 22, 2018 +## Bug Fixes +* Android Resolver: Fixed removal of Android libraries on auto-resolution when + `*Dependencies.xml` files are deleted. + +# Version 1.2.92 - Oct 2, 2018 +## Bug Fixes +* Android Resolver: Worked around auto-resolution hang on Windows if + resolution starts before compilation is finished. + +# Version 1.2.91 - Sep 27, 2018 +## Bug Fixes +* Android Resolver: Fixed Android Resolution when the selected build target + isn't Android. +* Added C# assembly symbols the plugin to simplify debugging bug reports. + +# Version 1.2.90 - Sep 21, 2018 +## Bug Fixes +* Android Resolver: Fixed transitive dependency selection of version locked + packages. + +# Version 1.2.89 - Aug 31, 2018 +## Bug Fixes +* Fixed FileLoadException in ResolveUnityEditoriOSXcodeExtension an assembly + can't be loaded. + +# Version 1.2.88 - Aug 29, 2018 +## Changed +* Improved reporting of resolution attempts and conflicts found in the Android + Resolver. +## Bug Fixes +* iOS Resolver now correctly handles sample code in CocoaPods. Previously it + would add all sample code to the project when using project level + integration. +* Android Resolver now correctly handles Gradle conflict resolution when the + resolution results in a package that is compatible with all requested + dependencies. + +# Version 1.2.87 - Aug 23, 2018 +## Bug Fixes +* Fixed Android Resolver "Processing AARs" dialog getting stuck in Unity 5.6. + +# Version 1.2.86 - Aug 22, 2018 +## Bug Fixes +* Fixed Android Resolver exception in OnPostProcessScene() when the Android + platform isn't selected. + +# Version 1.2.85 - Aug 17, 2018 +## Changes +* Added support for synchronous resolution in the Android Resolver. + PlayServicesResolver.ResolveSync() now performs resolution synchronously. +* Auto-resolution in the Android Resolver now results in synchronous resolution + of Android dependencies before the Android application build starts via + UnityEditor.Callbacks.PostProcessSceneAttribute. + +# Version 1.2.84 - Aug 16, 2018 +## Bug Fixes +* Fixed Android Resolver crash when the AndroidResolverDependencies.xml + file can't be written. +* Reduced log spam when a conflicting Android library is pinned to a + specific version. + +# Version 1.2.83 - Aug 15, 2018 +## Bug Fixes +* Fixed Android Resolver failures due to an in-accessible AAR / JAR explode + cache file. If the cache can't be read / written the resolver now continues + with reduced performance following recompilation / DLL reloads. +* Fixed incorrect version number in plugin manifest on install. + This was a minor issue since the version handler rewrote the metadata + after installation. + +# Version 1.2.82 - Aug 14, 2018 +## Changed +* Added support for alphanumeric versions in the Android Resolver. + +## Bug Fixes +* Fixed Android Resolver selection of latest duplicated library. +* Fixed Android Resolver conflict resolution when version locked and non-version + locked dependencies are specified. +* Fixed Android Resolver conflict resolution when non-existent artifacts are + referenced. + +# Version 1.2.81 - Aug 9, 2018 +## Bug Fixes +* Fixed editor error that would occur when when + `PlayerSettings.Android.targetArchitectures` was set to + `AndroidArchitecture.All`. + +# Version 1.2.80 - Jul 24, 2018 +## Bug Fixes +* Fixed project level settings incorrectly falling back to system wide settings + when default property values were set. + +# Version 1.2.79 - Jul 23, 2018 +## Bug Fixes +* Fixed AndroidManifest.xml patching on Android Resolver load in Unity 2018.x. + +# Version 1.2.78 - Jul 19, 2018 +## Changed +* Added support for overriding conflicting dependencies. + +# Version 1.2.77 - Jul 19, 2018 +## Changed +* Android Resolver now supports Unity's 2018 ABI filter (i.e arm64-v8a). +* Reduced Android Resolver build option polling frequency. +* Disabled Android Resolver auto-resolution in batch mode. Users now need + to explicitly kick off resolution through the API. +* All Android Resolver and Version Handler dialogs are now disabled in batch + mode. +* Verbose logging for all plugins is now enabled by default in batch mode. +* Version Handler bootstrapper has been improved to no longer call + UpdateComplete multiple times. However, since Unity can still reload the + app domain after plugins have been enabled, users still need to store their + plugin state to persistent storage to handle reloads. + +## Bug Fixes +* Android Resolver no longer incorrectly adds MANIFEST.MF files to AARs. +* Android Resolver auto-resolution jobs are now unscheduled when an explicit + resolve job is started. + +# Version 1.2.76 - Jul 16, 2018 +## Bug Fixes +* Fixed variable replacement in AndroidManifest.xml files in the Android + Resolver. + Version 1.2.75 introduced a regression which caused all variable replacement + to replace the *entire* property value rather than the component of the + property that referenced a variable. For example, + given "applicationId = com.my.app", "${applicationId}.foo" would be + incorrectly expanded as "com.my.app" rather than "com.my.app.foo". This + resulted in numerous issues for Android builds where content provider + initialization would fail and services may not start. + +## Changed +* Gradle prebuild experimental feature has been removed from the Android + Resolver. The feature has been broken for some time and added around 8MB + to the plugin size. +* Added better support for execution of plugin components in batch mode. + In batch mode UnityEditor.update is sometimes never called - like when a + single method is executed - so the new job scheduler will execute all jobs + synchronously from the main thread. + +# Version 1.2.75 - Jun 20, 2018 +## New Features +* Android Resolver now monitors the Android SDK path when + auto-resolution is enabled and triggers resolution when the path is + modified. + +## Changed +* Android auto-resolution is now delayed by 3 seconds when the following build + settings are changed: + - Target ABI. + - Gradle build vs. internal build. + - Project export. +* Added a progress bar display when AARs are being processed during Android + resolution. + +## Bug Fixes +* Fixed incorrect Android package version selection when a mix of + version-locked and non-version-locked packages are specified. +* Fixed non-deterministic Android package version selection to select + the highest version of a specified package rather than the last + package specification passed to the Gradle resolution script. + +# Version 1.2.74 - Jun 19, 2018 +## New Features +* Added workaround for broken AndroidManifest.xml variable replacement in + Unity 2018.x. By default ${applicationId} variables will be replaced by + the bundle ID in the Plugins/Android/AndroidManifest.xml file. The + behavior can be disabled via the Android Resolver settings menu. + +# Version 1.2.73 - May 30, 2018 +## Bug Fixes +* Fixed spurious warning message about missing Android plugins directory on + Windows. + +# Version 1.2.72 - May 23, 2018 +## Bug Fixes +* Fixed spurious warning message about missing Android plugins directory. + +# Version 1.2.71 - May 10, 2018 +## Bug Fixes +* Fixed resolution of Android dependencies when the `Assets/Plugins/Android` + directory is named in a different case e.g `Assets/plugins/Android`. + +# Version 1.2.70 - May 7, 2018 +## Bug Fixes +* Fixed bitcode flag being ignored for iOS pods. + +# Version 1.2.69 - May 7, 2018 +## Bug Fixes +* Fixed escaping of local repository paths in Android Resolver. + +# Version 1.2.68 - May 3, 2018 +## Changes +* Added support for granular builds of Google Play Services. + +# Version 1.2.67 - May 1, 2018 +## Changes +* Improved support for iOS source-only pods in Unity 5.5 and below. + +# Version 1.2.66 - April 27, 2018 +## Bug Fixes +* Fixed Version Handler renaming of Linux libraries with hyphens in filenames. + Previously, libraries named Foo-1.2.3.so were not being renamed to + libFoo-1.2.3.so on Linux which could break native library loading on some + versions of Unity. + +# Version 1.2.65 - April 26, 2018 +## Bug Fixes +* Fix CocoaPods casing in logs and comments. + +# Version 1.2.64 - Mar 16, 2018 +## Bug Fixes +* Fixed bug in download_artifacts.gradle (used by Android Resolver) which + reported a failure if required artifacts already exist. + +# Version 1.2.63 - Mar 15, 2018 +## Bug Fixes +* Fixed iOS Resolver include search paths taking precedence over system headers + when using project level resolution. +* Fixed iOS Resolver includes relative to library root, when using project level + resolution. + +# Version 1.2.62 - Mar 12, 2018 +## Changes +* Improved error reporting when a file can't be moved to trash by the + Version Handler. +## Bug Fixes +* Fixed Android Resolver throwing NullReferenceException when the Android SDK + path isn't set. +* Fixed Version Handler renaming files with underscores if the + "Rename to Canonical Filenames" setting is enabled. + +# Version 1.2.61 - Jan 22, 2018 +## Bug Fixes +* Fixed Android Resolver reporting non-existent conflicting dependencies when + Gradle build system is enabled. + +# Version 1.2.60 - Jan 12, 2018 +## Changes +* Added support for Maven / Ivy version specifications for Android packages. +* Added support for Android SNAPSHOT packages. + +## Bug Fixes +* Fixed Openjdk version check. +* Fixed non-deterministic Android package resolution when two packages contain + an artifact with the same name. + +# Version 1.2.59 - Oct 19, 2017 +## Bug Fixes +* Fixed execution of Android Gradle resolution script when it's located + in a path with whitespace. + +# Version 1.2.58 - Oct 19, 2017 +## Changes +* Removed legacy resolution method from Android Resolver. + It is now only possible to use the Gradle or Gradle prebuild resolution + methods. + +# Version 1.2.57 - Oct 18, 2017 +## Bug Fixes +* Updated Gradle wrapper to 4.2.1 to fix issues using Gradle with the + latest Openjdk. +* Android Gradle resolution now also uses gradle.properties to pass + parameters to Gradle in an attempt to workaround problems with + command line argument parsing on Windows 10. + +# Version 1.2.56 - Oct 12, 2017 +## Bug Fixes +* Fixed Gradle artifact download with non-version locked artifacts. +* Changed iOS resolver to only load dependencies at build time. + +# Version 1.2.55 - Oct 4, 2017 +## Bug Fixes +* Force Android Resolution when the "Install Android Packages" setting changes. + +# Version 1.2.54 - Oct 4, 2017 +## Bug Fixes +* Fixed execution of command line tools on Windows when the path to the tool + contains a single quote (apostrophe). In this case we fallback to executing + the tool via the system shell. + +# Version 1.2.53 - Oct 2, 2017 +## New Features +* Changed Android Resolver "resolution complete" dialog so that it now displays + failures. +* Android Resolver now detects conflicting libraries that it does not manage + warning the user if they're newer than the managed libraries and prompting + the user to clean them up if they're older or at the same version. + +## Bug Fixes +* Improved Android Resolver auto-resolution speed. +* Fixed bug in the Gradle Android Resolver which would result in resolution + succeeding when some dependencies are not found. + +# Version 1.2.52 - Sep 25, 2017 +## New Features +* Changed Android Resolver's Gradle resolution to resolve conflicting + dependencies across Google Play services and Android Support library packages. + +# Version 1.2.51 - Sep 20, 2017 +## Changes +* Changed iOS Resolver to execute the CocoaPods "pod" command via the shell + by default. Some developers customize their shell environment to use + custom ssh certs to access internal git repositories that host pods so + executing "pod" via the shell will work for these scenarios. + The drawback of executing "pod" via the shell could potentially cause + users problems if they break their shell environment. Though users who + customize their shell environments will be able to resolve these issues. + +# Version 1.2.50 - Sep 18, 2017 +## New Features +* Added option to disable the Gradle daemon in the Android Resolver. + This daemon is now disabled by default as some users are getting into a state + where multiple daemon instances are being spawned when changing dependencies + which eventually results in Android resolution failing until all daemon + processes are manually killed. + +## Bug Fixes +* Android resolution is now always executed if the user declines the update + of their Android SDK. This ensure users can continue to use out of date + Android SDK packages if they desire. + +# Version 1.2.49 - Sep 18, 2017 +## Bug Fixes +* Removed modulemap parsing in iOS Resolver. + The framework *.modulemap did not need to be parsed by the iOS Resolver + when injecting Cocoapods into a Xcode project. Simply adding a modular + framework to a Xcode project results in Xcode's Clang parsing the associated + modulemap and injecting any compile and link flags into the build process. + +# Version 1.2.48 - Sep 12, 2017 +## New Features +* Changed settings to be per-project by default. + +## Bug Fixes +* Added Google maven repository to fix GradlePrebuild resolution with Google + components. +* Fixed Android Resolution failure with spaces in paths. + +# Version 1.2.47 - Aug 29, 2017 +## New Features +* Android and iOS dependencies can now be specified using *Dependencies.xml + files. This is now the preferred method for registering dependencies, + we may remove the API for dependency addition in future. +* Added "Reset to Defaults" button to each settings dialog to restore default + settings. +* Android Resolver now validates the configured JDK is new enough to build + recently released Android libraries. +## Bug Fixes +* Fixed a bug that caused dependencies with the "LATEST" version specification + to be ignored when using the Gradle mode of the Android Resolver. +* Fixed a race condition when running Android Resolution. +* Fixed Android Resolver logging if a PlayServicesSupport instance is created + with no logging enabled before the Android Resolver is initialized. +* Fixed iOS resolver dialog in Unity 4. +* Fixed iOS Cocoapod Xcode project integration in Unity 4. + +# Version 1.2.46 - Aug 22, 2017 +## Bug Fixes +* GradlePrebuild Android resolver on Windows now correctly locates dependent + data files. + +# Version 1.2.45 - Aug 22, 2017 +## Bug Fixes +* Improved Android package auto-resolution and fixed clean up of stale + dependencies when using Gradle dependency resolution. + +# Version 1.2.44 - Aug 21, 2017 +## Bug Fixes +* Enabled autoresolution for Gradle Prebuild. +* Made the command line dialog windows have selectable text. +* Fixed incorrect "Android Settings" dialog disabled groups. +* Updated PlayServicesResolver android platform detection to use the package + manager instead of the 'android' tool. +* UnityCompat reflection methods 'GetAndroidPlatform' and + 'GetAndroidBuildToolsVersion' are now Obsolete due to dependence on the + obsolete 'android' build tool. + +# Version 1.2.43 - Aug 18, 2017 +## Bug Fixes +* Fixed Gradle resolution in the Android Resolver when running + PlayServicesResolver.Resolve() in parallel or spawning multiple + resolutions before the previous resolve completed. + +# Version 1.2.42 - Aug 17, 2017 +## Bug Fixes +* Fixed Xcode project level settings not being applied by IOS Resolver when + Xcode project pod integration is enabled. + +# Version 1.2.41 - Aug 15, 2017 +## Bug Fixes +* IOS Resolver's Xcode workspace pod integration is now disabled when Unity + Cloud Build is detected. Unity Cloud Build does not follow the same build + process as the Unity editor and fails to open the generated xcworkspace at + this time. + +# Version 1.2.40 - Aug 15, 2017 +## Bug Fixes +* Moved Android Resolver Gradle Prebuild scripts into Google.JarResolver.dll. + They are now extracted from the DLL when required. +* AARs / JARs are now cleaned up when switching the Android resolution + strategy. + +# Version 1.2.39 - Aug 10, 2017 +## New Features +* Android Resolver now supports resolution with Gradle. This enables support + for non-local artifacts. +## Bug Fixes +* Android Resolver's Gradle Prebuild now uses Android build tools to determine + the Android platform tools version rather than relying upon internal Unity + APIs. +* Android Resolver's Gradle Prebuild now correctly strips binaries that are + not required for the target ABI. + +# Version 1.2.38 - Aug 7, 2017 +## Bug Fixes +* Fixed an issue in VersionHandler where disabled targets are ignored if + the "Any Platform" flag is set on a plugin DLL. + +# Version 1.2.37 - Aug 3, 2017 +## New Features +* Exposed GooglePlayServices.PlayServicesResolver.Resolve() so that it's + possible for a script to be notified when AAR / Jar resolution is complete. + This makes it easier to setup a project to build from the command line. + +# Version 1.2.36 - Aug 3, 2017 +## New Features +* VersionHandler.UpdateCompleteMethods allows a user to provide a list of + methods to be called when VersionHandlerImpl has completed an update. + This makes it easier to import a plugin and wait for VersionHandler to + execute prior executing a build. + +# Version 1.2.35 - Jul 28, 2017 +## New Features +* VersionHandler will now rename Linux libraries so they can target Unity + versions that require different file naming. Libraries need to be labelled + gvh_linuxlibname-${basename} in order to be considered for renaming. + e.g gvh\_linuxlibname-MyLib will be named MyLib.so in Unity 5.5 and below and + libMyLib.so in Unity 5.6 and above. + +# Version 1.2.34 - Jul 28, 2017 +## Bug Fixes +* Made VersionHandler bootstrap module more robust when calling static + methods before the implementation DLL is loaded. + +# Version 1.2.33 - Jul 27, 2017 +## New Features +* Added a bootstrap module for VersionHandler so the implementation + of the VersionHandler module can be versioned without resulting in + a compile error when imported at different versions across multiple + plugins. + +# Version 1.2.32 - Jul 20, 2017 +## New Features +* Added support for build target selection based upon .NET framework + version in the VersionHandler. + When applying either gvh\_dotnet-3.5 or gvh\_dotnet-4.5 labels to + assets, the VersionHandler will only enable the asset for the + specified set of build targets when the matching .NET framework version + is selected in Unity 2017's project settings. This allows assets + to be provided in a plugin that need to differ based upon .NET version. + +# Version 1.2.31 - Jul 5, 2017 +## Bug Fixes +* Force expansion of AARs with native components when using Unity 2017 + with the internal build system. In contrast to Unity 5.x, Unity 2017's + internal build system does not include native libraries included in AARs. + Forcing expansion of AARs with native components generates an + Ant / Eclipse project for each AAR which is correctly included by Unity + 2017's internal build system. + +# Version 1.2.30 - Jul 5, 2017 +## Bug Fixes +* Fixed Cocoapods being installed when the build target isn't iOS. +* Added support for malformed AARs with missing classes.jar. + +# Version 1.2.29 - Jun 16, 2017 +## New Features +* Added support for the Android sdkmanager tool. + +# Version 1.2.28 - Jun 8, 2017 +## Bug Fixes +* Fixed non-shell command line execution (regression from + Cocoapod installation patch). + +# Version 1.2.27 - Jun 7, 2017 +## Bug Fixes +* Added support for stdout / stderr redirection when executing + commands in shell mode. + This fixes CocoaPod tool installation when shell mode is + enabled. +* Fixed incremental builds when additional sources are specified + in the Podfile. + +# Version 1.2.26 - Jun 7, 2017 +## Bug Fixes +* Fixed a crash when importing Version Handler into Unity 4.7.x. + +# Version 1.2.25 - Jun 7, 2017 +## Bug Fixes +* Fixed an issue in the Jar Resolver which incorrectly notified + event handlers of bundle ID changes when the currently selected + (not active) build target changed in Unity 5.6 and above. + +# Version 1.2.24 - Jun 6, 2017 +## New Features +* Added option to control file renaming in Version Handler settings. + Disabling file renaming (default option) significantly increases + the speed of file version management operations with the downside + that any files that are referenced directly by canonical filename + rather than asset ID will no longer be valid. +* Improved logging in the Version Handler. +## Bug Fixes +* Fixed an issue in the Version Handler which caused it to not + re-enable plugins when re-importing a custom package with disabled + version managed files. + +# Version 1.2.23 - May 26, 2017 +## Bug Fixes +* Fixed a bug with gradle prebuild resolver on windows. + +# Version 1.2.22 - May 19, 2017 +## Bug Fixes +* Fixed a bug in the iOS resolver with incremental builds. +* Fixed misdetection of Cocoapods support with Unity beta 5.6. + +# Version 1.2.21 - May 8, 2017 +## Bug Fixes +* Fix for https://github.com/googlesamples/unity-jar-resolver/issues/48 + Android dependency version number parsing when "-alpha" (etc.) are + included in dependency (AAR / JAR) versions. + +# Version 1.2.20 - May 8, 2017 +## Bug Fixes +* Attempted to fix + https://github.com/googlesamples/unity-jar-resolver/issues/48 + where a NullReferenceException could occur if a target file does not + have a valid version string. + +# Version 1.2.19 - May 4, 2017 +## Bug Fixes +* Fixed Jar Resolver exploding and deleting AAR files it isn't managing. + +# Version 1.2.18 - May 4, 2017 +## New Features +* Added support for preserving Unity pods such as when GVR is enabled. + +# Version 1.2.17 - Apr 20, 2017 +## Bug Fixes +* Fixed auto-resolution when an Android application ID is modified. + +# Version 1.2.16 - Apr 17, 2017 +## Bug Fixes +* Fixed Unity version number parsing on machines with a locale that uses + "," for decimal points. +* Fixed null reference exception if JDK path isn't set. + +# Version 1.2.15 - Mar 17, 2017 +## New Features +* Added warning when the Jar Resolver's background resolution is disabled. +## Bug Fixes +* Fixed support of AARs with native libraries when using Gradle. +* Fixed extra repository paths when resolving dependencies. + +# Version 1.2.14 - Mar 7, 2017 +## New Features +* Added experimental Android resolution using Gradle. + This alternative resolver supports proguard stripping with Unity's + internal build system. +* Added Android support for single ABI builds when using AARs include + native libraries. +* Disabled Android resolution on changes to all .cs and .js files. + File patterns that are monitored for auto-resolution can be added + using PlayServicesResolver.AddAutoResolutionFilePatterns(). +* Added tracking of resolved AARs and JARs so they can be cleaned up + if they're no longer referenced by a project. +* Added persistence of AAR / JAR version replacement for each Unity + session. +* Added settings dialog to the iOS resolver. +* Integrated Cocoapod tool installation in the iOS resolver. +* Added option to run pod tool via the shell. +## Bug Fixes +* Fixed build of some source Cocoapods (e.g Protobuf). +* VersionHandler no longer prompts to delete obsolete manifests. +* iOS resolver handles Cocoapod installation when using Ruby < 2.2.2. +* Added workaround for package version selection when including + Google Play Services on Android. +* Fixed support for pods that reference static libraries. +* Fixed support for resource-only pods. + +# Version 1.2.12 - Feb 14, 2017 +## Bug Fixes +* Fixed re-explosion of AARs when the bundle ID is modified. + +# Version 1.2.11 - Jan 30, 2017 +## New Features +* Added support for Android Studio builds. +* Added support for native (C/C++) shared libraries in AARs. + +# Version 1.2.10 - Jan 11, 2017 +## Bug Fixes +* Fixed SDK manager path retrieval. +* Also, report stderr when it's not possible to run the "pod" tool. +* Handle exceptions thrown by Unity.Cecil on asset rename +* Fixed IOSResolver to handle PlayerSettings.iOS.targetOSVersionString + +# Version 1.2.9 - Dec 7, 2016 +## Bug Fixes +* Improved error reporting when "pod repo update" fails. +* Added detection of xml format xcode projects generated by old Cocoapods + installations. + +# Version 1.2.8 - Dec 6, 2016 +## Bug Fixes +* Increased speed of JarResolver resolution. +* Fixed JarResolver caches getting out of sync with requested dependencies + by removing the caches. +* Fixed JarResolver explode cache always being rewritten even when no + dependencies change. + +# Version 1.2.7 - Dec 2, 2016 +## Bug Fixes +* Fixed VersionHandler build errors with Unity 5.5, due to the constantly + changing BuildTarget enum. +* Added support for Unity configured JDK Path rather than requiring + JAVA_HOME to be set in the Jar Resolver. + +# Version 1.2.6 - Nov 15, 2016 +## Bug Fixes +* Fixed IOSResolver errors when iOS support is not installed. +* Added fallback to "pod" executable search which queries the Ruby Gems + package manager for the binary install location. + +# Version 1.2.5 - Nov 3, 2016 +## Bug Fixes +* Added crude support for source only Cocoapods to the IOSResolver. + +# Version 1.2.4 - Oct 27, 2016 +## Bug Fixes +* Automated resolution of out of date pod repositories. + +# Version 1.2.3 - Oct 25, 2016 +## Bug Fixes +* Fixed exception when reporting conflicting dependencies. + +# Version 1.2.2 - Oct 17, 2016 +## Bug Fixes +* Fixed issue working with Unity 5.5 +* Fixed issue with PlayServicesResolver corrupting other iOS dependencies. +* Updated build script to use Unity distributed tools for building. + +# Version 1.2.1 - Jul 25, 2016 +## Bug Fixes +* Removed 1.2 Resolver and hardcoded whitelist of AARs to expand. +* Improved error reporting when the "jar" executable can't be found. +* Removed the need to set JAVA_HOME if "jar" is in the user's path. +* Fixed spurious copying of partially matching AARs. +* Changed resolver to only copy / expand when source AARs change. +* Auto-resolution of dependencies is now performed when the Android + build target is selected. + +## New Features +* Expand AARs that contain manifests with variable expansion like + ${applicationId}. +* Added optional logging in the JarResolverLib module. +* Integration with the Android SDK manager for dependencies that + declare required Android SDK packages. + +# Version 1.2.0 - May 11 2016 +## Bug Fixes +* Handles resolving dependencies when the artifacts are split across 2 repos. +* #4 Misdetecting version for versions like 1.2-alpha. These are now string + compared if alphanumeric +* Removed resolver creation via reflection since it did not work all the time. + Now a resolver needs to be loaded externally (which is existing behavior). + +## New Features +* Expose PlayServicesResolver properties to allow for script access. +* Explodes firebase-common and firebase-measurement aar files to support + ${applicationId} substitution. + +# Version 1.1.1 - 25 Feb 2016 +## Bug Fixes +* #1 Spaces in project path not handled when exploding Aar file. +* #2 Script compilation error: TypeLoadException. + +# Version 1.1.0 - 5 Feb 2016 +## New Features +* Adds friendly alert when JAVA_HOME is not set on Windows platforms. +* Adds flag for disabling background resolution. +* Expands play-services-measurement and replaces ${applicationId} with the + bundle Id. + + ## Bug Fixes +* Fixes infinite loop of resolution triggered by resolution. diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md.meta new file mode 100644 index 00000000..994d79e7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/CHANGELOG.md.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d60ee14e02f540f394225c5ad5a4be80 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/CHANGELOG.md +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll new file mode 100644 index 00000000..b60cc38c Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta new file mode 100644 index 00000000..17c8699e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: f35f43947d644fae9db50b3c13996c0c +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll +- gvhp_targets-editor +timeCreated: 1480838400 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE new file mode 100644 index 00000000..6258cc47 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE @@ -0,0 +1,245 @@ +Copyright (C) 2014 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +==================================================================================================== +This package uses MiniJSON + +Copyright (c) 2013 Calvin Rien + +Based on the JSON parser by Patrick van Bergen +http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html + +Simplified it so that it doesn't throw exceptions +and can be used in Unity iPhone with maximum code stripping. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE.meta new file mode 100644 index 00000000..3c0a2ac9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/LICENSE.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ca5ff2d8150c4d2088af1a803844e5b2 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/LICENSE +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md new file mode 100644 index 00000000..b49cf1e2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md @@ -0,0 +1,768 @@ +External Dependency Manager for Unity +======== + +# Overview + +The External Dependency Manager for Unity (EDM4U) +(formerly Play Services Resolver / Jar Resolver) is intended to be used by any +Unity plugin that requires: + + * Android specific libraries (e.g + [AARs](https://developer.android.com/studio/projects/android-library.html)). + * iOS [CocoaPods](https://cocoapods.org/). + * Version management of transitive dependencies. + * Management of Package Manager (PM) Registries. + +Updated releases are available on +[GitHub](https://github.com/googlesamples/unity-jar-resolver) + +# Background + +Many Unity plugins have dependencies upon Android specific libraries, iOS +CocoaPods, and sometimes have transitive dependencies upon other Unity plugins. +This causes the following problems: + + * Integrating platform specific (e.g Android and iOS) libraries within a + Unity project can be complex and a burden on a Unity plugin maintainer. + * The process of resolving conflicting dependencies on platform specific + libraries is pushed to the developer attempting to use a Unity plugin. + The developer trying to use your plugin is very likely to give up when + faced with Android or iOS specific build errors. + * The process of resolving conflicting Unity plugins (due to shared Unity + plugin components) is pushed to the developer attempting to use your Unity + plugin. In an effort to resolve conflicts, the developer will very likely + attempt to resolve problems by deleting random files in your plugin, + report bugs when that doesn't work and finally give up. + +EDM provides solutions for each of these problems. + +## Android Dependency Management + +The *Android Resolver* component of this plugin will download and integrate +Android library dependencies and handle any conflicts between plugins that share +the same dependencies. + +Without the Android Resolver, typically Unity plugins bundle their AAR and +JAR dependencies, e.g. a Unity plugin `SomePlugin` that requires the Google +Play Games Android library would redistribute the library and its transitive +dependencies in the folder `SomePlugin/Android/`. When a user imports +`SomeOtherPlugin` that includes the same libraries (potentially at different +versions) in `SomeOtherPlugin/Android/`, the developer using `SomePlugin` and +`SomeOtherPlugin` will see an error when building for Android that can be hard +to interpret. + +Using the Android Resolver to manage Android library dependencies: + + * Solves Android library conflicts between plugins. + * Handles all of the various processing steps required to use Android + libraries (AARs, JARs) in Unity 4.x and above projects. Almost all + versions of Unity have - at best - partial support for AARs. + * (Experimental) Supports minification of included Java components without + exporting a project. + +## iOS Dependency Management + +The *iOS Resolver* component of this plugin integrates with +[CocoaPods](https://cocoapods.org/) to download and integrate iOS libraries +and frameworks into the Xcode project Unity generates when building for iOS. +Using CocoaPods allows multiple plugins to utilize shared components without +forcing developers to fix either duplicate or incompatible versions of +libraries included through multiple Unity plugins in their project. + +## Package Manager Registry Setup + +The [Package Manager](https://docs.unity3d.com/Manual/Packages.html) +(PM) makes use of [NPM](https://www.npmjs.com/) registry servers for package +hosting and provides ways to discover, install, upgrade and uninstall packages. +This makes it easier for developers to manage plugins within their projects. + +However, installing additional package registries requires a few manual steps +that can potentially be error prone. The *Package Manager Resolver* +component of this plugin integrates with +[PM](https://docs.unity3d.com/Manual/Packages.html) to provide a way to +auto-install PM package registries when a `.unitypackage` is installed which +allows plugin maintainers to ship a `.unitypackage` that can provide access +to their own PM registry server to make it easier for developers to +manage their plugins. + +## Unity Plugin Version Management + +Finally, the *Version Handler* component of this plugin simplifies the process +of managing transitive dependencies of Unity plugins and each plugin's upgrade +process. + +For example, without the Version Handler plugin, if: + + * Unity plugin `SomePlugin` includes `EDM4U` plugin at + version 1.1. + * Unity plugin `SomeOtherPlugin` includes `EDM4U` + plugin at version 1.2. + +The version of `EDM4U` included in the developer's project depends upon the +order the developer imports `SomePlugin` or `SomeOtherPlugin`. + +This results in: + + * `EDM4U` at version 1.2, if `SomePlugin` is imported then `SomeOtherPlugin` + is imported. + * `EDM4U` at version 1.1, if `SomeOtherPlugin` is imported then + `SomePlugin` is imported. + +The Version Handler solves the problem of managing transitive dependencies by: + + * Specifying a set of packaging requirements that enable a plugin at + different versions to be imported into a Unity project. + * Providing activation logic that selects the latest version of a plugin + within a project. + +When using the Version Handler to manage `EDM4U` included in `SomePlugin` and +`SomeOtherPlugin`, from the prior example, version 1.2 will always be the +version activated in a developer's Unity project. + +Plugin creators are encouraged to adopt this library to ease integration for +their customers. For more information about integrating EDM4U +into your own plugin, see the [Plugin Redistribution](#plugin-redistribution) +section of this document. + +# Analytics + +The External Dependency Manager for Unity plugin by default logs usage to Google +Analytics. The purpose of the logging is to quantitatively measure the usage of +functionality, to gather reports on integration failures and to inform future +improvements to the developer experience of the External Dependency Manager +plugin. Note that the analytics collected are limited to the scope of the EDM4U +plugin’s usage. + +For details of what is logged, please refer to the usage of +`EditorMeasurement.Report()` in the source code. + +# Requirements + +The *Android Resolver* and *iOS Resolver* components of the plugin only work +with Unity version 4.6.8 or higher. + +The *Version Handler* component only works with Unity 5.x or higher as it +depends upon the `PluginImporter` UnityEditor API. + +The *Package Manager Resolver* component only works with +Unity 2018.4 or above, when +[scoped registry](https://docs.unity3d.com/Manual/upm-scoped.html) +support was added to the Package Manager. + +# Getting Started + +Before you import EDM4U into your plugin project, you first +need to consider whether you intend to *redistribute* `EDM4U` +along with your own plugin. + +## Plugin Redistribution + +If you're a plugin maintainer, redistributing `EDM4U` inside your own plugin +will ease the integration process for your users, by resolving dependency +conflicts between your plugin and other plugins in a user's project. + +If you wish to redistribute `EDM4U` inside your plugin, +you **must** follow these steps when importing the +`external-dependency-manager-*.unitypackage`, and when exporting your own plugin +package: + + 1. Import the `external-dependency-manager-*.unitypackage` into your plugin + project by + [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that + you add the `-gvh_disable` option. + 1. Export your plugin by [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that + you: + - Include the contents of the `Assets/PlayServicesResolver` and + `Assets/ExternalDependencyManager` directory. + - Add the `-gvh_disable` option. + +You **must** specify the `-gvh_disable` option in order for the Version +Handler to work correctly! + +For example, the following command will import the +`external-dependency-manager-1.2.46.0.unitypackage` into the project +`MyPluginProject` and export the entire Assets folder to +`MyPlugin.unitypackage`: + +``` +Unity -gvh_disable \ + -batchmode \ + -importPackage external-dependency-manager-1.2.46.0.unitypackage \ + -projectPath MyPluginProject \ + -exportPackage Assets MyPlugin.unitypackage \ + -quit +``` + +### Background + +The *Version Handler* component relies upon deferring the load of editor DLLs +so that it can run first and determine the latest version of a plugin component +to activate. The build of `EDM4U` plugin has Unity asset metadata that is +configured so that the editor components are not initially enabled when it's +imported into a Unity project. To maintain this configuration when importing +the `external-dependency-manager.unitypackage` into a Unity plugin project, you +*must* specify the command line option `-gvh_disable` which will prevent the +Version Handler component from running and changing the Unity asset metadata. + +# Android Resolver Usage + +The Android Resolver copies specified dependencies from local or remote Maven +repositories into the Unity project when a user selects Android as the build +target in the Unity editor. + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml) + file into your plugin and add the dependencies your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Dependencies.xml`. For example, + `MyPlugin/Editor/MyPluginDependencies.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add the Google Play Games library +(`com.google.android.gms:play-services-games` package) at version `9.8.0` to +the set of a plugin's Android dependencies: + +``` + + + + + extra-google-m2repository + + + + +``` + +The version specification (last component) supports: + + * Specific versions e.g `9.8.0` + * Partial matches e.g `9.8.+` would match 9.8.0, 9.8.1 etc. choosing the most + recent version. + * Latest version using `LATEST` or `+`. We do *not* recommend using this + unless you're 100% sure the library you depend upon will not break your + Unity plugin in future. + +The above example specifies the dependency as a component of the Android SDK +manager such that the Android SDK manager will be executed to install the +package if it's not found. If your Android dependency is located on Maven +central it's possible to specify the package simply using the `androidPackage` +element: + +``` + + + + + +``` + +## Auto-resolution + +By default the Android Resolver automatically monitors the dependencies you have +specified and the `Plugins/Android` folder of your Unity project. The +resolution process runs when the specified dependencies are not present in your +project. + +The *auto-resolution* process can be disabled via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. + +Manual resolution can be performed using the following menu options: + + * `Assets > External Dependency Manager > Android Resolver > Resolve` + * `Assets > External Dependency Manager > Android Resolver > Force Resolve` + +## Deleting libraries + +Resolved packages are tracked via asset labels by the Android Resolver. +They can easily be deleted using the +`Assets > External Dependency Manager > Android Resolver > Delete Resolved Libraries` +menu item. + +## Android Manifest Variable Processing + +Some AAR files (for example play-services-measurement) contain variables that +are processed by the Android Gradle plugin. Unfortunately, Unity does not +perform the same processing when using Unity's Internal Build System, so the +Android Resolver plugin handles known cases of this variable substitution +by exploding the AAR into a folder and replacing `${applicationId}` with the +`bundleID`. + +Disabling AAR explosion and therefore Android manifest processing can be done +via the `Assets > External Dependency Manager > Android Resolver > Settings` +menu. You may want to disable explosion of AARs if you're exporting a project +to be built with Gradle / Android Studio. + +## ABI Stripping + +Some AAR files contain native libraries (.so files) for each ABI supported +by Android. Unfortunately, when targeting a single ABI (e.g x86), Unity does +not strip native libraries for unused ABIs. To strip unused ABIs, the Android +Resolver plugin explodes an AAR into a folder and removes unused ABIs to +reduce the built APK size. Furthermore, if native libraries are not stripped +from an APK (e.g you have a mix of Unity's x86 library and some armeabi-v7a +libraries) Android may attempt to load the wrong library for the current +runtime ABI completely breaking your plugin when targeting some architectures. + +AAR explosion and therefore ABI stripping can be disabled via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. +You may want to disable explosion of AARs if you're exporting a project to be +built with Gradle / Android Studio. + +## Resolution Strategies + +By default the Android Resolver will use Gradle to download dependencies prior +to integrating them into a Unity project. This works with Unity's internal +build system and Gradle / Android Studio project export. + +It's possible to change the resolution strategy via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. + +### Download Artifacts with Gradle + +Using the default resolution strategy, the Android resolver executes the +following operations: + + - Remove the result of previous Android resolutions. + e.g Delete all files and directories labeled with "gpsr" under + `Plugins/Android` from the project. + - Collect the set of Android dependencies (libraries) specified by a + project's `*Dependencies.xml` files. + - Run `download_artifacts.gradle` with Gradle to resolve conflicts and, + if successful, download the set of resolved Android libraries (AARs, JARs). + - Process each AAR / JAR so that it can be used with the currently selected + Unity build system (e.g Internal vs. Gradle, Export vs. No Export). + This involves patching each reference to `applicationId` in the + AndroidManifest.xml with the project's bundle ID. This means resolution + must be run if the bundle ID is changed again. + - Move the processed AARs to `Plugins/Android` so they will be included when + Unity invokes the Android build. + +### Integrate into mainTemplate.gradle + +Unity 5.6 introduced support for customizing the `build.gradle` used to build +Unity projects with Gradle. When the *Patch mainTemplate.gradle* setting is +enabled, rather than downloading artifacts before the build, Android resolution +results in the execution of the following operations: + + - Remove the result of previous Android resolutions. + e.g Delete all files and directories labeled with "gpsr" under + `Plugins/Android` from the project and remove sections delimited with + `// Android Resolver * Start` and `// Android Resolver * End` lines. + - Collect the set of Android dependencies (libraries) specified by a + project's `*Dependencies.xml` files. + - Rename any `.srcaar` files in the build to `.aar` and exclude them from + being included directly by Unity in the Android build as + `mainTemplate.gradle` will be patched to include them instead from their + local maven repositories. + - Inject the required Gradle repositories into `mainTemplate.gradle` at the + line matching the pattern + `.*apply plugin: 'com\.android\.(application|library)'.*` or the section + starting at the line `// Android Resolver Repos Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Repos Start` and + `// Android Resolver Repos End` should be placed in the global scope + before the `dependencies` section. + - Inject the required Android dependencies (libraries) into + `mainTemplate.gradle` at the line matching the pattern `***DEPS***` or + the section starting at the line `// Android Resolver Dependencies Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Dependencies Start` and + `// Android Resolver Dependencies End` should be placed in the + `dependencies` section. + - Inject the packaging options logic, which excludes architecture specific + libraries based upon the selected build target, into `mainTemplate.gradle` + at the line matching the pattern `android +{` or the section starting at + the line `// Android Resolver Exclusions Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Exclusions Start` and + `// Android Resolver Exclusions End` should be placed in the global + scope before the `android` section. + +## Dependency Tracking + +The Android Resolver creates the +`ProjectSettings/AndroidResolverDependencies.xml` to quickly determine the set +of resolved dependencies in a project. This is used by the auto-resolution +process to only run the expensive resolution process when necessary. + +## Displaying Dependencies + +It's possible to display the set of dependencies the Android Resolver +would download and process in your project via the +`Assets > External Dependency Manager > Android Resolver > Display Libraries` +menu item. + +# iOS Resolver Usage + +The iOS resolver component of this plugin manages +[CocoaPods](https://cocoapods.org/). A CocoaPods `Podfile` is generated and +the `pod` tool is executed as a post build process step to add dependencies +to the Xcode project exported by Unity. + +Dependencies for iOS are added by referring to CocoaPods. + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml) + file into your plugin and add the dependencies your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Dependencies.xml`. For example, + `MyPlugin/Editor/MyPluginDependencies.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add the AdMob pod, version 7.0 or greater with bitcode enabled: + +``` + + + + + +``` + +## Integration Strategies + +The `CocoaPods` are either: + * Downloaded and injected into the Xcode project file directly, rather than + creating a separate xcworkspace. We call this `Xcode project` integration. + * If the Unity version supports opening a xcworkspace file, the `pod` tool + is used as intended to generate a xcworkspace which references the + CocoaPods. We call this `Xcode workspace` integration. + +The resolution strategy can be changed via the +`Assets > External Dependency Manager > iOS Resolver > Settings` menu. + +### Appending text to generated Podfile +In order to modify the generated Podfile you can create a script like this: +``` +using System.IO; +public class PostProcessIOS : MonoBehaviour { +[PostProcessBuildAttribute(45)]//must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50) +private static void PostProcessBuild_iOS(BuildTarget target, string buildPath) +{ + if (target == BuildTarget.iOS) + { + + using (StreamWriter sw = File.AppendText(buildPath + "/Podfile")) + { + //in this example I'm adding an app extension + sw.WriteLine("\ntarget 'NSExtension' do\n pod 'Firebase/Messaging', '6.6.0'\nend"); + } + } +} +``` + +# Package Manager Resolver Usage + +Adding registries to the +[Package Manager](https://docs.unity3d.com/Manual/Packages.html) +(PM) is a manual process. The Package Manager Resolver (PMR) component +of this plugin makes it easy for plugin maintainers to distribute new PM +registry servers and easy for plugin users to manage PM registry servers. + +## Adding Registries + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleRegistries.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/sample/Assets/ExternalDependencyManager/Editor/SampleRegistries.xml) + file into your plugin and add the registries your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Registries.xml` or labeled with `gumpr_registries`. For example, + `MyPlugin/Editor/MyPluginRegistries.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add a registry for plugins in the scope `com.coolstuff`: + +``` + + + + com.coolstuff + + + +``` + +When PMR is loaded it will prompt the developer to add the registry to their +project if it isn't already present in the `Packages/manifest.json` file. + +For more information, see Unity's documentation on +[scoped package registries](https://docs.unity3d.com/Manual/upm-scoped.html). + +## Managing Registries + +It's possible to add and remove registries that are specified via PMR +XML configuration files via the following menu options: + +* `Assets > External Dependency Manager > Package Manager Resolver > + Add Registries` will prompt the user with a window which allows them to + add registries discovered in the project to the Package Manager. +* `Assets > External Dependency Manager > Package Manager Resolver > + Remove Registries` will prompt the user with a window which allows them to + remove registries discovered in the project from the Package Manager. +* `Assets > External Dependency Manager > Package Manager Resolver > + Modify Registries` will prompt the user with a window which allows them to + add or remove registries discovered in the project. + +## Migration + +PMR can migrate Version Handler packages installed in the `Assets` folder +to PM packages. This requires the plugins to implement the following: + +* `.unitypackage` must include a Version Handler manifests that describes + the components of the plugin. If the plugin has no dependencies + the manifest would just include the files in the plugin. +* The PM package JSON provided by the registry must include a keyword + (in the `versions.VERSION.keyword` list) that maps the PM package + to a Version Handler package using the format + `vh-name:VERSION_HANDLER_MANIFEST_NAME` where `VERSION_HANDLER_MANIFEST_NAME` + is the name of the manifest defined in the `.unitypackage`. For + more information see the description of the `gvhp_manifestname` asset label + in the *Version Handler Usage* section. + +When using the `Assets > External Dependency Manager > +Package Manager Resolver > Migrate Packages` menu option, PMR then +will: + +* List all Version Handler manager packages in the project. +* Search all available packages in the PM registries and fetch keywords + associated with each package parsing the Version Handler manifest names + for each package. +* Map each installed Version Handler package to a PM package. +* Prompt the user to migrate the discovered packages. +* Perform package migration for all selected packages if the user clicks + the `Apply` button. + +## Configuration + +PMR can be configured via the `Assets > External Dependency Manager > +Package Manager Resolver > Settings` menu option: + +* `Add package registries` when enabled, when the plugin loads or registry + configuration files change, this will prompt the user to add registries + that are not present in the Package Manager. +* `Prompt to add package registries` will cause a developer to be prompted + with a window that will ask for confirmation before adding registries. + When this is disabled registries are added silently to the project. +* `Prompt to migrate packages` will cause a developer to be prompted + with a window that will ask for confirmation before migrating packages + installed in the `Assets` directory to PM packages. +* `Enable Analytics Reporting` when enabled, reports the use of the plugin + to the developers so they can make imrpovements. +* `Verbose logging` when enabled prints debug information to the console + which can be useful when filing bug reports. + +# Version Handler Usage + +The Version Handler component of this plugin manages: + +* Shared Unity plugin dependencies. +* Upgrading Unity plugins by cleaning up old files from previous versions. +* Uninstallation of plugins that are distributed with manifest files. +* Restoration of plugin assets to their original install locations if assets + are tagged with the `exportpath` label. + +Since the Version Handler needs to modify Unity asset metadata (`.meta` files), +to enable / disable components, rename and delete asset files it does not +work with Package Manager installed packages. It's still possible to +include EDM4U in Package Manager packages, the Version Handler component +simply won't do anything to PM plugins in this case. + +## Using Version Handler Managed Plugins + +If a plugin is imported at multiple different versions into a project, if +the Version Handler is enabled, it will automatically check all managed +assets to determine the set of assets that are out of date and assets that +should be removed. To disable automatic checking managed assets disable +the `Enable version management` option in the +`Assets > External Dependency Manager > Version Handler > Settings` menu. + +If version management is disabled, it's possible to check managed assets +manually using the +`Assets > External Dependency Manager > Version Handler > Update` menu option. + +### Listing Managed Plugins + +Plugins managed by the Version Handler, those that ship with manifest files, +can displayed using the `Assets > External Dependency Manager > +Version Handler > Display Managed Packages` menu option. The list of plugins +are written to the console window along with the set of files used by each +plugin. + +### Uninstalling Managed Plugins + +Plugins managed by the Version Handler, those that ship with manifest files, +can be removed using the `Assets > External Dependency Manager > +Version Handler > Uninstall Managed Packages` menu option. This operation +will display a window that allows a developer to select a set of plugins to +remove which will remove all files owned by each plugin excluding those that +are in use by other installed plugins. + +Files managed by the Version Handler, those labeled with the `gvh` asset label, +can be checked to see whether anything needs to be upgraded, disabled or +removed using the `Assets > External Dependency Manager > +Version Handler > Update` menu option. + +### Restore Install Paths + +Some developers move assets around in their project which can make it +harder for plugin maintainers to debug issues if this breaks Unity's +[special folders](https://docs.unity3d.com/Manual/SpecialFolders.html) rules. +If assets are labeled with their original install / export path +(see `gvhp_exportpath` below), Version Handler can restore assets to their +original locations when using the `Assets > External Dependency Manager > +Version Handler > Move Files To Install Locations` menu option. + +### Settings + +Some behavior of the Version Handler can be configured via the +`Assets > External Dependency Manager > Version Handler > Settings` menu +option. + +* `Enable version management` controls whether the plugin should automatically + check asset versions and apply changes. If this is disabled the process + should be run manually when installing or upgrading managed plugins using + `Assets > External Dependency Manager > Version Handler > Update`. +* `Rename to canonical filenames` is a legacy option that will rename files to + remove version numbers and other labels from filenames. +* `Prompt for obsolete file deletion` enables the display of a window when + obsolete files are deleted allowing the developer to select which files to + delete and those to keep. +* `Allow disabling files via renaming` controls whether obsolete or disabled + files should be disabled by renaming them to `myfilename_DISABLED`. + Renaming to disable files is required in some scenarios where Unity doesn't + support removing files from the build via the PluginImporter. +* `Enable Analytics Reporting` enables / disables usage reporting to plugin + developers to improve the product. +* `Verbose logging` enables _very_ noisy log output that is useful for + debugging while filing a bug report or building a new managed plugin. +* `Use project settings` saves settings for the plugin in the project rather + than system-wide. + +## Redistributing a Managed Plugin + +The Version Handler employs a couple of methods for managing version +selection, upgrade and removal of plugins. + +* Each plugin can ship with a manifest file that lists the files it includes. + This makes it possible for Version Handler to calculate the difference + in assets between the most recent release of a plugin and the previous + release installed in a project. If a files are removed the Version Handler + will prompt the user to clean up obsolete files. +* Plugins can ship using assets with unique names, unique GUIDs and version + number labels. Version numbers can be attached to assets using labels or + added to the filename (e.g `myfile.txt` would be `myfile_version-x.y.z.txt). + This allows the Version Handler to determine which set of files are the + same file at different versions, select the most recent version and prompt + the developer to clean up old versions. + +Unity plugins can be managed by the Version Handler using the following steps: + + 1. Add the `gvh` asset label to each asset (file) you want Version Handler + to manage. + 1. Add the `gvh_version-VERSION` label to each asset where `VERSION` is the + version of the plugin you're releasing (e.g 1.2.3). + 1. Add the `gvhp_exportpath-PATH` label to each asset where `PATH` is the + export path of the file when the `.unitypackage` is created. This is + used to track files if they're moved around in a project by developers. + 1. Optional: Add `gvh_targets-editor` label to each editor DLL in your + plugin and disable `editor` as a target platform for the DLL. + The Version Handler will enable the most recent version of this DLL when + the plugin is imported. + 1. Optional: If your plugin is included in other Unity plugins, you should + add the version number to each filename and change the GUID of each asset. + This allows multiple versions of your plugin to be imported into a Unity + project, with the Version Handler component activating only the most + recent version. + 1. Create a manifest text file named `MY_UNIQUE_PLUGIN_NAME_VERSION.txt` + that lists all the files in your plugin relative to the project root. + Then add the `gvh_manifest` label to the asset to indicate this file is + a plugin manifest. + 1. Optional: Add a `gvhp_manifestname-NAME` label to your manifest file + to provide a human readable name for your package. If this isn't provided + the name of the manifest file will be used as the package name. + NAME can match the pattern `[0-9]+[a-zA-Z -]' where a leading integer + will set the priority of the name where `0` is the highest priority + and preferably used as the display name. The lowest value (i.e highest + priority name) will be used as the display name and all other specified + names will be aliases of the display name. Aliases can refer to previous + names of the package allowing renaming across published versions. + 1. Redistribute EDM4U Unity plugin with your plugin. + See the [Plugin Redistribution](#plugin-redistribution) for the details. + +If you follow these steps: + + * When users import a newer version of your plugin, files referenced by the + older version's manifest are cleaned up. + * The latest version of the plugin will be selected when users import + multiple packages that include your plugin, assuming the steps in + [Plugin Redistribution](#plugin-redistribution) are followed. + +# Building from Source + +To build this plugin from source you need the following tools installed: + * Unity (with iOS and Android modules installed) + +You can build the plugin by running the following from your shell +(Linux / OSX): + +``` +./gradlew build +``` + +or Windows: + +``` +./gradlew.bat build +``` + +# Releasing + +Each time a new build of this plugin is checked into the source tree you +need to do the following: + + * Bump the plugin version variable `pluginVersion` in `build.gradle` + * Update `CHANGELOG.md` with the new version number and changes included in + the release. + * Build the release using `./gradlew release` which performs the following: + * Updates `external-dependency-manager-*.unitypackage` + * Copies the unpacked plugin to the `exploded` directory. + * Updates template metadata files in the `plugin` directory. + The GUIDs of all asset metadata is modified due to the version number + change. Each file within the plugin is versioned to allow multiple + versions of the plugin to be imported into a Unity project which allows + the most recent version to be activated by the Version Handler + component. + * Create release commit using `./gradlew gitCreateReleaseCommit` which + performs `git commit -a -m "description from CHANGELOG.md"` + * Once the release commit is merge, tag the release using + `./gradlew gitTagRelease` which performs the following: + * `git tag -a pluginVersion -m "version RELEASE"` to tag the release. + * Update tags on remote branch using `git push --tag REMOTE HEAD:master` diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md.meta new file mode 100644 index 00000000..8269be13 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/README.md.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2939a2ca8cd341c48efc9816e6aa2c65 +labels: +- gvh +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/README.md +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt new file mode 100644 index 00000000..f04339e0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt @@ -0,0 +1,13 @@ +Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll +Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll.mdb +Assets/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll +Assets/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll.mdb +Assets/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll +Assets/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll.mdb +Assets/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll +Assets/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll.mdb +Assets/ExternalDependencyManager/Editor/CHANGELOG.md +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb +Assets/ExternalDependencyManager/Editor/LICENSE +Assets/ExternalDependencyManager/Editor/README.md diff --git a/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt.meta b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt.meta new file mode 100644 index 00000000..5c111e2b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 3e27eb74b8d448cd9aa7688085c8ad76 +labels: +- gvh +- gvh_manifest +- gvh_version-1.2.175 +- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt +- gvhp_manifestname-0External Dependency Manager +- gvhp_manifestname-play-services-resolver +timeCreated: 1474401009 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum.meta new file mode 100644 index 00000000..964718e4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7f83cc9bbba23dd45b61bebbde6d6697 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account.meta new file mode 100644 index 00000000..2d21fe6a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 27603cf819674e0a9c80adba5bc01a67 +timeCreated: 1674703286 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs new file mode 100644 index 00000000..b06d33ac --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs @@ -0,0 +1,44 @@ +using Nethereum.JsonRpc.Client; +using Nethereum.RPC.Accounts; +using Nethereum.RPC.AccountSigning; +using Nethereum.RPC.NonceServices; +using Nethereum.RPC.TransactionManagers; +using Nethereum.Signer.EIP712; + +namespace MetaMask.NEthereum +{ + public class MetaMaskAccount : IAccount + { + private readonly MetaMaskWallet _wallet; + private readonly IClient _client; + + public string Address + { + get + { + return _wallet.SelectedAddress; + } + } + + public ITransactionManager TransactionManager { get; } + public INonceService NonceService { get; set; } + public IAccountSigningService AccountSigningService { get; } + + public IClient Client + { + get + { + return _client; + } + } + + public MetaMaskAccount(MetaMaskWallet wallet, IClient client) + { + _wallet = wallet; + _client = client; + TransactionManager = new MetaMaskTransactionManager(this); + NonceService = new InMemoryNonceService(_wallet.SelectedAddress, client); + AccountSigningService = new AccountSigningService(client); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs.meta new file mode 100644 index 00000000..1a969fbd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskAccount.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6d136fbce36e419596bb9dd871494bc6 +timeCreated: 1674703278 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs new file mode 100644 index 00000000..797de1da --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs @@ -0,0 +1,12 @@ +using Nethereum.RPC.TransactionManagers; + +namespace MetaMask.NEthereum +{ + public class MetaMaskTransactionManager : TransactionManager + { + public MetaMaskTransactionManager(MetaMaskAccount account) : base(account.Client) + { + Account = account; + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs.meta new file mode 100644 index 00000000..9a76803f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/Account/MetaMaskTransactionManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 765e89def17a4a9fa35ed665388a6fe3 +timeCreated: 1677198900 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs new file mode 100644 index 00000000..724a18f1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MetaMask.Models; +using Nethereum.JsonRpc.Client; +using Nethereum.JsonRpc.Client.RpcMessages; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MetaMask.NEthereum +{ + public class MetaMaskClient : ClientBase + { + private MetaMaskWallet _metaMask; + + public MetaMaskClient(MetaMaskWallet metaMask) + { + this._metaMask = metaMask; + } + + private static readonly Random rng = new Random(); + private static readonly DateTime UnixEpoch = + new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + + public static long GenerateRpcId() + { + var date = (long)((DateTime.UtcNow - UnixEpoch).TotalMilliseconds) * (10L * 10L * 10L); + var extra = (long)Math.Floor(rng.NextDouble() * (10.0 * 10.0 * 10.0)); + return date + extra; + } + + protected override async Task SendAsync(RpcRequestMessage message, string route = null) + { + // Regenerate the NEthereum json-rpc id + var id = GenerateRpcId(); + var mapParameters = message.RawParameters as Dictionary; + var arrayParameters = message.RawParameters as object[]; + var rawParameters = message.RawParameters; + + var rpcRequestMessage = mapParameters != null + ? new RpcRequestMessage(id, message.Method, mapParameters) + : arrayParameters != null + ? new RpcRequestMessage(id, message.Method, arrayParameters) + : new RpcRequestMessage(id, message.Method, rawParameters); + + var response = await _metaMask.Request(new MetaMaskEthereumRequest() + { + Id = rpcRequestMessage.Id.ToString(), + Method = rpcRequestMessage.Method, + Parameters = rpcRequestMessage.RawParameters + }); + + try + { + var convertedResponse = JsonConvert.DeserializeObject(response.ToString()); + return new RpcResponseMessage(rpcRequestMessage.Id, convertedResponse); + } +#pragma warning disable CS0168 + catch (JsonReaderException jex) +#pragma warning restore CS0168 + { + // Sometimes we'll get back a tx hash instead of a response object. + // For those cases we catch the JSON error and use the hash string directly. + var stringResponse = response.ToString(); + return new RpcResponseMessage(rpcRequestMessage.Id, stringResponse); + } + } + + protected override Task SendAsync(RpcRequestMessage[] requests) + { + return Task.WhenAll(requests.Select(r => SendAsync(r))); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs.meta new file mode 100644 index 00000000..4741f364 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskClient.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3c5f8221821b404ba63b8f699215bc3e +timeCreated: 1674703251 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs new file mode 100644 index 00000000..3bb56c12 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs @@ -0,0 +1,20 @@ +using MetaMask.Unity; +using Nethereum.Web3; + +namespace MetaMask.NEthereum +{ + public static class MetaMaskNEthereumExtensions + { + public static Web3 CreateWeb3(this MetaMaskUnity metaMaskUnity) + { + return metaMaskUnity.Wallet.CreateWeb3(); + } + + public static Web3 CreateWeb3(this MetaMaskWallet metaMaskWallet) + { + var client = new MetaMaskClient(metaMaskWallet); + var account = new MetaMaskAccount(metaMaskWallet, client); + return new Web3(account, client); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs.meta new file mode 100644 index 00000000..7f8debe3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.NEthereum/MetaMaskNEthereumExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e854152d200940358ddcfe669f17b6bd +timeCreated: 1674705397 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask.meta b/Assets/Thirdweb/Core/Plugins/MetaMask.meta new file mode 100644 index 00000000..42f2f468 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f94697330e2c3754a9e8b5e33648585d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor.meta new file mode 100644 index 00000000..63162621 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ec055274d831174cae95b7da88e0d97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs new file mode 100644 index 00000000..4f3e7182 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs @@ -0,0 +1,43 @@ +using System.IO; +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +#if UNITY_IOS +using UnityEditor.iOS.Xcode; +#endif + +namespace MetaMask +{ + + public class BuildPostProcessor + { + + [PostProcessBuild(1)] + public static void OnPostProcessBuild(BuildTarget target, string path) + { + if (target == BuildTarget.iOS) + { +#if UNITY_IOS + // Read. + string projectPath = PBXProject.GetPBXProjectPath(path); + PBXProject project = new PBXProject(); + project.ReadFromString(File.ReadAllText(projectPath)); + string projectTarget = project.GetUnityMainTargetGuid(); + + // Add `-ObjC` to "Other Linker Flags". + project.AddBuildProperty(projectTarget, "OTHER_LDFLAGS", "-ObjC"); + project.SetBuildProperty(projectTarget, "ENABLE_BITCODE", "YES"); + + // Fix for iOS 15 + project.AddBuildProperty(projectTarget, "OTHER_CODE_SIGN_FLAGS", + "--generate-entitlement-der -o runtime --runtime-version $DEPLOYMENT_TARGET"); + + // Write. + File.WriteAllText(projectPath, project.WriteToString()); +#endif + } + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs.meta new file mode 100644 index 00000000..d7c5bcf6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/BuildPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44a53c514e09b4fb9962d0fea757be7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI.meta new file mode 100644 index 00000000..2ce3f4a1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41229122ba2928044908d70ed972530b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs new file mode 100644 index 00000000..b15b550a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs @@ -0,0 +1,101 @@ +using System.IO; +using evm.net.Generator; +using evm.net.Models.ABI; +using Newtonsoft.Json; +using UnityEditor; +using UnityEngine; + +public class ContractGeneratorEditor : EditorWindow +{ + private static ContractGeneratorEditor instance; + + private Vector2 AbiScrollPos; + private string AbiJson = "[\n\t{ }\n]"; + private string rootNamespace = "Contracts"; + + [MenuItem("Tools/MetaMask/Contract ABI Converter")] + public static void Initialize() + { + instance = GetWindow(); + instance.titleContent = new GUIContent("Contract ABI -> Code Generator"); + instance.minSize = new Vector2(440, 292); + instance.Show(); + } + + private void OnEnable() + { + EditorApplication.update += EditorUpdate; + } + + private void OnDisable() + { + EditorApplication.update -= EditorUpdate; + } + + private void EditorUpdate() + { + + } + + private void OnGUI() + { + if (instance == null) + { + Initialize(); + } + + EditorGUILayout.LabelField("Contract ABI Json", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("Copy and paste your Contract ABI JSON to the text box below, then click Convert. You may optionally set options to customize the generated C# code.", MessageType.Info); + + AbiScrollPos = EditorGUILayout.BeginScrollView(AbiScrollPos); + AbiJson = EditorGUILayout.TextArea(AbiJson, GUILayout.ExpandHeight(true)); + EditorGUILayout.EndScrollView(); + + GUILayout.Space(15f); + + EditorGUILayout.LabelField("Contract Code Settings", EditorStyles.boldLabel); + + rootNamespace = EditorGUILayout.TextField("Root Namespace", rootNamespace); + + GUILayout.Space(15f); + + + if (GUILayout.Button("Convert")) + { + string contractName; + string bytecode = null; + ContractABI abi; + try + { + var contractArtifact = JsonConvert.DeserializeObject(AbiJson); + contractName = contractArtifact.ContractName; + bytecode = contractArtifact.Bytecode; + abi = contractArtifact.ABI; + } + catch (JsonSerializationException) + { + // Try just ContractABI + abi = JsonConvert.DeserializeObject(AbiJson); + contractName = rootNamespace.Split(".")[0]; + } + + // Choose save directory + string path = EditorUtility.SaveFolderPanel("Choose folder to save scripts", "Assets", contractName); + + ContractInterfaceGenerator generator = new ContractInterfaceGenerator(rootNamespace, contractName, bytecode, abi); + var items = generator.GenerateAll(); + + foreach (var item in items.Keys) + { + var filepath = path + "/" + item + ".cs"; + var text = items[item]; + + File.WriteAllText(filepath, text); + } + + AssetDatabase.Refresh(); + } + } + + +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs.meta new file mode 100644 index 00000000..3cee0cf6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/ContractGeneratorEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5220868ccfc5b74690d0be1ef8e9599 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs new file mode 100644 index 00000000..1764d70f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs @@ -0,0 +1,537 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using MetaMask.IO; +using UnityEditor; + +using UnityEngine; + +using MetaMask.Transports.Unity.UI; +using UnityEngine.Experimental.Rendering; + +namespace MetaMask.Unity +{ + public class MetaMaskWindow : EditorWindow + { + #region Consts + /// The path to the header Image. + private const string _headerImagePath = "MetaMask/EditorImages/MetaMask_Header_Logo"; + /// The path to the logo Image. + private const string _metamaskLogoImagePath = "MetaMask/EditorImages/Metamask_Stacked_Logo"; + /// The path to the background Image. + private const string _backgroundImagePath = "MetaMask/EditorImages/MetaMask_EditorWindow_BG"; + /// The path to the background Image. + private const string _buttonImagePath = "MetaMask/EditorImages/MetaMask_Button"; + + #endregion + + #region Fields + + /// The current state of the MetaMask Editor UI Window. + enum MetaMaskState + { + main, + install, + connect + } + + /// The current state of the MetaMask client. + private MetaMaskState _state = MetaMaskState.main; + /// The style for the header of the main window. + private GUIStyle _headerStyle; + /// The style for the MetaMask logo. + private GUIStyle _metamaskLogoStyle; + /// The style used for text that is displayed in the main window. + private GUIStyle _higherTextStyle; + /// The style for the H2 text. + private GUIStyle _h2TextStyle; + /// The style for the body text. + private GUIStyle _bodyTextStyle; + /// The style for the button style. + private GUIStyle _buttonStyle; + /// The style for the input field. + private GUIStyle _inputFieldStyle; + /// The style for the input toggle. + private GUIStyle _inputToggleStyle; + /// The style for the side-by-side view. + private GUIStyle _sidebySideStyle; + /// The style for the small Header view. + private GUIStyle _smallHeaderStyle; + + /// The last y-coordinate of the pointer. + private float _lastYPosition; + /// Gets the name of the application. + /// The name of the application. + private string _appNameText = "App Name"; + /// The text to display in the app URL field. + private string _appUrlText = "App Url"; + /// The text to display in the app URL field. + private Texture2D _appIconTexture; + /// Gets the user agent string for the current application. + /// The user agent string for the current application. + private string _appUserAgentText = "User Agent"; + /// The text to display in the Encryption Password field. + private string _encryptionPasswordText = "Encryption Password"; + /// The text to display in the Session Identifier field. + private string _sessionIdentifierText = "Session Identifier"; + /// Gets or sets a value indicating whether the application is in debug mode. + private bool _logsEnabled; + + #endregion + + #region Editor Methods + + [MenuItem("Tools/MetaMask/Setup Window")] + /// Shows the window. + public static void ShowWindow() + { + var window = GetWindow("MetaMask Setup"); + + LoadSettings(FindCurrentConfig(), window); + } + + /// The main GUI function. + private void OnGUI() + { + DrawBackground(); + MaximumWindow(); + InitStyles(); + if (_state == MetaMaskState.main) + Installer(); + else if (_state == MetaMaskState.install) + Credentials(); + else if (_state == MetaMaskState.connect) + DrawConnect(); + } + + #endregion + + #region Drawer Methods + + private void DrawHeader(string title) + { + GUILayout.Box(Resources.Load(_headerImagePath), _headerStyle); + GUILayout.Box(Resources.Load(_metamaskLogoImagePath), _metamaskLogoStyle); + GUILayout.Box(title, _higherTextStyle); + } + + /// Draws the connect screen. + private void DrawConnect() + { + GUILayout.Box(Resources.Load(_headerImagePath), _headerStyle); + GUILayout.Box(Resources.Load(_metamaskLogoImagePath), _metamaskLogoStyle); + GUILayout.Box("SDK Configured!", _higherTextStyle); + GUILayout.Box( + "Thank you for configuring the MetaMask SDK. You can now use the MetaMask SDK to connect to the MetaMask Wallet.", + _bodyTextStyle); + GUILayout.BeginArea(new Rect((EditorGUIUtility.currentViewWidth / 2) - 70, _lastYPosition + 120, 165, 80)); + if (GUILayout.Button("Spawn Instance", new GUIStyle(_buttonStyle) + { + fixedWidth = 135 + })) + { + var obj = FindObjectOfType(); + if (obj != null) + { + Debug.LogError("An instance of MetaMaskUnity already exists in the currently open scene"); + } + else + { + var newObj = new GameObject(); + var mmu = newObj.AddComponent(); + + // set default transport + var fieldInfo = mmu.GetType().GetField("_transport", BindingFlags.Instance | BindingFlags.NonPublic); + fieldInfo?.SetValue(mmu, MetaMaskUnityUITransport.DefaultInstance); + } + } + + GUILayout.EndArea(); + StoreYPosition(); + GUILayout.BeginArea(new Rect((EditorGUIUtility.currentViewWidth / 2) - 65, _lastYPosition + 180, 165, 100)); + if (GUILayout.Button("Main Menu", _buttonStyle)) + { + _state = MetaMaskState.main; + } + + GUILayout.EndArea(); + StoreYPosition(); + } + + /// The installer window. + private void Installer() + { + GUILayout.Box(Resources.Load(_headerImagePath), _headerStyle); + GUILayout.Box(Resources.Load(_metamaskLogoImagePath), _metamaskLogoStyle); + GUILayout.Box("Welcome Back!", _higherTextStyle); + GUILayout.Box( + "Welcome to the MetaMask SDK Installer Window, Below you will find our documentation as well as a section to modify the SDK configuration!", + _bodyTextStyle); + GUILayout.BeginArea(new Rect((EditorGUIUtility.currentViewWidth / 2) - 65, _lastYPosition + 120, 165, 80)); + if (GUILayout.Button("Documentation", _buttonStyle)) + { + Application.OpenURL("https://docs.metamask.io/guide/"); + } + + GUILayout.EndArea(); + StoreYPosition(); + GUILayout.BeginArea(new Rect((EditorGUIUtility.currentViewWidth / 2) - 65, _lastYPosition + 180, 165, 100)); + if (GUILayout.Button("Credentials", _buttonStyle)) + { + _state = MetaMaskState.install; + } + + GUILayout.EndArea(); + StoreYPosition(); + } + + private Dictionary scrollPositions = new Dictionary(); + private string MakeTextField(string label, string value) + { + EditorGUILayout.LabelField(label, this._smallHeaderStyle); + if (!scrollPositions.ContainsKey(label)) + scrollPositions.Add(label, new Vector2()); + + var scrollPosition = scrollPositions[label]; + scrollPositions[label] = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.ExpandHeight(true)); + var newValue = GUILayout.TextField(value, _inputFieldStyle, GUILayout.ExpandWidth(true)); + GUILayout.EndScrollView(); + return newValue; + } + + /// Displays the credentials screen which allows the configuration of the MetaMask SDK. + private void Credentials() + { + GUILayout.Box(Resources.Load(_headerImagePath), _headerStyle); + GUILayout.Box("App Configuration", _higherTextStyle); + GUILayout.Box("Please enter your application configuration data below!", _bodyTextStyle); + _appNameText = MakeTextField("App Name", _appNameText); + _appUrlText = MakeTextField("App Url", _appUrlText); + + GUILayout.BeginVertical(); + EditorGUILayout.LabelField("App Icon", this._smallHeaderStyle); + _appIconTexture = EditorGUILayout.ObjectField("", _appIconTexture, typeof(Texture2D), true, GUILayout.Width(90), GUILayout.Height(70)) as Texture2D; + EditorGUILayout.EndVertical(); + + //_appIconUrlText = MakeTextField("App Icon Url", _appIconUrlText); + _appUserAgentText = MakeTextField("User Agent", _appUserAgentText); + var oc = GUI.contentColor; + GUI.contentColor = _inputToggleStyle.normal.textColor; + _logsEnabled = GUILayout.Toggle(_logsEnabled, "Logs Enabled", _inputToggleStyle); + GUI.contentColor = oc; + GUILayout.BeginHorizontal(_sidebySideStyle); + if (GUILayout.Button("Back", _buttonStyle)) + { + _state = MetaMaskState.main; + Repaint(); + } + + GUILayout.Space(25); + + if (GUILayout.Button("Apply", _buttonStyle)) + { + _state = MetaMaskState.connect; + Repaint(); + ApplySettings(); + } + + GUILayout.EndHorizontal(); + GUILayout.Space(15); + StoreYPosition(); + } + + #endregion + + #region Private Methods + + private static MetaMaskConfig FindCurrentConfig() + { + var metamaskUnity = FindObjectOfType(); + if (metamaskUnity == null) + { + metamaskUnity = MetaMaskUnity.Instance; + } + + // We cannot use ?. because it may bypass Unity.Object custom null conditional check + return metamaskUnity != null ? metamaskUnity.Config : MetaMaskConfig.DefaultInstance; + } + + /// Applies the current settings to the SDK. + private void ApplySettings() + { + var metaMaskConfig = FindCurrentConfig(); + SerializedObject soMetaMaskConfig = new SerializedObject(metaMaskConfig); + SerializedProperty spLoggingEnabled = soMetaMaskConfig.FindProperty("log"); + SerializedProperty spUserAgent = soMetaMaskConfig.FindProperty("userAgent"); + SerializedProperty spAppName = soMetaMaskConfig.FindProperty("appName"); + SerializedProperty spAppUrl = soMetaMaskConfig.FindProperty("appUrl"); + SerializedProperty spAppIconUrl = soMetaMaskConfig.FindProperty("appIcon"); + SerializedProperty spEncryptionPassword = soMetaMaskConfig.FindProperty("encryptionPassword"); + SerializedProperty spSessionIdentifier = soMetaMaskConfig.FindProperty("sessionIdentifier"); + spAppName.stringValue = this._appNameText; + spAppUrl.stringValue = this._appUrlText; + spAppIconUrl.stringValue = TextureToBase64(this._appIconTexture); + spEncryptionPassword.stringValue = this._appUserAgentText; + spSessionIdentifier.stringValue = this._sessionIdentifierText; + spLoggingEnabled.boolValue = this._logsEnabled; + spUserAgent.stringValue = this._appUserAgentText; + soMetaMaskConfig.ApplyModifiedProperties(); + } + + /// Loads the settings from the SDK's settings . + /// The configuration to load the settings into. + /// The configuration to load the settings into. + /// The window to load the settings into. + private static void LoadSettings(MetaMaskConfig metaMaskConfig, MetaMaskWindow window) + { + SerializedObject soMetaMaskConfig = new SerializedObject(metaMaskConfig); + SerializedProperty spLoggingEnabled = soMetaMaskConfig.FindProperty("log"); + SerializedProperty spUserAgent = soMetaMaskConfig.FindProperty("userAgent"); + SerializedProperty spAppName = soMetaMaskConfig.FindProperty("appName"); + SerializedProperty spAppUrl = soMetaMaskConfig.FindProperty("appUrl"); + SerializedProperty spAppIcon = soMetaMaskConfig.FindProperty("appIcon"); + SerializedProperty spEncryptionPassword = soMetaMaskConfig.FindProperty("encryptionPassword"); + SerializedProperty spSessionIdentifier = soMetaMaskConfig.FindProperty("sessionIdentifier"); + window._appNameText = spAppName.stringValue; + window._appUrlText = spAppUrl.stringValue; + window._appIconTexture = Base64ToTexture(spAppIcon.stringValue); + window._appUserAgentText = spUserAgent.stringValue; + window._encryptionPasswordText = spEncryptionPassword.stringValue; + window._sessionIdentifierText = spSessionIdentifier.stringValue; + window._logsEnabled = spLoggingEnabled.boolValue; + } + + /// Stores the y-position of the last drawn GUI element. + private void StoreYPosition() + { + if (Event.current.type == EventType.Repaint) + { + _lastYPosition = GUILayoutUtility.GetLastRect().y; + } + } + + /// Initializes the styles. + private void InitStyles() + { + if (_headerStyle == null) + { + _headerStyle = new GUIStyle(); + RemovePadding(_headerStyle); + _headerStyle.fixedHeight = 90; + _headerStyle.stretchWidth = true; + } + + if (_metamaskLogoStyle == null) + { + _metamaskLogoStyle = new GUIStyle(); + RemovePadding(_metamaskLogoStyle); + _metamaskLogoStyle.fixedHeight = 220; + _metamaskLogoStyle.alignment = TextAnchor.MiddleCenter; + _metamaskLogoStyle.fixedWidth = 240; + _metamaskLogoStyle.margin = new RectOffset(59, 0, 0, 0); + } + + if (_higherTextStyle == null) + { + _higherTextStyle = new GUIStyle(); + _higherTextStyle.wordWrap = true; + _higherTextStyle.alignment = TextAnchor.MiddleCenter; + _higherTextStyle.fontSize = 28; + _higherTextStyle.fontStyle = FontStyle.Bold; + _higherTextStyle.normal.textColor = Color.black; + _higherTextStyle.margin = new RectOffset(0, 0, 0, 20); + } + + if (_h2TextStyle == null) + { + _h2TextStyle = new GUIStyle(); + _h2TextStyle.wordWrap = true; + _h2TextStyle.alignment = TextAnchor.LowerLeft; + _h2TextStyle.fontSize = 20; + _h2TextStyle.fontStyle = FontStyle.Bold; + _h2TextStyle.normal.textColor = Color.black; + _h2TextStyle.margin = new RectOffset(20, 0, 5, 10); + } + + if (_bodyTextStyle == null) + { + _bodyTextStyle = new GUIStyle(); + _bodyTextStyle.wordWrap = true; + _bodyTextStyle.alignment = TextAnchor.MiddleCenter; + _bodyTextStyle.fontSize = 18; + _bodyTextStyle.fontStyle = FontStyle.Bold; + _bodyTextStyle.normal.textColor = Color.grey; + _bodyTextStyle.margin = new RectOffset(20, 20, 0, 20); + } + + if (_buttonStyle == null) + { + _buttonStyle = new GUIStyle(); + _buttonStyle.normal.background = Resources.Load(_buttonImagePath); + _buttonStyle.fontSize = 14; + _buttonStyle.fontStyle = FontStyle.Bold; + _buttonStyle.border = new RectOffset(0, 0, 0, 0); + _buttonStyle.normal.textColor = Color.white; + _buttonStyle.alignment = TextAnchor.MiddleCenter; + _buttonStyle.fixedWidth = 125; + _buttonStyle.fixedHeight = 45; + } + + if (_inputFieldStyle == null) + { + _inputFieldStyle = new GUIStyle(GUI.skin.textField); + _inputFieldStyle.normal.background = MakeTexture(2, 2, Color.black); + _inputFieldStyle.fontSize = 16; + _inputFieldStyle.normal.textColor = Color.white; + _inputFieldStyle.fontStyle = FontStyle.Bold; + _inputFieldStyle.margin = new RectOffset(20, 20, 0, 0); + _inputFieldStyle.padding = new RectOffset(5, 5, 10, 10); + } + + if (_inputToggleStyle == null) + { + _inputToggleStyle = new GUIStyle(GUI.skin.toggle); + _inputToggleStyle.fontSize = 20; + _inputToggleStyle.normal.textColor = Color.black; + _inputToggleStyle.fontStyle = FontStyle.Bold; + _inputToggleStyle.margin = new RectOffset(20, 20, 0, 0); + _inputToggleStyle.padding = new RectOffset(35, 5, 10, 10); + } + + if (_smallHeaderStyle == null) + { + _smallHeaderStyle = new GUIStyle("miniLabel"); + _smallHeaderStyle.margin = new RectOffset(20, 0, 0, 0); + _smallHeaderStyle.padding = new RectOffset(20, 0, 0, 0); + _smallHeaderStyle.normal.textColor = Color.black; + _smallHeaderStyle.fontStyle = FontStyle.Bold; + } + + if (_sidebySideStyle == null) + { + _sidebySideStyle = new GUIStyle(); + _sidebySideStyle.margin = new RectOffset(42, 0, 0, 0); + _sidebySideStyle.padding = new RectOffset(0, 0, 5, 0); + } + } + + /// Removes the padding and border from a GUIStyle. + /// The style to remove the padding and border from. + /// The style with the padding and border removed. + private GUIStyle RemovePadding(GUIStyle style) + { + style.padding = new RectOffset(0, 0, 0, 0); + style.border = new RectOffset(0, 0, 0, 0); + return style; + } + + /// Sets the window to its maximum size. + private void MaximumWindow() + { + /*if (_state == MetaMaskState.install) + { + this.maxSize = new Vector2(365, 825); + this.minSize = new Vector2(365, 825); + } + else + {*/ + this.maxSize = new Vector2(365, 615); + this.minSize = new Vector2(365, 615); + //} + } + + /// Draws the background image. + private void DrawBackground() + { + Texture texture = Resources.Load(_backgroundImagePath); + GUI.DrawTexture(new Rect(0, 0, this.position.width, this.position.height), texture); + } + + /// Creates a texture with the specified color. + /// The width of the texture. + /// The height of the texture. + /// The color of the texture. + /// The texture. + private Texture2D MakeTexture(int width, int height, Color color) + { + Color[] pixels = new Color[width * height]; + for (int i = 0; i < pixels.Length; i++) + { + pixels[i] = color; + } + + Texture2D backgroundTexture = new Texture2D(width, height); + backgroundTexture.SetPixels(pixels); + backgroundTexture.Apply(); + return backgroundTexture; + } + + private string TextureToBase64(Texture2D texture2D) + { + // resize the texture + if (texture2D.width > 64 || texture2D.height > 64) + { + var source = texture2D; + var newWidth = 64; + var newHeight = 64; + + RenderTexture rt = RenderTexture.GetTemporary(newWidth, newHeight); + rt.filterMode = source.filterMode; + RenderTexture.active = rt; + Graphics.Blit(source, rt); + Texture2D nTex = new Texture2D(newWidth, newHeight); + nTex.ReadPixels(new Rect(0, 0, newWidth, newHeight), 0,0); + nTex.Apply(); + RenderTexture.active = null; + RenderTexture.ReleaseTemporary(rt); + + texture2D = nTex; + } + + // Always copy the pixels to a in-memory texture + // Since this texture may not support reading or encoding + Texture2D newTexture = new Texture2D(texture2D.width, texture2D.height, TextureFormat.RGBAFloat, false); + newTexture.SetPixels(0,0, texture2D.width, texture2D.height, texture2D.GetPixels(0, 0, texture2D.width, texture2D.height)); + newTexture.Apply(); + + byte[] imageData = newTexture.EncodeToPNG(); + return Convert.ToBase64String(imageData); + } + + private static Texture2D Base64ToTexture(string encodedData) + { + try + { + byte[] imageData = Convert.FromBase64String(encodedData); + + int width, height; + GetImageSize(imageData, out width, out height); + + Texture2D texture = new Texture2D(width, height, TextureFormat.RGBAFloat, false); + texture.hideFlags = HideFlags.HideAndDontSave; + //texture.filterMode = FilterMode.Point; + texture.LoadImage(imageData, true); + + return texture; + } + catch (Exception e) + { + Debug.LogError(e); + return null; + } + } + + private static void GetImageSize(byte[] imageData, out int width, out int height) + { + width = ReadInt(imageData, 3 + 15); + height = ReadInt(imageData, 3 + 19); + } + + private static int ReadInt(byte[] imageData, int offset) + { + return (imageData[offset] << 8) | imageData[offset + 1]; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs.meta new file mode 100644 index 00000000..dd56ee00 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/EditorGUI/MetaMaskWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 720b6e58eebc8894d9f6faad43877335 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml new file mode 100644 index 00000000..6d736f70 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml @@ -0,0 +1,83 @@ + + + + + + + https://repo.maven.apache.org/maven2 + + + + + + extra-google-m2repository + + + + https://maven.google.com + + + + + + + + + + + diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml.meta new file mode 100644 index 00000000..855903a6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/MetaMaskDependencies.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 851f69af3271349458d45fd814d5d0b5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef new file mode 100644 index 00000000..1b9ae5ee --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Thirdweb.Editor.MetaMask", + "rootNamespace": "", + "references": [ + "GUID:0f2166a81877b6f4b81956d2a579e6f7" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef.meta new file mode 100644 index 00000000..3d6ee50f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Editor/Thirdweb.Editor.MetaMask.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba1514fe8f5324a40b27c919710dddfe +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages.meta new file mode 100644 index 00000000..6e2982b1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03d178af767845c478e63ac006c0f154 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd new file mode 100644 index 00000000..e13d2918 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd.meta new file mode 100644 index 00000000..8611ac94 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Button.psd.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: e827d5811d3e02642bd78326a3c9f181 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd new file mode 100644 index 00000000..e5cd25ad Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta new file mode 100644 index 00000000..e759ff8b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 04e4a7e3526af8f46a120a27d1598735 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png new file mode 100644 index 00000000..d211c608 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta new file mode 100644 index 00000000..4e60148b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: ab98337ba7c5c8c4bb300a2e170b7d18 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png new file mode 100644 index 00000000..f9fe7ec6 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png.meta new file mode 100644 index 00000000..8f13f011 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Logo.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 0831920c646a2e7498d19978ef045ae3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png new file mode 100644 index 00000000..255e3130 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta new file mode 100644 index 00000000..348d232b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta @@ -0,0 +1,166 @@ +fileFormatVersion: 2 +guid: 446455d6cb148ab4ba8bf041b63c2760 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer.meta new file mode 100644 index 00000000..81ddde73 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1391b70d11a944649b1d3d9a0b2145db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor.meta new file mode 100644 index 00000000..32a9b66d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94804ca8a24eccc47880d648ed52e05c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs new file mode 100644 index 00000000..a4ac575d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs @@ -0,0 +1,354 @@ +using System.Collections.Generic; + +using MetaMask.Unity; + +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; + +using UnityEngine; + +namespace MetaMask +{ + + public class MetaMaskInstallerWindow : EditorWindow + { + + private static MetaMaskInstallerWindow instance; + + private const string showOnStartupKey = "metamask.installer.showOnStartup"; + private const string BasePath = "Assets/MetaMask/Installer/"; + private const string PackagesPath = BasePath + "Packages/"; + private const string MainPackage = PackagesPath + "main.unitypackage"; + private const string DemoPackage = PackagesPath + "demo.unitypackage"; + + private static readonly Dictionary PackageManagerDependencies = new Dictionary() { + { "com.unity.nuget.newtonsoft-json", new PackageManagerDependency( "com.unity.nuget.newtonsoft-json", "Newtonsoft.Json", "https://docs.unity3d.com/Packages/com.unity.nuget.newtonsoft-json@latest", false) } + }; + + private static readonly Dictionary PackageDependencies = new Dictionary() { + { "JAR Resolver", new PackageDependency( PackagesPath+ "external-dependency-manager-1.2.175.unitypackage", "JAR Resolver", "https://github.com/googlesamples/unity-jar-resolver",() => AssetDatabase.IsValidFolder("Assets/ExternalDependencyManager/"))}, + }; + + private static Dictionary DependenciesStatus = new Dictionary(); + + private ListRequest listRequest; + private AddRequest addRequest; + private Vector2 scrollPosition; + + [MenuItem("Tools/MetaMask/Install")] + public static void Initialize() + { + instance = GetWindow(); + instance.titleContent = new GUIContent("MetaMask Unity Installer"); + instance.minSize = new Vector2(440, 292); + instance.UpdateDependencies(); + instance.Show(); + } + + [InitializeOnLoadMethod] + private static void ShowOnStartup() + { + var show = EditorPrefs.GetBool(showOnStartupKey, true); + if (show) + { + Initialize(); + EditorPrefs.SetBool(showOnStartupKey, false); + } + } + + private void OnEnable() + { + EditorApplication.update += EditorUpdate; + DependenciesStatus = JsonUtility.FromJson>(EditorPrefs.GetString("metamask.dependencies.status", JsonUtility.ToJson(DependenciesStatus))); + } + + private void OnDisable() + { + EditorApplication.update -= EditorUpdate; + EditorPrefs.SetString("metamask.dependencies.status", JsonUtility.ToJson(DependenciesStatus)); + } + + private void EditorUpdate() + { + if (instance == null) + { + return; + } + if (this.listRequest != null && this.listRequest.IsCompleted) + { + if (this.listRequest.Status == StatusCode.Success) + { + foreach (var package in this.listRequest.Result) + { + if (PackageManagerDependencies.ContainsKey(package.name)) + { + PackageManagerDependencies[package.name].Installed = true; + } + } + this.listRequest = null; + } + else if (this.listRequest.Status >= StatusCode.Failure) + { + if (this.listRequest.Error != null) + { + Debug.LogError(this.listRequest.Error.message); + this.listRequest = null; + } + } + } + + if(PackageDependencies.Count > 0) + { + foreach (var package in PackageDependencies) + { + if (package.Value.CheckInstalled()) + { + DependenciesStatus[package.Key] = true; + } + } + } + + if (this.addRequest != null && this.addRequest.IsCompleted) + { + if (this.addRequest.Status == StatusCode.Success) + { + Debug.Log("The dependency has been installed successfully"); + this.addRequest = null; + } + else if (this.addRequest.Status >= StatusCode.Failure) + { + if (this.addRequest.Error != null) + { + Debug.LogError(this.addRequest.Error.message); + } + this.addRequest = null; + } + } + } + + private void OnGUI() + { + if (instance == null) + { + Initialize(); + } + this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition); + GUILayout.Label("The below dependencies need to be installed in order to install and use the MetaMask package.", EditorStyles.wordWrappedLabel); + EditorGUILayout.HelpBox("You can install them using their corresponding install button, or you can just manually install them by downloading them from any other place, or if you have them installed in your project already, check the box alongside that package to mark it as installed so you can proceed with installation of the main package.", MessageType.Info); + bool allInstalled = true; + foreach (var item in PackageManagerDependencies) + { + if (!DependenciesStatus.ContainsKey(item.Key)) + { + DependenciesStatus[item.Key] = false; + } + var dependency = item.Value; + allInstalled &= DependenciesStatus[item.Key] || dependency.Installed; + GUILayout.BeginVertical(EditorStyles.helpBox); + + GUILayout.BeginHorizontal(); + + DependenciesStatus[item.Key] = EditorGUILayout.ToggleLeft(dependency.DisplayName, DependenciesStatus[item.Key] || dependency.Installed, EditorStyles.boldLabel); + + GUILayout.FlexibleSpace(); + + EditorGUI.BeginDisabledGroup(dependency.Installed || this.addRequest != null); + + if (GUILayout.Button(dependency.Installed ? "Installed" : "Install")) + { + if (EditorUtility.DisplayDialog("Install Package", "This will install the '" + dependency.DisplayName + "' package in your project through package manager.", "Install", "Cancel")) + { + MetaMaskUnityAnalytics.LogEvent($"Install Dependency {dependency.DisplayName}"); + if (dependency.IsExternal) + { + this.addRequest = Client.Add(dependency.ExternalUrl); + } + else + { + this.addRequest = Client.Add(dependency.PackageName); + } + } + } + EditorGUI.EndDisabledGroup(); + + if (GUILayout.Button("Learn more")) + { + MetaMaskUnityAnalytics.LogEvent($"Learn More Dependency {dependency.DisplayName}"); + Application.OpenURL(dependency.LearnMoreUrl); + } + GUILayout.EndHorizontal(); + + GUILayout.EndVertical(); + } + + foreach (var item in PackageDependencies) + { + if (!DependenciesStatus.ContainsKey(item.Key)) + { + DependenciesStatus[item.Key] = false; + } + var dependency = item.Value; + dependency.Installed = dependency.CheckInstalled(); + allInstalled &= DependenciesStatus[item.Key] || dependency.Installed; + GUILayout.BeginVertical(EditorStyles.helpBox); + + GUILayout.BeginHorizontal(); + + DependenciesStatus[item.Key] = EditorGUILayout.ToggleLeft(dependency.DisplayName, DependenciesStatus[item.Key] || dependency.Installed, EditorStyles.boldLabel); + + //GUILayout.Label(dependency.DisplayName, EditorStyles.boldLabel); + + GUILayout.FlexibleSpace(); + + EditorGUI.BeginDisabledGroup(dependency.Installed || this.addRequest != null); + + if (GUILayout.Button(dependency.Installed ? "Installed" : "Install")) + { + if (EditorUtility.DisplayDialog("Install Package", "This will import the '" + dependency.DisplayName + "' package in your project directly.", "Install", "Cancel")) + { + AssetDatabase.ImportPackage(dependency.PackagePath, true); + } + } + EditorGUI.EndDisabledGroup(); + + if (GUILayout.Button("Learn more")) + { + Application.OpenURL(dependency.LearnMoreUrl); + } + GUILayout.EndHorizontal(); + + GUILayout.EndVertical(); + } + + // Demo install + bool isMetaMaskInstalled = System.Type.GetType("MetaMask.Unity.MetaMaskUnity, MetaMaskUnity.Runtime") != null; + + GUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.BeginHorizontal(); + GUILayout.Label("Demo (Optional)", EditorStyles.boldLabel); + GUILayout.FlexibleSpace(); + EditorGUI.BeginDisabledGroup(!isMetaMaskInstalled); + if (GUILayout.Button("Install")) + { + InstallDemoPackage(); + } + EditorGUI.EndDisabledGroup(); + + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.BeginHorizontal(); + string installLabel = "Install MetaMask"; + bool metaMaskInstallReady = this.listRequest == null && allInstalled; + if (!metaMaskInstallReady) + { + installLabel = "Install Anyway"; + } + else if (isMetaMaskInstalled) + { + installLabel = "Reinstall"; + } + if (isMetaMaskInstalled) + { + installLabel = "Already Installed"; + } + if (this.listRequest != null) + { + installLabel = "Checking..."; + } + EditorGUI.BeginDisabledGroup(this.listRequest != null); + if (GUILayout.Button(installLabel, Styles.PrimaryInstallButton, GUILayout.Height(40))) + { + InstallMainPackage(); + } + EditorGUI.EndDisabledGroup(); + EditorGUILayout.EndHorizontal(); + + GUILayout.EndScrollView(); + } + + public void InstallDemoPackage() + { + AssetDatabase.ImportPackage(DemoPackage, true); + MetaMaskUnityAnalytics.LogEvent("Install Demo"); + } + + public void InstallMainPackage() + { + AssetDatabase.ImportPackage(MainPackage, true); + MetaMaskUnityAnalytics.LogEvent("Install Main"); + } + + public void UpdateDependencies() + { + this.listRequest = Client.List(true); + } + + private class Dependency + { + + public readonly string DisplayName; + public readonly string LearnMoreUrl; + + public bool Installed = false; + + public Dependency(string displayName, string learnMoreUrl) + { + this.DisplayName = displayName; + this.LearnMoreUrl = learnMoreUrl; + } + + } + + private class PackageManagerDependency : Dependency + { + + public readonly string PackageName; + public readonly bool IsExternal; + public readonly string ExternalUrl; + + public PackageManagerDependency(string packageName, string displayName, string learnMoreUrl, bool external, string externalUrl = null) : base(displayName, learnMoreUrl) + { + this.PackageName = packageName; + this.IsExternal = external; + this.ExternalUrl = externalUrl; + } + + } + + private class PackageDependency : Dependency + { + + public readonly string PackagePath; + + public readonly System.Func CheckInstalled; + + public PackageDependency(string packagePath, string displayName, string learnMoreUrl, System.Func checkInstalled) : base(displayName, learnMoreUrl) + { + this.PackagePath = packagePath; + this.CheckInstalled = checkInstalled; + } + + } + + private class Styles + { + + public static GUIStyle PrimaryInstallButton; + + static Styles() + { + PrimaryInstallButton = new GUIStyle(GUI.skin.button) + { + fontSize = 14 + }; + } + + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs.meta new file mode 100644 index 00000000..01eeacc5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskInstallerWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87f21828ff0b6bb4e98a81e96f05689e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs new file mode 100644 index 00000000..9d0c2cf7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs @@ -0,0 +1,74 @@ +using System; +using System.IO; + +namespace MetaMask.Unity +{ + + public static class MetaMaskUnityAnalytics + { + + private const string PartnerName = "MetaMask"; + private const string AnalyticsFileName = "analytics"; + private static string MetaMaskUnityUserDirectoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MetaMask"); + + private static Guid Guid { get; set; } + + static MetaMaskUnityAnalytics() + { + Initialize(); + } + + public static void LogEvent(string data) + { + try + { + UnityEngine.VspAttribution.MetaMask.VspAttribution.SendAttributionEvent(data, PartnerName, Guid.ToString()); + } + catch (Exception) + { + } + } + + public static void Initialize() + { + try + { + if (!Directory.Exists(MetaMaskUnityUserDirectoryPath)) + { + Directory.CreateDirectory(MetaMaskUnityUserDirectoryPath); + } + string fullPath = Path.Combine(MetaMaskUnityUserDirectoryPath, AnalyticsFileName); + Guid? guid = new Guid?(); + if (File.Exists(fullPath)) + { + guid = ExtractGuidFrom(fullPath); + } + SetUserGuid(guid, fullPath); + } + catch (Exception) + { + } + } + + private static void SetUserGuid(Guid? guid, string analyticsFilePath) + { + if (guid.HasValue) + { + Guid = guid.Value; + } + else + { + Guid = Guid.NewGuid(); + File.WriteAllText(analyticsFilePath, Guid.ToString()); + } + } + + private static Guid? ExtractGuidFrom(string analyticsFilePath) + { + Guid result; + return !Guid.TryParse(File.ReadAllText(analyticsFilePath), out result) ? new Guid?() : new Guid?(result); + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs.meta new file mode 100644 index 00000000..50920377 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/MetaMaskUnityAnalytics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac7a5534066a0964586be72906196849 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef new file mode 100644 index 00000000..769b456a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef @@ -0,0 +1,16 @@ +{ + "name": "Thirdweb.Editor.MetaMask.Installer", + "rootNamespace": "", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef.meta new file mode 100644 index 00000000..7a186b5a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/Thirdweb.Editor.MetaMask.Installer.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4fe72f4a1eb51b140bbb772e9af29559 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs new file mode 100644 index 00000000..0dc4aab7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs @@ -0,0 +1,98 @@ +using System; + +using UnityEditor; + +using UnityEngine.Analytics; + +namespace UnityEngine.VspAttribution.MetaMask +{ + public static class VspAttribution + { + private const int k_VersionId = 4; + private const int k_MaxEventsPerHour = 10; + private const int k_MaxNumberOfElements = 1000; + private const string k_VendorKey = "unity.vsp-attribution"; + private const string k_EventName = "vspAttribution"; + + private static bool RegisterEvent() + { +#if UNITY_EDITOR + AnalyticsResult result = EditorAnalytics.RegisterEventWithLimit(k_EventName, k_MaxEventsPerHour, + k_MaxNumberOfElements, k_VendorKey, k_VersionId); +#else // IF !UNITY_EDITOR + AnalyticsResult result = Analytics.Analytics.RegisterEvent(k_EventName, k_MaxEventsPerHour, + k_MaxNumberOfElements, k_VendorKey, k_VersionId); +#endif + + bool isResultOk = result == AnalyticsResult.Ok; + return isResultOk; + } + + [Serializable] + private struct VspAttributionData + { + public string actionName; + public string partnerName; + public string customerUid; + public string extra; + } + + /// + /// Registers and attempts to send a VSP Attribution event. + /// + /// Name of the action, identifying a place this event was called from. + /// Identifiable Verified Solutions Partner name. + /// Unique identifier of the customer using Partner's Verified Solution. + public static AnalyticsResult SendAttributionEvent(string actionName, string partnerName, string customerUid) + { + try + { +#if UNITY_EDITOR + // Are Editor Analytics enabled ? (Preferences) + // The event shouldn't be able to report if this is disabled but if we know we're not going to report + // lets early out and not spend time gathering all the data + bool isEditorAnalyticsEnabled = EditorAnalytics.enabled; + + if (!isEditorAnalyticsEnabled) + return AnalyticsResult.AnalyticsDisabled; +#else // IF !UNITY_EDITOR + bool isRuntimeAnalyticsEnabled = Analytics.Analytics.enabled; + + if (!isRuntimeAnalyticsEnabled) + return AnalyticsResult.AnalyticsDisabled; + + if (!Debug.isDebugBuild) + return AnalyticsResult.UnsupportedPlatform; +#endif + + // Can an event be registered? + bool isEventRegistered = RegisterEvent(); + + if (!isEventRegistered) + return AnalyticsResult.InvalidData; + + // Create an expected data object + var eventData = new VspAttributionData + { + actionName = actionName, + partnerName = partnerName, + customerUid = customerUid, + extra = "{}" + }; + +#if UNITY_EDITOR + // Send the Attribution Event + var eventResult = EditorAnalytics.SendEventWithLimit(k_EventName, eventData, k_VersionId); +#else // IF !UNITY_EDITOR + var eventResult = Analytics.Analytics.SendEvent(k_EventName, eventData, k_VersionId); +#endif + return eventResult; + } + catch + { + // Fail silently + return AnalyticsResult.AnalyticsDisabled; + } + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs.meta new file mode 100644 index 00000000..430f0272 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Editor/VspAttribution.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 669c38bfb707b0d4d882c9b647aa9201 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages.meta new file mode 100644 index 00000000..155f9a3a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 570db50b742d2fb4cb55a13ddf6353e4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage new file mode 100644 index 00000000..95883276 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage.meta new file mode 100644 index 00000000..1791d58c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Installer/Packages/main.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c0b12b7426b775b42963c3c3a7c59aa1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins.meta new file mode 100644 index 00000000..2f283271 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba33467e6157ad744a21d1d7eac67b52 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android.meta new file mode 100644 index 00000000..4914032a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a04f027145f6f34399d204f0e166ec5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar new file mode 100644 index 00000000..bfe3334f Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar.meta new file mode 100644 index 00000000..eb4f9c1c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Android/io.metamask.unity.websocket.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: ec5f5bb3964ff954c8feb1a1474ef83d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries.meta new file mode 100644 index 00000000..c7bbb00f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cfed82ed544eaa4dae79f7bc786cb62 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES.meta new file mode 100644 index 00000000..09aa1f2a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d9c3deaaed481f47b95d911b2a15940 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android.meta new file mode 100644 index 00000000..cb568c0c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2c62eade56bd62408f9e4a546dc985b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h new file mode 100644 index 00000000..3af74c26 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h @@ -0,0 +1,84 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef size_t GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +#ifdef _MSC_VER +#include +typedef _Fcomplex GoComplex64; +typedef _Dcomplex GoComplex128; +#else +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; +#endif + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern char* EciesGeneratePrivateKey(); +extern char* EciesGetPublicKey(char* privkey); +extern char* EciesEncrypt(char* pubkey, char* message); +extern char* EciesDecrypt(char* privkey, char* messageB64); + +#ifdef __cplusplus +} +#endif diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h.meta new file mode 100644 index 00000000..a21a9369 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libecies.h.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 7839e87b6ca02db448ecdb719730c0aa +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs.meta new file mode 100644 index 00000000..98c03014 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9c18d6e6188b664496315b466e32408 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a.meta new file mode 100644 index 00000000..4cc759a6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b06b893a0c42f024d88ab6bb4d97081e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so new file mode 100644 index 00000000..f0c5cd3e Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so.meta new file mode 100644 index 00000000..9947cedf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/arm64-v8a/libecies.so.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 0652527d067a0d54898d5f629bad6949 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a.meta new file mode 100644 index 00000000..d4afa4f3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 474bd024841b4894a90880c22ba4986d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so new file mode 100644 index 00000000..cdd70661 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so.meta new file mode 100644 index 00000000..ad75d4b8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/armeabi-v7a/libecies.so.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 89bbc63f17c09c747a8ee72ca511fa48 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86.meta new file mode 100644 index 00000000..7edb497f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d36068cb74dc9a648af855c5544572fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so new file mode 100644 index 00000000..ca953661 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so.meta new file mode 100644 index 00000000..f4e5292f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86/libecies.so.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: c8c2274fbf8dbf84abd72a41944b55b4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: x86 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64.meta new file mode 100644 index 00000000..b3ce130a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51ce198eb895d904d95d35a9325b9bc9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so new file mode 100644 index 00000000..e1966d4a Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so.meta new file mode 100644 index 00000000..5711b18c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Android/libs/x86_64/libecies.so.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: ac95c5625698f6d43801d6c7524067df +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux.meta new file mode 100644 index 00000000..5e712934 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 911b35c6d629841ccaee73299481c10e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h new file mode 100644 index 00000000..a5392156 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h @@ -0,0 +1,78 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include /* for ptrdiff_t below */ + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef __SIZE_TYPE__ GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern char* EciesGeneratePrivateKey(); +extern char* EciesGetPublicKey(char* privkey); +extern char* EciesEncrypt(char* pubkey, char* message); +extern char* EciesDecrypt(char* privkey, char* messageB64); + +#ifdef __cplusplus +} +#endif diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h.meta new file mode 100644 index 00000000..317abb2a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.h.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 001f788bb8a5e6142bfbe77306182e3f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so new file mode 100644 index 00000000..40c3d447 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so.meta new file mode 100644 index 00000000..4f636481 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Linux/ecies.so.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: fa12c2a05952bdb40aaf6f73b0670bc1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac.meta new file mode 100644 index 00000000..7e51d04d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 838cfcc39e16feb4a8857c80142f5ea3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64.meta new file mode 100644 index 00000000..b8498f8c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00df90ff289801e4bb1d3b6d22478bfa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib new file mode 100644 index 00000000..915b0a26 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib.meta new file mode 100644 index 00000000..320dd673 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/amd64/ecies.dylib.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 4c637ebf3d6a18a4688256055dfca1ab +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64.meta new file mode 100644 index 00000000..d13efb4d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a886ef01c4c93f47a73d88051b55770 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib new file mode 100644 index 00000000..63301510 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib.meta new file mode 100644 index 00000000..5a265e90 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/arm64/ecies.dylib.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: b0dfb58dea38b47259a5c582cdafa9d9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: ARM64 + DefaultValueInitialized: true + OS: OSX + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: ARM64 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx.meta new file mode 100644 index 00000000..0dc90c99 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 650ccc71aa684b4499069d1b57916012 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib new file mode 100644 index 00000000..164b1836 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib.meta new file mode 100644 index 00000000..70c83e78 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Mac/osx/ecies.dylib.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: 8ff4932c0a9e9314d84340762709c4d6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux64: 1 + Exclude OSXUniversal: 0 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL.meta new file mode 100644 index 00000000..74c60f3f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0acdd6dc164bbc64f86ce9457dac7ce5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib new file mode 100644 index 00000000..8c400a88 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib @@ -0,0 +1,26090 @@ +var eciesLibrary = { + $core__deps: ["uint8ArrayFromBase64", "uint8ArrayToBase64"], + $core: { + uint8ArrayFromBase64: function (s) { + // 1. Call atob() + var b = atob(s), + b_at = b.charCodeAt.bind(b); + // 2. Construct Uint8Array from String + return Uint8Array.from({ + [Symbol.iterator]() { + var end = b.length, + i = 0; + return { + next() { + return { value: b_at(i++), done: i > end }; + }, + }; + }, + }); + }, + uint8ArrayToBase64: function (a) { + // 1. Preprocess Uint8Array into String + // (TODO: fix RAM usage from intermediate array creation) + var a_s = Array.prototype.map + .call(a, (c) => String.fromCharCode(c)) + .join(String()); + // 2. Call btoa() + return btoa(a_s); + }, + }, + uint8ArrayFromBase64: function (s) { + // 1. Call atob() + var b = atob(s), + b_at = b.charCodeAt.bind(b); + // 2. Construct Uint8Array from String + return Uint8Array.from({ + [Symbol.iterator]() { + var end = b.length, + i = 0; + return { + next() { + return { value: b_at(i++), done: i > end }; + }, + }; + }, + }); + }, + uint8ArrayToBase64: function (a) { + // 1. Preprocess Uint8Array into String + // (TODO: fix RAM usage from intermediate array creation) + var a_s = Array.prototype.map + .call(a, (c) => String.fromCharCode(c)) + .join(String()); + // 2. Call btoa() + return btoa(a_s); + }, + EciesInitialize: function () { + /*! For license information please see bundle.js.LICENSE.txt */ + var eciesjs; + (() => { + var t = { + 9809: (t, e, r) => { + "use strict"; + const i = e; + (i.bignum = r(3550)), + (i.define = r(2500).define), + (i.base = r(1979)), + (i.constants = r(6826)), + (i.decoders = r(8307)), + (i.encoders = r(6579)); + }, + 2500: (t, e, r) => { + "use strict"; + const i = r(6579), + n = r(8307), + o = r(5717); + function a(t, e) { + (this.name = t), + (this.body = e), + (this.decoders = {}), + (this.encoders = {}); + } + (e.define = function (t, e) { + return new a(t, e); + }), + (a.prototype._createNamed = function (t) { + const e = this.name; + function r(t) { + this._initNamed(t, e); + } + return ( + o(r, t), + (r.prototype._initNamed = function (e, r) { + t.call(this, e, r); + }), + new r(this) + ); + }), + (a.prototype._getDecoder = function (t) { + return ( + (t = t || "der"), + this.decoders.hasOwnProperty(t) || + (this.decoders[t] = this._createNamed(n[t])), + this.decoders[t] + ); + }), + (a.prototype.decode = function (t, e, r) { + return this._getDecoder(e).decode(t, r); + }), + (a.prototype._getEncoder = function (t) { + return ( + (t = t || "der"), + this.encoders.hasOwnProperty(t) || + (this.encoders[t] = this._createNamed(i[t])), + this.encoders[t] + ); + }), + (a.prototype.encode = function (t, e, r) { + return this._getEncoder(e).encode(t, r); + }); + }, + 6625: (t, e, r) => { + "use strict"; + const i = r(5717), + n = r(8465).b, + o = r(2399).Buffer; + function a(t, e) { + n.call(this, e), + o.isBuffer(t) + ? ((this.base = t), + (this.offset = 0), + (this.length = t.length)) + : this.error("Input not Buffer"); + } + function s(t, e) { + if (Array.isArray(t)) + (this.length = 0), + (this.value = t.map(function (t) { + return ( + s.isEncoderBuffer(t) || (t = new s(t, e)), + (this.length += t.length), + t + ); + }, this)); + else if ("number" == typeof t) { + if (!(0 <= t && t <= 255)) + return e.error("non-byte EncoderBuffer value"); + (this.value = t), (this.length = 1); + } else if ("string" == typeof t) + (this.value = t), (this.length = o.byteLength(t)); + else { + if (!o.isBuffer(t)) + return e.error("Unsupported type: " + typeof t); + (this.value = t), (this.length = t.length); + } + } + i(a, n), + (e.C = a), + (a.isDecoderBuffer = function (t) { + return ( + t instanceof a || + ("object" == typeof t && + o.isBuffer(t.base) && + "DecoderBuffer" === t.constructor.name && + "number" == typeof t.offset && + "number" == typeof t.length && + "function" == typeof t.save && + "function" == typeof t.restore && + "function" == typeof t.isEmpty && + "function" == typeof t.readUInt8 && + "function" == typeof t.skip && + "function" == typeof t.raw) + ); + }), + (a.prototype.save = function () { + return { + offset: this.offset, + reporter: n.prototype.save.call(this), + }; + }), + (a.prototype.restore = function (t) { + const e = new a(this.base); + return ( + (e.offset = t.offset), + (e.length = this.offset), + (this.offset = t.offset), + n.prototype.restore.call(this, t.reporter), + e + ); + }), + (a.prototype.isEmpty = function () { + return this.offset === this.length; + }), + (a.prototype.readUInt8 = function (t) { + return this.offset + 1 <= this.length + ? this.base.readUInt8(this.offset++, !0) + : this.error(t || "DecoderBuffer overrun"); + }), + (a.prototype.skip = function (t, e) { + if (!(this.offset + t <= this.length)) + return this.error(e || "DecoderBuffer overrun"); + const r = new a(this.base); + return ( + (r._reporterState = this._reporterState), + (r.offset = this.offset), + (r.length = this.offset + t), + (this.offset += t), + r + ); + }), + (a.prototype.raw = function (t) { + return this.base.slice(t ? t.offset : this.offset, this.length); + }), + (e.R = s), + (s.isEncoderBuffer = function (t) { + return ( + t instanceof s || + ("object" == typeof t && + "EncoderBuffer" === t.constructor.name && + "number" == typeof t.length && + "function" == typeof t.join) + ); + }), + (s.prototype.join = function (t, e) { + return ( + t || (t = o.alloc(this.length)), + e || (e = 0), + 0 === this.length || + (Array.isArray(this.value) + ? this.value.forEach(function (r) { + r.join(t, e), (e += r.length); + }) + : ("number" == typeof this.value + ? (t[e] = this.value) + : "string" == typeof this.value + ? t.write(this.value, e) + : o.isBuffer(this.value) && this.value.copy(t, e), + (e += this.length))), + t + ); + }); + }, + 1979: (t, e, r) => { + "use strict"; + const i = e; + (i.Reporter = r(8465).b), + (i.DecoderBuffer = r(6625).C), + (i.EncoderBuffer = r(6625).R), + (i.Node = r(1949)); + }, + 1949: (t, e, r) => { + "use strict"; + const i = r(8465).b, + n = r(6625).R, + o = r(6625).C, + a = r(9746), + s = [ + "seq", + "seqof", + "set", + "setof", + "objid", + "bool", + "gentime", + "utctime", + "null_", + "enum", + "int", + "objDesc", + "bitstr", + "bmpstr", + "charstr", + "genstr", + "graphstr", + "ia5str", + "iso646str", + "numstr", + "octstr", + "printstr", + "t61str", + "unistr", + "utf8str", + "videostr", + ], + f = [ + "key", + "obj", + "use", + "optional", + "explicit", + "implicit", + "def", + "choice", + "any", + "contains", + ].concat(s); + function u(t, e, r) { + const i = {}; + (this._baseState = i), + (i.name = r), + (i.enc = t), + (i.parent = e || null), + (i.children = null), + (i.tag = null), + (i.args = null), + (i.reverseArgs = null), + (i.choice = null), + (i.optional = !1), + (i.any = !1), + (i.obj = !1), + (i.use = null), + (i.useDecoder = null), + (i.key = null), + (i.default = null), + (i.explicit = null), + (i.implicit = null), + (i.contains = null), + i.parent || ((i.children = []), this._wrap()); + } + t.exports = u; + const h = [ + "enc", + "parent", + "children", + "tag", + "args", + "reverseArgs", + "choice", + "optional", + "any", + "obj", + "use", + "alteredUse", + "key", + "default", + "explicit", + "implicit", + "contains", + ]; + (u.prototype.clone = function () { + const t = this._baseState, + e = {}; + h.forEach(function (r) { + e[r] = t[r]; + }); + const r = new this.constructor(e.parent); + return (r._baseState = e), r; + }), + (u.prototype._wrap = function () { + const t = this._baseState; + f.forEach(function (e) { + this[e] = function () { + const r = new this.constructor(this); + return t.children.push(r), r[e].apply(r, arguments); + }; + }, this); + }), + (u.prototype._init = function (t) { + const e = this._baseState; + a(null === e.parent), + t.call(this), + (e.children = e.children.filter(function (t) { + return t._baseState.parent === this; + }, this)), + a.equal( + e.children.length, + 1, + "Root node can have only one child" + ); + }), + (u.prototype._useArgs = function (t) { + const e = this._baseState, + r = t.filter(function (t) { + return t instanceof this.constructor; + }, this); + (t = t.filter(function (t) { + return !(t instanceof this.constructor); + }, this)), + 0 !== r.length && + (a(null === e.children), + (e.children = r), + r.forEach(function (t) { + t._baseState.parent = this; + }, this)), + 0 !== t.length && + (a(null === e.args), + (e.args = t), + (e.reverseArgs = t.map(function (t) { + if ("object" != typeof t || t.constructor !== Object) + return t; + const e = {}; + return ( + Object.keys(t).forEach(function (r) { + r == (0 | r) && (r |= 0); + const i = t[r]; + e[i] = r; + }), + e + ); + }))); + }), + [ + "_peekTag", + "_decodeTag", + "_use", + "_decodeStr", + "_decodeObjid", + "_decodeTime", + "_decodeNull", + "_decodeInt", + "_decodeBool", + "_decodeList", + "_encodeComposite", + "_encodeStr", + "_encodeObjid", + "_encodeTime", + "_encodeNull", + "_encodeInt", + "_encodeBool", + ].forEach(function (t) { + u.prototype[t] = function () { + const e = this._baseState; + throw new Error( + t + " not implemented for encoding: " + e.enc + ); + }; + }), + s.forEach(function (t) { + u.prototype[t] = function () { + const e = this._baseState, + r = Array.prototype.slice.call(arguments); + return a(null === e.tag), (e.tag = t), this._useArgs(r), this; + }; + }), + (u.prototype.use = function (t) { + a(t); + const e = this._baseState; + return a(null === e.use), (e.use = t), this; + }), + (u.prototype.optional = function () { + return (this._baseState.optional = !0), this; + }), + (u.prototype.def = function (t) { + const e = this._baseState; + return ( + a(null === e.default), + (e.default = t), + (e.optional = !0), + this + ); + }), + (u.prototype.explicit = function (t) { + const e = this._baseState; + return ( + a(null === e.explicit && null === e.implicit), + (e.explicit = t), + this + ); + }), + (u.prototype.implicit = function (t) { + const e = this._baseState; + return ( + a(null === e.explicit && null === e.implicit), + (e.implicit = t), + this + ); + }), + (u.prototype.obj = function () { + const t = this._baseState, + e = Array.prototype.slice.call(arguments); + return (t.obj = !0), 0 !== e.length && this._useArgs(e), this; + }), + (u.prototype.key = function (t) { + const e = this._baseState; + return a(null === e.key), (e.key = t), this; + }), + (u.prototype.any = function () { + return (this._baseState.any = !0), this; + }), + (u.prototype.choice = function (t) { + const e = this._baseState; + return ( + a(null === e.choice), + (e.choice = t), + this._useArgs( + Object.keys(t).map(function (e) { + return t[e]; + }) + ), + this + ); + }), + (u.prototype.contains = function (t) { + const e = this._baseState; + return a(null === e.use), (e.contains = t), this; + }), + (u.prototype._decode = function (t, e) { + const r = this._baseState; + if (null === r.parent) + return t.wrapResult(r.children[0]._decode(t, e)); + let i, + n = r.default, + a = !0, + s = null; + if ((null !== r.key && (s = t.enterKey(r.key)), r.optional)) { + let i = null; + if ( + (null !== r.explicit + ? (i = r.explicit) + : null !== r.implicit + ? (i = r.implicit) + : null !== r.tag && (i = r.tag), + null !== i || r.any) + ) { + if (((a = this._peekTag(t, i, r.any)), t.isError(a))) + return a; + } else { + const i = t.save(); + try { + null === r.choice + ? this._decodeGeneric(r.tag, t, e) + : this._decodeChoice(t, e), + (a = !0); + } catch (t) { + a = !1; + } + t.restore(i); + } + } + if ((r.obj && a && (i = t.enterObject()), a)) { + if (null !== r.explicit) { + const e = this._decodeTag(t, r.explicit); + if (t.isError(e)) return e; + t = e; + } + const i = t.offset; + if (null === r.use && null === r.choice) { + let e; + r.any && (e = t.save()); + const i = this._decodeTag( + t, + null !== r.implicit ? r.implicit : r.tag, + r.any + ); + if (t.isError(i)) return i; + r.any ? (n = t.raw(e)) : (t = i); + } + if ( + (e && + e.track && + null !== r.tag && + e.track(t.path(), i, t.length, "tagged"), + e && + e.track && + null !== r.tag && + e.track(t.path(), t.offset, t.length, "content"), + r.any || + (n = + null === r.choice + ? this._decodeGeneric(r.tag, t, e) + : this._decodeChoice(t, e)), + t.isError(n)) + ) + return n; + if ( + (r.any || + null !== r.choice || + null === r.children || + r.children.forEach(function (r) { + r._decode(t, e); + }), + r.contains && ("octstr" === r.tag || "bitstr" === r.tag)) + ) { + const i = new o(n); + n = this._getUse(r.contains, t._reporterState.obj)._decode( + i, + e + ); + } + } + return ( + r.obj && a && (n = t.leaveObject(i)), + null === r.key || (null === n && !0 !== a) + ? null !== s && t.exitKey(s) + : t.leaveKey(s, r.key, n), + n + ); + }), + (u.prototype._decodeGeneric = function (t, e, r) { + const i = this._baseState; + return "seq" === t || "set" === t + ? null + : "seqof" === t || "setof" === t + ? this._decodeList(e, t, i.args[0], r) + : /str$/.test(t) + ? this._decodeStr(e, t, r) + : "objid" === t && i.args + ? this._decodeObjid(e, i.args[0], i.args[1], r) + : "objid" === t + ? this._decodeObjid(e, null, null, r) + : "gentime" === t || "utctime" === t + ? this._decodeTime(e, t, r) + : "null_" === t + ? this._decodeNull(e, r) + : "bool" === t + ? this._decodeBool(e, r) + : "objDesc" === t + ? this._decodeStr(e, t, r) + : "int" === t || "enum" === t + ? this._decodeInt(e, i.args && i.args[0], r) + : null !== i.use + ? this._getUse(i.use, e._reporterState.obj)._decode(e, r) + : e.error("unknown tag: " + t); + }), + (u.prototype._getUse = function (t, e) { + const r = this._baseState; + return ( + (r.useDecoder = this._use(t, e)), + a(null === r.useDecoder._baseState.parent), + (r.useDecoder = r.useDecoder._baseState.children[0]), + r.implicit !== r.useDecoder._baseState.implicit && + ((r.useDecoder = r.useDecoder.clone()), + (r.useDecoder._baseState.implicit = r.implicit)), + r.useDecoder + ); + }), + (u.prototype._decodeChoice = function (t, e) { + const r = this._baseState; + let i = null, + n = !1; + return ( + Object.keys(r.choice).some(function (o) { + const a = t.save(), + s = r.choice[o]; + try { + const r = s._decode(t, e); + if (t.isError(r)) return !1; + (i = { type: o, value: r }), (n = !0); + } catch (e) { + return t.restore(a), !1; + } + return !0; + }, this), + n ? i : t.error("Choice not matched") + ); + }), + (u.prototype._createEncoderBuffer = function (t) { + return new n(t, this.reporter); + }), + (u.prototype._encode = function (t, e, r) { + const i = this._baseState; + if (null !== i.default && i.default === t) return; + const n = this._encodeValue(t, e, r); + return void 0 === n || this._skipDefault(n, e, r) ? void 0 : n; + }), + (u.prototype._encodeValue = function (t, e, r) { + const n = this._baseState; + if (null === n.parent) + return n.children[0]._encode(t, e || new i()); + let o = null; + if (((this.reporter = e), n.optional && void 0 === t)) { + if (null === n.default) return; + t = n.default; + } + let a = null, + s = !1; + if (n.any) o = this._createEncoderBuffer(t); + else if (n.choice) o = this._encodeChoice(t, e); + else if (n.contains) + (a = this._getUse(n.contains, r)._encode(t, e)), (s = !0); + else if (n.children) + (a = n.children + .map(function (r) { + if ("null_" === r._baseState.tag) + return r._encode(null, e, t); + if (null === r._baseState.key) + return e.error("Child should have a key"); + const i = e.enterKey(r._baseState.key); + if ("object" != typeof t) + return e.error( + "Child expected, but input is not object" + ); + const n = r._encode(t[r._baseState.key], e, t); + return e.leaveKey(i), n; + }, this) + .filter(function (t) { + return t; + })), + (a = this._createEncoderBuffer(a)); + else if ("seqof" === n.tag || "setof" === n.tag) { + if (!n.args || 1 !== n.args.length) + return e.error("Too many args for : " + n.tag); + if (!Array.isArray(t)) + return e.error("seqof/setof, but data is not Array"); + const r = this.clone(); + (r._baseState.implicit = null), + (a = this._createEncoderBuffer( + t.map(function (r) { + const i = this._baseState; + return this._getUse(i.args[0], t)._encode(r, e); + }, r) + )); + } else + null !== n.use + ? (o = this._getUse(n.use, r)._encode(t, e)) + : ((a = this._encodePrimitive(n.tag, t)), (s = !0)); + if (!n.any && null === n.choice) { + const t = null !== n.implicit ? n.implicit : n.tag, + r = null === n.implicit ? "universal" : "context"; + null === t + ? null === n.use && + e.error("Tag could be omitted only for .use()") + : null === n.use && (o = this._encodeComposite(t, s, r, a)); + } + return ( + null !== n.explicit && + (o = this._encodeComposite(n.explicit, !1, "context", o)), + o + ); + }), + (u.prototype._encodeChoice = function (t, e) { + const r = this._baseState, + i = r.choice[t.type]; + return ( + i || + a( + !1, + t.type + + " not found in " + + JSON.stringify(Object.keys(r.choice)) + ), + i._encode(t.value, e) + ); + }), + (u.prototype._encodePrimitive = function (t, e) { + const r = this._baseState; + if (/str$/.test(t)) return this._encodeStr(e, t); + if ("objid" === t && r.args) + return this._encodeObjid(e, r.reverseArgs[0], r.args[1]); + if ("objid" === t) return this._encodeObjid(e, null, null); + if ("gentime" === t || "utctime" === t) + return this._encodeTime(e, t); + if ("null_" === t) return this._encodeNull(); + if ("int" === t || "enum" === t) + return this._encodeInt(e, r.args && r.reverseArgs[0]); + if ("bool" === t) return this._encodeBool(e); + if ("objDesc" === t) return this._encodeStr(e, t); + throw new Error("Unsupported tag: " + t); + }), + (u.prototype._isNumstr = function (t) { + return /^[0-9 ]*$/.test(t); + }), + (u.prototype._isPrintstr = function (t) { + return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(t); + }); + }, + 8465: (t, e, r) => { + "use strict"; + const i = r(5717); + function n(t) { + this._reporterState = { + obj: null, + path: [], + options: t || {}, + errors: [], + }; + } + function o(t, e) { + (this.path = t), this.rethrow(e); + } + (e.b = n), + (n.prototype.isError = function (t) { + return t instanceof o; + }), + (n.prototype.save = function () { + const t = this._reporterState; + return { obj: t.obj, pathLen: t.path.length }; + }), + (n.prototype.restore = function (t) { + const e = this._reporterState; + (e.obj = t.obj), (e.path = e.path.slice(0, t.pathLen)); + }), + (n.prototype.enterKey = function (t) { + return this._reporterState.path.push(t); + }), + (n.prototype.exitKey = function (t) { + const e = this._reporterState; + e.path = e.path.slice(0, t - 1); + }), + (n.prototype.leaveKey = function (t, e, r) { + const i = this._reporterState; + this.exitKey(t), null !== i.obj && (i.obj[e] = r); + }), + (n.prototype.path = function () { + return this._reporterState.path.join("/"); + }), + (n.prototype.enterObject = function () { + const t = this._reporterState, + e = t.obj; + return (t.obj = {}), e; + }), + (n.prototype.leaveObject = function (t) { + const e = this._reporterState, + r = e.obj; + return (e.obj = t), r; + }), + (n.prototype.error = function (t) { + let e; + const r = this._reporterState, + i = t instanceof o; + if ( + ((e = i + ? t + : new o( + r.path + .map(function (t) { + return "[" + JSON.stringify(t) + "]"; + }) + .join(""), + t.message || t, + t.stack + )), + !r.options.partial) + ) + throw e; + return i || r.errors.push(e), e; + }), + (n.prototype.wrapResult = function (t) { + const e = this._reporterState; + return e.options.partial + ? { result: this.isError(t) ? null : t, errors: e.errors } + : t; + }), + i(o, Error), + (o.prototype.rethrow = function (t) { + if ( + ((this.message = t + " at: " + (this.path || "(shallow)")), + Error.captureStackTrace && Error.captureStackTrace(this, o), + !this.stack) + ) + try { + throw new Error(this.message); + } catch (t) { + this.stack = t.stack; + } + return this; + }); + }, + 160: (t, e) => { + "use strict"; + function r(t) { + const e = {}; + return ( + Object.keys(t).forEach(function (r) { + (0 | r) == r && (r |= 0); + const i = t[r]; + e[i] = r; + }), + e + ); + } + (e.tagClass = { + 0: "universal", + 1: "application", + 2: "context", + 3: "private", + }), + (e.tagClassByName = r(e.tagClass)), + (e.tag = { + 0: "end", + 1: "bool", + 2: "int", + 3: "bitstr", + 4: "octstr", + 5: "null_", + 6: "objid", + 7: "objDesc", + 8: "external", + 9: "real", + 10: "enum", + 11: "embed", + 12: "utf8str", + 13: "relativeOid", + 16: "seq", + 17: "set", + 18: "numstr", + 19: "printstr", + 20: "t61str", + 21: "videostr", + 22: "ia5str", + 23: "utctime", + 24: "gentime", + 25: "graphstr", + 26: "iso646str", + 27: "genstr", + 28: "unistr", + 29: "charstr", + 30: "bmpstr", + }), + (e.tagByName = r(e.tag)); + }, + 6826: (t, e, r) => { + "use strict"; + const i = e; + (i._reverse = function (t) { + const e = {}; + return ( + Object.keys(t).forEach(function (r) { + (0 | r) == r && (r |= 0); + const i = t[r]; + e[i] = r; + }), + e + ); + }), + (i.der = r(160)); + }, + 1671: (t, e, r) => { + "use strict"; + const i = r(5717), + n = r(3550), + o = r(6625).C, + a = r(1949), + s = r(160); + function f(t) { + (this.enc = "der"), + (this.name = t.name), + (this.entity = t), + (this.tree = new u()), + this.tree._init(t.body); + } + function u(t) { + a.call(this, "der", t); + } + function h(t, e) { + let r = t.readUInt8(e); + if (t.isError(r)) return r; + const i = s.tagClass[r >> 6], + n = 0 == (32 & r); + if (31 == (31 & r)) { + let i = r; + for (r = 0; 128 == (128 & i); ) { + if (((i = t.readUInt8(e)), t.isError(i))) return i; + (r <<= 7), (r |= 127 & i); + } + } else r &= 31; + return { cls: i, primitive: n, tag: r, tagStr: s.tag[r] }; + } + function c(t, e, r) { + let i = t.readUInt8(r); + if (t.isError(i)) return i; + if (!e && 128 === i) return null; + if (0 == (128 & i)) return i; + const n = 127 & i; + if (n > 4) return t.error("length octect is too long"); + i = 0; + for (let e = 0; e < n; e++) { + i <<= 8; + const e = t.readUInt8(r); + if (t.isError(e)) return e; + i |= e; + } + return i; + } + (t.exports = f), + (f.prototype.decode = function (t, e) { + return ( + o.isDecoderBuffer(t) || (t = new o(t, e)), + this.tree._decode(t, e) + ); + }), + i(u, a), + (u.prototype._peekTag = function (t, e, r) { + if (t.isEmpty()) return !1; + const i = t.save(), + n = h(t, 'Failed to peek tag: "' + e + '"'); + return t.isError(n) + ? n + : (t.restore(i), + n.tag === e || + n.tagStr === e || + n.tagStr + "of" === e || + r); + }), + (u.prototype._decodeTag = function (t, e, r) { + const i = h(t, 'Failed to decode tag of "' + e + '"'); + if (t.isError(i)) return i; + let n = c( + t, + i.primitive, + 'Failed to get length of "' + e + '"' + ); + if (t.isError(n)) return n; + if ( + !r && + i.tag !== e && + i.tagStr !== e && + i.tagStr + "of" !== e + ) + return t.error('Failed to match tag: "' + e + '"'); + if (i.primitive || null !== n) + return t.skip(n, 'Failed to match body of: "' + e + '"'); + const o = t.save(), + a = this._skipUntilEnd( + t, + 'Failed to skip indefinite length body: "' + this.tag + '"' + ); + return t.isError(a) + ? a + : ((n = t.offset - o.offset), + t.restore(o), + t.skip(n, 'Failed to match body of: "' + e + '"')); + }), + (u.prototype._skipUntilEnd = function (t, e) { + for (;;) { + const r = h(t, e); + if (t.isError(r)) return r; + const i = c(t, r.primitive, e); + if (t.isError(i)) return i; + let n; + if ( + ((n = + r.primitive || null !== i + ? t.skip(i) + : this._skipUntilEnd(t, e)), + t.isError(n)) + ) + return n; + if ("end" === r.tagStr) break; + } + }), + (u.prototype._decodeList = function (t, e, r, i) { + const n = []; + for (; !t.isEmpty(); ) { + const e = this._peekTag(t, "end"); + if (t.isError(e)) return e; + const o = r.decode(t, "der", i); + if (t.isError(o) && e) break; + n.push(o); + } + return n; + }), + (u.prototype._decodeStr = function (t, e) { + if ("bitstr" === e) { + const e = t.readUInt8(); + return t.isError(e) ? e : { unused: e, data: t.raw() }; + } + if ("bmpstr" === e) { + const e = t.raw(); + if (e.length % 2 == 1) + return t.error( + "Decoding of string type: bmpstr length mismatch" + ); + let r = ""; + for (let t = 0; t < e.length / 2; t++) + r += String.fromCharCode(e.readUInt16BE(2 * t)); + return r; + } + if ("numstr" === e) { + const e = t.raw().toString("ascii"); + return this._isNumstr(e) + ? e + : t.error( + "Decoding of string type: numstr unsupported characters" + ); + } + if ("octstr" === e) return t.raw(); + if ("objDesc" === e) return t.raw(); + if ("printstr" === e) { + const e = t.raw().toString("ascii"); + return this._isPrintstr(e) + ? e + : t.error( + "Decoding of string type: printstr unsupported characters" + ); + } + return /str$/.test(e) + ? t.raw().toString() + : t.error("Decoding of string type: " + e + " unsupported"); + }), + (u.prototype._decodeObjid = function (t, e, r) { + let i; + const n = []; + let o = 0, + a = 0; + for (; !t.isEmpty(); ) + (a = t.readUInt8()), + (o <<= 7), + (o |= 127 & a), + 0 == (128 & a) && (n.push(o), (o = 0)); + 128 & a && n.push(o); + const s = (n[0] / 40) | 0, + f = n[0] % 40; + if (((i = r ? n : [s, f].concat(n.slice(1))), e)) { + let t = e[i.join(" ")]; + void 0 === t && (t = e[i.join(".")]), void 0 !== t && (i = t); + } + return i; + }), + (u.prototype._decodeTime = function (t, e) { + const r = t.raw().toString(); + let i, n, o, a, s, f; + if ("gentime" === e) + (i = 0 | r.slice(0, 4)), + (n = 0 | r.slice(4, 6)), + (o = 0 | r.slice(6, 8)), + (a = 0 | r.slice(8, 10)), + (s = 0 | r.slice(10, 12)), + (f = 0 | r.slice(12, 14)); + else { + if ("utctime" !== e) + return t.error( + "Decoding " + e + " time is not supported yet" + ); + (i = 0 | r.slice(0, 2)), + (n = 0 | r.slice(2, 4)), + (o = 0 | r.slice(4, 6)), + (a = 0 | r.slice(6, 8)), + (s = 0 | r.slice(8, 10)), + (f = 0 | r.slice(10, 12)), + (i = i < 70 ? 2e3 + i : 1900 + i); + } + return Date.UTC(i, n - 1, o, a, s, f, 0); + }), + (u.prototype._decodeNull = function () { + return null; + }), + (u.prototype._decodeBool = function (t) { + const e = t.readUInt8(); + return t.isError(e) ? e : 0 !== e; + }), + (u.prototype._decodeInt = function (t, e) { + const r = t.raw(); + let i = new n(r); + return e && (i = e[i.toString(10)] || i), i; + }), + (u.prototype._use = function (t, e) { + return ( + "function" == typeof t && (t = t(e)), + t._getDecoder("der").tree + ); + }); + }, + 8307: (t, e, r) => { + "use strict"; + const i = e; + (i.der = r(1671)), (i.pem = r(9631)); + }, + 9631: (t, e, r) => { + "use strict"; + const i = r(5717), + n = r(2399).Buffer, + o = r(1671); + function a(t) { + o.call(this, t), (this.enc = "pem"); + } + i(a, o), + (t.exports = a), + (a.prototype.decode = function (t, e) { + const r = t.toString().split(/[\r\n]+/g), + i = e.label.toUpperCase(), + a = /^-----(BEGIN|END) ([^-]+)-----$/; + let s = -1, + f = -1; + for (let t = 0; t < r.length; t++) { + const e = r[t].match(a); + if (null !== e && e[2] === i) { + if (-1 !== s) { + if ("END" !== e[1]) break; + f = t; + break; + } + if ("BEGIN" !== e[1]) break; + s = t; + } + } + if (-1 === s || -1 === f) + throw new Error("PEM section not found for: " + i); + const u = r.slice(s + 1, f).join(""); + u.replace(/[^a-z0-9+/=]+/gi, ""); + const h = n.from(u, "base64"); + return o.prototype.decode.call(this, h, e); + }); + }, + 6984: (t, e, r) => { + "use strict"; + const i = r(5717), + n = r(2399).Buffer, + o = r(1949), + a = r(160); + function s(t) { + (this.enc = "der"), + (this.name = t.name), + (this.entity = t), + (this.tree = new f()), + this.tree._init(t.body); + } + function f(t) { + o.call(this, "der", t); + } + function u(t) { + return t < 10 ? "0" + t : t; + } + (t.exports = s), + (s.prototype.encode = function (t, e) { + return this.tree._encode(t, e).join(); + }), + i(f, o), + (f.prototype._encodeComposite = function (t, e, r, i) { + const o = (function (t, e, r, i) { + let n; + if ( + ("seqof" === t ? (t = "seq") : "setof" === t && (t = "set"), + a.tagByName.hasOwnProperty(t)) + ) + n = a.tagByName[t]; + else { + if ("number" != typeof t || (0 | t) !== t) + return i.error("Unknown tag: " + t); + n = t; + } + return n >= 31 + ? i.error("Multi-octet tag encoding unsupported") + : (e || (n |= 32), + (n |= a.tagClassByName[r || "universal"] << 6), + n); + })(t, e, r, this.reporter); + if (i.length < 128) { + const t = n.alloc(2); + return ( + (t[0] = o), + (t[1] = i.length), + this._createEncoderBuffer([t, i]) + ); + } + let s = 1; + for (let t = i.length; t >= 256; t >>= 8) s++; + const f = n.alloc(2 + s); + (f[0] = o), (f[1] = 128 | s); + for (let t = 1 + s, e = i.length; e > 0; t--, e >>= 8) + f[t] = 255 & e; + return this._createEncoderBuffer([f, i]); + }), + (f.prototype._encodeStr = function (t, e) { + if ("bitstr" === e) + return this._createEncoderBuffer([0 | t.unused, t.data]); + if ("bmpstr" === e) { + const e = n.alloc(2 * t.length); + for (let r = 0; r < t.length; r++) + e.writeUInt16BE(t.charCodeAt(r), 2 * r); + return this._createEncoderBuffer(e); + } + return "numstr" === e + ? this._isNumstr(t) + ? this._createEncoderBuffer(t) + : this.reporter.error( + "Encoding of string type: numstr supports only digits and space" + ) + : "printstr" === e + ? this._isPrintstr(t) + ? this._createEncoderBuffer(t) + : this.reporter.error( + "Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark" + ) + : /str$/.test(e) || "objDesc" === e + ? this._createEncoderBuffer(t) + : this.reporter.error( + "Encoding of string type: " + e + " unsupported" + ); + }), + (f.prototype._encodeObjid = function (t, e, r) { + if ("string" == typeof t) { + if (!e) + return this.reporter.error( + "string objid given, but no values map found" + ); + if (!e.hasOwnProperty(t)) + return this.reporter.error("objid not found in values map"); + t = e[t].split(/[\s.]+/g); + for (let e = 0; e < t.length; e++) t[e] |= 0; + } else if (Array.isArray(t)) { + t = t.slice(); + for (let e = 0; e < t.length; e++) t[e] |= 0; + } + if (!Array.isArray(t)) + return this.reporter.error( + "objid() should be either array or string, got: " + + JSON.stringify(t) + ); + if (!r) { + if (t[1] >= 40) + return this.reporter.error("Second objid identifier OOB"); + t.splice(0, 2, 40 * t[0] + t[1]); + } + let i = 0; + for (let e = 0; e < t.length; e++) { + let r = t[e]; + for (i++; r >= 128; r >>= 7) i++; + } + const o = n.alloc(i); + let a = o.length - 1; + for (let e = t.length - 1; e >= 0; e--) { + let r = t[e]; + for (o[a--] = 127 & r; (r >>= 7) > 0; ) + o[a--] = 128 | (127 & r); + } + return this._createEncoderBuffer(o); + }), + (f.prototype._encodeTime = function (t, e) { + let r; + const i = new Date(t); + return ( + "gentime" === e + ? (r = [ + u(i.getUTCFullYear()), + u(i.getUTCMonth() + 1), + u(i.getUTCDate()), + u(i.getUTCHours()), + u(i.getUTCMinutes()), + u(i.getUTCSeconds()), + "Z", + ].join("")) + : "utctime" === e + ? (r = [ + u(i.getUTCFullYear() % 100), + u(i.getUTCMonth() + 1), + u(i.getUTCDate()), + u(i.getUTCHours()), + u(i.getUTCMinutes()), + u(i.getUTCSeconds()), + "Z", + ].join("")) + : this.reporter.error( + "Encoding " + e + " time is not supported yet" + ), + this._encodeStr(r, "octstr") + ); + }), + (f.prototype._encodeNull = function () { + return this._createEncoderBuffer(""); + }), + (f.prototype._encodeInt = function (t, e) { + if ("string" == typeof t) { + if (!e) + return this.reporter.error( + "String int or enum given, but no values map" + ); + if (!e.hasOwnProperty(t)) + return this.reporter.error( + "Values map doesn't contain: " + JSON.stringify(t) + ); + t = e[t]; + } + if ("number" != typeof t && !n.isBuffer(t)) { + const e = t.toArray(); + !t.sign && 128 & e[0] && e.unshift(0), (t = n.from(e)); + } + if (n.isBuffer(t)) { + let e = t.length; + 0 === t.length && e++; + const r = n.alloc(e); + return ( + t.copy(r), + 0 === t.length && (r[0] = 0), + this._createEncoderBuffer(r) + ); + } + if (t < 128) return this._createEncoderBuffer(t); + if (t < 256) return this._createEncoderBuffer([0, t]); + let r = 1; + for (let e = t; e >= 256; e >>= 8) r++; + const i = new Array(r); + for (let e = i.length - 1; e >= 0; e--) + (i[e] = 255 & t), (t >>= 8); + return ( + 128 & i[0] && i.unshift(0), + this._createEncoderBuffer(n.from(i)) + ); + }), + (f.prototype._encodeBool = function (t) { + return this._createEncoderBuffer(t ? 255 : 0); + }), + (f.prototype._use = function (t, e) { + return ( + "function" == typeof t && (t = t(e)), + t._getEncoder("der").tree + ); + }), + (f.prototype._skipDefault = function (t, e, r) { + const i = this._baseState; + let n; + if (null === i.default) return !1; + const o = t.join(); + if ( + (void 0 === i.defaultBuffer && + (i.defaultBuffer = this._encodeValue( + i.default, + e, + r + ).join()), + o.length !== i.defaultBuffer.length) + ) + return !1; + for (n = 0; n < o.length; n++) + if (o[n] !== i.defaultBuffer[n]) return !1; + return !0; + }); + }, + 6579: (t, e, r) => { + "use strict"; + const i = e; + (i.der = r(6984)), (i.pem = r(2883)); + }, + 2883: (t, e, r) => { + "use strict"; + const i = r(5717), + n = r(6984); + function o(t) { + n.call(this, t), (this.enc = "pem"); + } + i(o, n), + (t.exports = o), + (o.prototype.encode = function (t, e) { + const r = n.prototype.encode.call(this, t).toString("base64"), + i = ["-----BEGIN " + e.label + "-----"]; + for (let t = 0; t < r.length; t += 64) + i.push(r.slice(t, t + 64)); + return i.push("-----END " + e.label + "-----"), i.join("\n"); + }); + }, + 9282: (t, e, r) => { + "use strict"; + var i = r(4155), + n = r(5108); + function o(t) { + return ( + (o = + "function" == typeof Symbol && + "symbol" == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && + "function" == typeof Symbol && + t.constructor === Symbol && + t !== Symbol.prototype + ? "symbol" + : typeof t; + }), + o(t) + ); + } + var a, + s, + f = r(2136).codes, + u = f.ERR_AMBIGUOUS_ARGUMENT, + h = f.ERR_INVALID_ARG_TYPE, + c = f.ERR_INVALID_ARG_VALUE, + d = f.ERR_INVALID_RETURN_VALUE, + l = f.ERR_MISSING_ARGS, + p = r(5961), + b = r(9539).inspect, + y = r(9539).types, + m = y.isPromise, + g = y.isRegExp, + v = Object.assign ? Object.assign : r(8091).assign, + w = Object.is ? Object.is : r(609); + function _() { + var t = r(9158); + (a = t.isDeepEqual), (s = t.isDeepStrictEqual); + } + new Map(); + var M = !1, + S = (t.exports = x), + E = {}; + function A(t) { + if (t.message instanceof Error) throw t.message; + throw new p(t); + } + function k(t, e, r, i) { + if (!r) { + var n = !1; + if (0 === e) + (n = !0), (i = "No value argument passed to `assert.ok()`"); + else if (i instanceof Error) throw i; + var o = new p({ + actual: r, + expected: !0, + message: i, + operator: "==", + stackStartFn: t, + }); + throw ((o.generatedMessage = n), o); + } + } + function x() { + for ( + var t = arguments.length, e = new Array(t), r = 0; + r < t; + r++ + ) + e[r] = arguments[r]; + k.apply(void 0, [x, e.length].concat(e)); + } + (S.fail = function t(e, r, o, a, s) { + var f, + u = arguments.length; + if (0 === u) f = "Failed"; + else if (1 === u) (o = e), (e = void 0); + else { + if (!1 === M) { + M = !0; + var h = i.emitWarning ? i.emitWarning : n.warn.bind(n); + h( + "assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.", + "DeprecationWarning", + "DEP0094" + ); + } + 2 === u && (a = "!="); + } + if (o instanceof Error) throw o; + var c = { + actual: e, + expected: r, + operator: void 0 === a ? "fail" : a, + stackStartFn: s || t, + }; + void 0 !== o && (c.message = o); + var d = new p(c); + throw (f && ((d.message = f), (d.generatedMessage = !0)), d); + }), + (S.AssertionError = p), + (S.ok = x), + (S.equal = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + e != r && + A({ + actual: e, + expected: r, + message: i, + operator: "==", + stackStartFn: t, + }); + }), + (S.notEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + e == r && + A({ + actual: e, + expected: r, + message: i, + operator: "!=", + stackStartFn: t, + }); + }), + (S.deepEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + void 0 === a && _(), + a(e, r) || + A({ + actual: e, + expected: r, + message: i, + operator: "deepEqual", + stackStartFn: t, + }); + }), + (S.notDeepEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + void 0 === a && _(), + a(e, r) && + A({ + actual: e, + expected: r, + message: i, + operator: "notDeepEqual", + stackStartFn: t, + }); + }), + (S.deepStrictEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + void 0 === a && _(), + s(e, r) || + A({ + actual: e, + expected: r, + message: i, + operator: "deepStrictEqual", + stackStartFn: t, + }); + }), + (S.notDeepStrictEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + void 0 === a && _(), + s(e, r) && + A({ + actual: e, + expected: r, + message: i, + operator: "notDeepStrictEqual", + stackStartFn: t, + }); + }), + (S.strictEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + w(e, r) || + A({ + actual: e, + expected: r, + message: i, + operator: "strictEqual", + stackStartFn: t, + }); + }), + (S.notStrictEqual = function t(e, r, i) { + if (arguments.length < 2) throw new l("actual", "expected"); + w(e, r) && + A({ + actual: e, + expected: r, + message: i, + operator: "notStrictEqual", + stackStartFn: t, + }); + }); + var I = function t(e, r, i) { + var n = this; + !(function (t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); + })(this, t), + r.forEach(function (t) { + t in e && + (void 0 !== i && + "string" == typeof i[t] && + g(e[t]) && + e[t].test(i[t]) + ? (n[t] = i[t]) + : (n[t] = e[t])); + }); + }; + function B(t, e, r, i, n, o) { + if (!(r in t) || !s(t[r], e[r])) { + if (!i) { + var a = new I(t, n), + f = new I(e, n, t), + u = new p({ + actual: a, + expected: f, + operator: "deepStrictEqual", + stackStartFn: o, + }); + throw ( + ((u.actual = t), (u.expected = e), (u.operator = o.name), u) + ); + } + A({ + actual: t, + expected: e, + message: i, + operator: o.name, + stackStartFn: o, + }); + } + } + function R(t, e, r, i) { + if ("function" != typeof e) { + if (g(e)) return e.test(t); + if (2 === arguments.length) + throw new h("expected", ["Function", "RegExp"], e); + if ("object" !== o(t) || null === t) { + var n = new p({ + actual: t, + expected: e, + message: r, + operator: "deepStrictEqual", + stackStartFn: i, + }); + throw ((n.operator = i.name), n); + } + var s = Object.keys(e); + if (e instanceof Error) s.push("name", "message"); + else if (0 === s.length) + throw new c("error", e, "may not be an empty object"); + return ( + void 0 === a && _(), + s.forEach(function (n) { + ("string" == typeof t[n] && g(e[n]) && e[n].test(t[n])) || + B(t, e, n, r, s, i); + }), + !0 + ); + } + return ( + (void 0 !== e.prototype && t instanceof e) || + (!Error.isPrototypeOf(e) && !0 === e.call({}, t)) + ); + } + function O(t) { + if ("function" != typeof t) throw new h("fn", "Function", t); + try { + t(); + } catch (t) { + return t; + } + return E; + } + function j(t) { + return ( + m(t) || + (null !== t && + "object" === o(t) && + "function" == typeof t.then && + "function" == typeof t.catch) + ); + } + function P(t) { + return Promise.resolve().then(function () { + var e; + if ("function" == typeof t) { + if (!j((e = t()))) + throw new d("instance of Promise", "promiseFn", e); + } else { + if (!j(t)) + throw new h("promiseFn", ["Function", "Promise"], t); + e = t; + } + return Promise.resolve() + .then(function () { + return e; + }) + .then(function () { + return E; + }) + .catch(function (t) { + return t; + }); + }); + } + function T(t, e, r, i) { + if ("string" == typeof r) { + if (4 === arguments.length) + throw new h( + "error", + ["Object", "Error", "Function", "RegExp"], + r + ); + if ("object" === o(e) && null !== e) { + if (e.message === r) + throw new u( + "error/message", + 'The error message "'.concat( + e.message, + '" is identical to the message.' + ) + ); + } else if (e === r) + throw new u( + "error/message", + 'The error "'.concat(e, '" is identical to the message.') + ); + (i = r), (r = void 0); + } else if ( + null != r && + "object" !== o(r) && + "function" != typeof r + ) + throw new h( + "error", + ["Object", "Error", "Function", "RegExp"], + r + ); + if (e === E) { + var n = ""; + r && r.name && (n += " (".concat(r.name, ")")), + (n += i ? ": ".concat(i) : "."); + var a = "rejects" === t.name ? "rejection" : "exception"; + A({ + actual: void 0, + expected: r, + operator: t.name, + message: "Missing expected ".concat(a).concat(n), + stackStartFn: t, + }); + } + if (r && !R(e, r, i, t)) throw e; + } + function L(t, e, r, i) { + if (e !== E) { + if ( + ("string" == typeof r && ((i = r), (r = void 0)), + !r || R(e, r)) + ) { + var n = i ? ": ".concat(i) : ".", + o = "doesNotReject" === t.name ? "rejection" : "exception"; + A({ + actual: e, + expected: r, + operator: t.name, + message: + "Got unwanted ".concat(o).concat(n, "\n") + + 'Actual message: "'.concat(e && e.message, '"'), + stackStartFn: t, + }); + } + throw e; + } + } + function N() { + for ( + var t = arguments.length, e = new Array(t), r = 0; + r < t; + r++ + ) + e[r] = arguments[r]; + k.apply(void 0, [N, e.length].concat(e)); + } + (S.throws = function t(e) { + for ( + var r = arguments.length, + i = new Array(r > 1 ? r - 1 : 0), + n = 1; + n < r; + n++ + ) + i[n - 1] = arguments[n]; + T.apply(void 0, [t, O(e)].concat(i)); + }), + (S.rejects = function t(e) { + for ( + var r = arguments.length, + i = new Array(r > 1 ? r - 1 : 0), + n = 1; + n < r; + n++ + ) + i[n - 1] = arguments[n]; + return P(e).then(function (e) { + return T.apply(void 0, [t, e].concat(i)); + }); + }), + (S.doesNotThrow = function t(e) { + for ( + var r = arguments.length, + i = new Array(r > 1 ? r - 1 : 0), + n = 1; + n < r; + n++ + ) + i[n - 1] = arguments[n]; + L.apply(void 0, [t, O(e)].concat(i)); + }), + (S.doesNotReject = function t(e) { + for ( + var r = arguments.length, + i = new Array(r > 1 ? r - 1 : 0), + n = 1; + n < r; + n++ + ) + i[n - 1] = arguments[n]; + return P(e).then(function (e) { + return L.apply(void 0, [t, e].concat(i)); + }); + }), + (S.ifError = function t(e) { + if (null != e) { + var r = "ifError got unwanted exception: "; + "object" === o(e) && "string" == typeof e.message + ? 0 === e.message.length && e.constructor + ? (r += e.constructor.name) + : (r += e.message) + : (r += b(e)); + var i = new p({ + actual: e, + expected: null, + operator: "ifError", + message: r, + stackStartFn: t, + }), + n = e.stack; + if ("string" == typeof n) { + var a = n.split("\n"); + a.shift(); + for ( + var s = i.stack.split("\n"), f = 0; + f < a.length; + f++ + ) { + var u = s.indexOf(a[f]); + if (-1 !== u) { + s = s.slice(0, u); + break; + } + } + i.stack = "" + .concat(s.join("\n"), "\n") + .concat(a.join("\n")); + } + throw i; + } + }), + (S.strict = v(N, S, { + equal: S.strictEqual, + deepEqual: S.deepStrictEqual, + notEqual: S.notStrictEqual, + notDeepEqual: S.notDeepStrictEqual, + })), + (S.strict.strict = S.strict); + }, + 5961: (t, e, r) => { + "use strict"; + var i = r(4155); + function n(t, e, r) { + return ( + e in t + ? Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (t[e] = r), + t + ); + } + function o(t, e) { + for (var r = 0; r < e.length; r++) { + var i = e[r]; + (i.enumerable = i.enumerable || !1), + (i.configurable = !0), + "value" in i && (i.writable = !0), + Object.defineProperty(t, i.key, i); + } + } + function a(t, e) { + return !e || ("object" !== l(e) && "function" != typeof e) + ? s(t) + : e; + } + function s(t) { + if (void 0 === t) + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ); + return t; + } + function f(t) { + var e = "function" == typeof Map ? new Map() : void 0; + return ( + (f = function (t) { + if ( + null === t || + ((r = t), + -1 === Function.toString.call(r).indexOf("[native code]")) + ) + return t; + var r; + if ("function" != typeof t) + throw new TypeError( + "Super expression must either be null or a function" + ); + if (void 0 !== e) { + if (e.has(t)) return e.get(t); + e.set(t, i); + } + function i() { + return h(t, arguments, d(this).constructor); + } + return ( + (i.prototype = Object.create(t.prototype, { + constructor: { + value: i, + enumerable: !1, + writable: !0, + configurable: !0, + }, + })), + c(i, t) + ); + }), + f(t) + ); + } + function u() { + if ("undefined" == typeof Reflect || !Reflect.construct) + return !1; + if (Reflect.construct.sham) return !1; + if ("function" == typeof Proxy) return !0; + try { + return ( + Date.prototype.toString.call( + Reflect.construct(Date, [], function () {}) + ), + !0 + ); + } catch (t) { + return !1; + } + } + function h(t, e, r) { + return ( + (h = u() + ? Reflect.construct + : function (t, e, r) { + var i = [null]; + i.push.apply(i, e); + var n = new (Function.bind.apply(t, i))(); + return r && c(n, r.prototype), n; + }), + h.apply(null, arguments) + ); + } + function c(t, e) { + return ( + (c = + Object.setPrototypeOf || + function (t, e) { + return (t.__proto__ = e), t; + }), + c(t, e) + ); + } + function d(t) { + return ( + (d = Object.setPrototypeOf + ? Object.getPrototypeOf + : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }), + d(t) + ); + } + function l(t) { + return ( + (l = + "function" == typeof Symbol && + "symbol" == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && + "function" == typeof Symbol && + t.constructor === Symbol && + t !== Symbol.prototype + ? "symbol" + : typeof t; + }), + l(t) + ); + } + var p = r(9539).inspect, + b = r(2136).codes.ERR_INVALID_ARG_TYPE; + function y(t, e, r) { + return ( + (void 0 === r || r > t.length) && (r = t.length), + t.substring(r - e.length, r) === e + ); + } + var m = "", + g = "", + v = "", + w = "", + _ = { + deepStrictEqual: "Expected values to be strictly deep-equal:", + strictEqual: "Expected values to be strictly equal:", + strictEqualObject: + 'Expected "actual" to be reference-equal to "expected":', + deepEqual: "Expected values to be loosely deep-equal:", + equal: "Expected values to be loosely equal:", + notDeepStrictEqual: + 'Expected "actual" not to be strictly deep-equal to:', + notStrictEqual: 'Expected "actual" to be strictly unequal to:', + notStrictEqualObject: + 'Expected "actual" not to be reference-equal to "expected":', + notDeepEqual: + 'Expected "actual" not to be loosely deep-equal to:', + notEqual: 'Expected "actual" to be loosely unequal to:', + notIdentical: "Values identical but not reference-equal:", + }; + function M(t) { + var e = Object.keys(t), + r = Object.create(Object.getPrototypeOf(t)); + return ( + e.forEach(function (e) { + r[e] = t[e]; + }), + Object.defineProperty(r, "message", { value: t.message }), + r + ); + } + function S(t) { + return p(t, { + compact: !1, + customInspect: !1, + depth: 1e3, + maxArrayLength: 1 / 0, + showHidden: !1, + breakLength: 1 / 0, + showProxy: !1, + sorted: !0, + getters: !0, + }); + } + var E = (function (t) { + function e(t) { + var r; + if ( + ((function (t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); + })(this, e), + "object" !== l(t) || null === t) + ) + throw new b("options", "Object", t); + var n = t.message, + o = t.operator, + f = t.stackStartFn, + u = t.actual, + h = t.expected, + c = Error.stackTraceLimit; + if (((Error.stackTraceLimit = 0), null != n)) + r = a(this, d(e).call(this, String(n))); + else if ( + (i.stderr && + i.stderr.isTTY && + (i.stderr && + i.stderr.getColorDepth && + 1 !== i.stderr.getColorDepth() + ? ((m = ""), (g = ""), (w = ""), (v = "")) + : ((m = ""), (g = ""), (w = ""), (v = ""))), + "object" === l(u) && + null !== u && + "object" === l(h) && + null !== h && + "stack" in u && + u instanceof Error && + "stack" in h && + h instanceof Error && + ((u = M(u)), (h = M(h))), + "deepStrictEqual" === o || "strictEqual" === o) + ) + r = a( + this, + d(e).call( + this, + (function (t, e, r) { + var n = "", + o = "", + a = 0, + s = "", + f = !1, + u = S(t), + h = u.split("\n"), + c = S(e).split("\n"), + d = 0, + p = ""; + if ( + ("strictEqual" === r && + "object" === l(t) && + "object" === l(e) && + null !== t && + null !== e && + (r = "strictEqualObject"), + 1 === h.length && 1 === c.length && h[0] !== c[0]) + ) { + var b = h[0].length + c[0].length; + if (b <= 10) { + if ( + !( + ("object" === l(t) && null !== t) || + ("object" === l(e) && null !== e) || + (0 === t && 0 === e) + ) + ) + return ( + "".concat(_[r], "\n\n") + + "".concat(h[0], " !== ").concat(c[0], "\n") + ); + } else if ( + "strictEqualObject" !== r && + b < + (i.stderr && i.stderr.isTTY + ? i.stderr.columns + : 80) + ) { + for (; h[0][d] === c[0][d]; ) d++; + d > 2 && + ((p = "\n ".concat( + (function (t, e) { + if ( + ((e = Math.floor(e)), + 0 == t.length || 0 == e) + ) + return ""; + var r = t.length * e; + for ( + e = Math.floor(Math.log(e) / Math.log(2)); + e; + + ) + (t += t), e--; + return t + t.substring(0, r - t.length); + })(" ", d), + "^" + )), + (d = 0)); + } + } + for ( + var M = h[h.length - 1], E = c[c.length - 1]; + M === E && + (d++ < 2 ? (s = "\n ".concat(M).concat(s)) : (n = M), + h.pop(), + c.pop(), + 0 !== h.length && 0 !== c.length); + + ) + (M = h[h.length - 1]), (E = c[c.length - 1]); + var A = Math.max(h.length, c.length); + if (0 === A) { + var k = u.split("\n"); + if (k.length > 30) + for ( + k[26] = "".concat(m, "...").concat(w); + k.length > 27; + + ) + k.pop(); + return "" + .concat(_.notIdentical, "\n\n") + .concat(k.join("\n"), "\n"); + } + d > 3 && + ((s = "\n".concat(m, "...").concat(w).concat(s)), + (f = !0)), + "" !== n && + ((s = "\n ".concat(n).concat(s)), (n = "")); + var x = 0, + I = + _[r] + + "\n" + .concat(g, "+ actual") + .concat(w, " ") + .concat(v, "- expected") + .concat(w), + B = " ".concat(m, "...").concat(w, " Lines skipped"); + for (d = 0; d < A; d++) { + var R = d - a; + if (h.length < d + 1) + R > 1 && + d > 2 && + (R > 4 + ? ((o += "\n".concat(m, "...").concat(w)), + (f = !0)) + : R > 3 && + ((o += "\n ".concat(c[d - 2])), x++), + (o += "\n ".concat(c[d - 1])), + x++), + (a = d), + (n += "\n" + .concat(v, "-") + .concat(w, " ") + .concat(c[d])), + x++; + else if (c.length < d + 1) + R > 1 && + d > 2 && + (R > 4 + ? ((o += "\n".concat(m, "...").concat(w)), + (f = !0)) + : R > 3 && + ((o += "\n ".concat(h[d - 2])), x++), + (o += "\n ".concat(h[d - 1])), + x++), + (a = d), + (o += "\n" + .concat(g, "+") + .concat(w, " ") + .concat(h[d])), + x++; + else { + var O = c[d], + j = h[d], + P = + j !== O && (!y(j, ",") || j.slice(0, -1) !== O); + P && + y(O, ",") && + O.slice(0, -1) === j && + ((P = !1), (j += ",")), + P + ? (R > 1 && + d > 2 && + (R > 4 + ? ((o += "\n".concat(m, "...").concat(w)), + (f = !0)) + : R > 3 && + ((o += "\n ".concat(h[d - 2])), x++), + (o += "\n ".concat(h[d - 1])), + x++), + (a = d), + (o += "\n" + .concat(g, "+") + .concat(w, " ") + .concat(j)), + (n += "\n" + .concat(v, "-") + .concat(w, " ") + .concat(O)), + (x += 2)) + : ((o += n), + (n = ""), + (1 !== R && 0 !== d) || + ((o += "\n ".concat(j)), x++)); + } + if (x > 20 && d < A - 2) + return ( + "" + .concat(I) + .concat(B, "\n") + .concat(o, "\n") + .concat(m, "...") + .concat(w) + .concat(n, "\n") + "".concat(m, "...").concat(w) + ); + } + return "" + .concat(I) + .concat(f ? B : "", "\n") + .concat(o) + .concat(n) + .concat(s) + .concat(p); + })(u, h, o) + ) + ); + else if ("notDeepStrictEqual" === o || "notStrictEqual" === o) { + var p = _[o], + E = S(u).split("\n"); + if ( + ("notStrictEqual" === o && + "object" === l(u) && + null !== u && + (p = _.notStrictEqualObject), + E.length > 30) + ) + for (E[26] = "".concat(m, "...").concat(w); E.length > 27; ) + E.pop(); + r = + 1 === E.length + ? a(this, d(e).call(this, "".concat(p, " ").concat(E[0]))) + : a( + this, + d(e).call( + this, + "".concat(p, "\n\n").concat(E.join("\n"), "\n") + ) + ); + } else { + var A = S(u), + k = "", + x = _[o]; + "notDeepEqual" === o || "notEqual" === o + ? (A = "".concat(_[o], "\n\n").concat(A)).length > 1024 && + (A = "".concat(A.slice(0, 1021), "...")) + : ((k = "".concat(S(h))), + A.length > 512 && (A = "".concat(A.slice(0, 509), "...")), + k.length > 512 && (k = "".concat(k.slice(0, 509), "...")), + "deepEqual" === o || "equal" === o + ? (A = "" + .concat(x, "\n\n") + .concat(A, "\n\nshould equal\n\n")) + : (k = " ".concat(o, " ").concat(k))), + (r = a(this, d(e).call(this, "".concat(A).concat(k)))); + } + return ( + (Error.stackTraceLimit = c), + (r.generatedMessage = !n), + Object.defineProperty(s(r), "name", { + value: "AssertionError [ERR_ASSERTION]", + enumerable: !1, + writable: !0, + configurable: !0, + }), + (r.code = "ERR_ASSERTION"), + (r.actual = u), + (r.expected = h), + (r.operator = o), + Error.captureStackTrace && Error.captureStackTrace(s(r), f), + r.stack, + (r.name = "AssertionError"), + a(r) + ); + } + var r, f; + return ( + (function (t, e) { + if ("function" != typeof e && null !== e) + throw new TypeError( + "Super expression must either be null or a function" + ); + (t.prototype = Object.create(e && e.prototype, { + constructor: { value: t, writable: !0, configurable: !0 }, + })), + e && c(t, e); + })(e, t), + (r = e), + (f = [ + { + key: "toString", + value: function () { + return "" + .concat(this.name, " [") + .concat(this.code, "]: ") + .concat(this.message); + }, + }, + { + key: p.custom, + value: function (t, e) { + return p( + this, + (function (t) { + for (var e = 1; e < arguments.length; e++) { + var r = null != arguments[e] ? arguments[e] : {}, + i = Object.keys(r); + "function" == typeof Object.getOwnPropertySymbols && + (i = i.concat( + Object.getOwnPropertySymbols(r).filter( + function (t) { + return Object.getOwnPropertyDescriptor(r, t) + .enumerable; + } + ) + )), + i.forEach(function (e) { + n(t, e, r[e]); + }); + } + return t; + })({}, e, { customInspect: !1, depth: 0 }) + ); + }, + }, + ]), + f && o(r.prototype, f), + e + ); + })(f(Error)); + t.exports = E; + }, + 2136: (t, e, r) => { + "use strict"; + function i(t) { + return ( + (i = + "function" == typeof Symbol && + "symbol" == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && + "function" == typeof Symbol && + t.constructor === Symbol && + t !== Symbol.prototype + ? "symbol" + : typeof t; + }), + i(t) + ); + } + function n(t) { + return ( + (n = Object.setPrototypeOf + ? Object.getPrototypeOf + : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }), + n(t) + ); + } + function o(t, e) { + return ( + (o = + Object.setPrototypeOf || + function (t, e) { + return (t.__proto__ = e), t; + }), + o(t, e) + ); + } + var a, + s, + f = {}; + function u(t, e, r) { + r || (r = Error); + var a = (function (r) { + function a(r, o, s) { + var f; + return ( + (function (t, e) { + if (!(t instanceof e)) + throw new TypeError( + "Cannot call a class as a function" + ); + })(this, a), + (f = (function (t, e) { + return !e || ("object" !== i(e) && "function" != typeof e) + ? (function (t) { + if (void 0 === t) + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ); + return t; + })(t) + : e; + })( + this, + n(a).call( + this, + (function (t, r, i) { + return "string" == typeof e ? e : e(t, r, i); + })(r, o, s) + ) + )), + (f.code = t), + f + ); + } + return ( + (function (t, e) { + if ("function" != typeof e && null !== e) + throw new TypeError( + "Super expression must either be null or a function" + ); + (t.prototype = Object.create(e && e.prototype, { + constructor: { value: t, writable: !0, configurable: !0 }, + })), + e && o(t, e); + })(a, r), + a + ); + })(r); + f[t] = a; + } + function h(t, e) { + if (Array.isArray(t)) { + var r = t.length; + return ( + (t = t.map(function (t) { + return String(t); + })), + r > 2 + ? "one of " + .concat(e, " ") + .concat(t.slice(0, r - 1).join(", "), ", or ") + + t[r - 1] + : 2 === r + ? "one of ".concat(e, " ").concat(t[0], " or ").concat(t[1]) + : "of ".concat(e, " ").concat(t[0]) + ); + } + return "of ".concat(e, " ").concat(String(t)); + } + u( + "ERR_AMBIGUOUS_ARGUMENT", + 'The "%s" argument is ambiguous. %s', + TypeError + ), + u( + "ERR_INVALID_ARG_TYPE", + function (t, e, n) { + var o, s, f, u, c; + if ( + (void 0 === a && (a = r(9282)), + a("string" == typeof t, "'name' must be a string"), + "string" == typeof e && + ((s = "not "), e.substr(0, s.length) === s) + ? ((o = "must not be"), (e = e.replace(/^not /, ""))) + : (o = "must be"), + (function (t, e, r) { + return ( + (void 0 === r || r > t.length) && (r = t.length), + t.substring(r - e.length, r) === e + ); + })(t, " argument")) + ) + f = "The " + .concat(t, " ") + .concat(o, " ") + .concat(h(e, "type")); + else { + var d = + ("number" != typeof c && (c = 0), + c + ".".length > (u = t).length || + -1 === u.indexOf(".", c) + ? "argument" + : "property"); + f = 'The "' + .concat(t, '" ') + .concat(d, " ") + .concat(o, " ") + .concat(h(e, "type")); + } + return f + ". Received type ".concat(i(n)); + }, + TypeError + ), + u( + "ERR_INVALID_ARG_VALUE", + function (t, e) { + var i = + arguments.length > 2 && void 0 !== arguments[2] + ? arguments[2] + : "is invalid"; + void 0 === s && (s = r(9539)); + var n = s.inspect(e); + return ( + n.length > 128 && (n = "".concat(n.slice(0, 128), "...")), + "The argument '" + .concat(t, "' ") + .concat(i, ". Received ") + .concat(n) + ); + }, + TypeError, + RangeError + ), + u( + "ERR_INVALID_RETURN_VALUE", + function (t, e, r) { + var n; + return ( + (n = + r && r.constructor && r.constructor.name + ? "instance of ".concat(r.constructor.name) + : "type ".concat(i(r))), + "Expected " + .concat(t, ' to be returned from the "') + .concat(e, '"') + " function but got ".concat(n, ".") + ); + }, + TypeError + ), + u( + "ERR_MISSING_ARGS", + function () { + for ( + var t = arguments.length, e = new Array(t), i = 0; + i < t; + i++ + ) + e[i] = arguments[i]; + void 0 === a && (a = r(9282)), + a(e.length > 0, "At least one arg needs to be specified"); + var n = "The ", + o = e.length; + switch ( + ((e = e.map(function (t) { + return '"'.concat(t, '"'); + })), + o) + ) { + case 1: + n += "".concat(e[0], " argument"); + break; + case 2: + n += "".concat(e[0], " and ").concat(e[1], " arguments"); + break; + default: + (n += e.slice(0, o - 1).join(", ")), + (n += ", and ".concat(e[o - 1], " arguments")); + } + return "".concat(n, " must be specified"); + }, + TypeError + ), + (t.exports.codes = f); + }, + 9158: (t, e, r) => { + "use strict"; + function i(t, e) { + return ( + (function (t) { + if (Array.isArray(t)) return t; + })(t) || + (function (t, e) { + var r = [], + i = !0, + n = !1, + o = void 0; + try { + for ( + var a, s = t[Symbol.iterator](); + !(i = (a = s.next()).done) && + (r.push(a.value), !e || r.length !== e); + i = !0 + ); + } catch (t) { + (n = !0), (o = t); + } finally { + try { + i || null == s.return || s.return(); + } finally { + if (n) throw o; + } + } + return r; + })(t, e) || + (function () { + throw new TypeError( + "Invalid attempt to destructure non-iterable instance" + ); + })() + ); + } + function n(t) { + return ( + (n = + "function" == typeof Symbol && + "symbol" == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && + "function" == typeof Symbol && + t.constructor === Symbol && + t !== Symbol.prototype + ? "symbol" + : typeof t; + }), + n(t) + ); + } + var o = void 0 !== /a/g.flags, + a = function (t) { + var e = []; + return ( + t.forEach(function (t) { + return e.push(t); + }), + e + ); + }, + s = function (t) { + var e = []; + return ( + t.forEach(function (t, r) { + return e.push([r, t]); + }), + e + ); + }, + f = Object.is ? Object.is : r(609), + u = Object.getOwnPropertySymbols + ? Object.getOwnPropertySymbols + : function () { + return []; + }, + h = Number.isNaN ? Number.isNaN : r(360); + function c(t) { + return t.call.bind(t); + } + var d = c(Object.prototype.hasOwnProperty), + l = c(Object.prototype.propertyIsEnumerable), + p = c(Object.prototype.toString), + b = r(9539).types, + y = b.isAnyArrayBuffer, + m = b.isArrayBufferView, + g = b.isDate, + v = b.isMap, + w = b.isRegExp, + _ = b.isSet, + M = b.isNativeError, + S = b.isBoxedPrimitive, + E = b.isNumberObject, + A = b.isStringObject, + k = b.isBooleanObject, + x = b.isBigIntObject, + I = b.isSymbolObject, + B = b.isFloat32Array, + R = b.isFloat64Array; + function O(t) { + if (0 === t.length || t.length > 10) return !0; + for (var e = 0; e < t.length; e++) { + var r = t.charCodeAt(e); + if (r < 48 || r > 57) return !0; + } + return 10 === t.length && t >= Math.pow(2, 32); + } + function j(t) { + return Object.keys(t) + .filter(O) + .concat( + u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)) + ); + } + function P(t, e) { + if (t === e) return 0; + for ( + var r = t.length, i = e.length, n = 0, o = Math.min(r, i); + n < o; + ++n + ) + if (t[n] !== e[n]) { + (r = t[n]), (i = e[n]); + break; + } + return r < i ? -1 : i < r ? 1 : 0; + } + function T(t, e, r, i) { + if (t === e) return 0 !== t || !r || f(t, e); + if (r) { + if ("object" !== n(t)) + return "number" == typeof t && h(t) && h(e); + if ("object" !== n(e) || null === t || null === e) return !1; + if (Object.getPrototypeOf(t) !== Object.getPrototypeOf(e)) + return !1; + } else { + if (null === t || "object" !== n(t)) + return (null === e || "object" !== n(e)) && t == e; + if (null === e || "object" !== n(e)) return !1; + } + var a, + s, + u, + c, + d = p(t); + if (d !== p(e)) return !1; + if (Array.isArray(t)) { + if (t.length !== e.length) return !1; + var l = j(t), + b = j(e); + return l.length === b.length && N(t, e, r, i, 1, l); + } + if ( + "[object Object]" === d && + ((!v(t) && v(e)) || (!_(t) && _(e))) + ) + return !1; + if (g(t)) { + if ( + !g(e) || + Date.prototype.getTime.call(t) !== + Date.prototype.getTime.call(e) + ) + return !1; + } else if (w(t)) { + if ( + !w(e) || + ((u = t), + (c = e), + !(o + ? u.source === c.source && u.flags === c.flags + : RegExp.prototype.toString.call(u) === + RegExp.prototype.toString.call(c))) + ) + return !1; + } else if (M(t) || t instanceof Error) { + if (t.message !== e.message || t.name !== e.name) return !1; + } else { + if (m(t)) { + if (r || (!B(t) && !R(t))) { + if ( + !(function (t, e) { + return ( + t.byteLength === e.byteLength && + 0 === + P( + new Uint8Array( + t.buffer, + t.byteOffset, + t.byteLength + ), + new Uint8Array( + e.buffer, + e.byteOffset, + e.byteLength + ) + ) + ); + })(t, e) + ) + return !1; + } else if ( + !(function (t, e) { + if (t.byteLength !== e.byteLength) return !1; + for (var r = 0; r < t.byteLength; r++) + if (t[r] !== e[r]) return !1; + return !0; + })(t, e) + ) + return !1; + var O = j(t), + T = j(e); + return O.length === T.length && N(t, e, r, i, 0, O); + } + if (_(t)) + return !(!_(e) || t.size !== e.size) && N(t, e, r, i, 2); + if (v(t)) + return !(!v(e) || t.size !== e.size) && N(t, e, r, i, 3); + if (y(t)) { + if ( + ((s = e), + (a = t).byteLength !== s.byteLength || + 0 !== P(new Uint8Array(a), new Uint8Array(s))) + ) + return !1; + } else if ( + S(t) && + !(function (t, e) { + return E(t) + ? E(e) && + f( + Number.prototype.valueOf.call(t), + Number.prototype.valueOf.call(e) + ) + : A(t) + ? A(e) && + String.prototype.valueOf.call(t) === + String.prototype.valueOf.call(e) + : k(t) + ? k(e) && + Boolean.prototype.valueOf.call(t) === + Boolean.prototype.valueOf.call(e) + : x(t) + ? x(e) && + BigInt.prototype.valueOf.call(t) === + BigInt.prototype.valueOf.call(e) + : I(e) && + Symbol.prototype.valueOf.call(t) === + Symbol.prototype.valueOf.call(e); + })(t, e) + ) + return !1; + } + return N(t, e, r, i, 0); + } + function L(t, e) { + return e.filter(function (e) { + return l(t, e); + }); + } + function N(t, e, r, i, n, o) { + if (5 === arguments.length) { + o = Object.keys(t); + var a = Object.keys(e); + if (o.length !== a.length) return !1; + } + for (var s = 0; s < o.length; s++) if (!d(e, o[s])) return !1; + if (r && 5 === arguments.length) { + var f = u(t); + if (0 !== f.length) { + var h = 0; + for (s = 0; s < f.length; s++) { + var c = f[s]; + if (l(t, c)) { + if (!l(e, c)) return !1; + o.push(c), h++; + } else if (l(e, c)) return !1; + } + var p = u(e); + if (f.length !== p.length && L(e, p).length !== h) return !1; + } else { + var b = u(e); + if (0 !== b.length && 0 !== L(e, b).length) return !1; + } + } + if ( + 0 === o.length && + (0 === n || (1 === n && 0 === t.length) || 0 === t.size) + ) + return !0; + if (void 0 === i) + i = { val1: new Map(), val2: new Map(), position: 0 }; + else { + var y = i.val1.get(t); + if (void 0 !== y) { + var m = i.val2.get(e); + if (void 0 !== m) return y === m; + } + i.position++; + } + i.val1.set(t, i.position), i.val2.set(e, i.position); + var g = F(t, e, r, o, i, n); + return i.val1.delete(t), i.val2.delete(e), g; + } + function C(t, e, r, i) { + for (var n = a(t), o = 0; o < n.length; o++) { + var s = n[o]; + if (T(e, s, r, i)) return t.delete(s), !0; + } + return !1; + } + function U(t) { + switch (n(t)) { + case "undefined": + return null; + case "object": + return; + case "symbol": + return !1; + case "string": + t = +t; + case "number": + if (h(t)) return !1; + } + return !0; + } + function D(t, e, r) { + var i = U(r); + return null != i ? i : e.has(i) && !t.has(i); + } + function q(t, e, r, i, n) { + var o = U(r); + if (null != o) return o; + var a = e.get(o); + return ( + !((void 0 === a && !e.has(o)) || !T(i, a, !1, n)) && + !t.has(o) && + T(i, a, !1, n) + ); + } + function z(t, e, r, i, n, o) { + for (var s = a(t), f = 0; f < s.length; f++) { + var u = s[f]; + if (T(r, u, n, o) && T(i, e.get(u), n, o)) + return t.delete(u), !0; + } + return !1; + } + function F(t, e, r, o, f, u) { + var h = 0; + if (2 === u) { + if ( + !(function (t, e, r, i) { + for (var o = null, s = a(t), f = 0; f < s.length; f++) { + var u = s[f]; + if ("object" === n(u) && null !== u) + null === o && (o = new Set()), o.add(u); + else if (!e.has(u)) { + if (r) return !1; + if (!D(t, e, u)) return !1; + null === o && (o = new Set()), o.add(u); + } + } + if (null !== o) { + for (var h = a(e), c = 0; c < h.length; c++) { + var d = h[c]; + if ("object" === n(d) && null !== d) { + if (!C(o, d, r, i)) return !1; + } else if (!r && !t.has(d) && !C(o, d, r, i)) return !1; + } + return 0 === o.size; + } + return !0; + })(t, e, r, f) + ) + return !1; + } else if (3 === u) { + if ( + !(function (t, e, r, o) { + for (var a = null, f = s(t), u = 0; u < f.length; u++) { + var h = i(f[u], 2), + c = h[0], + d = h[1]; + if ("object" === n(c) && null !== c) + null === a && (a = new Set()), a.add(c); + else { + var l = e.get(c); + if ((void 0 === l && !e.has(c)) || !T(d, l, r, o)) { + if (r) return !1; + if (!q(t, e, c, d, o)) return !1; + null === a && (a = new Set()), a.add(c); + } + } + } + if (null !== a) { + for (var p = s(e), b = 0; b < p.length; b++) { + var y = i(p[b], 2), + m = ((c = y[0]), y[1]); + if ("object" === n(c) && null !== c) { + if (!z(a, t, c, m, r, o)) return !1; + } else if ( + !( + r || + (t.has(c) && T(t.get(c), m, !1, o)) || + z(a, t, c, m, !1, o) + ) + ) + return !1; + } + return 0 === a.size; + } + return !0; + })(t, e, r, f) + ) + return !1; + } else if (1 === u) + for (; h < t.length; h++) { + if (!d(t, h)) { + if (d(e, h)) return !1; + for (var c = Object.keys(t); h < c.length; h++) { + var l = c[h]; + if (!d(e, l) || !T(t[l], e[l], r, f)) return !1; + } + return c.length === Object.keys(e).length; + } + if (!d(e, h) || !T(t[h], e[h], r, f)) return !1; + } + for (h = 0; h < o.length; h++) { + var p = o[h]; + if (!T(t[p], e[p], r, f)) return !1; + } + return !0; + } + t.exports = { + isDeepEqual: function (t, e) { + return T(t, e, !1); + }, + isDeepStrictEqual: function (t, e) { + return T(t, e, !0); + }, + }; + }, + 9742: (t, e) => { + "use strict"; + (e.byteLength = function (t) { + var e = f(t), + r = e[0], + i = e[1]; + return (3 * (r + i)) / 4 - i; + }), + (e.toByteArray = function (t) { + var e, + r, + o = f(t), + a = o[0], + s = o[1], + u = new n( + (function (t, e, r) { + return (3 * (e + r)) / 4 - r; + })(0, a, s) + ), + h = 0, + c = s > 0 ? a - 4 : a; + for (r = 0; r < c; r += 4) + (e = + (i[t.charCodeAt(r)] << 18) | + (i[t.charCodeAt(r + 1)] << 12) | + (i[t.charCodeAt(r + 2)] << 6) | + i[t.charCodeAt(r + 3)]), + (u[h++] = (e >> 16) & 255), + (u[h++] = (e >> 8) & 255), + (u[h++] = 255 & e); + return ( + 2 === s && + ((e = + (i[t.charCodeAt(r)] << 2) | + (i[t.charCodeAt(r + 1)] >> 4)), + (u[h++] = 255 & e)), + 1 === s && + ((e = + (i[t.charCodeAt(r)] << 10) | + (i[t.charCodeAt(r + 1)] << 4) | + (i[t.charCodeAt(r + 2)] >> 2)), + (u[h++] = (e >> 8) & 255), + (u[h++] = 255 & e)), + u + ); + }), + (e.fromByteArray = function (t) { + for ( + var e, + i = t.length, + n = i % 3, + o = [], + a = 16383, + s = 0, + f = i - n; + s < f; + s += a + ) + o.push(u(t, s, s + a > f ? f : s + a)); + return ( + 1 === n + ? ((e = t[i - 1]), + o.push(r[e >> 2] + r[(e << 4) & 63] + "==")) + : 2 === n && + ((e = (t[i - 2] << 8) + t[i - 1]), + o.push( + r[e >> 10] + r[(e >> 4) & 63] + r[(e << 2) & 63] + "=" + )), + o.join("") + ); + }); + for ( + var r = [], + i = [], + n = "undefined" != typeof Uint8Array ? Uint8Array : Array, + o = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + a = 0, + s = o.length; + a < s; + ++a + ) + (r[a] = o[a]), (i[o.charCodeAt(a)] = a); + function f(t) { + var e = t.length; + if (e % 4 > 0) + throw new Error( + "Invalid string. Length must be a multiple of 4" + ); + var r = t.indexOf("="); + return -1 === r && (r = e), [r, r === e ? 0 : 4 - (r % 4)]; + } + function u(t, e, i) { + for (var n, o, a = [], s = e; s < i; s += 3) + (n = + ((t[s] << 16) & 16711680) + + ((t[s + 1] << 8) & 65280) + + (255 & t[s + 2])), + a.push( + r[((o = n) >> 18) & 63] + + r[(o >> 12) & 63] + + r[(o >> 6) & 63] + + r[63 & o] + ); + return a.join(""); + } + (i["-".charCodeAt(0)] = 62), (i["_".charCodeAt(0)] = 63); + }, + 3550: function (t, e, r) { + !(function (t, e) { + "use strict"; + function i(t, e) { + if (!t) throw new Error(e || "Assertion failed"); + } + function n(t, e) { + t.super_ = e; + var r = function () {}; + (r.prototype = e.prototype), + (t.prototype = new r()), + (t.prototype.constructor = t); + } + function o(t, e, r) { + if (o.isBN(t)) return t; + (this.negative = 0), + (this.words = null), + (this.length = 0), + (this.red = null), + null !== t && + (("le" !== e && "be" !== e) || ((r = e), (e = 10)), + this._init(t || 0, e || 10, r || "be")); + } + var a; + "object" == typeof t ? (t.exports = o) : (e.BN = o), + (o.BN = o), + (o.wordSize = 26); + try { + a = + "undefined" != typeof window && void 0 !== window.Buffer + ? window.Buffer + : r(6601).Buffer; + } catch (t) {} + function s(t, e) { + var r = t.charCodeAt(e); + return r >= 65 && r <= 70 + ? r - 55 + : r >= 97 && r <= 102 + ? r - 87 + : (r - 48) & 15; + } + function f(t, e, r) { + var i = s(t, r); + return r - 1 >= e && (i |= s(t, r - 1) << 4), i; + } + function u(t, e, r, i) { + for (var n = 0, o = Math.min(t.length, r), a = e; a < o; a++) { + var s = t.charCodeAt(a) - 48; + (n *= i), + (n += s >= 49 ? s - 49 + 10 : s >= 17 ? s - 17 + 10 : s); + } + return n; + } + (o.isBN = function (t) { + return ( + t instanceof o || + (null !== t && + "object" == typeof t && + t.constructor.wordSize === o.wordSize && + Array.isArray(t.words)) + ); + }), + (o.max = function (t, e) { + return t.cmp(e) > 0 ? t : e; + }), + (o.min = function (t, e) { + return t.cmp(e) < 0 ? t : e; + }), + (o.prototype._init = function (t, e, r) { + if ("number" == typeof t) return this._initNumber(t, e, r); + if ("object" == typeof t) return this._initArray(t, e, r); + "hex" === e && (e = 16), + i(e === (0 | e) && e >= 2 && e <= 36); + var n = 0; + "-" === (t = t.toString().replace(/\s+/g, ""))[0] && + (n++, (this.negative = 1)), + n < t.length && + (16 === e + ? this._parseHex(t, n, r) + : (this._parseBase(t, e, n), + "le" === r && this._initArray(this.toArray(), e, r))); + }), + (o.prototype._initNumber = function (t, e, r) { + t < 0 && ((this.negative = 1), (t = -t)), + t < 67108864 + ? ((this.words = [67108863 & t]), (this.length = 1)) + : t < 4503599627370496 + ? ((this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + ]), + (this.length = 2)) + : (i(t < 9007199254740992), + (this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + 1, + ]), + (this.length = 3)), + "le" === r && this._initArray(this.toArray(), e, r); + }), + (o.prototype._initArray = function (t, e, r) { + if ((i("number" == typeof t.length), t.length <= 0)) + return (this.words = [0]), (this.length = 1), this; + (this.length = Math.ceil(t.length / 3)), + (this.words = new Array(this.length)); + for (var n = 0; n < this.length; n++) this.words[n] = 0; + var o, + a, + s = 0; + if ("be" === r) + for (n = t.length - 1, o = 0; n >= 0; n -= 3) + (a = t[n] | (t[n - 1] << 8) | (t[n - 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + else if ("le" === r) + for (n = 0, o = 0; n < t.length; n += 3) + (a = t[n] | (t[n + 1] << 8) | (t[n + 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + return this.strip(); + }), + (o.prototype._parseHex = function (t, e, r) { + (this.length = Math.ceil((t.length - e) / 6)), + (this.words = new Array(this.length)); + for (var i = 0; i < this.length; i++) this.words[i] = 0; + var n, + o = 0, + a = 0; + if ("be" === r) + for (i = t.length - 1; i >= e; i -= 2) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + else + for ( + i = (t.length - e) % 2 == 0 ? e + 1 : e; + i < t.length; + i += 2 + ) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + this.strip(); + }), + (o.prototype._parseBase = function (t, e, r) { + (this.words = [0]), (this.length = 1); + for (var i = 0, n = 1; n <= 67108863; n *= e) i++; + i--, (n = (n / e) | 0); + for ( + var o = t.length - r, + a = o % i, + s = Math.min(o, o - a) + r, + f = 0, + h = r; + h < s; + h += i + ) + (f = u(t, h, h + i, e)), + this.imuln(n), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + if (0 !== a) { + var c = 1; + for (f = u(t, h, t.length, e), h = 0; h < a; h++) c *= e; + this.imuln(c), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + } + this.strip(); + }), + (o.prototype.copy = function (t) { + t.words = new Array(this.length); + for (var e = 0; e < this.length; e++) + t.words[e] = this.words[e]; + (t.length = this.length), + (t.negative = this.negative), + (t.red = this.red); + }), + (o.prototype.clone = function () { + var t = new o(null); + return this.copy(t), t; + }), + (o.prototype._expand = function (t) { + for (; this.length < t; ) this.words[this.length++] = 0; + return this; + }), + (o.prototype.strip = function () { + for (; this.length > 1 && 0 === this.words[this.length - 1]; ) + this.length--; + return this._normSign(); + }), + (o.prototype._normSign = function () { + return ( + 1 === this.length && + 0 === this.words[0] && + (this.negative = 0), + this + ); + }), + (o.prototype.inspect = function () { + return ( + (this.red ? "" + ); + }); + var h = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000", + ], + c = [ + 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + ], + d = [ + 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, + 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, + 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, + 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, + 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, + 33554432, 39135393, 45435424, 52521875, 60466176, + ]; + function l(t, e, r) { + r.negative = e.negative ^ t.negative; + var i = (t.length + e.length) | 0; + (r.length = i), (i = (i - 1) | 0); + var n = 0 | t.words[0], + o = 0 | e.words[0], + a = n * o, + s = 67108863 & a, + f = (a / 67108864) | 0; + r.words[0] = s; + for (var u = 1; u < i; u++) { + for ( + var h = f >>> 26, + c = 67108863 & f, + d = Math.min(u, e.length - 1), + l = Math.max(0, u - t.length + 1); + l <= d; + l++ + ) { + var p = (u - l) | 0; + (h += + ((a = (n = 0 | t.words[p]) * (o = 0 | e.words[l]) + c) / + 67108864) | + 0), + (c = 67108863 & a); + } + (r.words[u] = 0 | c), (f = 0 | h); + } + return 0 !== f ? (r.words[u] = 0 | f) : r.length--, r.strip(); + } + (o.prototype.toString = function (t, e) { + var r; + if (((e = 0 | e || 1), 16 === (t = t || 10) || "hex" === t)) { + r = ""; + for (var n = 0, o = 0, a = 0; a < this.length; a++) { + var s = this.words[a], + f = (16777215 & ((s << n) | o)).toString(16); + (r = + 0 != (o = (s >>> (24 - n)) & 16777215) || + a !== this.length - 1 + ? h[6 - f.length] + f + r + : f + r), + (n += 2) >= 26 && ((n -= 26), a--); + } + for (0 !== o && (r = o.toString(16) + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + if (t === (0 | t) && t >= 2 && t <= 36) { + var u = c[t], + l = d[t]; + r = ""; + var p = this.clone(); + for (p.negative = 0; !p.isZero(); ) { + var b = p.modn(l).toString(t); + r = (p = p.idivn(l)).isZero() + ? b + r + : h[u - b.length] + b + r; + } + for (this.isZero() && (r = "0" + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + i(!1, "Base should be between 2 and 36"); + }), + (o.prototype.toNumber = function () { + var t = this.words[0]; + return ( + 2 === this.length + ? (t += 67108864 * this.words[1]) + : 3 === this.length && 1 === this.words[2] + ? (t += 4503599627370496 + 67108864 * this.words[1]) + : this.length > 2 && + i(!1, "Number can only safely store up to 53 bits"), + 0 !== this.negative ? -t : t + ); + }), + (o.prototype.toJSON = function () { + return this.toString(16); + }), + (o.prototype.toBuffer = function (t, e) { + return i(void 0 !== a), this.toArrayLike(a, t, e); + }), + (o.prototype.toArray = function (t, e) { + return this.toArrayLike(Array, t, e); + }), + (o.prototype.toArrayLike = function (t, e, r) { + var n = this.byteLength(), + o = r || Math.max(1, n); + i(n <= o, "byte array longer than desired length"), + i(o > 0, "Requested array length <= 0"), + this.strip(); + var a, + s, + f = "le" === e, + u = new t(o), + h = this.clone(); + if (f) { + for (s = 0; !h.isZero(); s++) + (a = h.andln(255)), h.iushrn(8), (u[s] = a); + for (; s < o; s++) u[s] = 0; + } else { + for (s = 0; s < o - n; s++) u[s] = 0; + for (s = 0; !h.isZero(); s++) + (a = h.andln(255)), h.iushrn(8), (u[o - s - 1] = a); + } + return u; + }), + Math.clz32 + ? (o.prototype._countBits = function (t) { + return 32 - Math.clz32(t); + }) + : (o.prototype._countBits = function (t) { + var e = t, + r = 0; + return ( + e >= 4096 && ((r += 13), (e >>>= 13)), + e >= 64 && ((r += 7), (e >>>= 7)), + e >= 8 && ((r += 4), (e >>>= 4)), + e >= 2 && ((r += 2), (e >>>= 2)), + r + e + ); + }), + (o.prototype._zeroBits = function (t) { + if (0 === t) return 26; + var e = t, + r = 0; + return ( + 0 == (8191 & e) && ((r += 13), (e >>>= 13)), + 0 == (127 & e) && ((r += 7), (e >>>= 7)), + 0 == (15 & e) && ((r += 4), (e >>>= 4)), + 0 == (3 & e) && ((r += 2), (e >>>= 2)), + 0 == (1 & e) && r++, + r + ); + }), + (o.prototype.bitLength = function () { + var t = this.words[this.length - 1], + e = this._countBits(t); + return 26 * (this.length - 1) + e; + }), + (o.prototype.zeroBits = function () { + if (this.isZero()) return 0; + for (var t = 0, e = 0; e < this.length; e++) { + var r = this._zeroBits(this.words[e]); + if (((t += r), 26 !== r)) break; + } + return t; + }), + (o.prototype.byteLength = function () { + return Math.ceil(this.bitLength() / 8); + }), + (o.prototype.toTwos = function (t) { + return 0 !== this.negative + ? this.abs().inotn(t).iaddn(1) + : this.clone(); + }), + (o.prototype.fromTwos = function (t) { + return this.testn(t - 1) + ? this.notn(t).iaddn(1).ineg() + : this.clone(); + }), + (o.prototype.isNeg = function () { + return 0 !== this.negative; + }), + (o.prototype.neg = function () { + return this.clone().ineg(); + }), + (o.prototype.ineg = function () { + return this.isZero() || (this.negative ^= 1), this; + }), + (o.prototype.iuor = function (t) { + for (; this.length < t.length; ) + this.words[this.length++] = 0; + for (var e = 0; e < t.length; e++) + this.words[e] = this.words[e] | t.words[e]; + return this.strip(); + }), + (o.prototype.ior = function (t) { + return i(0 == (this.negative | t.negative)), this.iuor(t); + }), + (o.prototype.or = function (t) { + return this.length > t.length + ? this.clone().ior(t) + : t.clone().ior(this); + }), + (o.prototype.uor = function (t) { + return this.length > t.length + ? this.clone().iuor(t) + : t.clone().iuor(this); + }), + (o.prototype.iuand = function (t) { + var e; + e = this.length > t.length ? t : this; + for (var r = 0; r < e.length; r++) + this.words[r] = this.words[r] & t.words[r]; + return (this.length = e.length), this.strip(); + }), + (o.prototype.iand = function (t) { + return i(0 == (this.negative | t.negative)), this.iuand(t); + }), + (o.prototype.and = function (t) { + return this.length > t.length + ? this.clone().iand(t) + : t.clone().iand(this); + }), + (o.prototype.uand = function (t) { + return this.length > t.length + ? this.clone().iuand(t) + : t.clone().iuand(this); + }), + (o.prototype.iuxor = function (t) { + var e, r; + this.length > t.length + ? ((e = this), (r = t)) + : ((e = t), (r = this)); + for (var i = 0; i < r.length; i++) + this.words[i] = e.words[i] ^ r.words[i]; + if (this !== e) + for (; i < e.length; i++) this.words[i] = e.words[i]; + return (this.length = e.length), this.strip(); + }), + (o.prototype.ixor = function (t) { + return i(0 == (this.negative | t.negative)), this.iuxor(t); + }), + (o.prototype.xor = function (t) { + return this.length > t.length + ? this.clone().ixor(t) + : t.clone().ixor(this); + }), + (o.prototype.uxor = function (t) { + return this.length > t.length + ? this.clone().iuxor(t) + : t.clone().iuxor(this); + }), + (o.prototype.inotn = function (t) { + i("number" == typeof t && t >= 0); + var e = 0 | Math.ceil(t / 26), + r = t % 26; + this._expand(e), r > 0 && e--; + for (var n = 0; n < e; n++) + this.words[n] = 67108863 & ~this.words[n]; + return ( + r > 0 && + (this.words[n] = ~this.words[n] & (67108863 >> (26 - r))), + this.strip() + ); + }), + (o.prototype.notn = function (t) { + return this.clone().inotn(t); + }), + (o.prototype.setn = function (t, e) { + i("number" == typeof t && t >= 0); + var r = (t / 26) | 0, + n = t % 26; + return ( + this._expand(r + 1), + (this.words[r] = e + ? this.words[r] | (1 << n) + : this.words[r] & ~(1 << n)), + this.strip() + ); + }), + (o.prototype.iadd = function (t) { + var e, r, i; + if (0 !== this.negative && 0 === t.negative) + return ( + (this.negative = 0), + (e = this.isub(t)), + (this.negative ^= 1), + this._normSign() + ); + if (0 === this.negative && 0 !== t.negative) + return ( + (t.negative = 0), + (e = this.isub(t)), + (t.negative = 1), + e._normSign() + ); + this.length > t.length + ? ((r = this), (i = t)) + : ((r = t), (i = this)); + for (var n = 0, o = 0; o < i.length; o++) + (e = (0 | r.words[o]) + (0 | i.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + for (; 0 !== n && o < r.length; o++) + (e = (0 | r.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + if (((this.length = r.length), 0 !== n)) + (this.words[this.length] = n), this.length++; + else if (r !== this) + for (; o < r.length; o++) this.words[o] = r.words[o]; + return this; + }), + (o.prototype.add = function (t) { + var e; + return 0 !== t.negative && 0 === this.negative + ? ((t.negative = 0), + (e = this.sub(t)), + (t.negative ^= 1), + e) + : 0 === t.negative && 0 !== this.negative + ? ((this.negative = 0), + (e = t.sub(this)), + (this.negative = 1), + e) + : this.length > t.length + ? this.clone().iadd(t) + : t.clone().iadd(this); + }), + (o.prototype.isub = function (t) { + if (0 !== t.negative) { + t.negative = 0; + var e = this.iadd(t); + return (t.negative = 1), e._normSign(); + } + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iadd(t), + (this.negative = 1), + this._normSign() + ); + var r, + i, + n = this.cmp(t); + if (0 === n) + return ( + (this.negative = 0), + (this.length = 1), + (this.words[0] = 0), + this + ); + n > 0 ? ((r = this), (i = t)) : ((r = t), (i = this)); + for (var o = 0, a = 0; a < i.length; a++) + (o = (e = (0 | r.words[a]) - (0 | i.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + for (; 0 !== o && a < r.length; a++) + (o = (e = (0 | r.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + if (0 === o && a < r.length && r !== this) + for (; a < r.length; a++) this.words[a] = r.words[a]; + return ( + (this.length = Math.max(this.length, a)), + r !== this && (this.negative = 1), + this.strip() + ); + }), + (o.prototype.sub = function (t) { + return this.clone().isub(t); + }); + var p = function (t, e, r) { + var i, + n, + o, + a = t.words, + s = e.words, + f = r.words, + u = 0, + h = 0 | a[0], + c = 8191 & h, + d = h >>> 13, + l = 0 | a[1], + p = 8191 & l, + b = l >>> 13, + y = 0 | a[2], + m = 8191 & y, + g = y >>> 13, + v = 0 | a[3], + w = 8191 & v, + _ = v >>> 13, + M = 0 | a[4], + S = 8191 & M, + E = M >>> 13, + A = 0 | a[5], + k = 8191 & A, + x = A >>> 13, + I = 0 | a[6], + B = 8191 & I, + R = I >>> 13, + O = 0 | a[7], + j = 8191 & O, + P = O >>> 13, + T = 0 | a[8], + L = 8191 & T, + N = T >>> 13, + C = 0 | a[9], + U = 8191 & C, + D = C >>> 13, + q = 0 | s[0], + z = 8191 & q, + F = q >>> 13, + K = 0 | s[1], + H = 8191 & K, + V = K >>> 13, + G = 0 | s[2], + W = 8191 & G, + Z = G >>> 13, + $ = 0 | s[3], + X = 8191 & $, + Y = $ >>> 13, + J = 0 | s[4], + Q = 8191 & J, + tt = J >>> 13, + et = 0 | s[5], + rt = 8191 & et, + it = et >>> 13, + nt = 0 | s[6], + ot = 8191 & nt, + at = nt >>> 13, + st = 0 | s[7], + ft = 8191 & st, + ut = st >>> 13, + ht = 0 | s[8], + ct = 8191 & ht, + dt = ht >>> 13, + lt = 0 | s[9], + pt = 8191 & lt, + bt = lt >>> 13; + (r.negative = t.negative ^ e.negative), (r.length = 19); + var yt = + (((u + (i = Math.imul(c, z))) | 0) + + ((8191 & + (n = ((n = Math.imul(c, F)) + Math.imul(d, z)) | 0)) << + 13)) | + 0; + (u = + ((((o = Math.imul(d, F)) + (n >>> 13)) | 0) + (yt >>> 26)) | + 0), + (yt &= 67108863), + (i = Math.imul(p, z)), + (n = ((n = Math.imul(p, F)) + Math.imul(b, z)) | 0), + (o = Math.imul(b, F)); + var mt = + (((u + (i = (i + Math.imul(c, H)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, V)) | 0) + Math.imul(d, H)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, V)) | 0) + (n >>> 13)) | 0) + + (mt >>> 26)) | + 0), + (mt &= 67108863), + (i = Math.imul(m, z)), + (n = ((n = Math.imul(m, F)) + Math.imul(g, z)) | 0), + (o = Math.imul(g, F)), + (i = (i + Math.imul(p, H)) | 0), + (n = ((n = (n + Math.imul(p, V)) | 0) + Math.imul(b, H)) | 0), + (o = (o + Math.imul(b, V)) | 0); + var gt = + (((u + (i = (i + Math.imul(c, W)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Z)) | 0) + Math.imul(d, W)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Z)) | 0) + (n >>> 13)) | 0) + + (gt >>> 26)) | + 0), + (gt &= 67108863), + (i = Math.imul(w, z)), + (n = ((n = Math.imul(w, F)) + Math.imul(_, z)) | 0), + (o = Math.imul(_, F)), + (i = (i + Math.imul(m, H)) | 0), + (n = ((n = (n + Math.imul(m, V)) | 0) + Math.imul(g, H)) | 0), + (o = (o + Math.imul(g, V)) | 0), + (i = (i + Math.imul(p, W)) | 0), + (n = ((n = (n + Math.imul(p, Z)) | 0) + Math.imul(b, W)) | 0), + (o = (o + Math.imul(b, Z)) | 0); + var vt = + (((u + (i = (i + Math.imul(c, X)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Y)) | 0) + Math.imul(d, X)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Y)) | 0) + (n >>> 13)) | 0) + + (vt >>> 26)) | + 0), + (vt &= 67108863), + (i = Math.imul(S, z)), + (n = ((n = Math.imul(S, F)) + Math.imul(E, z)) | 0), + (o = Math.imul(E, F)), + (i = (i + Math.imul(w, H)) | 0), + (n = ((n = (n + Math.imul(w, V)) | 0) + Math.imul(_, H)) | 0), + (o = (o + Math.imul(_, V)) | 0), + (i = (i + Math.imul(m, W)) | 0), + (n = ((n = (n + Math.imul(m, Z)) | 0) + Math.imul(g, W)) | 0), + (o = (o + Math.imul(g, Z)) | 0), + (i = (i + Math.imul(p, X)) | 0), + (n = ((n = (n + Math.imul(p, Y)) | 0) + Math.imul(b, X)) | 0), + (o = (o + Math.imul(b, Y)) | 0); + var wt = + (((u + (i = (i + Math.imul(c, Q)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, tt)) | 0) + Math.imul(d, Q)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, tt)) | 0) + (n >>> 13)) | 0) + + (wt >>> 26)) | + 0), + (wt &= 67108863), + (i = Math.imul(k, z)), + (n = ((n = Math.imul(k, F)) + Math.imul(x, z)) | 0), + (o = Math.imul(x, F)), + (i = (i + Math.imul(S, H)) | 0), + (n = ((n = (n + Math.imul(S, V)) | 0) + Math.imul(E, H)) | 0), + (o = (o + Math.imul(E, V)) | 0), + (i = (i + Math.imul(w, W)) | 0), + (n = ((n = (n + Math.imul(w, Z)) | 0) + Math.imul(_, W)) | 0), + (o = (o + Math.imul(_, Z)) | 0), + (i = (i + Math.imul(m, X)) | 0), + (n = ((n = (n + Math.imul(m, Y)) | 0) + Math.imul(g, X)) | 0), + (o = (o + Math.imul(g, Y)) | 0), + (i = (i + Math.imul(p, Q)) | 0), + (n = + ((n = (n + Math.imul(p, tt)) | 0) + Math.imul(b, Q)) | 0), + (o = (o + Math.imul(b, tt)) | 0); + var _t = + (((u + (i = (i + Math.imul(c, rt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, it)) | 0) + Math.imul(d, rt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, it)) | 0) + (n >>> 13)) | 0) + + (_t >>> 26)) | + 0), + (_t &= 67108863), + (i = Math.imul(B, z)), + (n = ((n = Math.imul(B, F)) + Math.imul(R, z)) | 0), + (o = Math.imul(R, F)), + (i = (i + Math.imul(k, H)) | 0), + (n = ((n = (n + Math.imul(k, V)) | 0) + Math.imul(x, H)) | 0), + (o = (o + Math.imul(x, V)) | 0), + (i = (i + Math.imul(S, W)) | 0), + (n = ((n = (n + Math.imul(S, Z)) | 0) + Math.imul(E, W)) | 0), + (o = (o + Math.imul(E, Z)) | 0), + (i = (i + Math.imul(w, X)) | 0), + (n = ((n = (n + Math.imul(w, Y)) | 0) + Math.imul(_, X)) | 0), + (o = (o + Math.imul(_, Y)) | 0), + (i = (i + Math.imul(m, Q)) | 0), + (n = + ((n = (n + Math.imul(m, tt)) | 0) + Math.imul(g, Q)) | 0), + (o = (o + Math.imul(g, tt)) | 0), + (i = (i + Math.imul(p, rt)) | 0), + (n = + ((n = (n + Math.imul(p, it)) | 0) + Math.imul(b, rt)) | 0), + (o = (o + Math.imul(b, it)) | 0); + var Mt = + (((u + (i = (i + Math.imul(c, ot)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, at)) | 0) + Math.imul(d, ot)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, at)) | 0) + (n >>> 13)) | 0) + + (Mt >>> 26)) | + 0), + (Mt &= 67108863), + (i = Math.imul(j, z)), + (n = ((n = Math.imul(j, F)) + Math.imul(P, z)) | 0), + (o = Math.imul(P, F)), + (i = (i + Math.imul(B, H)) | 0), + (n = ((n = (n + Math.imul(B, V)) | 0) + Math.imul(R, H)) | 0), + (o = (o + Math.imul(R, V)) | 0), + (i = (i + Math.imul(k, W)) | 0), + (n = ((n = (n + Math.imul(k, Z)) | 0) + Math.imul(x, W)) | 0), + (o = (o + Math.imul(x, Z)) | 0), + (i = (i + Math.imul(S, X)) | 0), + (n = ((n = (n + Math.imul(S, Y)) | 0) + Math.imul(E, X)) | 0), + (o = (o + Math.imul(E, Y)) | 0), + (i = (i + Math.imul(w, Q)) | 0), + (n = + ((n = (n + Math.imul(w, tt)) | 0) + Math.imul(_, Q)) | 0), + (o = (o + Math.imul(_, tt)) | 0), + (i = (i + Math.imul(m, rt)) | 0), + (n = + ((n = (n + Math.imul(m, it)) | 0) + Math.imul(g, rt)) | 0), + (o = (o + Math.imul(g, it)) | 0), + (i = (i + Math.imul(p, ot)) | 0), + (n = + ((n = (n + Math.imul(p, at)) | 0) + Math.imul(b, ot)) | 0), + (o = (o + Math.imul(b, at)) | 0); + var St = + (((u + (i = (i + Math.imul(c, ft)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, ut)) | 0) + Math.imul(d, ft)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, ut)) | 0) + (n >>> 13)) | 0) + + (St >>> 26)) | + 0), + (St &= 67108863), + (i = Math.imul(L, z)), + (n = ((n = Math.imul(L, F)) + Math.imul(N, z)) | 0), + (o = Math.imul(N, F)), + (i = (i + Math.imul(j, H)) | 0), + (n = ((n = (n + Math.imul(j, V)) | 0) + Math.imul(P, H)) | 0), + (o = (o + Math.imul(P, V)) | 0), + (i = (i + Math.imul(B, W)) | 0), + (n = ((n = (n + Math.imul(B, Z)) | 0) + Math.imul(R, W)) | 0), + (o = (o + Math.imul(R, Z)) | 0), + (i = (i + Math.imul(k, X)) | 0), + (n = ((n = (n + Math.imul(k, Y)) | 0) + Math.imul(x, X)) | 0), + (o = (o + Math.imul(x, Y)) | 0), + (i = (i + Math.imul(S, Q)) | 0), + (n = + ((n = (n + Math.imul(S, tt)) | 0) + Math.imul(E, Q)) | 0), + (o = (o + Math.imul(E, tt)) | 0), + (i = (i + Math.imul(w, rt)) | 0), + (n = + ((n = (n + Math.imul(w, it)) | 0) + Math.imul(_, rt)) | 0), + (o = (o + Math.imul(_, it)) | 0), + (i = (i + Math.imul(m, ot)) | 0), + (n = + ((n = (n + Math.imul(m, at)) | 0) + Math.imul(g, ot)) | 0), + (o = (o + Math.imul(g, at)) | 0), + (i = (i + Math.imul(p, ft)) | 0), + (n = + ((n = (n + Math.imul(p, ut)) | 0) + Math.imul(b, ft)) | 0), + (o = (o + Math.imul(b, ut)) | 0); + var Et = + (((u + (i = (i + Math.imul(c, ct)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, dt)) | 0) + Math.imul(d, ct)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, dt)) | 0) + (n >>> 13)) | 0) + + (Et >>> 26)) | + 0), + (Et &= 67108863), + (i = Math.imul(U, z)), + (n = ((n = Math.imul(U, F)) + Math.imul(D, z)) | 0), + (o = Math.imul(D, F)), + (i = (i + Math.imul(L, H)) | 0), + (n = ((n = (n + Math.imul(L, V)) | 0) + Math.imul(N, H)) | 0), + (o = (o + Math.imul(N, V)) | 0), + (i = (i + Math.imul(j, W)) | 0), + (n = ((n = (n + Math.imul(j, Z)) | 0) + Math.imul(P, W)) | 0), + (o = (o + Math.imul(P, Z)) | 0), + (i = (i + Math.imul(B, X)) | 0), + (n = ((n = (n + Math.imul(B, Y)) | 0) + Math.imul(R, X)) | 0), + (o = (o + Math.imul(R, Y)) | 0), + (i = (i + Math.imul(k, Q)) | 0), + (n = + ((n = (n + Math.imul(k, tt)) | 0) + Math.imul(x, Q)) | 0), + (o = (o + Math.imul(x, tt)) | 0), + (i = (i + Math.imul(S, rt)) | 0), + (n = + ((n = (n + Math.imul(S, it)) | 0) + Math.imul(E, rt)) | 0), + (o = (o + Math.imul(E, it)) | 0), + (i = (i + Math.imul(w, ot)) | 0), + (n = + ((n = (n + Math.imul(w, at)) | 0) + Math.imul(_, ot)) | 0), + (o = (o + Math.imul(_, at)) | 0), + (i = (i + Math.imul(m, ft)) | 0), + (n = + ((n = (n + Math.imul(m, ut)) | 0) + Math.imul(g, ft)) | 0), + (o = (o + Math.imul(g, ut)) | 0), + (i = (i + Math.imul(p, ct)) | 0), + (n = + ((n = (n + Math.imul(p, dt)) | 0) + Math.imul(b, ct)) | 0), + (o = (o + Math.imul(b, dt)) | 0); + var At = + (((u + (i = (i + Math.imul(c, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, bt)) | 0) + Math.imul(d, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, bt)) | 0) + (n >>> 13)) | 0) + + (At >>> 26)) | + 0), + (At &= 67108863), + (i = Math.imul(U, H)), + (n = ((n = Math.imul(U, V)) + Math.imul(D, H)) | 0), + (o = Math.imul(D, V)), + (i = (i + Math.imul(L, W)) | 0), + (n = ((n = (n + Math.imul(L, Z)) | 0) + Math.imul(N, W)) | 0), + (o = (o + Math.imul(N, Z)) | 0), + (i = (i + Math.imul(j, X)) | 0), + (n = ((n = (n + Math.imul(j, Y)) | 0) + Math.imul(P, X)) | 0), + (o = (o + Math.imul(P, Y)) | 0), + (i = (i + Math.imul(B, Q)) | 0), + (n = + ((n = (n + Math.imul(B, tt)) | 0) + Math.imul(R, Q)) | 0), + (o = (o + Math.imul(R, tt)) | 0), + (i = (i + Math.imul(k, rt)) | 0), + (n = + ((n = (n + Math.imul(k, it)) | 0) + Math.imul(x, rt)) | 0), + (o = (o + Math.imul(x, it)) | 0), + (i = (i + Math.imul(S, ot)) | 0), + (n = + ((n = (n + Math.imul(S, at)) | 0) + Math.imul(E, ot)) | 0), + (o = (o + Math.imul(E, at)) | 0), + (i = (i + Math.imul(w, ft)) | 0), + (n = + ((n = (n + Math.imul(w, ut)) | 0) + Math.imul(_, ft)) | 0), + (o = (o + Math.imul(_, ut)) | 0), + (i = (i + Math.imul(m, ct)) | 0), + (n = + ((n = (n + Math.imul(m, dt)) | 0) + Math.imul(g, ct)) | 0), + (o = (o + Math.imul(g, dt)) | 0); + var kt = + (((u + (i = (i + Math.imul(p, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(p, bt)) | 0) + Math.imul(b, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(b, bt)) | 0) + (n >>> 13)) | 0) + + (kt >>> 26)) | + 0), + (kt &= 67108863), + (i = Math.imul(U, W)), + (n = ((n = Math.imul(U, Z)) + Math.imul(D, W)) | 0), + (o = Math.imul(D, Z)), + (i = (i + Math.imul(L, X)) | 0), + (n = ((n = (n + Math.imul(L, Y)) | 0) + Math.imul(N, X)) | 0), + (o = (o + Math.imul(N, Y)) | 0), + (i = (i + Math.imul(j, Q)) | 0), + (n = + ((n = (n + Math.imul(j, tt)) | 0) + Math.imul(P, Q)) | 0), + (o = (o + Math.imul(P, tt)) | 0), + (i = (i + Math.imul(B, rt)) | 0), + (n = + ((n = (n + Math.imul(B, it)) | 0) + Math.imul(R, rt)) | 0), + (o = (o + Math.imul(R, it)) | 0), + (i = (i + Math.imul(k, ot)) | 0), + (n = + ((n = (n + Math.imul(k, at)) | 0) + Math.imul(x, ot)) | 0), + (o = (o + Math.imul(x, at)) | 0), + (i = (i + Math.imul(S, ft)) | 0), + (n = + ((n = (n + Math.imul(S, ut)) | 0) + Math.imul(E, ft)) | 0), + (o = (o + Math.imul(E, ut)) | 0), + (i = (i + Math.imul(w, ct)) | 0), + (n = + ((n = (n + Math.imul(w, dt)) | 0) + Math.imul(_, ct)) | 0), + (o = (o + Math.imul(_, dt)) | 0); + var xt = + (((u + (i = (i + Math.imul(m, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(m, bt)) | 0) + Math.imul(g, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(g, bt)) | 0) + (n >>> 13)) | 0) + + (xt >>> 26)) | + 0), + (xt &= 67108863), + (i = Math.imul(U, X)), + (n = ((n = Math.imul(U, Y)) + Math.imul(D, X)) | 0), + (o = Math.imul(D, Y)), + (i = (i + Math.imul(L, Q)) | 0), + (n = + ((n = (n + Math.imul(L, tt)) | 0) + Math.imul(N, Q)) | 0), + (o = (o + Math.imul(N, tt)) | 0), + (i = (i + Math.imul(j, rt)) | 0), + (n = + ((n = (n + Math.imul(j, it)) | 0) + Math.imul(P, rt)) | 0), + (o = (o + Math.imul(P, it)) | 0), + (i = (i + Math.imul(B, ot)) | 0), + (n = + ((n = (n + Math.imul(B, at)) | 0) + Math.imul(R, ot)) | 0), + (o = (o + Math.imul(R, at)) | 0), + (i = (i + Math.imul(k, ft)) | 0), + (n = + ((n = (n + Math.imul(k, ut)) | 0) + Math.imul(x, ft)) | 0), + (o = (o + Math.imul(x, ut)) | 0), + (i = (i + Math.imul(S, ct)) | 0), + (n = + ((n = (n + Math.imul(S, dt)) | 0) + Math.imul(E, ct)) | 0), + (o = (o + Math.imul(E, dt)) | 0); + var It = + (((u + (i = (i + Math.imul(w, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(w, bt)) | 0) + Math.imul(_, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(_, bt)) | 0) + (n >>> 13)) | 0) + + (It >>> 26)) | + 0), + (It &= 67108863), + (i = Math.imul(U, Q)), + (n = ((n = Math.imul(U, tt)) + Math.imul(D, Q)) | 0), + (o = Math.imul(D, tt)), + (i = (i + Math.imul(L, rt)) | 0), + (n = + ((n = (n + Math.imul(L, it)) | 0) + Math.imul(N, rt)) | 0), + (o = (o + Math.imul(N, it)) | 0), + (i = (i + Math.imul(j, ot)) | 0), + (n = + ((n = (n + Math.imul(j, at)) | 0) + Math.imul(P, ot)) | 0), + (o = (o + Math.imul(P, at)) | 0), + (i = (i + Math.imul(B, ft)) | 0), + (n = + ((n = (n + Math.imul(B, ut)) | 0) + Math.imul(R, ft)) | 0), + (o = (o + Math.imul(R, ut)) | 0), + (i = (i + Math.imul(k, ct)) | 0), + (n = + ((n = (n + Math.imul(k, dt)) | 0) + Math.imul(x, ct)) | 0), + (o = (o + Math.imul(x, dt)) | 0); + var Bt = + (((u + (i = (i + Math.imul(S, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(S, bt)) | 0) + Math.imul(E, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(E, bt)) | 0) + (n >>> 13)) | 0) + + (Bt >>> 26)) | + 0), + (Bt &= 67108863), + (i = Math.imul(U, rt)), + (n = ((n = Math.imul(U, it)) + Math.imul(D, rt)) | 0), + (o = Math.imul(D, it)), + (i = (i + Math.imul(L, ot)) | 0), + (n = + ((n = (n + Math.imul(L, at)) | 0) + Math.imul(N, ot)) | 0), + (o = (o + Math.imul(N, at)) | 0), + (i = (i + Math.imul(j, ft)) | 0), + (n = + ((n = (n + Math.imul(j, ut)) | 0) + Math.imul(P, ft)) | 0), + (o = (o + Math.imul(P, ut)) | 0), + (i = (i + Math.imul(B, ct)) | 0), + (n = + ((n = (n + Math.imul(B, dt)) | 0) + Math.imul(R, ct)) | 0), + (o = (o + Math.imul(R, dt)) | 0); + var Rt = + (((u + (i = (i + Math.imul(k, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(k, bt)) | 0) + Math.imul(x, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(x, bt)) | 0) + (n >>> 13)) | 0) + + (Rt >>> 26)) | + 0), + (Rt &= 67108863), + (i = Math.imul(U, ot)), + (n = ((n = Math.imul(U, at)) + Math.imul(D, ot)) | 0), + (o = Math.imul(D, at)), + (i = (i + Math.imul(L, ft)) | 0), + (n = + ((n = (n + Math.imul(L, ut)) | 0) + Math.imul(N, ft)) | 0), + (o = (o + Math.imul(N, ut)) | 0), + (i = (i + Math.imul(j, ct)) | 0), + (n = + ((n = (n + Math.imul(j, dt)) | 0) + Math.imul(P, ct)) | 0), + (o = (o + Math.imul(P, dt)) | 0); + var Ot = + (((u + (i = (i + Math.imul(B, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(B, bt)) | 0) + Math.imul(R, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(R, bt)) | 0) + (n >>> 13)) | 0) + + (Ot >>> 26)) | + 0), + (Ot &= 67108863), + (i = Math.imul(U, ft)), + (n = ((n = Math.imul(U, ut)) + Math.imul(D, ft)) | 0), + (o = Math.imul(D, ut)), + (i = (i + Math.imul(L, ct)) | 0), + (n = + ((n = (n + Math.imul(L, dt)) | 0) + Math.imul(N, ct)) | 0), + (o = (o + Math.imul(N, dt)) | 0); + var jt = + (((u + (i = (i + Math.imul(j, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(j, bt)) | 0) + Math.imul(P, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(P, bt)) | 0) + (n >>> 13)) | 0) + + (jt >>> 26)) | + 0), + (jt &= 67108863), + (i = Math.imul(U, ct)), + (n = ((n = Math.imul(U, dt)) + Math.imul(D, ct)) | 0), + (o = Math.imul(D, dt)); + var Pt = + (((u + (i = (i + Math.imul(L, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(L, bt)) | 0) + Math.imul(N, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(N, bt)) | 0) + (n >>> 13)) | 0) + + (Pt >>> 26)) | + 0), + (Pt &= 67108863); + var Tt = + (((u + (i = Math.imul(U, pt))) | 0) + + ((8191 & + (n = ((n = Math.imul(U, bt)) + Math.imul(D, pt)) | 0)) << + 13)) | + 0; + return ( + (u = + ((((o = Math.imul(D, bt)) + (n >>> 13)) | 0) + + (Tt >>> 26)) | + 0), + (Tt &= 67108863), + (f[0] = yt), + (f[1] = mt), + (f[2] = gt), + (f[3] = vt), + (f[4] = wt), + (f[5] = _t), + (f[6] = Mt), + (f[7] = St), + (f[8] = Et), + (f[9] = At), + (f[10] = kt), + (f[11] = xt), + (f[12] = It), + (f[13] = Bt), + (f[14] = Rt), + (f[15] = Ot), + (f[16] = jt), + (f[17] = Pt), + (f[18] = Tt), + 0 !== u && ((f[19] = u), r.length++), + r + ); + }; + function b(t, e, r) { + return new y().mulp(t, e, r); + } + function y(t, e) { + (this.x = t), (this.y = e); + } + Math.imul || (p = l), + (o.prototype.mulTo = function (t, e) { + var r, + i = this.length + t.length; + return ( + (r = + 10 === this.length && 10 === t.length + ? p(this, t, e) + : i < 63 + ? l(this, t, e) + : i < 1024 + ? (function (t, e, r) { + (r.negative = e.negative ^ t.negative), + (r.length = t.length + e.length); + for ( + var i = 0, n = 0, o = 0; + o < r.length - 1; + o++ + ) { + var a = n; + n = 0; + for ( + var s = 67108863 & i, + f = Math.min(o, e.length - 1), + u = Math.max(0, o - t.length + 1); + u <= f; + u++ + ) { + var h = o - u, + c = (0 | t.words[h]) * (0 | e.words[u]), + d = 67108863 & c; + (s = 67108863 & (d = (d + s) | 0)), + (n += + (a = + ((a = (a + ((c / 67108864) | 0)) | 0) + + (d >>> 26)) | + 0) >>> 26), + (a &= 67108863); + } + (r.words[o] = s), (i = a), (a = n); + } + return ( + 0 !== i ? (r.words[o] = i) : r.length--, r.strip() + ); + })(this, t, e) + : b(this, t, e)), + r + ); + }), + (y.prototype.makeRBT = function (t) { + for ( + var e = new Array(t), + r = o.prototype._countBits(t) - 1, + i = 0; + i < t; + i++ + ) + e[i] = this.revBin(i, r, t); + return e; + }), + (y.prototype.revBin = function (t, e, r) { + if (0 === t || t === r - 1) return t; + for (var i = 0, n = 0; n < e; n++) + (i |= (1 & t) << (e - n - 1)), (t >>= 1); + return i; + }), + (y.prototype.permute = function (t, e, r, i, n, o) { + for (var a = 0; a < o; a++) + (i[a] = e[t[a]]), (n[a] = r[t[a]]); + }), + (y.prototype.transform = function (t, e, r, i, n, o) { + this.permute(o, t, e, r, i, n); + for (var a = 1; a < n; a <<= 1) + for ( + var s = a << 1, + f = Math.cos((2 * Math.PI) / s), + u = Math.sin((2 * Math.PI) / s), + h = 0; + h < n; + h += s + ) + for (var c = f, d = u, l = 0; l < a; l++) { + var p = r[h + l], + b = i[h + l], + y = r[h + l + a], + m = i[h + l + a], + g = c * y - d * m; + (m = c * m + d * y), + (y = g), + (r[h + l] = p + y), + (i[h + l] = b + m), + (r[h + l + a] = p - y), + (i[h + l + a] = b - m), + l !== s && + ((g = f * c - u * d), (d = f * d + u * c), (c = g)); + } + }), + (y.prototype.guessLen13b = function (t, e) { + var r = 1 | Math.max(e, t), + i = 1 & r, + n = 0; + for (r = (r / 2) | 0; r; r >>>= 1) n++; + return 1 << (n + 1 + i); + }), + (y.prototype.conjugate = function (t, e, r) { + if (!(r <= 1)) + for (var i = 0; i < r / 2; i++) { + var n = t[i]; + (t[i] = t[r - i - 1]), + (t[r - i - 1] = n), + (n = e[i]), + (e[i] = -e[r - i - 1]), + (e[r - i - 1] = -n); + } + }), + (y.prototype.normalize13b = function (t, e) { + for (var r = 0, i = 0; i < e / 2; i++) { + var n = + 8192 * Math.round(t[2 * i + 1] / e) + + Math.round(t[2 * i] / e) + + r; + (t[i] = 67108863 & n), + (r = n < 67108864 ? 0 : (n / 67108864) | 0); + } + return t; + }), + (y.prototype.convert13b = function (t, e, r, n) { + for (var o = 0, a = 0; a < e; a++) + (o += 0 | t[a]), + (r[2 * a] = 8191 & o), + (o >>>= 13), + (r[2 * a + 1] = 8191 & o), + (o >>>= 13); + for (a = 2 * e; a < n; ++a) r[a] = 0; + i(0 === o), i(0 == (-8192 & o)); + }), + (y.prototype.stub = function (t) { + for (var e = new Array(t), r = 0; r < t; r++) e[r] = 0; + return e; + }), + (y.prototype.mulp = function (t, e, r) { + var i = 2 * this.guessLen13b(t.length, e.length), + n = this.makeRBT(i), + o = this.stub(i), + a = new Array(i), + s = new Array(i), + f = new Array(i), + u = new Array(i), + h = new Array(i), + c = new Array(i), + d = r.words; + (d.length = i), + this.convert13b(t.words, t.length, a, i), + this.convert13b(e.words, e.length, u, i), + this.transform(a, o, s, f, i, n), + this.transform(u, o, h, c, i, n); + for (var l = 0; l < i; l++) { + var p = s[l] * h[l] - f[l] * c[l]; + (f[l] = s[l] * c[l] + f[l] * h[l]), (s[l] = p); + } + return ( + this.conjugate(s, f, i), + this.transform(s, f, d, o, i, n), + this.conjugate(d, o, i), + this.normalize13b(d, i), + (r.negative = t.negative ^ e.negative), + (r.length = t.length + e.length), + r.strip() + ); + }), + (o.prototype.mul = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), + this.mulTo(t, e) + ); + }), + (o.prototype.mulf = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), b(this, t, e) + ); + }), + (o.prototype.imul = function (t) { + return this.clone().mulTo(t, this); + }), + (o.prototype.imuln = function (t) { + i("number" == typeof t), i(t < 67108864); + for (var e = 0, r = 0; r < this.length; r++) { + var n = (0 | this.words[r]) * t, + o = (67108863 & n) + (67108863 & e); + (e >>= 26), + (e += (n / 67108864) | 0), + (e += o >>> 26), + (this.words[r] = 67108863 & o); + } + return 0 !== e && ((this.words[r] = e), this.length++), this; + }), + (o.prototype.muln = function (t) { + return this.clone().imuln(t); + }), + (o.prototype.sqr = function () { + return this.mul(this); + }), + (o.prototype.isqr = function () { + return this.imul(this.clone()); + }), + (o.prototype.pow = function (t) { + var e = (function (t) { + for ( + var e = new Array(t.bitLength()), r = 0; + r < e.length; + r++ + ) { + var i = (r / 26) | 0, + n = r % 26; + e[r] = (t.words[i] & (1 << n)) >>> n; + } + return e; + })(t); + if (0 === e.length) return new o(1); + for ( + var r = this, i = 0; + i < e.length && 0 === e[i]; + i++, r = r.sqr() + ); + if (++i < e.length) + for (var n = r.sqr(); i < e.length; i++, n = n.sqr()) + 0 !== e[i] && (r = r.mul(n)); + return r; + }), + (o.prototype.iushln = function (t) { + i("number" == typeof t && t >= 0); + var e, + r = t % 26, + n = (t - r) / 26, + o = (67108863 >>> (26 - r)) << (26 - r); + if (0 !== r) { + var a = 0; + for (e = 0; e < this.length; e++) { + var s = this.words[e] & o, + f = ((0 | this.words[e]) - s) << r; + (this.words[e] = f | a), (a = s >>> (26 - r)); + } + a && ((this.words[e] = a), this.length++); + } + if (0 !== n) { + for (e = this.length - 1; e >= 0; e--) + this.words[e + n] = this.words[e]; + for (e = 0; e < n; e++) this.words[e] = 0; + this.length += n; + } + return this.strip(); + }), + (o.prototype.ishln = function (t) { + return i(0 === this.negative), this.iushln(t); + }), + (o.prototype.iushrn = function (t, e, r) { + var n; + i("number" == typeof t && t >= 0), + (n = e ? (e - (e % 26)) / 26 : 0); + var o = t % 26, + a = Math.min((t - o) / 26, this.length), + s = 67108863 ^ ((67108863 >>> o) << o), + f = r; + if (((n -= a), (n = Math.max(0, n)), f)) { + for (var u = 0; u < a; u++) f.words[u] = this.words[u]; + f.length = a; + } + if (0 === a); + else if (this.length > a) + for (this.length -= a, u = 0; u < this.length; u++) + this.words[u] = this.words[u + a]; + else (this.words[0] = 0), (this.length = 1); + var h = 0; + for ( + u = this.length - 1; + u >= 0 && (0 !== h || u >= n); + u-- + ) { + var c = 0 | this.words[u]; + (this.words[u] = (h << (26 - o)) | (c >>> o)), (h = c & s); + } + return ( + f && 0 !== h && (f.words[f.length++] = h), + 0 === this.length && + ((this.words[0] = 0), (this.length = 1)), + this.strip() + ); + }), + (o.prototype.ishrn = function (t, e, r) { + return i(0 === this.negative), this.iushrn(t, e, r); + }), + (o.prototype.shln = function (t) { + return this.clone().ishln(t); + }), + (o.prototype.ushln = function (t) { + return this.clone().iushln(t); + }), + (o.prototype.shrn = function (t) { + return this.clone().ishrn(t); + }), + (o.prototype.ushrn = function (t) { + return this.clone().iushrn(t); + }), + (o.prototype.testn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + return !(this.length <= r || !(this.words[r] & n)); + }), + (o.prototype.imaskn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26; + if ( + (i( + 0 === this.negative, + "imaskn works only with positive numbers" + ), + this.length <= r) + ) + return this; + if ( + (0 !== e && r++, + (this.length = Math.min(r, this.length)), + 0 !== e) + ) { + var n = 67108863 ^ ((67108863 >>> e) << e); + this.words[this.length - 1] &= n; + } + return this.strip(); + }), + (o.prototype.maskn = function (t) { + return this.clone().imaskn(t); + }), + (o.prototype.iaddn = function (t) { + return ( + i("number" == typeof t), + i(t < 67108864), + t < 0 + ? this.isubn(-t) + : 0 !== this.negative + ? 1 === this.length && (0 | this.words[0]) < t + ? ((this.words[0] = t - (0 | this.words[0])), + (this.negative = 0), + this) + : ((this.negative = 0), + this.isubn(t), + (this.negative = 1), + this) + : this._iaddn(t) + ); + }), + (o.prototype._iaddn = function (t) { + this.words[0] += t; + for ( + var e = 0; + e < this.length && this.words[e] >= 67108864; + e++ + ) + (this.words[e] -= 67108864), + e === this.length - 1 + ? (this.words[e + 1] = 1) + : this.words[e + 1]++; + return (this.length = Math.max(this.length, e + 1)), this; + }), + (o.prototype.isubn = function (t) { + if ((i("number" == typeof t), i(t < 67108864), t < 0)) + return this.iaddn(-t); + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iaddn(t), + (this.negative = 1), + this + ); + if ( + ((this.words[0] -= t), + 1 === this.length && this.words[0] < 0) + ) + (this.words[0] = -this.words[0]), (this.negative = 1); + else + for (var e = 0; e < this.length && this.words[e] < 0; e++) + (this.words[e] += 67108864), (this.words[e + 1] -= 1); + return this.strip(); + }), + (o.prototype.addn = function (t) { + return this.clone().iaddn(t); + }), + (o.prototype.subn = function (t) { + return this.clone().isubn(t); + }), + (o.prototype.iabs = function () { + return (this.negative = 0), this; + }), + (o.prototype.abs = function () { + return this.clone().iabs(); + }), + (o.prototype._ishlnsubmul = function (t, e, r) { + var n, + o, + a = t.length + r; + this._expand(a); + var s = 0; + for (n = 0; n < t.length; n++) { + o = (0 | this.words[n + r]) + s; + var f = (0 | t.words[n]) * e; + (s = ((o -= 67108863 & f) >> 26) - ((f / 67108864) | 0)), + (this.words[n + r] = 67108863 & o); + } + for (; n < this.length - r; n++) + (s = (o = (0 | this.words[n + r]) + s) >> 26), + (this.words[n + r] = 67108863 & o); + if (0 === s) return this.strip(); + for (i(-1 === s), s = 0, n = 0; n < this.length; n++) + (s = (o = -(0 | this.words[n]) + s) >> 26), + (this.words[n] = 67108863 & o); + return (this.negative = 1), this.strip(); + }), + (o.prototype._wordDiv = function (t, e) { + var r = (this.length, t.length), + i = this.clone(), + n = t, + a = 0 | n.words[n.length - 1]; + 0 != (r = 26 - this._countBits(a)) && + ((n = n.ushln(r)), + i.iushln(r), + (a = 0 | n.words[n.length - 1])); + var s, + f = i.length - n.length; + if ("mod" !== e) { + ((s = new o(null)).length = f + 1), + (s.words = new Array(s.length)); + for (var u = 0; u < s.length; u++) s.words[u] = 0; + } + var h = i.clone()._ishlnsubmul(n, 1, f); + 0 === h.negative && ((i = h), s && (s.words[f] = 1)); + for (var c = f - 1; c >= 0; c--) { + var d = + 67108864 * (0 | i.words[n.length + c]) + + (0 | i.words[n.length + c - 1]); + for ( + d = Math.min((d / a) | 0, 67108863), + i._ishlnsubmul(n, d, c); + 0 !== i.negative; + + ) + d--, + (i.negative = 0), + i._ishlnsubmul(n, 1, c), + i.isZero() || (i.negative ^= 1); + s && (s.words[c] = d); + } + return ( + s && s.strip(), + i.strip(), + "div" !== e && 0 !== r && i.iushrn(r), + { div: s || null, mod: i } + ); + }), + (o.prototype.divmod = function (t, e, r) { + return ( + i(!t.isZero()), + this.isZero() + ? { div: new o(0), mod: new o(0) } + : 0 !== this.negative && 0 === t.negative + ? ((s = this.neg().divmod(t, e)), + "mod" !== e && (n = s.div.neg()), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.iadd(t)), + { div: n, mod: a }) + : 0 === this.negative && 0 !== t.negative + ? ((s = this.divmod(t.neg(), e)), + "mod" !== e && (n = s.div.neg()), + { div: n, mod: s.mod }) + : 0 != (this.negative & t.negative) + ? ((s = this.neg().divmod(t.neg(), e)), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.isub(t)), + { div: s.div, mod: a }) + : t.length > this.length || this.cmp(t) < 0 + ? { div: new o(0), mod: this } + : 1 === t.length + ? "div" === e + ? { div: this.divn(t.words[0]), mod: null } + : "mod" === e + ? { div: null, mod: new o(this.modn(t.words[0])) } + : { + div: this.divn(t.words[0]), + mod: new o(this.modn(t.words[0])), + } + : this._wordDiv(t, e) + ); + var n, a, s; + }), + (o.prototype.div = function (t) { + return this.divmod(t, "div", !1).div; + }), + (o.prototype.mod = function (t) { + return this.divmod(t, "mod", !1).mod; + }), + (o.prototype.umod = function (t) { + return this.divmod(t, "mod", !0).mod; + }), + (o.prototype.divRound = function (t) { + var e = this.divmod(t); + if (e.mod.isZero()) return e.div; + var r = 0 !== e.div.negative ? e.mod.isub(t) : e.mod, + i = t.ushrn(1), + n = t.andln(1), + o = r.cmp(i); + return o < 0 || (1 === n && 0 === o) + ? e.div + : 0 !== e.div.negative + ? e.div.isubn(1) + : e.div.iaddn(1); + }), + (o.prototype.modn = function (t) { + i(t <= 67108863); + for ( + var e = (1 << 26) % t, r = 0, n = this.length - 1; + n >= 0; + n-- + ) + r = (e * r + (0 | this.words[n])) % t; + return r; + }), + (o.prototype.idivn = function (t) { + i(t <= 67108863); + for (var e = 0, r = this.length - 1; r >= 0; r--) { + var n = (0 | this.words[r]) + 67108864 * e; + (this.words[r] = (n / t) | 0), (e = n % t); + } + return this.strip(); + }), + (o.prototype.divn = function (t) { + return this.clone().idivn(t); + }), + (o.prototype.egcd = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n = new o(1), + a = new o(0), + s = new o(0), + f = new o(1), + u = 0; + e.isEven() && r.isEven(); + + ) + e.iushrn(1), r.iushrn(1), ++u; + for (var h = r.clone(), c = e.clone(); !e.isZero(); ) { + for ( + var d = 0, l = 1; + 0 == (e.words[0] & l) && d < 26; + ++d, l <<= 1 + ); + if (d > 0) + for (e.iushrn(d); d-- > 0; ) + (n.isOdd() || a.isOdd()) && (n.iadd(h), a.isub(c)), + n.iushrn(1), + a.iushrn(1); + for ( + var p = 0, b = 1; + 0 == (r.words[0] & b) && p < 26; + ++p, b <<= 1 + ); + if (p > 0) + for (r.iushrn(p); p-- > 0; ) + (s.isOdd() || f.isOdd()) && (s.iadd(h), f.isub(c)), + s.iushrn(1), + f.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), n.isub(s), a.isub(f)) + : (r.isub(e), s.isub(n), f.isub(a)); + } + return { a: s, b: f, gcd: r.iushln(u) }; + }), + (o.prototype._invmp = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n, a = new o(1), s = new o(0), f = r.clone(); + e.cmpn(1) > 0 && r.cmpn(1) > 0; + + ) { + for ( + var u = 0, h = 1; + 0 == (e.words[0] & h) && u < 26; + ++u, h <<= 1 + ); + if (u > 0) + for (e.iushrn(u); u-- > 0; ) + a.isOdd() && a.iadd(f), a.iushrn(1); + for ( + var c = 0, d = 1; + 0 == (r.words[0] & d) && c < 26; + ++c, d <<= 1 + ); + if (c > 0) + for (r.iushrn(c); c-- > 0; ) + s.isOdd() && s.iadd(f), s.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), a.isub(s)) + : (r.isub(e), s.isub(a)); + } + return ( + (n = 0 === e.cmpn(1) ? a : s).cmpn(0) < 0 && n.iadd(t), n + ); + }), + (o.prototype.gcd = function (t) { + if (this.isZero()) return t.abs(); + if (t.isZero()) return this.abs(); + var e = this.clone(), + r = t.clone(); + (e.negative = 0), (r.negative = 0); + for (var i = 0; e.isEven() && r.isEven(); i++) + e.iushrn(1), r.iushrn(1); + for (;;) { + for (; e.isEven(); ) e.iushrn(1); + for (; r.isEven(); ) r.iushrn(1); + var n = e.cmp(r); + if (n < 0) { + var o = e; + (e = r), (r = o); + } else if (0 === n || 0 === r.cmpn(1)) break; + e.isub(r); + } + return r.iushln(i); + }), + (o.prototype.invm = function (t) { + return this.egcd(t).a.umod(t); + }), + (o.prototype.isEven = function () { + return 0 == (1 & this.words[0]); + }), + (o.prototype.isOdd = function () { + return 1 == (1 & this.words[0]); + }), + (o.prototype.andln = function (t) { + return this.words[0] & t; + }), + (o.prototype.bincn = function (t) { + i("number" == typeof t); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + if (this.length <= r) + return this._expand(r + 1), (this.words[r] |= n), this; + for (var o = n, a = r; 0 !== o && a < this.length; a++) { + var s = 0 | this.words[a]; + (o = (s += o) >>> 26), (s &= 67108863), (this.words[a] = s); + } + return 0 !== o && ((this.words[a] = o), this.length++), this; + }), + (o.prototype.isZero = function () { + return 1 === this.length && 0 === this.words[0]; + }), + (o.prototype.cmpn = function (t) { + var e, + r = t < 0; + if (0 !== this.negative && !r) return -1; + if (0 === this.negative && r) return 1; + if ((this.strip(), this.length > 1)) e = 1; + else { + r && (t = -t), i(t <= 67108863, "Number is too big"); + var n = 0 | this.words[0]; + e = n === t ? 0 : n < t ? -1 : 1; + } + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.cmp = function (t) { + if (0 !== this.negative && 0 === t.negative) return -1; + if (0 === this.negative && 0 !== t.negative) return 1; + var e = this.ucmp(t); + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.ucmp = function (t) { + if (this.length > t.length) return 1; + if (this.length < t.length) return -1; + for (var e = 0, r = this.length - 1; r >= 0; r--) { + var i = 0 | this.words[r], + n = 0 | t.words[r]; + if (i !== n) { + i < n ? (e = -1) : i > n && (e = 1); + break; + } + } + return e; + }), + (o.prototype.gtn = function (t) { + return 1 === this.cmpn(t); + }), + (o.prototype.gt = function (t) { + return 1 === this.cmp(t); + }), + (o.prototype.gten = function (t) { + return this.cmpn(t) >= 0; + }), + (o.prototype.gte = function (t) { + return this.cmp(t) >= 0; + }), + (o.prototype.ltn = function (t) { + return -1 === this.cmpn(t); + }), + (o.prototype.lt = function (t) { + return -1 === this.cmp(t); + }), + (o.prototype.lten = function (t) { + return this.cmpn(t) <= 0; + }), + (o.prototype.lte = function (t) { + return this.cmp(t) <= 0; + }), + (o.prototype.eqn = function (t) { + return 0 === this.cmpn(t); + }), + (o.prototype.eq = function (t) { + return 0 === this.cmp(t); + }), + (o.red = function (t) { + return new S(t); + }), + (o.prototype.toRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + i(0 === this.negative, "red works only with positives"), + t.convertTo(this)._forceRed(t) + ); + }), + (o.prototype.fromRed = function () { + return ( + i( + this.red, + "fromRed works only with numbers in reduction context" + ), + this.red.convertFrom(this) + ); + }), + (o.prototype._forceRed = function (t) { + return (this.red = t), this; + }), + (o.prototype.forceRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + this._forceRed(t) + ); + }), + (o.prototype.redAdd = function (t) { + return ( + i(this.red, "redAdd works only with red numbers"), + this.red.add(this, t) + ); + }), + (o.prototype.redIAdd = function (t) { + return ( + i(this.red, "redIAdd works only with red numbers"), + this.red.iadd(this, t) + ); + }), + (o.prototype.redSub = function (t) { + return ( + i(this.red, "redSub works only with red numbers"), + this.red.sub(this, t) + ); + }), + (o.prototype.redISub = function (t) { + return ( + i(this.red, "redISub works only with red numbers"), + this.red.isub(this, t) + ); + }), + (o.prototype.redShl = function (t) { + return ( + i(this.red, "redShl works only with red numbers"), + this.red.shl(this, t) + ); + }), + (o.prototype.redMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.mul(this, t) + ); + }), + (o.prototype.redIMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.imul(this, t) + ); + }), + (o.prototype.redSqr = function () { + return ( + i(this.red, "redSqr works only with red numbers"), + this.red._verify1(this), + this.red.sqr(this) + ); + }), + (o.prototype.redISqr = function () { + return ( + i(this.red, "redISqr works only with red numbers"), + this.red._verify1(this), + this.red.isqr(this) + ); + }), + (o.prototype.redSqrt = function () { + return ( + i(this.red, "redSqrt works only with red numbers"), + this.red._verify1(this), + this.red.sqrt(this) + ); + }), + (o.prototype.redInvm = function () { + return ( + i(this.red, "redInvm works only with red numbers"), + this.red._verify1(this), + this.red.invm(this) + ); + }), + (o.prototype.redNeg = function () { + return ( + i(this.red, "redNeg works only with red numbers"), + this.red._verify1(this), + this.red.neg(this) + ); + }), + (o.prototype.redPow = function (t) { + return ( + i(this.red && !t.red, "redPow(normalNum)"), + this.red._verify1(this), + this.red.pow(this, t) + ); + }); + var m = { k256: null, p224: null, p192: null, p25519: null }; + function g(t, e) { + (this.name = t), + (this.p = new o(e, 16)), + (this.n = this.p.bitLength()), + (this.k = new o(1).iushln(this.n).isub(this.p)), + (this.tmp = this._tmp()); + } + function v() { + g.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + function w() { + g.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + function _() { + g.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + function M() { + g.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + function S(t) { + if ("string" == typeof t) { + var e = o._prime(t); + (this.m = e.p), (this.prime = e); + } else + i(t.gtn(1), "modulus must be greater than 1"), + (this.m = t), + (this.prime = null); + } + function E(t) { + S.call(this, t), + (this.shift = this.m.bitLength()), + this.shift % 26 != 0 && + (this.shift += 26 - (this.shift % 26)), + (this.r = new o(1).iushln(this.shift)), + (this.r2 = this.imod(this.r.sqr())), + (this.rinv = this.r._invmp(this.m)), + (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), + (this.minv = this.minv.umod(this.r)), + (this.minv = this.r.sub(this.minv)); + } + (g.prototype._tmp = function () { + var t = new o(null); + return (t.words = new Array(Math.ceil(this.n / 13))), t; + }), + (g.prototype.ireduce = function (t) { + var e, + r = t; + do { + this.split(r, this.tmp), + (e = (r = (r = this.imulK(r)).iadd( + this.tmp + )).bitLength()); + } while (e > this.n); + var i = e < this.n ? -1 : r.ucmp(this.p); + return ( + 0 === i + ? ((r.words[0] = 0), (r.length = 1)) + : i > 0 + ? r.isub(this.p) + : void 0 !== r.strip + ? r.strip() + : r._strip(), + r + ); + }), + (g.prototype.split = function (t, e) { + t.iushrn(this.n, 0, e); + }), + (g.prototype.imulK = function (t) { + return t.imul(this.k); + }), + n(v, g), + (v.prototype.split = function (t, e) { + for ( + var r = 4194303, i = Math.min(t.length, 9), n = 0; + n < i; + n++ + ) + e.words[n] = t.words[n]; + if (((e.length = i), t.length <= 9)) + return (t.words[0] = 0), void (t.length = 1); + var o = t.words[9]; + for (e.words[e.length++] = o & r, n = 10; n < t.length; n++) { + var a = 0 | t.words[n]; + (t.words[n - 10] = ((a & r) << 4) | (o >>> 22)), (o = a); + } + (o >>>= 22), + (t.words[n - 10] = o), + 0 === o && t.length > 10 + ? (t.length -= 10) + : (t.length -= 9); + }), + (v.prototype.imulK = function (t) { + (t.words[t.length] = 0), + (t.words[t.length + 1] = 0), + (t.length += 2); + for (var e = 0, r = 0; r < t.length; r++) { + var i = 0 | t.words[r]; + (e += 977 * i), + (t.words[r] = 67108863 & e), + (e = 64 * i + ((e / 67108864) | 0)); + } + return ( + 0 === t.words[t.length - 1] && + (t.length--, 0 === t.words[t.length - 1] && t.length--), + t + ); + }), + n(w, g), + n(_, g), + n(M, g), + (M.prototype.imulK = function (t) { + for (var e = 0, r = 0; r < t.length; r++) { + var i = 19 * (0 | t.words[r]) + e, + n = 67108863 & i; + (i >>>= 26), (t.words[r] = n), (e = i); + } + return 0 !== e && (t.words[t.length++] = e), t; + }), + (o._prime = function (t) { + if (m[t]) return m[t]; + var e; + if ("k256" === t) e = new v(); + else if ("p224" === t) e = new w(); + else if ("p192" === t) e = new _(); + else { + if ("p25519" !== t) throw new Error("Unknown prime " + t); + e = new M(); + } + return (m[t] = e), e; + }), + (S.prototype._verify1 = function (t) { + i(0 === t.negative, "red works only with positives"), + i(t.red, "red works only with red numbers"); + }), + (S.prototype._verify2 = function (t, e) { + i( + 0 == (t.negative | e.negative), + "red works only with positives" + ), + i( + t.red && t.red === e.red, + "red works only with red numbers" + ); + }), + (S.prototype.imod = function (t) { + return this.prime + ? this.prime.ireduce(t)._forceRed(this) + : t.umod(this.m)._forceRed(this); + }), + (S.prototype.neg = function (t) { + return t.isZero() ? t.clone() : this.m.sub(t)._forceRed(this); + }), + (S.prototype.add = function (t, e) { + this._verify2(t, e); + var r = t.add(e); + return ( + r.cmp(this.m) >= 0 && r.isub(this.m), r._forceRed(this) + ); + }), + (S.prototype.iadd = function (t, e) { + this._verify2(t, e); + var r = t.iadd(e); + return r.cmp(this.m) >= 0 && r.isub(this.m), r; + }), + (S.prototype.sub = function (t, e) { + this._verify2(t, e); + var r = t.sub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r._forceRed(this); + }), + (S.prototype.isub = function (t, e) { + this._verify2(t, e); + var r = t.isub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r; + }), + (S.prototype.shl = function (t, e) { + return this._verify1(t), this.imod(t.ushln(e)); + }), + (S.prototype.imul = function (t, e) { + return this._verify2(t, e), this.imod(t.imul(e)); + }), + (S.prototype.mul = function (t, e) { + return this._verify2(t, e), this.imod(t.mul(e)); + }), + (S.prototype.isqr = function (t) { + return this.imul(t, t.clone()); + }), + (S.prototype.sqr = function (t) { + return this.mul(t, t); + }), + (S.prototype.sqrt = function (t) { + if (t.isZero()) return t.clone(); + var e = this.m.andln(3); + if ((i(e % 2 == 1), 3 === e)) { + var r = this.m.add(new o(1)).iushrn(2); + return this.pow(t, r); + } + for ( + var n = this.m.subn(1), a = 0; + !n.isZero() && 0 === n.andln(1); + + ) + a++, n.iushrn(1); + i(!n.isZero()); + var s = new o(1).toRed(this), + f = s.redNeg(), + u = this.m.subn(1).iushrn(1), + h = this.m.bitLength(); + for ( + h = new o(2 * h * h).toRed(this); + 0 !== this.pow(h, u).cmp(f); + + ) + h.redIAdd(f); + for ( + var c = this.pow(h, n), + d = this.pow(t, n.addn(1).iushrn(1)), + l = this.pow(t, n), + p = a; + 0 !== l.cmp(s); + + ) { + for (var b = l, y = 0; 0 !== b.cmp(s); y++) b = b.redSqr(); + i(y < p); + var m = this.pow(c, new o(1).iushln(p - y - 1)); + (d = d.redMul(m)), + (c = m.redSqr()), + (l = l.redMul(c)), + (p = y); + } + return d; + }), + (S.prototype.invm = function (t) { + var e = t._invmp(this.m); + return 0 !== e.negative + ? ((e.negative = 0), this.imod(e).redNeg()) + : this.imod(e); + }), + (S.prototype.pow = function (t, e) { + if (e.isZero()) return new o(1).toRed(this); + if (0 === e.cmpn(1)) return t.clone(); + var r = new Array(16); + (r[0] = new o(1).toRed(this)), (r[1] = t); + for (var i = 2; i < r.length; i++) + r[i] = this.mul(r[i - 1], t); + var n = r[0], + a = 0, + s = 0, + f = e.bitLength() % 26; + for (0 === f && (f = 26), i = e.length - 1; i >= 0; i--) { + for (var u = e.words[i], h = f - 1; h >= 0; h--) { + var c = (u >> h) & 1; + n !== r[0] && (n = this.sqr(n)), + 0 !== c || 0 !== a + ? ((a <<= 1), + (a |= c), + (4 == ++s || (0 === i && 0 === h)) && + ((n = this.mul(n, r[a])), (s = 0), (a = 0))) + : (s = 0); + } + f = 26; + } + return n; + }), + (S.prototype.convertTo = function (t) { + var e = t.umod(this.m); + return e === t ? e.clone() : e; + }), + (S.prototype.convertFrom = function (t) { + var e = t.clone(); + return (e.red = null), e; + }), + (o.mont = function (t) { + return new E(t); + }), + n(E, S), + (E.prototype.convertTo = function (t) { + return this.imod(t.ushln(this.shift)); + }), + (E.prototype.convertFrom = function (t) { + var e = this.imod(t.mul(this.rinv)); + return (e.red = null), e; + }), + (E.prototype.imul = function (t, e) { + if (t.isZero() || e.isZero()) + return (t.words[0] = 0), (t.length = 1), t; + var r = t.imul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + o = n; + return ( + n.cmp(this.m) >= 0 + ? (o = n.isub(this.m)) + : n.cmpn(0) < 0 && (o = n.iadd(this.m)), + o._forceRed(this) + ); + }), + (E.prototype.mul = function (t, e) { + if (t.isZero() || e.isZero()) return new o(0)._forceRed(this); + var r = t.mul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + a = n; + return ( + n.cmp(this.m) >= 0 + ? (a = n.isub(this.m)) + : n.cmpn(0) < 0 && (a = n.iadd(this.m)), + a._forceRed(this) + ); + }), + (E.prototype.invm = function (t) { + return this.imod(t._invmp(this.m).mul(this.r2))._forceRed( + this + ); + }); + })((t = r.nmd(t)), this); + }, + 9931: (t, e, r) => { + var i; + function n(t) { + this.rand = t; + } + if ( + ((t.exports = function (t) { + return i || (i = new n(null)), i.generate(t); + }), + (t.exports.Rand = n), + (n.prototype.generate = function (t) { + return this._rand(t); + }), + (n.prototype._rand = function (t) { + if (this.rand.getBytes) return this.rand.getBytes(t); + for (var e = new Uint8Array(t), r = 0; r < e.length; r++) + e[r] = this.rand.getByte(); + return e; + }), + "object" == typeof self) + ) + self.crypto && self.crypto.getRandomValues + ? (n.prototype._rand = function (t) { + var e = new Uint8Array(t); + return self.crypto.getRandomValues(e), e; + }) + : self.msCrypto && self.msCrypto.getRandomValues + ? (n.prototype._rand = function (t) { + var e = new Uint8Array(t); + return self.msCrypto.getRandomValues(e), e; + }) + : "object" == typeof window && + (n.prototype._rand = function () { + throw new Error("Not implemented yet"); + }); + else + try { + var o = r(9214); + if ("function" != typeof o.randomBytes) + throw new Error("Not supported"); + n.prototype._rand = function (t) { + return o.randomBytes(t); + }; + } catch (t) {} + }, + 4497: (t, e, r) => { + var i = r(9509).Buffer; + function n(t) { + i.isBuffer(t) || (t = i.from(t)); + for ( + var e = (t.length / 4) | 0, r = new Array(e), n = 0; + n < e; + n++ + ) + r[n] = t.readUInt32BE(4 * n); + return r; + } + function o(t) { + for (; 0 < t.length; t++) t[0] = 0; + } + function a(t, e, r, i, n) { + for ( + var o, + a, + s, + f, + u = r[0], + h = r[1], + c = r[2], + d = r[3], + l = t[0] ^ e[0], + p = t[1] ^ e[1], + b = t[2] ^ e[2], + y = t[3] ^ e[3], + m = 4, + g = 1; + g < n; + g++ + ) + (o = + u[l >>> 24] ^ + h[(p >>> 16) & 255] ^ + c[(b >>> 8) & 255] ^ + d[255 & y] ^ + e[m++]), + (a = + u[p >>> 24] ^ + h[(b >>> 16) & 255] ^ + c[(y >>> 8) & 255] ^ + d[255 & l] ^ + e[m++]), + (s = + u[b >>> 24] ^ + h[(y >>> 16) & 255] ^ + c[(l >>> 8) & 255] ^ + d[255 & p] ^ + e[m++]), + (f = + u[y >>> 24] ^ + h[(l >>> 16) & 255] ^ + c[(p >>> 8) & 255] ^ + d[255 & b] ^ + e[m++]), + (l = o), + (p = a), + (b = s), + (y = f); + return ( + (o = + ((i[l >>> 24] << 24) | + (i[(p >>> 16) & 255] << 16) | + (i[(b >>> 8) & 255] << 8) | + i[255 & y]) ^ + e[m++]), + (a = + ((i[p >>> 24] << 24) | + (i[(b >>> 16) & 255] << 16) | + (i[(y >>> 8) & 255] << 8) | + i[255 & l]) ^ + e[m++]), + (s = + ((i[b >>> 24] << 24) | + (i[(y >>> 16) & 255] << 16) | + (i[(l >>> 8) & 255] << 8) | + i[255 & p]) ^ + e[m++]), + (f = + ((i[y >>> 24] << 24) | + (i[(l >>> 16) & 255] << 16) | + (i[(p >>> 8) & 255] << 8) | + i[255 & b]) ^ + e[m++]), + [(o >>>= 0), (a >>>= 0), (s >>>= 0), (f >>>= 0)] + ); + } + var s = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + f = (function () { + for (var t = new Array(256), e = 0; e < 256; e++) + t[e] = e < 128 ? e << 1 : (e << 1) ^ 283; + for ( + var r = [], + i = [], + n = [[], [], [], []], + o = [[], [], [], []], + a = 0, + s = 0, + f = 0; + f < 256; + ++f + ) { + var u = s ^ (s << 1) ^ (s << 2) ^ (s << 3) ^ (s << 4); + (u = (u >>> 8) ^ (255 & u) ^ 99), (r[a] = u), (i[u] = a); + var h = t[a], + c = t[h], + d = t[c], + l = (257 * t[u]) ^ (16843008 * u); + (n[0][a] = (l << 24) | (l >>> 8)), + (n[1][a] = (l << 16) | (l >>> 16)), + (n[2][a] = (l << 8) | (l >>> 24)), + (n[3][a] = l), + (l = + (16843009 * d) ^ + (65537 * c) ^ + (257 * h) ^ + (16843008 * a)), + (o[0][u] = (l << 24) | (l >>> 8)), + (o[1][u] = (l << 16) | (l >>> 16)), + (o[2][u] = (l << 8) | (l >>> 24)), + (o[3][u] = l), + 0 === a + ? (a = s = 1) + : ((a = h ^ t[t[t[d ^ h]]]), (s ^= t[t[s]])); + } + return { SBOX: r, INV_SBOX: i, SUB_MIX: n, INV_SUB_MIX: o }; + })(); + function u(t) { + (this._key = n(t)), this._reset(); + } + (u.blockSize = 16), + (u.keySize = 32), + (u.prototype.blockSize = u.blockSize), + (u.prototype.keySize = u.keySize), + (u.prototype._reset = function () { + for ( + var t = this._key, + e = t.length, + r = e + 6, + i = 4 * (r + 1), + n = [], + o = 0; + o < e; + o++ + ) + n[o] = t[o]; + for (o = e; o < i; o++) { + var a = n[o - 1]; + o % e == 0 + ? ((a = (a << 8) | (a >>> 24)), + (a = + (f.SBOX[a >>> 24] << 24) | + (f.SBOX[(a >>> 16) & 255] << 16) | + (f.SBOX[(a >>> 8) & 255] << 8) | + f.SBOX[255 & a]), + (a ^= s[(o / e) | 0] << 24)) + : e > 6 && + o % e == 4 && + (a = + (f.SBOX[a >>> 24] << 24) | + (f.SBOX[(a >>> 16) & 255] << 16) | + (f.SBOX[(a >>> 8) & 255] << 8) | + f.SBOX[255 & a]), + (n[o] = n[o - e] ^ a); + } + for (var u = [], h = 0; h < i; h++) { + var c = i - h, + d = n[c - (h % 4 ? 0 : 4)]; + u[h] = + h < 4 || c <= 4 + ? d + : f.INV_SUB_MIX[0][f.SBOX[d >>> 24]] ^ + f.INV_SUB_MIX[1][f.SBOX[(d >>> 16) & 255]] ^ + f.INV_SUB_MIX[2][f.SBOX[(d >>> 8) & 255]] ^ + f.INV_SUB_MIX[3][f.SBOX[255 & d]]; + } + (this._nRounds = r), + (this._keySchedule = n), + (this._invKeySchedule = u); + }), + (u.prototype.encryptBlockRaw = function (t) { + return a( + (t = n(t)), + this._keySchedule, + f.SUB_MIX, + f.SBOX, + this._nRounds + ); + }), + (u.prototype.encryptBlock = function (t) { + var e = this.encryptBlockRaw(t), + r = i.allocUnsafe(16); + return ( + r.writeUInt32BE(e[0], 0), + r.writeUInt32BE(e[1], 4), + r.writeUInt32BE(e[2], 8), + r.writeUInt32BE(e[3], 12), + r + ); + }), + (u.prototype.decryptBlock = function (t) { + var e = (t = n(t))[1]; + (t[1] = t[3]), (t[3] = e); + var r = a( + t, + this._invKeySchedule, + f.INV_SUB_MIX, + f.INV_SBOX, + this._nRounds + ), + o = i.allocUnsafe(16); + return ( + o.writeUInt32BE(r[0], 0), + o.writeUInt32BE(r[3], 4), + o.writeUInt32BE(r[2], 8), + o.writeUInt32BE(r[1], 12), + o + ); + }), + (u.prototype.scrub = function () { + o(this._keySchedule), o(this._invKeySchedule), o(this._key); + }), + (t.exports.AES = u); + }, + 2422: (t, e, r) => { + var i = r(4497), + n = r(9509).Buffer, + o = r(1027), + a = r(5717), + s = r(3288), + f = r(7295), + u = r(685); + function h(t, e, r, a) { + o.call(this); + var f = n.alloc(4, 0); + this._cipher = new i.AES(e); + var h = this._cipher.encryptBlock(f); + (this._ghash = new s(h)), + (r = (function (t, e, r) { + if (12 === e.length) + return ( + (t._finID = n.concat([e, n.from([0, 0, 0, 1])])), + n.concat([e, n.from([0, 0, 0, 2])]) + ); + var i = new s(r), + o = e.length, + a = o % 16; + i.update(e), + a && ((a = 16 - a), i.update(n.alloc(a, 0))), + i.update(n.alloc(8, 0)); + var f = 8 * o, + h = n.alloc(8); + h.writeUIntBE(f, 0, 8), i.update(h), (t._finID = i.state); + var c = n.from(t._finID); + return u(c), c; + })(this, r, h)), + (this._prev = n.from(r)), + (this._cache = n.allocUnsafe(0)), + (this._secCache = n.allocUnsafe(0)), + (this._decrypt = a), + (this._alen = 0), + (this._len = 0), + (this._mode = t), + (this._authTag = null), + (this._called = !1); + } + a(h, o), + (h.prototype._update = function (t) { + if (!this._called && this._alen) { + var e = 16 - (this._alen % 16); + e < 16 && ((e = n.alloc(e, 0)), this._ghash.update(e)); + } + this._called = !0; + var r = this._mode.encrypt(this, t); + return ( + this._decrypt ? this._ghash.update(t) : this._ghash.update(r), + (this._len += t.length), + r + ); + }), + (h.prototype._final = function () { + if (this._decrypt && !this._authTag) + throw new Error( + "Unsupported state or unable to authenticate data" + ); + var t = f( + this._ghash.final(8 * this._alen, 8 * this._len), + this._cipher.encryptBlock(this._finID) + ); + if ( + this._decrypt && + (function (t, e) { + var r = 0; + t.length !== e.length && r++; + for ( + var i = Math.min(t.length, e.length), n = 0; + n < i; + ++n + ) + r += t[n] ^ e[n]; + return r; + })(t, this._authTag) + ) + throw new Error( + "Unsupported state or unable to authenticate data" + ); + (this._authTag = t), this._cipher.scrub(); + }), + (h.prototype.getAuthTag = function () { + if (this._decrypt || !n.isBuffer(this._authTag)) + throw new Error( + "Attempting to get auth tag in unsupported state" + ); + return this._authTag; + }), + (h.prototype.setAuthTag = function (t) { + if (!this._decrypt) + throw new Error( + "Attempting to set auth tag in unsupported state" + ); + this._authTag = t; + }), + (h.prototype.setAAD = function (t) { + if (this._called) + throw new Error("Attempting to set AAD in unsupported state"); + this._ghash.update(t), (this._alen += t.length); + }), + (t.exports = h); + }, + 4696: (t, e, r) => { + var i = r(1494), + n = r(6193), + o = r(4946); + (e.createCipher = e.Cipher = i.createCipher), + (e.createCipheriv = e.Cipheriv = i.createCipheriv), + (e.createDecipher = e.Decipher = n.createDecipher), + (e.createDecipheriv = e.Decipheriv = n.createDecipheriv), + (e.listCiphers = e.getCiphers = + function () { + return Object.keys(o); + }); + }, + 6193: (t, e, r) => { + var i = r(2422), + n = r(9509).Buffer, + o = r(45), + a = r(5969), + s = r(1027), + f = r(4497), + u = r(3048); + function h(t, e, r) { + s.call(this), + (this._cache = new c()), + (this._last = void 0), + (this._cipher = new f.AES(e)), + (this._prev = n.from(r)), + (this._mode = t), + (this._autopadding = !0); + } + function c() { + this.cache = n.allocUnsafe(0); + } + function d(t, e, r) { + var s = o[t.toLowerCase()]; + if (!s) throw new TypeError("invalid suite type"); + if ( + ("string" == typeof r && (r = n.from(r)), + "GCM" !== s.mode && r.length !== s.iv) + ) + throw new TypeError("invalid iv length " + r.length); + if ( + ("string" == typeof e && (e = n.from(e)), + e.length !== s.key / 8) + ) + throw new TypeError("invalid key length " + e.length); + return "stream" === s.type + ? new a(s.module, e, r, !0) + : "auth" === s.type + ? new i(s.module, e, r, !0) + : new h(s.module, e, r); + } + r(5717)(h, s), + (h.prototype._update = function (t) { + var e, r; + this._cache.add(t); + for (var i = []; (e = this._cache.get(this._autopadding)); ) + (r = this._mode.decrypt(this, e)), i.push(r); + return n.concat(i); + }), + (h.prototype._final = function () { + var t = this._cache.flush(); + if (this._autopadding) + return (function (t) { + var e = t[15]; + if (e < 1 || e > 16) + throw new Error("unable to decrypt data"); + for (var r = -1; ++r < e; ) + if (t[r + (16 - e)] !== e) + throw new Error("unable to decrypt data"); + if (16 !== e) return t.slice(0, 16 - e); + })(this._mode.decrypt(this, t)); + if (t) throw new Error("data not multiple of block length"); + }), + (h.prototype.setAutoPadding = function (t) { + return (this._autopadding = !!t), this; + }), + (c.prototype.add = function (t) { + this.cache = n.concat([this.cache, t]); + }), + (c.prototype.get = function (t) { + var e; + if (t) { + if (this.cache.length > 16) + return ( + (e = this.cache.slice(0, 16)), + (this.cache = this.cache.slice(16)), + e + ); + } else if (this.cache.length >= 16) + return ( + (e = this.cache.slice(0, 16)), + (this.cache = this.cache.slice(16)), + e + ); + return null; + }), + (c.prototype.flush = function () { + if (this.cache.length) return this.cache; + }), + (e.createDecipher = function (t, e) { + var r = o[t.toLowerCase()]; + if (!r) throw new TypeError("invalid suite type"); + var i = u(e, !1, r.key, r.iv); + return d(t, i.key, i.iv); + }), + (e.createDecipheriv = d); + }, + 1494: (t, e, r) => { + var i = r(45), + n = r(2422), + o = r(9509).Buffer, + a = r(5969), + s = r(1027), + f = r(4497), + u = r(3048); + function h(t, e, r) { + s.call(this), + (this._cache = new d()), + (this._cipher = new f.AES(e)), + (this._prev = o.from(r)), + (this._mode = t), + (this._autopadding = !0); + } + r(5717)(h, s), + (h.prototype._update = function (t) { + var e, r; + this._cache.add(t); + for (var i = []; (e = this._cache.get()); ) + (r = this._mode.encrypt(this, e)), i.push(r); + return o.concat(i); + }); + var c = o.alloc(16, 16); + function d() { + this.cache = o.allocUnsafe(0); + } + function l(t, e, r) { + var s = i[t.toLowerCase()]; + if (!s) throw new TypeError("invalid suite type"); + if ( + ("string" == typeof e && (e = o.from(e)), + e.length !== s.key / 8) + ) + throw new TypeError("invalid key length " + e.length); + if ( + ("string" == typeof r && (r = o.from(r)), + "GCM" !== s.mode && r.length !== s.iv) + ) + throw new TypeError("invalid iv length " + r.length); + return "stream" === s.type + ? new a(s.module, e, r) + : "auth" === s.type + ? new n(s.module, e, r) + : new h(s.module, e, r); + } + (h.prototype._final = function () { + var t = this._cache.flush(); + if (this._autopadding) + return ( + (t = this._mode.encrypt(this, t)), this._cipher.scrub(), t + ); + if (!t.equals(c)) + throw ( + (this._cipher.scrub(), + new Error("data not multiple of block length")) + ); + }), + (h.prototype.setAutoPadding = function (t) { + return (this._autopadding = !!t), this; + }), + (d.prototype.add = function (t) { + this.cache = o.concat([this.cache, t]); + }), + (d.prototype.get = function () { + if (this.cache.length > 15) { + var t = this.cache.slice(0, 16); + return (this.cache = this.cache.slice(16)), t; + } + return null; + }), + (d.prototype.flush = function () { + for ( + var t = 16 - this.cache.length, e = o.allocUnsafe(t), r = -1; + ++r < t; + + ) + e.writeUInt8(t, r); + return o.concat([this.cache, e]); + }), + (e.createCipheriv = l), + (e.createCipher = function (t, e) { + var r = i[t.toLowerCase()]; + if (!r) throw new TypeError("invalid suite type"); + var n = u(e, !1, r.key, r.iv); + return l(t, n.key, n.iv); + }); + }, + 3288: (t, e, r) => { + var i = r(9509).Buffer, + n = i.alloc(16, 0); + function o(t) { + var e = i.allocUnsafe(16); + return ( + e.writeUInt32BE(t[0] >>> 0, 0), + e.writeUInt32BE(t[1] >>> 0, 4), + e.writeUInt32BE(t[2] >>> 0, 8), + e.writeUInt32BE(t[3] >>> 0, 12), + e + ); + } + function a(t) { + (this.h = t), + (this.state = i.alloc(16, 0)), + (this.cache = i.allocUnsafe(0)); + } + (a.prototype.ghash = function (t) { + for (var e = -1; ++e < t.length; ) this.state[e] ^= t[e]; + this._multiply(); + }), + (a.prototype._multiply = function () { + for ( + var t, + e, + r, + i = [ + (t = this.h).readUInt32BE(0), + t.readUInt32BE(4), + t.readUInt32BE(8), + t.readUInt32BE(12), + ], + n = [0, 0, 0, 0], + a = -1; + ++a < 128; + + ) { + for ( + 0 != (this.state[~~(a / 8)] & (1 << (7 - (a % 8)))) && + ((n[0] ^= i[0]), + (n[1] ^= i[1]), + (n[2] ^= i[2]), + (n[3] ^= i[3])), + r = 0 != (1 & i[3]), + e = 3; + e > 0; + e-- + ) + i[e] = (i[e] >>> 1) | ((1 & i[e - 1]) << 31); + (i[0] = i[0] >>> 1), r && (i[0] = i[0] ^ (225 << 24)); + } + this.state = o(n); + }), + (a.prototype.update = function (t) { + var e; + for ( + this.cache = i.concat([this.cache, t]); + this.cache.length >= 16; + + ) + (e = this.cache.slice(0, 16)), + (this.cache = this.cache.slice(16)), + this.ghash(e); + }), + (a.prototype.final = function (t, e) { + return ( + this.cache.length && + this.ghash(i.concat([this.cache, n], 16)), + this.ghash(o([0, t, 0, e])), + this.state + ); + }), + (t.exports = a); + }, + 685: (t) => { + t.exports = function (t) { + for (var e, r = t.length; r--; ) { + if (255 !== (e = t.readUInt8(r))) { + e++, t.writeUInt8(e, r); + break; + } + t.writeUInt8(0, r); + } + }; + }, + 5292: (t, e, r) => { + var i = r(7295); + (e.encrypt = function (t, e) { + var r = i(e, t._prev); + return (t._prev = t._cipher.encryptBlock(r)), t._prev; + }), + (e.decrypt = function (t, e) { + var r = t._prev; + t._prev = e; + var n = t._cipher.decryptBlock(e); + return i(n, r); + }); + }, + 6311: (t, e, r) => { + var i = r(9509).Buffer, + n = r(7295); + function o(t, e, r) { + var o = e.length, + a = n(e, t._cache); + return ( + (t._cache = t._cache.slice(o)), + (t._prev = i.concat([t._prev, r ? e : a])), + a + ); + } + e.encrypt = function (t, e, r) { + for (var n, a = i.allocUnsafe(0); e.length; ) { + if ( + (0 === t._cache.length && + ((t._cache = t._cipher.encryptBlock(t._prev)), + (t._prev = i.allocUnsafe(0))), + !(t._cache.length <= e.length)) + ) { + a = i.concat([a, o(t, e, r)]); + break; + } + (n = t._cache.length), + (a = i.concat([a, o(t, e.slice(0, n), r)])), + (e = e.slice(n)); + } + return a; + }; + }, + 1510: (t, e, r) => { + var i = r(9509).Buffer; + function n(t, e, r) { + for (var i, n, a = -1, s = 0; ++a < 8; ) + (i = e & (1 << (7 - a)) ? 128 : 0), + (s += + (128 & (n = t._cipher.encryptBlock(t._prev)[0] ^ i)) >> + a % 8), + (t._prev = o(t._prev, r ? i : n)); + return s; + } + function o(t, e) { + var r = t.length, + n = -1, + o = i.allocUnsafe(t.length); + for (t = i.concat([t, i.from([e])]); ++n < r; ) + o[n] = (t[n] << 1) | (t[n + 1] >> 7); + return o; + } + e.encrypt = function (t, e, r) { + for (var o = e.length, a = i.allocUnsafe(o), s = -1; ++s < o; ) + a[s] = n(t, e[s], r); + return a; + }; + }, + 1964: (t, e, r) => { + var i = r(9509).Buffer; + function n(t, e, r) { + var n = t._cipher.encryptBlock(t._prev)[0] ^ e; + return ( + (t._prev = i.concat([t._prev.slice(1), i.from([r ? e : n])])), n + ); + } + e.encrypt = function (t, e, r) { + for (var o = e.length, a = i.allocUnsafe(o), s = -1; ++s < o; ) + a[s] = n(t, e[s], r); + return a; + }; + }, + 6009: (t, e, r) => { + var i = r(7295), + n = r(9509).Buffer, + o = r(685); + function a(t) { + var e = t._cipher.encryptBlockRaw(t._prev); + return o(t._prev), e; + } + e.encrypt = function (t, e) { + var r = Math.ceil(e.length / 16), + o = t._cache.length; + t._cache = n.concat([t._cache, n.allocUnsafe(16 * r)]); + for (var s = 0; s < r; s++) { + var f = a(t), + u = o + 16 * s; + t._cache.writeUInt32BE(f[0], u + 0), + t._cache.writeUInt32BE(f[1], u + 4), + t._cache.writeUInt32BE(f[2], u + 8), + t._cache.writeUInt32BE(f[3], u + 12); + } + var h = t._cache.slice(0, e.length); + return (t._cache = t._cache.slice(e.length)), i(e, h); + }; + }, + 1084: (t, e) => { + (e.encrypt = function (t, e) { + return t._cipher.encryptBlock(e); + }), + (e.decrypt = function (t, e) { + return t._cipher.decryptBlock(e); + }); + }, + 45: (t, e, r) => { + var i = { + ECB: r(1084), + CBC: r(5292), + CFB: r(6311), + CFB8: r(1964), + CFB1: r(1510), + OFB: r(8861), + CTR: r(6009), + GCM: r(6009), + }, + n = r(4946); + for (var o in n) n[o].module = i[n[o].mode]; + t.exports = n; + }, + 8861: (t, e, r) => { + var i = r(8764).Buffer, + n = r(7295); + function o(t) { + return (t._prev = t._cipher.encryptBlock(t._prev)), t._prev; + } + e.encrypt = function (t, e) { + for (; t._cache.length < e.length; ) + t._cache = i.concat([t._cache, o(t)]); + var r = t._cache.slice(0, e.length); + return (t._cache = t._cache.slice(e.length)), n(e, r); + }; + }, + 5969: (t, e, r) => { + var i = r(4497), + n = r(9509).Buffer, + o = r(1027); + function a(t, e, r, a) { + o.call(this), + (this._cipher = new i.AES(e)), + (this._prev = n.from(r)), + (this._cache = n.allocUnsafe(0)), + (this._secCache = n.allocUnsafe(0)), + (this._decrypt = a), + (this._mode = t); + } + r(5717)(a, o), + (a.prototype._update = function (t) { + return this._mode.encrypt(this, t, this._decrypt); + }), + (a.prototype._final = function () { + this._cipher.scrub(); + }), + (t.exports = a); + }, + 3614: (t, e, r) => { + var i = r(7667), + n = r(4696), + o = r(45), + a = r(9715), + s = r(3048); + function f(t, e, r) { + if (((t = t.toLowerCase()), o[t])) + return n.createCipheriv(t, e, r); + if (a[t]) return new i({ key: e, iv: r, mode: t }); + throw new TypeError("invalid suite type"); + } + function u(t, e, r) { + if (((t = t.toLowerCase()), o[t])) + return n.createDecipheriv(t, e, r); + if (a[t]) return new i({ key: e, iv: r, mode: t, decrypt: !0 }); + throw new TypeError("invalid suite type"); + } + (e.createCipher = e.Cipher = + function (t, e) { + var r, i; + if (((t = t.toLowerCase()), o[t])) + (r = o[t].key), (i = o[t].iv); + else { + if (!a[t]) throw new TypeError("invalid suite type"); + (r = 8 * a[t].key), (i = a[t].iv); + } + var n = s(e, !1, r, i); + return f(t, n.key, n.iv); + }), + (e.createCipheriv = e.Cipheriv = f), + (e.createDecipher = e.Decipher = + function (t, e) { + var r, i; + if (((t = t.toLowerCase()), o[t])) + (r = o[t].key), (i = o[t].iv); + else { + if (!a[t]) throw new TypeError("invalid suite type"); + (r = 8 * a[t].key), (i = a[t].iv); + } + var n = s(e, !1, r, i); + return u(t, n.key, n.iv); + }), + (e.createDecipheriv = e.Decipheriv = u), + (e.listCiphers = e.getCiphers = + function () { + return Object.keys(a).concat(n.getCiphers()); + }); + }, + 7667: (t, e, r) => { + var i = r(1027), + n = r(5251), + o = r(5717), + a = r(9509).Buffer, + s = { + "des-ede3-cbc": n.CBC.instantiate(n.EDE), + "des-ede3": n.EDE, + "des-ede-cbc": n.CBC.instantiate(n.EDE), + "des-ede": n.EDE, + "des-cbc": n.CBC.instantiate(n.DES), + "des-ecb": n.DES, + }; + function f(t) { + i.call(this); + var e, + r = t.mode.toLowerCase(), + n = s[r]; + e = t.decrypt ? "decrypt" : "encrypt"; + var o = t.key; + a.isBuffer(o) || (o = a.from(o)), + ("des-ede" !== r && "des-ede-cbc" !== r) || + (o = a.concat([o, o.slice(0, 8)])); + var f = t.iv; + a.isBuffer(f) || (f = a.from(f)), + (this._des = n.create({ key: o, iv: f, type: e })); + } + (s.des = s["des-cbc"]), + (s.des3 = s["des-ede3-cbc"]), + (t.exports = f), + o(f, i), + (f.prototype._update = function (t) { + return a.from(this._des.update(t)); + }), + (f.prototype._final = function () { + return a.from(this._des.final()); + }); + }, + 9715: (t, e) => { + (e["des-ecb"] = { key: 8, iv: 0 }), + (e["des-cbc"] = e.des = { key: 8, iv: 8 }), + (e["des-ede3-cbc"] = e.des3 = { key: 24, iv: 8 }), + (e["des-ede3"] = { key: 24, iv: 0 }), + (e["des-ede-cbc"] = { key: 16, iv: 8 }), + (e["des-ede"] = { key: 16, iv: 0 }); + }, + 3663: (t, e, r) => { + var i = r(8764).Buffer, + n = r(3982), + o = r(1798); + function a(t) { + var e, + r = t.modulus.byteLength(); + do { + e = new n(o(r)); + } while ( + e.cmp(t.modulus) >= 0 || + !e.umod(t.prime1) || + !e.umod(t.prime2) + ); + return e; + } + function s(t, e) { + var r = (function (t) { + var e = a(t); + return { + blinder: e + .toRed(n.mont(t.modulus)) + .redPow(new n(t.publicExponent)) + .fromRed(), + unblinder: e.invm(t.modulus), + }; + })(e), + o = e.modulus.byteLength(), + s = new n(t).mul(r.blinder).umod(e.modulus), + f = s.toRed(n.mont(e.prime1)), + u = s.toRed(n.mont(e.prime2)), + h = e.coefficient, + c = e.prime1, + d = e.prime2, + l = f.redPow(e.exponent1).fromRed(), + p = u.redPow(e.exponent2).fromRed(), + b = l.isub(p).imul(h).umod(c).imul(d); + return p + .iadd(b) + .imul(r.unblinder) + .umod(e.modulus) + .toArrayLike(i, "be", o); + } + (s.getr = a), (t.exports = s); + }, + 3982: function (t, e, r) { + !(function (t, e) { + "use strict"; + function i(t, e) { + if (!t) throw new Error(e || "Assertion failed"); + } + function n(t, e) { + t.super_ = e; + var r = function () {}; + (r.prototype = e.prototype), + (t.prototype = new r()), + (t.prototype.constructor = t); + } + function o(t, e, r) { + if (o.isBN(t)) return t; + (this.negative = 0), + (this.words = null), + (this.length = 0), + (this.red = null), + null !== t && + (("le" !== e && "be" !== e) || ((r = e), (e = 10)), + this._init(t || 0, e || 10, r || "be")); + } + var a; + "object" == typeof t ? (t.exports = o) : (e.BN = o), + (o.BN = o), + (o.wordSize = 26); + try { + a = + "undefined" != typeof window && void 0 !== window.Buffer + ? window.Buffer + : r(1922).Buffer; + } catch (t) {} + function s(t, e) { + var r = t.charCodeAt(e); + return r >= 48 && r <= 57 + ? r - 48 + : r >= 65 && r <= 70 + ? r - 55 + : r >= 97 && r <= 102 + ? r - 87 + : void i(!1, "Invalid character in " + t); + } + function f(t, e, r) { + var i = s(t, r); + return r - 1 >= e && (i |= s(t, r - 1) << 4), i; + } + function u(t, e, r, n) { + for ( + var o = 0, a = 0, s = Math.min(t.length, r), f = e; + f < s; + f++ + ) { + var u = t.charCodeAt(f) - 48; + (o *= n), + (a = u >= 49 ? u - 49 + 10 : u >= 17 ? u - 17 + 10 : u), + i(u >= 0 && a < n, "Invalid character"), + (o += a); + } + return o; + } + function h(t, e) { + (t.words = e.words), + (t.length = e.length), + (t.negative = e.negative), + (t.red = e.red); + } + if ( + ((o.isBN = function (t) { + return ( + t instanceof o || + (null !== t && + "object" == typeof t && + t.constructor.wordSize === o.wordSize && + Array.isArray(t.words)) + ); + }), + (o.max = function (t, e) { + return t.cmp(e) > 0 ? t : e; + }), + (o.min = function (t, e) { + return t.cmp(e) < 0 ? t : e; + }), + (o.prototype._init = function (t, e, r) { + if ("number" == typeof t) return this._initNumber(t, e, r); + if ("object" == typeof t) return this._initArray(t, e, r); + "hex" === e && (e = 16), + i(e === (0 | e) && e >= 2 && e <= 36); + var n = 0; + "-" === (t = t.toString().replace(/\s+/g, ""))[0] && + (n++, (this.negative = 1)), + n < t.length && + (16 === e + ? this._parseHex(t, n, r) + : (this._parseBase(t, e, n), + "le" === r && this._initArray(this.toArray(), e, r))); + }), + (o.prototype._initNumber = function (t, e, r) { + t < 0 && ((this.negative = 1), (t = -t)), + t < 67108864 + ? ((this.words = [67108863 & t]), (this.length = 1)) + : t < 4503599627370496 + ? ((this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + ]), + (this.length = 2)) + : (i(t < 9007199254740992), + (this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + 1, + ]), + (this.length = 3)), + "le" === r && this._initArray(this.toArray(), e, r); + }), + (o.prototype._initArray = function (t, e, r) { + if ((i("number" == typeof t.length), t.length <= 0)) + return (this.words = [0]), (this.length = 1), this; + (this.length = Math.ceil(t.length / 3)), + (this.words = new Array(this.length)); + for (var n = 0; n < this.length; n++) this.words[n] = 0; + var o, + a, + s = 0; + if ("be" === r) + for (n = t.length - 1, o = 0; n >= 0; n -= 3) + (a = t[n] | (t[n - 1] << 8) | (t[n - 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + else if ("le" === r) + for (n = 0, o = 0; n < t.length; n += 3) + (a = t[n] | (t[n + 1] << 8) | (t[n + 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + return this._strip(); + }), + (o.prototype._parseHex = function (t, e, r) { + (this.length = Math.ceil((t.length - e) / 6)), + (this.words = new Array(this.length)); + for (var i = 0; i < this.length; i++) this.words[i] = 0; + var n, + o = 0, + a = 0; + if ("be" === r) + for (i = t.length - 1; i >= e; i -= 2) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + else + for ( + i = (t.length - e) % 2 == 0 ? e + 1 : e; + i < t.length; + i += 2 + ) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + this._strip(); + }), + (o.prototype._parseBase = function (t, e, r) { + (this.words = [0]), (this.length = 1); + for (var i = 0, n = 1; n <= 67108863; n *= e) i++; + i--, (n = (n / e) | 0); + for ( + var o = t.length - r, + a = o % i, + s = Math.min(o, o - a) + r, + f = 0, + h = r; + h < s; + h += i + ) + (f = u(t, h, h + i, e)), + this.imuln(n), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + if (0 !== a) { + var c = 1; + for (f = u(t, h, t.length, e), h = 0; h < a; h++) c *= e; + this.imuln(c), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + } + this._strip(); + }), + (o.prototype.copy = function (t) { + t.words = new Array(this.length); + for (var e = 0; e < this.length; e++) + t.words[e] = this.words[e]; + (t.length = this.length), + (t.negative = this.negative), + (t.red = this.red); + }), + (o.prototype._move = function (t) { + h(t, this); + }), + (o.prototype.clone = function () { + var t = new o(null); + return this.copy(t), t; + }), + (o.prototype._expand = function (t) { + for (; this.length < t; ) this.words[this.length++] = 0; + return this; + }), + (o.prototype._strip = function () { + for (; this.length > 1 && 0 === this.words[this.length - 1]; ) + this.length--; + return this._normSign(); + }), + (o.prototype._normSign = function () { + return ( + 1 === this.length && + 0 === this.words[0] && + (this.negative = 0), + this + ); + }), + "undefined" != typeof Symbol && "function" == typeof Symbol.for) + ) + try { + o.prototype[Symbol.for("nodejs.util.inspect.custom")] = c; + } catch (t) { + o.prototype.inspect = c; + } + else o.prototype.inspect = c; + function c() { + return ( + (this.red ? "" + ); + } + var d = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000", + ], + l = [ + 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + ], + p = [ + 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, + 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, + 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, + 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, + 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, + 33554432, 39135393, 45435424, 52521875, 60466176, + ]; + function b(t, e, r) { + r.negative = e.negative ^ t.negative; + var i = (t.length + e.length) | 0; + (r.length = i), (i = (i - 1) | 0); + var n = 0 | t.words[0], + o = 0 | e.words[0], + a = n * o, + s = 67108863 & a, + f = (a / 67108864) | 0; + r.words[0] = s; + for (var u = 1; u < i; u++) { + for ( + var h = f >>> 26, + c = 67108863 & f, + d = Math.min(u, e.length - 1), + l = Math.max(0, u - t.length + 1); + l <= d; + l++ + ) { + var p = (u - l) | 0; + (h += + ((a = (n = 0 | t.words[p]) * (o = 0 | e.words[l]) + c) / + 67108864) | + 0), + (c = 67108863 & a); + } + (r.words[u] = 0 | c), (f = 0 | h); + } + return 0 !== f ? (r.words[u] = 0 | f) : r.length--, r._strip(); + } + (o.prototype.toString = function (t, e) { + var r; + if (((e = 0 | e || 1), 16 === (t = t || 10) || "hex" === t)) { + r = ""; + for (var n = 0, o = 0, a = 0; a < this.length; a++) { + var s = this.words[a], + f = (16777215 & ((s << n) | o)).toString(16); + (o = (s >>> (24 - n)) & 16777215), + (n += 2) >= 26 && ((n -= 26), a--), + (r = + 0 !== o || a !== this.length - 1 + ? d[6 - f.length] + f + r + : f + r); + } + for (0 !== o && (r = o.toString(16) + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + if (t === (0 | t) && t >= 2 && t <= 36) { + var u = l[t], + h = p[t]; + r = ""; + var c = this.clone(); + for (c.negative = 0; !c.isZero(); ) { + var b = c.modrn(h).toString(t); + r = (c = c.idivn(h)).isZero() + ? b + r + : d[u - b.length] + b + r; + } + for (this.isZero() && (r = "0" + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + i(!1, "Base should be between 2 and 36"); + }), + (o.prototype.toNumber = function () { + var t = this.words[0]; + return ( + 2 === this.length + ? (t += 67108864 * this.words[1]) + : 3 === this.length && 1 === this.words[2] + ? (t += 4503599627370496 + 67108864 * this.words[1]) + : this.length > 2 && + i(!1, "Number can only safely store up to 53 bits"), + 0 !== this.negative ? -t : t + ); + }), + (o.prototype.toJSON = function () { + return this.toString(16, 2); + }), + a && + (o.prototype.toBuffer = function (t, e) { + return this.toArrayLike(a, t, e); + }), + (o.prototype.toArray = function (t, e) { + return this.toArrayLike(Array, t, e); + }), + (o.prototype.toArrayLike = function (t, e, r) { + this._strip(); + var n = this.byteLength(), + o = r || Math.max(1, n); + i(n <= o, "byte array longer than desired length"), + i(o > 0, "Requested array length <= 0"); + var a = (function (t, e) { + return t.allocUnsafe ? t.allocUnsafe(e) : new t(e); + })(t, o); + return ( + this["_toArrayLike" + ("le" === e ? "LE" : "BE")](a, n), a + ); + }), + (o.prototype._toArrayLikeLE = function (t, e) { + for (var r = 0, i = 0, n = 0, o = 0; n < this.length; n++) { + var a = (this.words[n] << o) | i; + (t[r++] = 255 & a), + r < t.length && (t[r++] = (a >> 8) & 255), + r < t.length && (t[r++] = (a >> 16) & 255), + 6 === o + ? (r < t.length && (t[r++] = (a >> 24) & 255), + (i = 0), + (o = 0)) + : ((i = a >>> 24), (o += 2)); + } + if (r < t.length) for (t[r++] = i; r < t.length; ) t[r++] = 0; + }), + (o.prototype._toArrayLikeBE = function (t, e) { + for ( + var r = t.length - 1, i = 0, n = 0, o = 0; + n < this.length; + n++ + ) { + var a = (this.words[n] << o) | i; + (t[r--] = 255 & a), + r >= 0 && (t[r--] = (a >> 8) & 255), + r >= 0 && (t[r--] = (a >> 16) & 255), + 6 === o + ? (r >= 0 && (t[r--] = (a >> 24) & 255), + (i = 0), + (o = 0)) + : ((i = a >>> 24), (o += 2)); + } + if (r >= 0) for (t[r--] = i; r >= 0; ) t[r--] = 0; + }), + Math.clz32 + ? (o.prototype._countBits = function (t) { + return 32 - Math.clz32(t); + }) + : (o.prototype._countBits = function (t) { + var e = t, + r = 0; + return ( + e >= 4096 && ((r += 13), (e >>>= 13)), + e >= 64 && ((r += 7), (e >>>= 7)), + e >= 8 && ((r += 4), (e >>>= 4)), + e >= 2 && ((r += 2), (e >>>= 2)), + r + e + ); + }), + (o.prototype._zeroBits = function (t) { + if (0 === t) return 26; + var e = t, + r = 0; + return ( + 0 == (8191 & e) && ((r += 13), (e >>>= 13)), + 0 == (127 & e) && ((r += 7), (e >>>= 7)), + 0 == (15 & e) && ((r += 4), (e >>>= 4)), + 0 == (3 & e) && ((r += 2), (e >>>= 2)), + 0 == (1 & e) && r++, + r + ); + }), + (o.prototype.bitLength = function () { + var t = this.words[this.length - 1], + e = this._countBits(t); + return 26 * (this.length - 1) + e; + }), + (o.prototype.zeroBits = function () { + if (this.isZero()) return 0; + for (var t = 0, e = 0; e < this.length; e++) { + var r = this._zeroBits(this.words[e]); + if (((t += r), 26 !== r)) break; + } + return t; + }), + (o.prototype.byteLength = function () { + return Math.ceil(this.bitLength() / 8); + }), + (o.prototype.toTwos = function (t) { + return 0 !== this.negative + ? this.abs().inotn(t).iaddn(1) + : this.clone(); + }), + (o.prototype.fromTwos = function (t) { + return this.testn(t - 1) + ? this.notn(t).iaddn(1).ineg() + : this.clone(); + }), + (o.prototype.isNeg = function () { + return 0 !== this.negative; + }), + (o.prototype.neg = function () { + return this.clone().ineg(); + }), + (o.prototype.ineg = function () { + return this.isZero() || (this.negative ^= 1), this; + }), + (o.prototype.iuor = function (t) { + for (; this.length < t.length; ) + this.words[this.length++] = 0; + for (var e = 0; e < t.length; e++) + this.words[e] = this.words[e] | t.words[e]; + return this._strip(); + }), + (o.prototype.ior = function (t) { + return i(0 == (this.negative | t.negative)), this.iuor(t); + }), + (o.prototype.or = function (t) { + return this.length > t.length + ? this.clone().ior(t) + : t.clone().ior(this); + }), + (o.prototype.uor = function (t) { + return this.length > t.length + ? this.clone().iuor(t) + : t.clone().iuor(this); + }), + (o.prototype.iuand = function (t) { + var e; + e = this.length > t.length ? t : this; + for (var r = 0; r < e.length; r++) + this.words[r] = this.words[r] & t.words[r]; + return (this.length = e.length), this._strip(); + }), + (o.prototype.iand = function (t) { + return i(0 == (this.negative | t.negative)), this.iuand(t); + }), + (o.prototype.and = function (t) { + return this.length > t.length + ? this.clone().iand(t) + : t.clone().iand(this); + }), + (o.prototype.uand = function (t) { + return this.length > t.length + ? this.clone().iuand(t) + : t.clone().iuand(this); + }), + (o.prototype.iuxor = function (t) { + var e, r; + this.length > t.length + ? ((e = this), (r = t)) + : ((e = t), (r = this)); + for (var i = 0; i < r.length; i++) + this.words[i] = e.words[i] ^ r.words[i]; + if (this !== e) + for (; i < e.length; i++) this.words[i] = e.words[i]; + return (this.length = e.length), this._strip(); + }), + (o.prototype.ixor = function (t) { + return i(0 == (this.negative | t.negative)), this.iuxor(t); + }), + (o.prototype.xor = function (t) { + return this.length > t.length + ? this.clone().ixor(t) + : t.clone().ixor(this); + }), + (o.prototype.uxor = function (t) { + return this.length > t.length + ? this.clone().iuxor(t) + : t.clone().iuxor(this); + }), + (o.prototype.inotn = function (t) { + i("number" == typeof t && t >= 0); + var e = 0 | Math.ceil(t / 26), + r = t % 26; + this._expand(e), r > 0 && e--; + for (var n = 0; n < e; n++) + this.words[n] = 67108863 & ~this.words[n]; + return ( + r > 0 && + (this.words[n] = ~this.words[n] & (67108863 >> (26 - r))), + this._strip() + ); + }), + (o.prototype.notn = function (t) { + return this.clone().inotn(t); + }), + (o.prototype.setn = function (t, e) { + i("number" == typeof t && t >= 0); + var r = (t / 26) | 0, + n = t % 26; + return ( + this._expand(r + 1), + (this.words[r] = e + ? this.words[r] | (1 << n) + : this.words[r] & ~(1 << n)), + this._strip() + ); + }), + (o.prototype.iadd = function (t) { + var e, r, i; + if (0 !== this.negative && 0 === t.negative) + return ( + (this.negative = 0), + (e = this.isub(t)), + (this.negative ^= 1), + this._normSign() + ); + if (0 === this.negative && 0 !== t.negative) + return ( + (t.negative = 0), + (e = this.isub(t)), + (t.negative = 1), + e._normSign() + ); + this.length > t.length + ? ((r = this), (i = t)) + : ((r = t), (i = this)); + for (var n = 0, o = 0; o < i.length; o++) + (e = (0 | r.words[o]) + (0 | i.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + for (; 0 !== n && o < r.length; o++) + (e = (0 | r.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + if (((this.length = r.length), 0 !== n)) + (this.words[this.length] = n), this.length++; + else if (r !== this) + for (; o < r.length; o++) this.words[o] = r.words[o]; + return this; + }), + (o.prototype.add = function (t) { + var e; + return 0 !== t.negative && 0 === this.negative + ? ((t.negative = 0), + (e = this.sub(t)), + (t.negative ^= 1), + e) + : 0 === t.negative && 0 !== this.negative + ? ((this.negative = 0), + (e = t.sub(this)), + (this.negative = 1), + e) + : this.length > t.length + ? this.clone().iadd(t) + : t.clone().iadd(this); + }), + (o.prototype.isub = function (t) { + if (0 !== t.negative) { + t.negative = 0; + var e = this.iadd(t); + return (t.negative = 1), e._normSign(); + } + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iadd(t), + (this.negative = 1), + this._normSign() + ); + var r, + i, + n = this.cmp(t); + if (0 === n) + return ( + (this.negative = 0), + (this.length = 1), + (this.words[0] = 0), + this + ); + n > 0 ? ((r = this), (i = t)) : ((r = t), (i = this)); + for (var o = 0, a = 0; a < i.length; a++) + (o = (e = (0 | r.words[a]) - (0 | i.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + for (; 0 !== o && a < r.length; a++) + (o = (e = (0 | r.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + if (0 === o && a < r.length && r !== this) + for (; a < r.length; a++) this.words[a] = r.words[a]; + return ( + (this.length = Math.max(this.length, a)), + r !== this && (this.negative = 1), + this._strip() + ); + }), + (o.prototype.sub = function (t) { + return this.clone().isub(t); + }); + var y = function (t, e, r) { + var i, + n, + o, + a = t.words, + s = e.words, + f = r.words, + u = 0, + h = 0 | a[0], + c = 8191 & h, + d = h >>> 13, + l = 0 | a[1], + p = 8191 & l, + b = l >>> 13, + y = 0 | a[2], + m = 8191 & y, + g = y >>> 13, + v = 0 | a[3], + w = 8191 & v, + _ = v >>> 13, + M = 0 | a[4], + S = 8191 & M, + E = M >>> 13, + A = 0 | a[5], + k = 8191 & A, + x = A >>> 13, + I = 0 | a[6], + B = 8191 & I, + R = I >>> 13, + O = 0 | a[7], + j = 8191 & O, + P = O >>> 13, + T = 0 | a[8], + L = 8191 & T, + N = T >>> 13, + C = 0 | a[9], + U = 8191 & C, + D = C >>> 13, + q = 0 | s[0], + z = 8191 & q, + F = q >>> 13, + K = 0 | s[1], + H = 8191 & K, + V = K >>> 13, + G = 0 | s[2], + W = 8191 & G, + Z = G >>> 13, + $ = 0 | s[3], + X = 8191 & $, + Y = $ >>> 13, + J = 0 | s[4], + Q = 8191 & J, + tt = J >>> 13, + et = 0 | s[5], + rt = 8191 & et, + it = et >>> 13, + nt = 0 | s[6], + ot = 8191 & nt, + at = nt >>> 13, + st = 0 | s[7], + ft = 8191 & st, + ut = st >>> 13, + ht = 0 | s[8], + ct = 8191 & ht, + dt = ht >>> 13, + lt = 0 | s[9], + pt = 8191 & lt, + bt = lt >>> 13; + (r.negative = t.negative ^ e.negative), (r.length = 19); + var yt = + (((u + (i = Math.imul(c, z))) | 0) + + ((8191 & + (n = ((n = Math.imul(c, F)) + Math.imul(d, z)) | 0)) << + 13)) | + 0; + (u = + ((((o = Math.imul(d, F)) + (n >>> 13)) | 0) + (yt >>> 26)) | + 0), + (yt &= 67108863), + (i = Math.imul(p, z)), + (n = ((n = Math.imul(p, F)) + Math.imul(b, z)) | 0), + (o = Math.imul(b, F)); + var mt = + (((u + (i = (i + Math.imul(c, H)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, V)) | 0) + Math.imul(d, H)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, V)) | 0) + (n >>> 13)) | 0) + + (mt >>> 26)) | + 0), + (mt &= 67108863), + (i = Math.imul(m, z)), + (n = ((n = Math.imul(m, F)) + Math.imul(g, z)) | 0), + (o = Math.imul(g, F)), + (i = (i + Math.imul(p, H)) | 0), + (n = ((n = (n + Math.imul(p, V)) | 0) + Math.imul(b, H)) | 0), + (o = (o + Math.imul(b, V)) | 0); + var gt = + (((u + (i = (i + Math.imul(c, W)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Z)) | 0) + Math.imul(d, W)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Z)) | 0) + (n >>> 13)) | 0) + + (gt >>> 26)) | + 0), + (gt &= 67108863), + (i = Math.imul(w, z)), + (n = ((n = Math.imul(w, F)) + Math.imul(_, z)) | 0), + (o = Math.imul(_, F)), + (i = (i + Math.imul(m, H)) | 0), + (n = ((n = (n + Math.imul(m, V)) | 0) + Math.imul(g, H)) | 0), + (o = (o + Math.imul(g, V)) | 0), + (i = (i + Math.imul(p, W)) | 0), + (n = ((n = (n + Math.imul(p, Z)) | 0) + Math.imul(b, W)) | 0), + (o = (o + Math.imul(b, Z)) | 0); + var vt = + (((u + (i = (i + Math.imul(c, X)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Y)) | 0) + Math.imul(d, X)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Y)) | 0) + (n >>> 13)) | 0) + + (vt >>> 26)) | + 0), + (vt &= 67108863), + (i = Math.imul(S, z)), + (n = ((n = Math.imul(S, F)) + Math.imul(E, z)) | 0), + (o = Math.imul(E, F)), + (i = (i + Math.imul(w, H)) | 0), + (n = ((n = (n + Math.imul(w, V)) | 0) + Math.imul(_, H)) | 0), + (o = (o + Math.imul(_, V)) | 0), + (i = (i + Math.imul(m, W)) | 0), + (n = ((n = (n + Math.imul(m, Z)) | 0) + Math.imul(g, W)) | 0), + (o = (o + Math.imul(g, Z)) | 0), + (i = (i + Math.imul(p, X)) | 0), + (n = ((n = (n + Math.imul(p, Y)) | 0) + Math.imul(b, X)) | 0), + (o = (o + Math.imul(b, Y)) | 0); + var wt = + (((u + (i = (i + Math.imul(c, Q)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, tt)) | 0) + Math.imul(d, Q)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, tt)) | 0) + (n >>> 13)) | 0) + + (wt >>> 26)) | + 0), + (wt &= 67108863), + (i = Math.imul(k, z)), + (n = ((n = Math.imul(k, F)) + Math.imul(x, z)) | 0), + (o = Math.imul(x, F)), + (i = (i + Math.imul(S, H)) | 0), + (n = ((n = (n + Math.imul(S, V)) | 0) + Math.imul(E, H)) | 0), + (o = (o + Math.imul(E, V)) | 0), + (i = (i + Math.imul(w, W)) | 0), + (n = ((n = (n + Math.imul(w, Z)) | 0) + Math.imul(_, W)) | 0), + (o = (o + Math.imul(_, Z)) | 0), + (i = (i + Math.imul(m, X)) | 0), + (n = ((n = (n + Math.imul(m, Y)) | 0) + Math.imul(g, X)) | 0), + (o = (o + Math.imul(g, Y)) | 0), + (i = (i + Math.imul(p, Q)) | 0), + (n = + ((n = (n + Math.imul(p, tt)) | 0) + Math.imul(b, Q)) | 0), + (o = (o + Math.imul(b, tt)) | 0); + var _t = + (((u + (i = (i + Math.imul(c, rt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, it)) | 0) + Math.imul(d, rt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, it)) | 0) + (n >>> 13)) | 0) + + (_t >>> 26)) | + 0), + (_t &= 67108863), + (i = Math.imul(B, z)), + (n = ((n = Math.imul(B, F)) + Math.imul(R, z)) | 0), + (o = Math.imul(R, F)), + (i = (i + Math.imul(k, H)) | 0), + (n = ((n = (n + Math.imul(k, V)) | 0) + Math.imul(x, H)) | 0), + (o = (o + Math.imul(x, V)) | 0), + (i = (i + Math.imul(S, W)) | 0), + (n = ((n = (n + Math.imul(S, Z)) | 0) + Math.imul(E, W)) | 0), + (o = (o + Math.imul(E, Z)) | 0), + (i = (i + Math.imul(w, X)) | 0), + (n = ((n = (n + Math.imul(w, Y)) | 0) + Math.imul(_, X)) | 0), + (o = (o + Math.imul(_, Y)) | 0), + (i = (i + Math.imul(m, Q)) | 0), + (n = + ((n = (n + Math.imul(m, tt)) | 0) + Math.imul(g, Q)) | 0), + (o = (o + Math.imul(g, tt)) | 0), + (i = (i + Math.imul(p, rt)) | 0), + (n = + ((n = (n + Math.imul(p, it)) | 0) + Math.imul(b, rt)) | 0), + (o = (o + Math.imul(b, it)) | 0); + var Mt = + (((u + (i = (i + Math.imul(c, ot)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, at)) | 0) + Math.imul(d, ot)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, at)) | 0) + (n >>> 13)) | 0) + + (Mt >>> 26)) | + 0), + (Mt &= 67108863), + (i = Math.imul(j, z)), + (n = ((n = Math.imul(j, F)) + Math.imul(P, z)) | 0), + (o = Math.imul(P, F)), + (i = (i + Math.imul(B, H)) | 0), + (n = ((n = (n + Math.imul(B, V)) | 0) + Math.imul(R, H)) | 0), + (o = (o + Math.imul(R, V)) | 0), + (i = (i + Math.imul(k, W)) | 0), + (n = ((n = (n + Math.imul(k, Z)) | 0) + Math.imul(x, W)) | 0), + (o = (o + Math.imul(x, Z)) | 0), + (i = (i + Math.imul(S, X)) | 0), + (n = ((n = (n + Math.imul(S, Y)) | 0) + Math.imul(E, X)) | 0), + (o = (o + Math.imul(E, Y)) | 0), + (i = (i + Math.imul(w, Q)) | 0), + (n = + ((n = (n + Math.imul(w, tt)) | 0) + Math.imul(_, Q)) | 0), + (o = (o + Math.imul(_, tt)) | 0), + (i = (i + Math.imul(m, rt)) | 0), + (n = + ((n = (n + Math.imul(m, it)) | 0) + Math.imul(g, rt)) | 0), + (o = (o + Math.imul(g, it)) | 0), + (i = (i + Math.imul(p, ot)) | 0), + (n = + ((n = (n + Math.imul(p, at)) | 0) + Math.imul(b, ot)) | 0), + (o = (o + Math.imul(b, at)) | 0); + var St = + (((u + (i = (i + Math.imul(c, ft)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, ut)) | 0) + Math.imul(d, ft)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, ut)) | 0) + (n >>> 13)) | 0) + + (St >>> 26)) | + 0), + (St &= 67108863), + (i = Math.imul(L, z)), + (n = ((n = Math.imul(L, F)) + Math.imul(N, z)) | 0), + (o = Math.imul(N, F)), + (i = (i + Math.imul(j, H)) | 0), + (n = ((n = (n + Math.imul(j, V)) | 0) + Math.imul(P, H)) | 0), + (o = (o + Math.imul(P, V)) | 0), + (i = (i + Math.imul(B, W)) | 0), + (n = ((n = (n + Math.imul(B, Z)) | 0) + Math.imul(R, W)) | 0), + (o = (o + Math.imul(R, Z)) | 0), + (i = (i + Math.imul(k, X)) | 0), + (n = ((n = (n + Math.imul(k, Y)) | 0) + Math.imul(x, X)) | 0), + (o = (o + Math.imul(x, Y)) | 0), + (i = (i + Math.imul(S, Q)) | 0), + (n = + ((n = (n + Math.imul(S, tt)) | 0) + Math.imul(E, Q)) | 0), + (o = (o + Math.imul(E, tt)) | 0), + (i = (i + Math.imul(w, rt)) | 0), + (n = + ((n = (n + Math.imul(w, it)) | 0) + Math.imul(_, rt)) | 0), + (o = (o + Math.imul(_, it)) | 0), + (i = (i + Math.imul(m, ot)) | 0), + (n = + ((n = (n + Math.imul(m, at)) | 0) + Math.imul(g, ot)) | 0), + (o = (o + Math.imul(g, at)) | 0), + (i = (i + Math.imul(p, ft)) | 0), + (n = + ((n = (n + Math.imul(p, ut)) | 0) + Math.imul(b, ft)) | 0), + (o = (o + Math.imul(b, ut)) | 0); + var Et = + (((u + (i = (i + Math.imul(c, ct)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, dt)) | 0) + Math.imul(d, ct)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, dt)) | 0) + (n >>> 13)) | 0) + + (Et >>> 26)) | + 0), + (Et &= 67108863), + (i = Math.imul(U, z)), + (n = ((n = Math.imul(U, F)) + Math.imul(D, z)) | 0), + (o = Math.imul(D, F)), + (i = (i + Math.imul(L, H)) | 0), + (n = ((n = (n + Math.imul(L, V)) | 0) + Math.imul(N, H)) | 0), + (o = (o + Math.imul(N, V)) | 0), + (i = (i + Math.imul(j, W)) | 0), + (n = ((n = (n + Math.imul(j, Z)) | 0) + Math.imul(P, W)) | 0), + (o = (o + Math.imul(P, Z)) | 0), + (i = (i + Math.imul(B, X)) | 0), + (n = ((n = (n + Math.imul(B, Y)) | 0) + Math.imul(R, X)) | 0), + (o = (o + Math.imul(R, Y)) | 0), + (i = (i + Math.imul(k, Q)) | 0), + (n = + ((n = (n + Math.imul(k, tt)) | 0) + Math.imul(x, Q)) | 0), + (o = (o + Math.imul(x, tt)) | 0), + (i = (i + Math.imul(S, rt)) | 0), + (n = + ((n = (n + Math.imul(S, it)) | 0) + Math.imul(E, rt)) | 0), + (o = (o + Math.imul(E, it)) | 0), + (i = (i + Math.imul(w, ot)) | 0), + (n = + ((n = (n + Math.imul(w, at)) | 0) + Math.imul(_, ot)) | 0), + (o = (o + Math.imul(_, at)) | 0), + (i = (i + Math.imul(m, ft)) | 0), + (n = + ((n = (n + Math.imul(m, ut)) | 0) + Math.imul(g, ft)) | 0), + (o = (o + Math.imul(g, ut)) | 0), + (i = (i + Math.imul(p, ct)) | 0), + (n = + ((n = (n + Math.imul(p, dt)) | 0) + Math.imul(b, ct)) | 0), + (o = (o + Math.imul(b, dt)) | 0); + var At = + (((u + (i = (i + Math.imul(c, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, bt)) | 0) + Math.imul(d, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, bt)) | 0) + (n >>> 13)) | 0) + + (At >>> 26)) | + 0), + (At &= 67108863), + (i = Math.imul(U, H)), + (n = ((n = Math.imul(U, V)) + Math.imul(D, H)) | 0), + (o = Math.imul(D, V)), + (i = (i + Math.imul(L, W)) | 0), + (n = ((n = (n + Math.imul(L, Z)) | 0) + Math.imul(N, W)) | 0), + (o = (o + Math.imul(N, Z)) | 0), + (i = (i + Math.imul(j, X)) | 0), + (n = ((n = (n + Math.imul(j, Y)) | 0) + Math.imul(P, X)) | 0), + (o = (o + Math.imul(P, Y)) | 0), + (i = (i + Math.imul(B, Q)) | 0), + (n = + ((n = (n + Math.imul(B, tt)) | 0) + Math.imul(R, Q)) | 0), + (o = (o + Math.imul(R, tt)) | 0), + (i = (i + Math.imul(k, rt)) | 0), + (n = + ((n = (n + Math.imul(k, it)) | 0) + Math.imul(x, rt)) | 0), + (o = (o + Math.imul(x, it)) | 0), + (i = (i + Math.imul(S, ot)) | 0), + (n = + ((n = (n + Math.imul(S, at)) | 0) + Math.imul(E, ot)) | 0), + (o = (o + Math.imul(E, at)) | 0), + (i = (i + Math.imul(w, ft)) | 0), + (n = + ((n = (n + Math.imul(w, ut)) | 0) + Math.imul(_, ft)) | 0), + (o = (o + Math.imul(_, ut)) | 0), + (i = (i + Math.imul(m, ct)) | 0), + (n = + ((n = (n + Math.imul(m, dt)) | 0) + Math.imul(g, ct)) | 0), + (o = (o + Math.imul(g, dt)) | 0); + var kt = + (((u + (i = (i + Math.imul(p, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(p, bt)) | 0) + Math.imul(b, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(b, bt)) | 0) + (n >>> 13)) | 0) + + (kt >>> 26)) | + 0), + (kt &= 67108863), + (i = Math.imul(U, W)), + (n = ((n = Math.imul(U, Z)) + Math.imul(D, W)) | 0), + (o = Math.imul(D, Z)), + (i = (i + Math.imul(L, X)) | 0), + (n = ((n = (n + Math.imul(L, Y)) | 0) + Math.imul(N, X)) | 0), + (o = (o + Math.imul(N, Y)) | 0), + (i = (i + Math.imul(j, Q)) | 0), + (n = + ((n = (n + Math.imul(j, tt)) | 0) + Math.imul(P, Q)) | 0), + (o = (o + Math.imul(P, tt)) | 0), + (i = (i + Math.imul(B, rt)) | 0), + (n = + ((n = (n + Math.imul(B, it)) | 0) + Math.imul(R, rt)) | 0), + (o = (o + Math.imul(R, it)) | 0), + (i = (i + Math.imul(k, ot)) | 0), + (n = + ((n = (n + Math.imul(k, at)) | 0) + Math.imul(x, ot)) | 0), + (o = (o + Math.imul(x, at)) | 0), + (i = (i + Math.imul(S, ft)) | 0), + (n = + ((n = (n + Math.imul(S, ut)) | 0) + Math.imul(E, ft)) | 0), + (o = (o + Math.imul(E, ut)) | 0), + (i = (i + Math.imul(w, ct)) | 0), + (n = + ((n = (n + Math.imul(w, dt)) | 0) + Math.imul(_, ct)) | 0), + (o = (o + Math.imul(_, dt)) | 0); + var xt = + (((u + (i = (i + Math.imul(m, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(m, bt)) | 0) + Math.imul(g, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(g, bt)) | 0) + (n >>> 13)) | 0) + + (xt >>> 26)) | + 0), + (xt &= 67108863), + (i = Math.imul(U, X)), + (n = ((n = Math.imul(U, Y)) + Math.imul(D, X)) | 0), + (o = Math.imul(D, Y)), + (i = (i + Math.imul(L, Q)) | 0), + (n = + ((n = (n + Math.imul(L, tt)) | 0) + Math.imul(N, Q)) | 0), + (o = (o + Math.imul(N, tt)) | 0), + (i = (i + Math.imul(j, rt)) | 0), + (n = + ((n = (n + Math.imul(j, it)) | 0) + Math.imul(P, rt)) | 0), + (o = (o + Math.imul(P, it)) | 0), + (i = (i + Math.imul(B, ot)) | 0), + (n = + ((n = (n + Math.imul(B, at)) | 0) + Math.imul(R, ot)) | 0), + (o = (o + Math.imul(R, at)) | 0), + (i = (i + Math.imul(k, ft)) | 0), + (n = + ((n = (n + Math.imul(k, ut)) | 0) + Math.imul(x, ft)) | 0), + (o = (o + Math.imul(x, ut)) | 0), + (i = (i + Math.imul(S, ct)) | 0), + (n = + ((n = (n + Math.imul(S, dt)) | 0) + Math.imul(E, ct)) | 0), + (o = (o + Math.imul(E, dt)) | 0); + var It = + (((u + (i = (i + Math.imul(w, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(w, bt)) | 0) + Math.imul(_, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(_, bt)) | 0) + (n >>> 13)) | 0) + + (It >>> 26)) | + 0), + (It &= 67108863), + (i = Math.imul(U, Q)), + (n = ((n = Math.imul(U, tt)) + Math.imul(D, Q)) | 0), + (o = Math.imul(D, tt)), + (i = (i + Math.imul(L, rt)) | 0), + (n = + ((n = (n + Math.imul(L, it)) | 0) + Math.imul(N, rt)) | 0), + (o = (o + Math.imul(N, it)) | 0), + (i = (i + Math.imul(j, ot)) | 0), + (n = + ((n = (n + Math.imul(j, at)) | 0) + Math.imul(P, ot)) | 0), + (o = (o + Math.imul(P, at)) | 0), + (i = (i + Math.imul(B, ft)) | 0), + (n = + ((n = (n + Math.imul(B, ut)) | 0) + Math.imul(R, ft)) | 0), + (o = (o + Math.imul(R, ut)) | 0), + (i = (i + Math.imul(k, ct)) | 0), + (n = + ((n = (n + Math.imul(k, dt)) | 0) + Math.imul(x, ct)) | 0), + (o = (o + Math.imul(x, dt)) | 0); + var Bt = + (((u + (i = (i + Math.imul(S, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(S, bt)) | 0) + Math.imul(E, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(E, bt)) | 0) + (n >>> 13)) | 0) + + (Bt >>> 26)) | + 0), + (Bt &= 67108863), + (i = Math.imul(U, rt)), + (n = ((n = Math.imul(U, it)) + Math.imul(D, rt)) | 0), + (o = Math.imul(D, it)), + (i = (i + Math.imul(L, ot)) | 0), + (n = + ((n = (n + Math.imul(L, at)) | 0) + Math.imul(N, ot)) | 0), + (o = (o + Math.imul(N, at)) | 0), + (i = (i + Math.imul(j, ft)) | 0), + (n = + ((n = (n + Math.imul(j, ut)) | 0) + Math.imul(P, ft)) | 0), + (o = (o + Math.imul(P, ut)) | 0), + (i = (i + Math.imul(B, ct)) | 0), + (n = + ((n = (n + Math.imul(B, dt)) | 0) + Math.imul(R, ct)) | 0), + (o = (o + Math.imul(R, dt)) | 0); + var Rt = + (((u + (i = (i + Math.imul(k, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(k, bt)) | 0) + Math.imul(x, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(x, bt)) | 0) + (n >>> 13)) | 0) + + (Rt >>> 26)) | + 0), + (Rt &= 67108863), + (i = Math.imul(U, ot)), + (n = ((n = Math.imul(U, at)) + Math.imul(D, ot)) | 0), + (o = Math.imul(D, at)), + (i = (i + Math.imul(L, ft)) | 0), + (n = + ((n = (n + Math.imul(L, ut)) | 0) + Math.imul(N, ft)) | 0), + (o = (o + Math.imul(N, ut)) | 0), + (i = (i + Math.imul(j, ct)) | 0), + (n = + ((n = (n + Math.imul(j, dt)) | 0) + Math.imul(P, ct)) | 0), + (o = (o + Math.imul(P, dt)) | 0); + var Ot = + (((u + (i = (i + Math.imul(B, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(B, bt)) | 0) + Math.imul(R, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(R, bt)) | 0) + (n >>> 13)) | 0) + + (Ot >>> 26)) | + 0), + (Ot &= 67108863), + (i = Math.imul(U, ft)), + (n = ((n = Math.imul(U, ut)) + Math.imul(D, ft)) | 0), + (o = Math.imul(D, ut)), + (i = (i + Math.imul(L, ct)) | 0), + (n = + ((n = (n + Math.imul(L, dt)) | 0) + Math.imul(N, ct)) | 0), + (o = (o + Math.imul(N, dt)) | 0); + var jt = + (((u + (i = (i + Math.imul(j, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(j, bt)) | 0) + Math.imul(P, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(P, bt)) | 0) + (n >>> 13)) | 0) + + (jt >>> 26)) | + 0), + (jt &= 67108863), + (i = Math.imul(U, ct)), + (n = ((n = Math.imul(U, dt)) + Math.imul(D, ct)) | 0), + (o = Math.imul(D, dt)); + var Pt = + (((u + (i = (i + Math.imul(L, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(L, bt)) | 0) + Math.imul(N, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(N, bt)) | 0) + (n >>> 13)) | 0) + + (Pt >>> 26)) | + 0), + (Pt &= 67108863); + var Tt = + (((u + (i = Math.imul(U, pt))) | 0) + + ((8191 & + (n = ((n = Math.imul(U, bt)) + Math.imul(D, pt)) | 0)) << + 13)) | + 0; + return ( + (u = + ((((o = Math.imul(D, bt)) + (n >>> 13)) | 0) + + (Tt >>> 26)) | + 0), + (Tt &= 67108863), + (f[0] = yt), + (f[1] = mt), + (f[2] = gt), + (f[3] = vt), + (f[4] = wt), + (f[5] = _t), + (f[6] = Mt), + (f[7] = St), + (f[8] = Et), + (f[9] = At), + (f[10] = kt), + (f[11] = xt), + (f[12] = It), + (f[13] = Bt), + (f[14] = Rt), + (f[15] = Ot), + (f[16] = jt), + (f[17] = Pt), + (f[18] = Tt), + 0 !== u && ((f[19] = u), r.length++), + r + ); + }; + function m(t, e, r) { + (r.negative = e.negative ^ t.negative), + (r.length = t.length + e.length); + for (var i = 0, n = 0, o = 0; o < r.length - 1; o++) { + var a = n; + n = 0; + for ( + var s = 67108863 & i, + f = Math.min(o, e.length - 1), + u = Math.max(0, o - t.length + 1); + u <= f; + u++ + ) { + var h = o - u, + c = (0 | t.words[h]) * (0 | e.words[u]), + d = 67108863 & c; + (s = 67108863 & (d = (d + s) | 0)), + (n += + (a = + ((a = (a + ((c / 67108864) | 0)) | 0) + (d >>> 26)) | + 0) >>> 26), + (a &= 67108863); + } + (r.words[o] = s), (i = a), (a = n); + } + return 0 !== i ? (r.words[o] = i) : r.length--, r._strip(); + } + function g(t, e, r) { + return m(t, e, r); + } + function v(t, e) { + (this.x = t), (this.y = e); + } + Math.imul || (y = b), + (o.prototype.mulTo = function (t, e) { + var r = this.length + t.length; + return 10 === this.length && 10 === t.length + ? y(this, t, e) + : r < 63 + ? b(this, t, e) + : r < 1024 + ? m(this, t, e) + : g(this, t, e); + }), + (v.prototype.makeRBT = function (t) { + for ( + var e = new Array(t), + r = o.prototype._countBits(t) - 1, + i = 0; + i < t; + i++ + ) + e[i] = this.revBin(i, r, t); + return e; + }), + (v.prototype.revBin = function (t, e, r) { + if (0 === t || t === r - 1) return t; + for (var i = 0, n = 0; n < e; n++) + (i |= (1 & t) << (e - n - 1)), (t >>= 1); + return i; + }), + (v.prototype.permute = function (t, e, r, i, n, o) { + for (var a = 0; a < o; a++) + (i[a] = e[t[a]]), (n[a] = r[t[a]]); + }), + (v.prototype.transform = function (t, e, r, i, n, o) { + this.permute(o, t, e, r, i, n); + for (var a = 1; a < n; a <<= 1) + for ( + var s = a << 1, + f = Math.cos((2 * Math.PI) / s), + u = Math.sin((2 * Math.PI) / s), + h = 0; + h < n; + h += s + ) + for (var c = f, d = u, l = 0; l < a; l++) { + var p = r[h + l], + b = i[h + l], + y = r[h + l + a], + m = i[h + l + a], + g = c * y - d * m; + (m = c * m + d * y), + (y = g), + (r[h + l] = p + y), + (i[h + l] = b + m), + (r[h + l + a] = p - y), + (i[h + l + a] = b - m), + l !== s && + ((g = f * c - u * d), (d = f * d + u * c), (c = g)); + } + }), + (v.prototype.guessLen13b = function (t, e) { + var r = 1 | Math.max(e, t), + i = 1 & r, + n = 0; + for (r = (r / 2) | 0; r; r >>>= 1) n++; + return 1 << (n + 1 + i); + }), + (v.prototype.conjugate = function (t, e, r) { + if (!(r <= 1)) + for (var i = 0; i < r / 2; i++) { + var n = t[i]; + (t[i] = t[r - i - 1]), + (t[r - i - 1] = n), + (n = e[i]), + (e[i] = -e[r - i - 1]), + (e[r - i - 1] = -n); + } + }), + (v.prototype.normalize13b = function (t, e) { + for (var r = 0, i = 0; i < e / 2; i++) { + var n = + 8192 * Math.round(t[2 * i + 1] / e) + + Math.round(t[2 * i] / e) + + r; + (t[i] = 67108863 & n), + (r = n < 67108864 ? 0 : (n / 67108864) | 0); + } + return t; + }), + (v.prototype.convert13b = function (t, e, r, n) { + for (var o = 0, a = 0; a < e; a++) + (o += 0 | t[a]), + (r[2 * a] = 8191 & o), + (o >>>= 13), + (r[2 * a + 1] = 8191 & o), + (o >>>= 13); + for (a = 2 * e; a < n; ++a) r[a] = 0; + i(0 === o), i(0 == (-8192 & o)); + }), + (v.prototype.stub = function (t) { + for (var e = new Array(t), r = 0; r < t; r++) e[r] = 0; + return e; + }), + (v.prototype.mulp = function (t, e, r) { + var i = 2 * this.guessLen13b(t.length, e.length), + n = this.makeRBT(i), + o = this.stub(i), + a = new Array(i), + s = new Array(i), + f = new Array(i), + u = new Array(i), + h = new Array(i), + c = new Array(i), + d = r.words; + (d.length = i), + this.convert13b(t.words, t.length, a, i), + this.convert13b(e.words, e.length, u, i), + this.transform(a, o, s, f, i, n), + this.transform(u, o, h, c, i, n); + for (var l = 0; l < i; l++) { + var p = s[l] * h[l] - f[l] * c[l]; + (f[l] = s[l] * c[l] + f[l] * h[l]), (s[l] = p); + } + return ( + this.conjugate(s, f, i), + this.transform(s, f, d, o, i, n), + this.conjugate(d, o, i), + this.normalize13b(d, i), + (r.negative = t.negative ^ e.negative), + (r.length = t.length + e.length), + r._strip() + ); + }), + (o.prototype.mul = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), + this.mulTo(t, e) + ); + }), + (o.prototype.mulf = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), g(this, t, e) + ); + }), + (o.prototype.imul = function (t) { + return this.clone().mulTo(t, this); + }), + (o.prototype.imuln = function (t) { + var e = t < 0; + e && (t = -t), i("number" == typeof t), i(t < 67108864); + for (var r = 0, n = 0; n < this.length; n++) { + var o = (0 | this.words[n]) * t, + a = (67108863 & o) + (67108863 & r); + (r >>= 26), + (r += (o / 67108864) | 0), + (r += a >>> 26), + (this.words[n] = 67108863 & a); + } + return ( + 0 !== r && ((this.words[n] = r), this.length++), + e ? this.ineg() : this + ); + }), + (o.prototype.muln = function (t) { + return this.clone().imuln(t); + }), + (o.prototype.sqr = function () { + return this.mul(this); + }), + (o.prototype.isqr = function () { + return this.imul(this.clone()); + }), + (o.prototype.pow = function (t) { + var e = (function (t) { + for ( + var e = new Array(t.bitLength()), r = 0; + r < e.length; + r++ + ) { + var i = (r / 26) | 0, + n = r % 26; + e[r] = (t.words[i] >>> n) & 1; + } + return e; + })(t); + if (0 === e.length) return new o(1); + for ( + var r = this, i = 0; + i < e.length && 0 === e[i]; + i++, r = r.sqr() + ); + if (++i < e.length) + for (var n = r.sqr(); i < e.length; i++, n = n.sqr()) + 0 !== e[i] && (r = r.mul(n)); + return r; + }), + (o.prototype.iushln = function (t) { + i("number" == typeof t && t >= 0); + var e, + r = t % 26, + n = (t - r) / 26, + o = (67108863 >>> (26 - r)) << (26 - r); + if (0 !== r) { + var a = 0; + for (e = 0; e < this.length; e++) { + var s = this.words[e] & o, + f = ((0 | this.words[e]) - s) << r; + (this.words[e] = f | a), (a = s >>> (26 - r)); + } + a && ((this.words[e] = a), this.length++); + } + if (0 !== n) { + for (e = this.length - 1; e >= 0; e--) + this.words[e + n] = this.words[e]; + for (e = 0; e < n; e++) this.words[e] = 0; + this.length += n; + } + return this._strip(); + }), + (o.prototype.ishln = function (t) { + return i(0 === this.negative), this.iushln(t); + }), + (o.prototype.iushrn = function (t, e, r) { + var n; + i("number" == typeof t && t >= 0), + (n = e ? (e - (e % 26)) / 26 : 0); + var o = t % 26, + a = Math.min((t - o) / 26, this.length), + s = 67108863 ^ ((67108863 >>> o) << o), + f = r; + if (((n -= a), (n = Math.max(0, n)), f)) { + for (var u = 0; u < a; u++) f.words[u] = this.words[u]; + f.length = a; + } + if (0 === a); + else if (this.length > a) + for (this.length -= a, u = 0; u < this.length; u++) + this.words[u] = this.words[u + a]; + else (this.words[0] = 0), (this.length = 1); + var h = 0; + for ( + u = this.length - 1; + u >= 0 && (0 !== h || u >= n); + u-- + ) { + var c = 0 | this.words[u]; + (this.words[u] = (h << (26 - o)) | (c >>> o)), (h = c & s); + } + return ( + f && 0 !== h && (f.words[f.length++] = h), + 0 === this.length && + ((this.words[0] = 0), (this.length = 1)), + this._strip() + ); + }), + (o.prototype.ishrn = function (t, e, r) { + return i(0 === this.negative), this.iushrn(t, e, r); + }), + (o.prototype.shln = function (t) { + return this.clone().ishln(t); + }), + (o.prototype.ushln = function (t) { + return this.clone().iushln(t); + }), + (o.prototype.shrn = function (t) { + return this.clone().ishrn(t); + }), + (o.prototype.ushrn = function (t) { + return this.clone().iushrn(t); + }), + (o.prototype.testn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + return !(this.length <= r || !(this.words[r] & n)); + }), + (o.prototype.imaskn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26; + if ( + (i( + 0 === this.negative, + "imaskn works only with positive numbers" + ), + this.length <= r) + ) + return this; + if ( + (0 !== e && r++, + (this.length = Math.min(r, this.length)), + 0 !== e) + ) { + var n = 67108863 ^ ((67108863 >>> e) << e); + this.words[this.length - 1] &= n; + } + return this._strip(); + }), + (o.prototype.maskn = function (t) { + return this.clone().imaskn(t); + }), + (o.prototype.iaddn = function (t) { + return ( + i("number" == typeof t), + i(t < 67108864), + t < 0 + ? this.isubn(-t) + : 0 !== this.negative + ? 1 === this.length && (0 | this.words[0]) <= t + ? ((this.words[0] = t - (0 | this.words[0])), + (this.negative = 0), + this) + : ((this.negative = 0), + this.isubn(t), + (this.negative = 1), + this) + : this._iaddn(t) + ); + }), + (o.prototype._iaddn = function (t) { + this.words[0] += t; + for ( + var e = 0; + e < this.length && this.words[e] >= 67108864; + e++ + ) + (this.words[e] -= 67108864), + e === this.length - 1 + ? (this.words[e + 1] = 1) + : this.words[e + 1]++; + return (this.length = Math.max(this.length, e + 1)), this; + }), + (o.prototype.isubn = function (t) { + if ((i("number" == typeof t), i(t < 67108864), t < 0)) + return this.iaddn(-t); + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iaddn(t), + (this.negative = 1), + this + ); + if ( + ((this.words[0] -= t), + 1 === this.length && this.words[0] < 0) + ) + (this.words[0] = -this.words[0]), (this.negative = 1); + else + for (var e = 0; e < this.length && this.words[e] < 0; e++) + (this.words[e] += 67108864), (this.words[e + 1] -= 1); + return this._strip(); + }), + (o.prototype.addn = function (t) { + return this.clone().iaddn(t); + }), + (o.prototype.subn = function (t) { + return this.clone().isubn(t); + }), + (o.prototype.iabs = function () { + return (this.negative = 0), this; + }), + (o.prototype.abs = function () { + return this.clone().iabs(); + }), + (o.prototype._ishlnsubmul = function (t, e, r) { + var n, + o, + a = t.length + r; + this._expand(a); + var s = 0; + for (n = 0; n < t.length; n++) { + o = (0 | this.words[n + r]) + s; + var f = (0 | t.words[n]) * e; + (s = ((o -= 67108863 & f) >> 26) - ((f / 67108864) | 0)), + (this.words[n + r] = 67108863 & o); + } + for (; n < this.length - r; n++) + (s = (o = (0 | this.words[n + r]) + s) >> 26), + (this.words[n + r] = 67108863 & o); + if (0 === s) return this._strip(); + for (i(-1 === s), s = 0, n = 0; n < this.length; n++) + (s = (o = -(0 | this.words[n]) + s) >> 26), + (this.words[n] = 67108863 & o); + return (this.negative = 1), this._strip(); + }), + (o.prototype._wordDiv = function (t, e) { + var r = (this.length, t.length), + i = this.clone(), + n = t, + a = 0 | n.words[n.length - 1]; + 0 != (r = 26 - this._countBits(a)) && + ((n = n.ushln(r)), + i.iushln(r), + (a = 0 | n.words[n.length - 1])); + var s, + f = i.length - n.length; + if ("mod" !== e) { + ((s = new o(null)).length = f + 1), + (s.words = new Array(s.length)); + for (var u = 0; u < s.length; u++) s.words[u] = 0; + } + var h = i.clone()._ishlnsubmul(n, 1, f); + 0 === h.negative && ((i = h), s && (s.words[f] = 1)); + for (var c = f - 1; c >= 0; c--) { + var d = + 67108864 * (0 | i.words[n.length + c]) + + (0 | i.words[n.length + c - 1]); + for ( + d = Math.min((d / a) | 0, 67108863), + i._ishlnsubmul(n, d, c); + 0 !== i.negative; + + ) + d--, + (i.negative = 0), + i._ishlnsubmul(n, 1, c), + i.isZero() || (i.negative ^= 1); + s && (s.words[c] = d); + } + return ( + s && s._strip(), + i._strip(), + "div" !== e && 0 !== r && i.iushrn(r), + { div: s || null, mod: i } + ); + }), + (o.prototype.divmod = function (t, e, r) { + return ( + i(!t.isZero()), + this.isZero() + ? { div: new o(0), mod: new o(0) } + : 0 !== this.negative && 0 === t.negative + ? ((s = this.neg().divmod(t, e)), + "mod" !== e && (n = s.div.neg()), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.iadd(t)), + { div: n, mod: a }) + : 0 === this.negative && 0 !== t.negative + ? ((s = this.divmod(t.neg(), e)), + "mod" !== e && (n = s.div.neg()), + { div: n, mod: s.mod }) + : 0 != (this.negative & t.negative) + ? ((s = this.neg().divmod(t.neg(), e)), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.isub(t)), + { div: s.div, mod: a }) + : t.length > this.length || this.cmp(t) < 0 + ? { div: new o(0), mod: this } + : 1 === t.length + ? "div" === e + ? { div: this.divn(t.words[0]), mod: null } + : "mod" === e + ? { div: null, mod: new o(this.modrn(t.words[0])) } + : { + div: this.divn(t.words[0]), + mod: new o(this.modrn(t.words[0])), + } + : this._wordDiv(t, e) + ); + var n, a, s; + }), + (o.prototype.div = function (t) { + return this.divmod(t, "div", !1).div; + }), + (o.prototype.mod = function (t) { + return this.divmod(t, "mod", !1).mod; + }), + (o.prototype.umod = function (t) { + return this.divmod(t, "mod", !0).mod; + }), + (o.prototype.divRound = function (t) { + var e = this.divmod(t); + if (e.mod.isZero()) return e.div; + var r = 0 !== e.div.negative ? e.mod.isub(t) : e.mod, + i = t.ushrn(1), + n = t.andln(1), + o = r.cmp(i); + return o < 0 || (1 === n && 0 === o) + ? e.div + : 0 !== e.div.negative + ? e.div.isubn(1) + : e.div.iaddn(1); + }), + (o.prototype.modrn = function (t) { + var e = t < 0; + e && (t = -t), i(t <= 67108863); + for ( + var r = (1 << 26) % t, n = 0, o = this.length - 1; + o >= 0; + o-- + ) + n = (r * n + (0 | this.words[o])) % t; + return e ? -n : n; + }), + (o.prototype.modn = function (t) { + return this.modrn(t); + }), + (o.prototype.idivn = function (t) { + var e = t < 0; + e && (t = -t), i(t <= 67108863); + for (var r = 0, n = this.length - 1; n >= 0; n--) { + var o = (0 | this.words[n]) + 67108864 * r; + (this.words[n] = (o / t) | 0), (r = o % t); + } + return this._strip(), e ? this.ineg() : this; + }), + (o.prototype.divn = function (t) { + return this.clone().idivn(t); + }), + (o.prototype.egcd = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n = new o(1), + a = new o(0), + s = new o(0), + f = new o(1), + u = 0; + e.isEven() && r.isEven(); + + ) + e.iushrn(1), r.iushrn(1), ++u; + for (var h = r.clone(), c = e.clone(); !e.isZero(); ) { + for ( + var d = 0, l = 1; + 0 == (e.words[0] & l) && d < 26; + ++d, l <<= 1 + ); + if (d > 0) + for (e.iushrn(d); d-- > 0; ) + (n.isOdd() || a.isOdd()) && (n.iadd(h), a.isub(c)), + n.iushrn(1), + a.iushrn(1); + for ( + var p = 0, b = 1; + 0 == (r.words[0] & b) && p < 26; + ++p, b <<= 1 + ); + if (p > 0) + for (r.iushrn(p); p-- > 0; ) + (s.isOdd() || f.isOdd()) && (s.iadd(h), f.isub(c)), + s.iushrn(1), + f.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), n.isub(s), a.isub(f)) + : (r.isub(e), s.isub(n), f.isub(a)); + } + return { a: s, b: f, gcd: r.iushln(u) }; + }), + (o.prototype._invmp = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n, a = new o(1), s = new o(0), f = r.clone(); + e.cmpn(1) > 0 && r.cmpn(1) > 0; + + ) { + for ( + var u = 0, h = 1; + 0 == (e.words[0] & h) && u < 26; + ++u, h <<= 1 + ); + if (u > 0) + for (e.iushrn(u); u-- > 0; ) + a.isOdd() && a.iadd(f), a.iushrn(1); + for ( + var c = 0, d = 1; + 0 == (r.words[0] & d) && c < 26; + ++c, d <<= 1 + ); + if (c > 0) + for (r.iushrn(c); c-- > 0; ) + s.isOdd() && s.iadd(f), s.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), a.isub(s)) + : (r.isub(e), s.isub(a)); + } + return ( + (n = 0 === e.cmpn(1) ? a : s).cmpn(0) < 0 && n.iadd(t), n + ); + }), + (o.prototype.gcd = function (t) { + if (this.isZero()) return t.abs(); + if (t.isZero()) return this.abs(); + var e = this.clone(), + r = t.clone(); + (e.negative = 0), (r.negative = 0); + for (var i = 0; e.isEven() && r.isEven(); i++) + e.iushrn(1), r.iushrn(1); + for (;;) { + for (; e.isEven(); ) e.iushrn(1); + for (; r.isEven(); ) r.iushrn(1); + var n = e.cmp(r); + if (n < 0) { + var o = e; + (e = r), (r = o); + } else if (0 === n || 0 === r.cmpn(1)) break; + e.isub(r); + } + return r.iushln(i); + }), + (o.prototype.invm = function (t) { + return this.egcd(t).a.umod(t); + }), + (o.prototype.isEven = function () { + return 0 == (1 & this.words[0]); + }), + (o.prototype.isOdd = function () { + return 1 == (1 & this.words[0]); + }), + (o.prototype.andln = function (t) { + return this.words[0] & t; + }), + (o.prototype.bincn = function (t) { + i("number" == typeof t); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + if (this.length <= r) + return this._expand(r + 1), (this.words[r] |= n), this; + for (var o = n, a = r; 0 !== o && a < this.length; a++) { + var s = 0 | this.words[a]; + (o = (s += o) >>> 26), (s &= 67108863), (this.words[a] = s); + } + return 0 !== o && ((this.words[a] = o), this.length++), this; + }), + (o.prototype.isZero = function () { + return 1 === this.length && 0 === this.words[0]; + }), + (o.prototype.cmpn = function (t) { + var e, + r = t < 0; + if (0 !== this.negative && !r) return -1; + if (0 === this.negative && r) return 1; + if ((this._strip(), this.length > 1)) e = 1; + else { + r && (t = -t), i(t <= 67108863, "Number is too big"); + var n = 0 | this.words[0]; + e = n === t ? 0 : n < t ? -1 : 1; + } + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.cmp = function (t) { + if (0 !== this.negative && 0 === t.negative) return -1; + if (0 === this.negative && 0 !== t.negative) return 1; + var e = this.ucmp(t); + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.ucmp = function (t) { + if (this.length > t.length) return 1; + if (this.length < t.length) return -1; + for (var e = 0, r = this.length - 1; r >= 0; r--) { + var i = 0 | this.words[r], + n = 0 | t.words[r]; + if (i !== n) { + i < n ? (e = -1) : i > n && (e = 1); + break; + } + } + return e; + }), + (o.prototype.gtn = function (t) { + return 1 === this.cmpn(t); + }), + (o.prototype.gt = function (t) { + return 1 === this.cmp(t); + }), + (o.prototype.gten = function (t) { + return this.cmpn(t) >= 0; + }), + (o.prototype.gte = function (t) { + return this.cmp(t) >= 0; + }), + (o.prototype.ltn = function (t) { + return -1 === this.cmpn(t); + }), + (o.prototype.lt = function (t) { + return -1 === this.cmp(t); + }), + (o.prototype.lten = function (t) { + return this.cmpn(t) <= 0; + }), + (o.prototype.lte = function (t) { + return this.cmp(t) <= 0; + }), + (o.prototype.eqn = function (t) { + return 0 === this.cmpn(t); + }), + (o.prototype.eq = function (t) { + return 0 === this.cmp(t); + }), + (o.red = function (t) { + return new k(t); + }), + (o.prototype.toRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + i(0 === this.negative, "red works only with positives"), + t.convertTo(this)._forceRed(t) + ); + }), + (o.prototype.fromRed = function () { + return ( + i( + this.red, + "fromRed works only with numbers in reduction context" + ), + this.red.convertFrom(this) + ); + }), + (o.prototype._forceRed = function (t) { + return (this.red = t), this; + }), + (o.prototype.forceRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + this._forceRed(t) + ); + }), + (o.prototype.redAdd = function (t) { + return ( + i(this.red, "redAdd works only with red numbers"), + this.red.add(this, t) + ); + }), + (o.prototype.redIAdd = function (t) { + return ( + i(this.red, "redIAdd works only with red numbers"), + this.red.iadd(this, t) + ); + }), + (o.prototype.redSub = function (t) { + return ( + i(this.red, "redSub works only with red numbers"), + this.red.sub(this, t) + ); + }), + (o.prototype.redISub = function (t) { + return ( + i(this.red, "redISub works only with red numbers"), + this.red.isub(this, t) + ); + }), + (o.prototype.redShl = function (t) { + return ( + i(this.red, "redShl works only with red numbers"), + this.red.shl(this, t) + ); + }), + (o.prototype.redMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.mul(this, t) + ); + }), + (o.prototype.redIMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.imul(this, t) + ); + }), + (o.prototype.redSqr = function () { + return ( + i(this.red, "redSqr works only with red numbers"), + this.red._verify1(this), + this.red.sqr(this) + ); + }), + (o.prototype.redISqr = function () { + return ( + i(this.red, "redISqr works only with red numbers"), + this.red._verify1(this), + this.red.isqr(this) + ); + }), + (o.prototype.redSqrt = function () { + return ( + i(this.red, "redSqrt works only with red numbers"), + this.red._verify1(this), + this.red.sqrt(this) + ); + }), + (o.prototype.redInvm = function () { + return ( + i(this.red, "redInvm works only with red numbers"), + this.red._verify1(this), + this.red.invm(this) + ); + }), + (o.prototype.redNeg = function () { + return ( + i(this.red, "redNeg works only with red numbers"), + this.red._verify1(this), + this.red.neg(this) + ); + }), + (o.prototype.redPow = function (t) { + return ( + i(this.red && !t.red, "redPow(normalNum)"), + this.red._verify1(this), + this.red.pow(this, t) + ); + }); + var w = { k256: null, p224: null, p192: null, p25519: null }; + function _(t, e) { + (this.name = t), + (this.p = new o(e, 16)), + (this.n = this.p.bitLength()), + (this.k = new o(1).iushln(this.n).isub(this.p)), + (this.tmp = this._tmp()); + } + function M() { + _.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + function S() { + _.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + function E() { + _.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + function A() { + _.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + function k(t) { + if ("string" == typeof t) { + var e = o._prime(t); + (this.m = e.p), (this.prime = e); + } else + i(t.gtn(1), "modulus must be greater than 1"), + (this.m = t), + (this.prime = null); + } + function x(t) { + k.call(this, t), + (this.shift = this.m.bitLength()), + this.shift % 26 != 0 && + (this.shift += 26 - (this.shift % 26)), + (this.r = new o(1).iushln(this.shift)), + (this.r2 = this.imod(this.r.sqr())), + (this.rinv = this.r._invmp(this.m)), + (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), + (this.minv = this.minv.umod(this.r)), + (this.minv = this.r.sub(this.minv)); + } + (_.prototype._tmp = function () { + var t = new o(null); + return (t.words = new Array(Math.ceil(this.n / 13))), t; + }), + (_.prototype.ireduce = function (t) { + var e, + r = t; + do { + this.split(r, this.tmp), + (e = (r = (r = this.imulK(r)).iadd( + this.tmp + )).bitLength()); + } while (e > this.n); + var i = e < this.n ? -1 : r.ucmp(this.p); + return ( + 0 === i + ? ((r.words[0] = 0), (r.length = 1)) + : i > 0 + ? r.isub(this.p) + : void 0 !== r.strip + ? r.strip() + : r._strip(), + r + ); + }), + (_.prototype.split = function (t, e) { + t.iushrn(this.n, 0, e); + }), + (_.prototype.imulK = function (t) { + return t.imul(this.k); + }), + n(M, _), + (M.prototype.split = function (t, e) { + for ( + var r = 4194303, i = Math.min(t.length, 9), n = 0; + n < i; + n++ + ) + e.words[n] = t.words[n]; + if (((e.length = i), t.length <= 9)) + return (t.words[0] = 0), void (t.length = 1); + var o = t.words[9]; + for (e.words[e.length++] = o & r, n = 10; n < t.length; n++) { + var a = 0 | t.words[n]; + (t.words[n - 10] = ((a & r) << 4) | (o >>> 22)), (o = a); + } + (o >>>= 22), + (t.words[n - 10] = o), + 0 === o && t.length > 10 + ? (t.length -= 10) + : (t.length -= 9); + }), + (M.prototype.imulK = function (t) { + (t.words[t.length] = 0), + (t.words[t.length + 1] = 0), + (t.length += 2); + for (var e = 0, r = 0; r < t.length; r++) { + var i = 0 | t.words[r]; + (e += 977 * i), + (t.words[r] = 67108863 & e), + (e = 64 * i + ((e / 67108864) | 0)); + } + return ( + 0 === t.words[t.length - 1] && + (t.length--, 0 === t.words[t.length - 1] && t.length--), + t + ); + }), + n(S, _), + n(E, _), + n(A, _), + (A.prototype.imulK = function (t) { + for (var e = 0, r = 0; r < t.length; r++) { + var i = 19 * (0 | t.words[r]) + e, + n = 67108863 & i; + (i >>>= 26), (t.words[r] = n), (e = i); + } + return 0 !== e && (t.words[t.length++] = e), t; + }), + (o._prime = function (t) { + if (w[t]) return w[t]; + var e; + if ("k256" === t) e = new M(); + else if ("p224" === t) e = new S(); + else if ("p192" === t) e = new E(); + else { + if ("p25519" !== t) throw new Error("Unknown prime " + t); + e = new A(); + } + return (w[t] = e), e; + }), + (k.prototype._verify1 = function (t) { + i(0 === t.negative, "red works only with positives"), + i(t.red, "red works only with red numbers"); + }), + (k.prototype._verify2 = function (t, e) { + i( + 0 == (t.negative | e.negative), + "red works only with positives" + ), + i( + t.red && t.red === e.red, + "red works only with red numbers" + ); + }), + (k.prototype.imod = function (t) { + return this.prime + ? this.prime.ireduce(t)._forceRed(this) + : (h(t, t.umod(this.m)._forceRed(this)), t); + }), + (k.prototype.neg = function (t) { + return t.isZero() ? t.clone() : this.m.sub(t)._forceRed(this); + }), + (k.prototype.add = function (t, e) { + this._verify2(t, e); + var r = t.add(e); + return ( + r.cmp(this.m) >= 0 && r.isub(this.m), r._forceRed(this) + ); + }), + (k.prototype.iadd = function (t, e) { + this._verify2(t, e); + var r = t.iadd(e); + return r.cmp(this.m) >= 0 && r.isub(this.m), r; + }), + (k.prototype.sub = function (t, e) { + this._verify2(t, e); + var r = t.sub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r._forceRed(this); + }), + (k.prototype.isub = function (t, e) { + this._verify2(t, e); + var r = t.isub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r; + }), + (k.prototype.shl = function (t, e) { + return this._verify1(t), this.imod(t.ushln(e)); + }), + (k.prototype.imul = function (t, e) { + return this._verify2(t, e), this.imod(t.imul(e)); + }), + (k.prototype.mul = function (t, e) { + return this._verify2(t, e), this.imod(t.mul(e)); + }), + (k.prototype.isqr = function (t) { + return this.imul(t, t.clone()); + }), + (k.prototype.sqr = function (t) { + return this.mul(t, t); + }), + (k.prototype.sqrt = function (t) { + if (t.isZero()) return t.clone(); + var e = this.m.andln(3); + if ((i(e % 2 == 1), 3 === e)) { + var r = this.m.add(new o(1)).iushrn(2); + return this.pow(t, r); + } + for ( + var n = this.m.subn(1), a = 0; + !n.isZero() && 0 === n.andln(1); + + ) + a++, n.iushrn(1); + i(!n.isZero()); + var s = new o(1).toRed(this), + f = s.redNeg(), + u = this.m.subn(1).iushrn(1), + h = this.m.bitLength(); + for ( + h = new o(2 * h * h).toRed(this); + 0 !== this.pow(h, u).cmp(f); + + ) + h.redIAdd(f); + for ( + var c = this.pow(h, n), + d = this.pow(t, n.addn(1).iushrn(1)), + l = this.pow(t, n), + p = a; + 0 !== l.cmp(s); + + ) { + for (var b = l, y = 0; 0 !== b.cmp(s); y++) b = b.redSqr(); + i(y < p); + var m = this.pow(c, new o(1).iushln(p - y - 1)); + (d = d.redMul(m)), + (c = m.redSqr()), + (l = l.redMul(c)), + (p = y); + } + return d; + }), + (k.prototype.invm = function (t) { + var e = t._invmp(this.m); + return 0 !== e.negative + ? ((e.negative = 0), this.imod(e).redNeg()) + : this.imod(e); + }), + (k.prototype.pow = function (t, e) { + if (e.isZero()) return new o(1).toRed(this); + if (0 === e.cmpn(1)) return t.clone(); + var r = new Array(16); + (r[0] = new o(1).toRed(this)), (r[1] = t); + for (var i = 2; i < r.length; i++) + r[i] = this.mul(r[i - 1], t); + var n = r[0], + a = 0, + s = 0, + f = e.bitLength() % 26; + for (0 === f && (f = 26), i = e.length - 1; i >= 0; i--) { + for (var u = e.words[i], h = f - 1; h >= 0; h--) { + var c = (u >> h) & 1; + n !== r[0] && (n = this.sqr(n)), + 0 !== c || 0 !== a + ? ((a <<= 1), + (a |= c), + (4 == ++s || (0 === i && 0 === h)) && + ((n = this.mul(n, r[a])), (s = 0), (a = 0))) + : (s = 0); + } + f = 26; + } + return n; + }), + (k.prototype.convertTo = function (t) { + var e = t.umod(this.m); + return e === t ? e.clone() : e; + }), + (k.prototype.convertFrom = function (t) { + var e = t.clone(); + return (e.red = null), e; + }), + (o.mont = function (t) { + return new x(t); + }), + n(x, k), + (x.prototype.convertTo = function (t) { + return this.imod(t.ushln(this.shift)); + }), + (x.prototype.convertFrom = function (t) { + var e = this.imod(t.mul(this.rinv)); + return (e.red = null), e; + }), + (x.prototype.imul = function (t, e) { + if (t.isZero() || e.isZero()) + return (t.words[0] = 0), (t.length = 1), t; + var r = t.imul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + o = n; + return ( + n.cmp(this.m) >= 0 + ? (o = n.isub(this.m)) + : n.cmpn(0) < 0 && (o = n.iadd(this.m)), + o._forceRed(this) + ); + }), + (x.prototype.mul = function (t, e) { + if (t.isZero() || e.isZero()) return new o(0)._forceRed(this); + var r = t.mul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + a = n; + return ( + n.cmp(this.m) >= 0 + ? (a = n.isub(this.m)) + : n.cmpn(0) < 0 && (a = n.iadd(this.m)), + a._forceRed(this) + ); + }), + (x.prototype.invm = function (t) { + return this.imod(t._invmp(this.m).mul(this.r2))._forceRed( + this + ); + }); + })((t = r.nmd(t)), this); + }, + 6042: (t, e, r) => { + t.exports = r(5207); + }, + 4743: (t, e, r) => { + var i = r(9509).Buffer, + n = r(3482), + o = r(8473), + a = r(5717), + s = r(2957), + f = r(7753), + u = r(5207); + function h(t) { + o.Writable.call(this); + var e = u[t]; + if (!e) throw new Error("Unknown message digest"); + (this._hashType = e.hash), + (this._hash = n(e.hash)), + (this._tag = e.id), + (this._signType = e.sign); + } + function c(t) { + o.Writable.call(this); + var e = u[t]; + if (!e) throw new Error("Unknown message digest"); + (this._hash = n(e.hash)), + (this._tag = e.id), + (this._signType = e.sign); + } + function d(t) { + return new h(t); + } + function l(t) { + return new c(t); + } + Object.keys(u).forEach(function (t) { + (u[t].id = i.from(u[t].id, "hex")), (u[t.toLowerCase()] = u[t]); + }), + a(h, o.Writable), + (h.prototype._write = function (t, e, r) { + this._hash.update(t), r(); + }), + (h.prototype.update = function (t, e) { + return ( + "string" == typeof t && (t = i.from(t, e)), + this._hash.update(t), + this + ); + }), + (h.prototype.sign = function (t, e) { + this.end(); + var r = this._hash.digest(), + i = s(r, t, this._hashType, this._signType, this._tag); + return e ? i.toString(e) : i; + }), + a(c, o.Writable), + (c.prototype._write = function (t, e, r) { + this._hash.update(t), r(); + }), + (c.prototype.update = function (t, e) { + return ( + "string" == typeof t && (t = i.from(t, e)), + this._hash.update(t), + this + ); + }), + (c.prototype.verify = function (t, e, r) { + "string" == typeof e && (e = i.from(e, r)), this.end(); + var n = this._hash.digest(); + return f(e, n, t, this._signType, this._tag); + }), + (t.exports = { + Sign: d, + Verify: l, + createSign: d, + createVerify: l, + }); + }, + 2957: (t, e, r) => { + var i = r(9509).Buffer, + n = r(8355), + o = r(3663), + a = r(6266).ec, + s = r(8815), + f = r(980), + u = r(1308); + function h(t, e, r, o) { + if ((t = i.from(t.toArray())).length < e.byteLength()) { + var a = i.alloc(e.byteLength() - t.length); + t = i.concat([a, t]); + } + var s = r.length, + f = (function (t, e) { + t = (t = c(t, e)).mod(e); + var r = i.from(t.toArray()); + if (r.length < e.byteLength()) { + var n = i.alloc(e.byteLength() - r.length); + r = i.concat([n, r]); + } + return r; + })(r, e), + u = i.alloc(s); + u.fill(1); + var h = i.alloc(s); + return ( + (h = n(o, h) + .update(u) + .update(i.from([0])) + .update(t) + .update(f) + .digest()), + (u = n(o, h).update(u).digest()), + { + k: (h = n(o, h) + .update(u) + .update(i.from([1])) + .update(t) + .update(f) + .digest()), + v: (u = n(o, h).update(u).digest()), + } + ); + } + function c(t, e) { + var r = new s(t), + i = (t.length << 3) - e.bitLength(); + return i > 0 && r.ishrn(i), r; + } + function d(t, e, r) { + var o, a; + do { + for (o = i.alloc(0); 8 * o.length < t.bitLength(); ) + (e.v = n(r, e.k).update(e.v).digest()), + (o = i.concat([o, e.v])); + (a = c(o, t)), + (e.k = n(r, e.k) + .update(e.v) + .update(i.from([0])) + .digest()), + (e.v = n(r, e.k).update(e.v).digest()); + } while (-1 !== a.cmp(t)); + return a; + } + function l(t, e, r, i) { + return t.toRed(s.mont(r)).redPow(e).fromRed().mod(i); + } + (t.exports = function (t, e, r, n, p) { + var b = f(e); + if (b.curve) { + if ("ecdsa" !== n && "ecdsa/rsa" !== n) + throw new Error("wrong private key type"); + return (function (t, e) { + var r = u[e.curve.join(".")]; + if (!r) throw new Error("unknown curve " + e.curve.join(".")); + var n = new a(r).keyFromPrivate(e.privateKey).sign(t); + return i.from(n.toDER()); + })(t, b); + } + if ("dsa" === b.type) { + if ("dsa" !== n) throw new Error("wrong private key type"); + return (function (t, e, r) { + for ( + var n, + o = e.params.priv_key, + a = e.params.p, + f = e.params.q, + u = e.params.g, + p = new s(0), + b = c(t, f).mod(f), + y = !1, + m = h(o, f, t, r); + !1 === y; + + ) + (p = l(u, (n = d(f, m, r)), a, f)), + 0 === + (y = n + .invm(f) + .imul(b.add(o.mul(p))) + .mod(f)).cmpn(0) && ((y = !1), (p = new s(0))); + return (function (t, e) { + (t = t.toArray()), + (e = e.toArray()), + 128 & t[0] && (t = [0].concat(t)), + 128 & e[0] && (e = [0].concat(e)); + var r = [48, t.length + e.length + 4, 2, t.length]; + return (r = r.concat(t, [2, e.length], e)), i.from(r); + })(p, y); + })(t, b, r); + } + if ("rsa" !== n && "ecdsa/rsa" !== n) + throw new Error("wrong private key type"); + t = i.concat([p, t]); + for ( + var y = b.modulus.byteLength(), m = [0, 1]; + t.length + m.length + 1 < y; + + ) + m.push(255); + m.push(0); + for (var g = -1; ++g < t.length; ) m.push(t[g]); + return o(m, b); + }), + (t.exports.getKey = h), + (t.exports.makeKey = d); + }, + 7753: (t, e, r) => { + var i = r(9509).Buffer, + n = r(8815), + o = r(6266).ec, + a = r(980), + s = r(1308); + function f(t, e) { + if (t.cmpn(0) <= 0) throw new Error("invalid sig"); + if (t.cmp(e) >= e) throw new Error("invalid sig"); + } + t.exports = function (t, e, r, u, h) { + var c = a(r); + if ("ec" === c.type) { + if ("ecdsa" !== u && "ecdsa/rsa" !== u) + throw new Error("wrong public key type"); + return (function (t, e, r) { + var i = s[r.data.algorithm.curve.join(".")]; + if (!i) + throw new Error( + "unknown curve " + r.data.algorithm.curve.join(".") + ); + var n = new o(i), + a = r.data.subjectPrivateKey.data; + return n.verify(e, t, a); + })(t, e, c); + } + if ("dsa" === c.type) { + if ("dsa" !== u) throw new Error("wrong public key type"); + return (function (t, e, r) { + var i = r.data.p, + o = r.data.q, + s = r.data.g, + u = r.data.pub_key, + h = a.signature.decode(t, "der"), + c = h.s, + d = h.r; + f(c, o), f(d, o); + var l = n.mont(i), + p = c.invm(o); + return ( + 0 === + s + .toRed(l) + .redPow(new n(e).mul(p).mod(o)) + .fromRed() + .mul(u.toRed(l).redPow(d.mul(p).mod(o)).fromRed()) + .mod(i) + .mod(o) + .cmp(d) + ); + })(t, e, c); + } + if ("rsa" !== u && "ecdsa/rsa" !== u) + throw new Error("wrong public key type"); + e = i.concat([h, e]); + for ( + var d = c.modulus.byteLength(), l = [1], p = 0; + e.length + l.length + 2 < d; + + ) + l.push(255), p++; + l.push(0); + for (var b = -1; ++b < e.length; ) l.push(e[b]); + l = i.from(l); + var y = n.mont(c.modulus); + (t = (t = new n(t).toRed(y)).redPow(new n(c.publicExponent))), + (t = i.from(t.fromRed().toArray())); + var m = p < 8 ? 1 : 0; + for ( + d = Math.min(t.length, l.length), + t.length !== l.length && (m = 1), + b = -1; + ++b < d; + + ) + m |= t[b] ^ l[b]; + return 0 === m; + }; + }, + 8815: function (t, e, r) { + !(function (t, e) { + "use strict"; + function i(t, e) { + if (!t) throw new Error(e || "Assertion failed"); + } + function n(t, e) { + t.super_ = e; + var r = function () {}; + (r.prototype = e.prototype), + (t.prototype = new r()), + (t.prototype.constructor = t); + } + function o(t, e, r) { + if (o.isBN(t)) return t; + (this.negative = 0), + (this.words = null), + (this.length = 0), + (this.red = null), + null !== t && + (("le" !== e && "be" !== e) || ((r = e), (e = 10)), + this._init(t || 0, e || 10, r || "be")); + } + var a; + "object" == typeof t ? (t.exports = o) : (e.BN = o), + (o.BN = o), + (o.wordSize = 26); + try { + a = + "undefined" != typeof window && void 0 !== window.Buffer + ? window.Buffer + : r(2363).Buffer; + } catch (t) {} + function s(t, e) { + var r = t.charCodeAt(e); + return r >= 48 && r <= 57 + ? r - 48 + : r >= 65 && r <= 70 + ? r - 55 + : r >= 97 && r <= 102 + ? r - 87 + : void i(!1, "Invalid character in " + t); + } + function f(t, e, r) { + var i = s(t, r); + return r - 1 >= e && (i |= s(t, r - 1) << 4), i; + } + function u(t, e, r, n) { + for ( + var o = 0, a = 0, s = Math.min(t.length, r), f = e; + f < s; + f++ + ) { + var u = t.charCodeAt(f) - 48; + (o *= n), + (a = u >= 49 ? u - 49 + 10 : u >= 17 ? u - 17 + 10 : u), + i(u >= 0 && a < n, "Invalid character"), + (o += a); + } + return o; + } + function h(t, e) { + (t.words = e.words), + (t.length = e.length), + (t.negative = e.negative), + (t.red = e.red); + } + if ( + ((o.isBN = function (t) { + return ( + t instanceof o || + (null !== t && + "object" == typeof t && + t.constructor.wordSize === o.wordSize && + Array.isArray(t.words)) + ); + }), + (o.max = function (t, e) { + return t.cmp(e) > 0 ? t : e; + }), + (o.min = function (t, e) { + return t.cmp(e) < 0 ? t : e; + }), + (o.prototype._init = function (t, e, r) { + if ("number" == typeof t) return this._initNumber(t, e, r); + if ("object" == typeof t) return this._initArray(t, e, r); + "hex" === e && (e = 16), + i(e === (0 | e) && e >= 2 && e <= 36); + var n = 0; + "-" === (t = t.toString().replace(/\s+/g, ""))[0] && + (n++, (this.negative = 1)), + n < t.length && + (16 === e + ? this._parseHex(t, n, r) + : (this._parseBase(t, e, n), + "le" === r && this._initArray(this.toArray(), e, r))); + }), + (o.prototype._initNumber = function (t, e, r) { + t < 0 && ((this.negative = 1), (t = -t)), + t < 67108864 + ? ((this.words = [67108863 & t]), (this.length = 1)) + : t < 4503599627370496 + ? ((this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + ]), + (this.length = 2)) + : (i(t < 9007199254740992), + (this.words = [ + 67108863 & t, + (t / 67108864) & 67108863, + 1, + ]), + (this.length = 3)), + "le" === r && this._initArray(this.toArray(), e, r); + }), + (o.prototype._initArray = function (t, e, r) { + if ((i("number" == typeof t.length), t.length <= 0)) + return (this.words = [0]), (this.length = 1), this; + (this.length = Math.ceil(t.length / 3)), + (this.words = new Array(this.length)); + for (var n = 0; n < this.length; n++) this.words[n] = 0; + var o, + a, + s = 0; + if ("be" === r) + for (n = t.length - 1, o = 0; n >= 0; n -= 3) + (a = t[n] | (t[n - 1] << 8) | (t[n - 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + else if ("le" === r) + for (n = 0, o = 0; n < t.length; n += 3) + (a = t[n] | (t[n + 1] << 8) | (t[n + 2] << 16)), + (this.words[o] |= (a << s) & 67108863), + (this.words[o + 1] = (a >>> (26 - s)) & 67108863), + (s += 24) >= 26 && ((s -= 26), o++); + return this._strip(); + }), + (o.prototype._parseHex = function (t, e, r) { + (this.length = Math.ceil((t.length - e) / 6)), + (this.words = new Array(this.length)); + for (var i = 0; i < this.length; i++) this.words[i] = 0; + var n, + o = 0, + a = 0; + if ("be" === r) + for (i = t.length - 1; i >= e; i -= 2) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + else + for ( + i = (t.length - e) % 2 == 0 ? e + 1 : e; + i < t.length; + i += 2 + ) + (n = f(t, e, i) << o), + (this.words[a] |= 67108863 & n), + o >= 18 + ? ((o -= 18), (a += 1), (this.words[a] |= n >>> 26)) + : (o += 8); + this._strip(); + }), + (o.prototype._parseBase = function (t, e, r) { + (this.words = [0]), (this.length = 1); + for (var i = 0, n = 1; n <= 67108863; n *= e) i++; + i--, (n = (n / e) | 0); + for ( + var o = t.length - r, + a = o % i, + s = Math.min(o, o - a) + r, + f = 0, + h = r; + h < s; + h += i + ) + (f = u(t, h, h + i, e)), + this.imuln(n), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + if (0 !== a) { + var c = 1; + for (f = u(t, h, t.length, e), h = 0; h < a; h++) c *= e; + this.imuln(c), + this.words[0] + f < 67108864 + ? (this.words[0] += f) + : this._iaddn(f); + } + this._strip(); + }), + (o.prototype.copy = function (t) { + t.words = new Array(this.length); + for (var e = 0; e < this.length; e++) + t.words[e] = this.words[e]; + (t.length = this.length), + (t.negative = this.negative), + (t.red = this.red); + }), + (o.prototype._move = function (t) { + h(t, this); + }), + (o.prototype.clone = function () { + var t = new o(null); + return this.copy(t), t; + }), + (o.prototype._expand = function (t) { + for (; this.length < t; ) this.words[this.length++] = 0; + return this; + }), + (o.prototype._strip = function () { + for (; this.length > 1 && 0 === this.words[this.length - 1]; ) + this.length--; + return this._normSign(); + }), + (o.prototype._normSign = function () { + return ( + 1 === this.length && + 0 === this.words[0] && + (this.negative = 0), + this + ); + }), + "undefined" != typeof Symbol && "function" == typeof Symbol.for) + ) + try { + o.prototype[Symbol.for("nodejs.util.inspect.custom")] = c; + } catch (t) { + o.prototype.inspect = c; + } + else o.prototype.inspect = c; + function c() { + return ( + (this.red ? "" + ); + } + var d = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000", + ], + l = [ + 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + ], + p = [ + 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, + 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, + 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, + 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, + 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, + 33554432, 39135393, 45435424, 52521875, 60466176, + ]; + function b(t, e, r) { + r.negative = e.negative ^ t.negative; + var i = (t.length + e.length) | 0; + (r.length = i), (i = (i - 1) | 0); + var n = 0 | t.words[0], + o = 0 | e.words[0], + a = n * o, + s = 67108863 & a, + f = (a / 67108864) | 0; + r.words[0] = s; + for (var u = 1; u < i; u++) { + for ( + var h = f >>> 26, + c = 67108863 & f, + d = Math.min(u, e.length - 1), + l = Math.max(0, u - t.length + 1); + l <= d; + l++ + ) { + var p = (u - l) | 0; + (h += + ((a = (n = 0 | t.words[p]) * (o = 0 | e.words[l]) + c) / + 67108864) | + 0), + (c = 67108863 & a); + } + (r.words[u] = 0 | c), (f = 0 | h); + } + return 0 !== f ? (r.words[u] = 0 | f) : r.length--, r._strip(); + } + (o.prototype.toString = function (t, e) { + var r; + if (((e = 0 | e || 1), 16 === (t = t || 10) || "hex" === t)) { + r = ""; + for (var n = 0, o = 0, a = 0; a < this.length; a++) { + var s = this.words[a], + f = (16777215 & ((s << n) | o)).toString(16); + (o = (s >>> (24 - n)) & 16777215), + (n += 2) >= 26 && ((n -= 26), a--), + (r = + 0 !== o || a !== this.length - 1 + ? d[6 - f.length] + f + r + : f + r); + } + for (0 !== o && (r = o.toString(16) + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + if (t === (0 | t) && t >= 2 && t <= 36) { + var u = l[t], + h = p[t]; + r = ""; + var c = this.clone(); + for (c.negative = 0; !c.isZero(); ) { + var b = c.modrn(h).toString(t); + r = (c = c.idivn(h)).isZero() + ? b + r + : d[u - b.length] + b + r; + } + for (this.isZero() && (r = "0" + r); r.length % e != 0; ) + r = "0" + r; + return 0 !== this.negative && (r = "-" + r), r; + } + i(!1, "Base should be between 2 and 36"); + }), + (o.prototype.toNumber = function () { + var t = this.words[0]; + return ( + 2 === this.length + ? (t += 67108864 * this.words[1]) + : 3 === this.length && 1 === this.words[2] + ? (t += 4503599627370496 + 67108864 * this.words[1]) + : this.length > 2 && + i(!1, "Number can only safely store up to 53 bits"), + 0 !== this.negative ? -t : t + ); + }), + (o.prototype.toJSON = function () { + return this.toString(16, 2); + }), + a && + (o.prototype.toBuffer = function (t, e) { + return this.toArrayLike(a, t, e); + }), + (o.prototype.toArray = function (t, e) { + return this.toArrayLike(Array, t, e); + }), + (o.prototype.toArrayLike = function (t, e, r) { + this._strip(); + var n = this.byteLength(), + o = r || Math.max(1, n); + i(n <= o, "byte array longer than desired length"), + i(o > 0, "Requested array length <= 0"); + var a = (function (t, e) { + return t.allocUnsafe ? t.allocUnsafe(e) : new t(e); + })(t, o); + return ( + this["_toArrayLike" + ("le" === e ? "LE" : "BE")](a, n), a + ); + }), + (o.prototype._toArrayLikeLE = function (t, e) { + for (var r = 0, i = 0, n = 0, o = 0; n < this.length; n++) { + var a = (this.words[n] << o) | i; + (t[r++] = 255 & a), + r < t.length && (t[r++] = (a >> 8) & 255), + r < t.length && (t[r++] = (a >> 16) & 255), + 6 === o + ? (r < t.length && (t[r++] = (a >> 24) & 255), + (i = 0), + (o = 0)) + : ((i = a >>> 24), (o += 2)); + } + if (r < t.length) for (t[r++] = i; r < t.length; ) t[r++] = 0; + }), + (o.prototype._toArrayLikeBE = function (t, e) { + for ( + var r = t.length - 1, i = 0, n = 0, o = 0; + n < this.length; + n++ + ) { + var a = (this.words[n] << o) | i; + (t[r--] = 255 & a), + r >= 0 && (t[r--] = (a >> 8) & 255), + r >= 0 && (t[r--] = (a >> 16) & 255), + 6 === o + ? (r >= 0 && (t[r--] = (a >> 24) & 255), + (i = 0), + (o = 0)) + : ((i = a >>> 24), (o += 2)); + } + if (r >= 0) for (t[r--] = i; r >= 0; ) t[r--] = 0; + }), + Math.clz32 + ? (o.prototype._countBits = function (t) { + return 32 - Math.clz32(t); + }) + : (o.prototype._countBits = function (t) { + var e = t, + r = 0; + return ( + e >= 4096 && ((r += 13), (e >>>= 13)), + e >= 64 && ((r += 7), (e >>>= 7)), + e >= 8 && ((r += 4), (e >>>= 4)), + e >= 2 && ((r += 2), (e >>>= 2)), + r + e + ); + }), + (o.prototype._zeroBits = function (t) { + if (0 === t) return 26; + var e = t, + r = 0; + return ( + 0 == (8191 & e) && ((r += 13), (e >>>= 13)), + 0 == (127 & e) && ((r += 7), (e >>>= 7)), + 0 == (15 & e) && ((r += 4), (e >>>= 4)), + 0 == (3 & e) && ((r += 2), (e >>>= 2)), + 0 == (1 & e) && r++, + r + ); + }), + (o.prototype.bitLength = function () { + var t = this.words[this.length - 1], + e = this._countBits(t); + return 26 * (this.length - 1) + e; + }), + (o.prototype.zeroBits = function () { + if (this.isZero()) return 0; + for (var t = 0, e = 0; e < this.length; e++) { + var r = this._zeroBits(this.words[e]); + if (((t += r), 26 !== r)) break; + } + return t; + }), + (o.prototype.byteLength = function () { + return Math.ceil(this.bitLength() / 8); + }), + (o.prototype.toTwos = function (t) { + return 0 !== this.negative + ? this.abs().inotn(t).iaddn(1) + : this.clone(); + }), + (o.prototype.fromTwos = function (t) { + return this.testn(t - 1) + ? this.notn(t).iaddn(1).ineg() + : this.clone(); + }), + (o.prototype.isNeg = function () { + return 0 !== this.negative; + }), + (o.prototype.neg = function () { + return this.clone().ineg(); + }), + (o.prototype.ineg = function () { + return this.isZero() || (this.negative ^= 1), this; + }), + (o.prototype.iuor = function (t) { + for (; this.length < t.length; ) + this.words[this.length++] = 0; + for (var e = 0; e < t.length; e++) + this.words[e] = this.words[e] | t.words[e]; + return this._strip(); + }), + (o.prototype.ior = function (t) { + return i(0 == (this.negative | t.negative)), this.iuor(t); + }), + (o.prototype.or = function (t) { + return this.length > t.length + ? this.clone().ior(t) + : t.clone().ior(this); + }), + (o.prototype.uor = function (t) { + return this.length > t.length + ? this.clone().iuor(t) + : t.clone().iuor(this); + }), + (o.prototype.iuand = function (t) { + var e; + e = this.length > t.length ? t : this; + for (var r = 0; r < e.length; r++) + this.words[r] = this.words[r] & t.words[r]; + return (this.length = e.length), this._strip(); + }), + (o.prototype.iand = function (t) { + return i(0 == (this.negative | t.negative)), this.iuand(t); + }), + (o.prototype.and = function (t) { + return this.length > t.length + ? this.clone().iand(t) + : t.clone().iand(this); + }), + (o.prototype.uand = function (t) { + return this.length > t.length + ? this.clone().iuand(t) + : t.clone().iuand(this); + }), + (o.prototype.iuxor = function (t) { + var e, r; + this.length > t.length + ? ((e = this), (r = t)) + : ((e = t), (r = this)); + for (var i = 0; i < r.length; i++) + this.words[i] = e.words[i] ^ r.words[i]; + if (this !== e) + for (; i < e.length; i++) this.words[i] = e.words[i]; + return (this.length = e.length), this._strip(); + }), + (o.prototype.ixor = function (t) { + return i(0 == (this.negative | t.negative)), this.iuxor(t); + }), + (o.prototype.xor = function (t) { + return this.length > t.length + ? this.clone().ixor(t) + : t.clone().ixor(this); + }), + (o.prototype.uxor = function (t) { + return this.length > t.length + ? this.clone().iuxor(t) + : t.clone().iuxor(this); + }), + (o.prototype.inotn = function (t) { + i("number" == typeof t && t >= 0); + var e = 0 | Math.ceil(t / 26), + r = t % 26; + this._expand(e), r > 0 && e--; + for (var n = 0; n < e; n++) + this.words[n] = 67108863 & ~this.words[n]; + return ( + r > 0 && + (this.words[n] = ~this.words[n] & (67108863 >> (26 - r))), + this._strip() + ); + }), + (o.prototype.notn = function (t) { + return this.clone().inotn(t); + }), + (o.prototype.setn = function (t, e) { + i("number" == typeof t && t >= 0); + var r = (t / 26) | 0, + n = t % 26; + return ( + this._expand(r + 1), + (this.words[r] = e + ? this.words[r] | (1 << n) + : this.words[r] & ~(1 << n)), + this._strip() + ); + }), + (o.prototype.iadd = function (t) { + var e, r, i; + if (0 !== this.negative && 0 === t.negative) + return ( + (this.negative = 0), + (e = this.isub(t)), + (this.negative ^= 1), + this._normSign() + ); + if (0 === this.negative && 0 !== t.negative) + return ( + (t.negative = 0), + (e = this.isub(t)), + (t.negative = 1), + e._normSign() + ); + this.length > t.length + ? ((r = this), (i = t)) + : ((r = t), (i = this)); + for (var n = 0, o = 0; o < i.length; o++) + (e = (0 | r.words[o]) + (0 | i.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + for (; 0 !== n && o < r.length; o++) + (e = (0 | r.words[o]) + n), + (this.words[o] = 67108863 & e), + (n = e >>> 26); + if (((this.length = r.length), 0 !== n)) + (this.words[this.length] = n), this.length++; + else if (r !== this) + for (; o < r.length; o++) this.words[o] = r.words[o]; + return this; + }), + (o.prototype.add = function (t) { + var e; + return 0 !== t.negative && 0 === this.negative + ? ((t.negative = 0), + (e = this.sub(t)), + (t.negative ^= 1), + e) + : 0 === t.negative && 0 !== this.negative + ? ((this.negative = 0), + (e = t.sub(this)), + (this.negative = 1), + e) + : this.length > t.length + ? this.clone().iadd(t) + : t.clone().iadd(this); + }), + (o.prototype.isub = function (t) { + if (0 !== t.negative) { + t.negative = 0; + var e = this.iadd(t); + return (t.negative = 1), e._normSign(); + } + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iadd(t), + (this.negative = 1), + this._normSign() + ); + var r, + i, + n = this.cmp(t); + if (0 === n) + return ( + (this.negative = 0), + (this.length = 1), + (this.words[0] = 0), + this + ); + n > 0 ? ((r = this), (i = t)) : ((r = t), (i = this)); + for (var o = 0, a = 0; a < i.length; a++) + (o = (e = (0 | r.words[a]) - (0 | i.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + for (; 0 !== o && a < r.length; a++) + (o = (e = (0 | r.words[a]) + o) >> 26), + (this.words[a] = 67108863 & e); + if (0 === o && a < r.length && r !== this) + for (; a < r.length; a++) this.words[a] = r.words[a]; + return ( + (this.length = Math.max(this.length, a)), + r !== this && (this.negative = 1), + this._strip() + ); + }), + (o.prototype.sub = function (t) { + return this.clone().isub(t); + }); + var y = function (t, e, r) { + var i, + n, + o, + a = t.words, + s = e.words, + f = r.words, + u = 0, + h = 0 | a[0], + c = 8191 & h, + d = h >>> 13, + l = 0 | a[1], + p = 8191 & l, + b = l >>> 13, + y = 0 | a[2], + m = 8191 & y, + g = y >>> 13, + v = 0 | a[3], + w = 8191 & v, + _ = v >>> 13, + M = 0 | a[4], + S = 8191 & M, + E = M >>> 13, + A = 0 | a[5], + k = 8191 & A, + x = A >>> 13, + I = 0 | a[6], + B = 8191 & I, + R = I >>> 13, + O = 0 | a[7], + j = 8191 & O, + P = O >>> 13, + T = 0 | a[8], + L = 8191 & T, + N = T >>> 13, + C = 0 | a[9], + U = 8191 & C, + D = C >>> 13, + q = 0 | s[0], + z = 8191 & q, + F = q >>> 13, + K = 0 | s[1], + H = 8191 & K, + V = K >>> 13, + G = 0 | s[2], + W = 8191 & G, + Z = G >>> 13, + $ = 0 | s[3], + X = 8191 & $, + Y = $ >>> 13, + J = 0 | s[4], + Q = 8191 & J, + tt = J >>> 13, + et = 0 | s[5], + rt = 8191 & et, + it = et >>> 13, + nt = 0 | s[6], + ot = 8191 & nt, + at = nt >>> 13, + st = 0 | s[7], + ft = 8191 & st, + ut = st >>> 13, + ht = 0 | s[8], + ct = 8191 & ht, + dt = ht >>> 13, + lt = 0 | s[9], + pt = 8191 & lt, + bt = lt >>> 13; + (r.negative = t.negative ^ e.negative), (r.length = 19); + var yt = + (((u + (i = Math.imul(c, z))) | 0) + + ((8191 & + (n = ((n = Math.imul(c, F)) + Math.imul(d, z)) | 0)) << + 13)) | + 0; + (u = + ((((o = Math.imul(d, F)) + (n >>> 13)) | 0) + (yt >>> 26)) | + 0), + (yt &= 67108863), + (i = Math.imul(p, z)), + (n = ((n = Math.imul(p, F)) + Math.imul(b, z)) | 0), + (o = Math.imul(b, F)); + var mt = + (((u + (i = (i + Math.imul(c, H)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, V)) | 0) + Math.imul(d, H)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, V)) | 0) + (n >>> 13)) | 0) + + (mt >>> 26)) | + 0), + (mt &= 67108863), + (i = Math.imul(m, z)), + (n = ((n = Math.imul(m, F)) + Math.imul(g, z)) | 0), + (o = Math.imul(g, F)), + (i = (i + Math.imul(p, H)) | 0), + (n = ((n = (n + Math.imul(p, V)) | 0) + Math.imul(b, H)) | 0), + (o = (o + Math.imul(b, V)) | 0); + var gt = + (((u + (i = (i + Math.imul(c, W)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Z)) | 0) + Math.imul(d, W)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Z)) | 0) + (n >>> 13)) | 0) + + (gt >>> 26)) | + 0), + (gt &= 67108863), + (i = Math.imul(w, z)), + (n = ((n = Math.imul(w, F)) + Math.imul(_, z)) | 0), + (o = Math.imul(_, F)), + (i = (i + Math.imul(m, H)) | 0), + (n = ((n = (n + Math.imul(m, V)) | 0) + Math.imul(g, H)) | 0), + (o = (o + Math.imul(g, V)) | 0), + (i = (i + Math.imul(p, W)) | 0), + (n = ((n = (n + Math.imul(p, Z)) | 0) + Math.imul(b, W)) | 0), + (o = (o + Math.imul(b, Z)) | 0); + var vt = + (((u + (i = (i + Math.imul(c, X)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, Y)) | 0) + Math.imul(d, X)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, Y)) | 0) + (n >>> 13)) | 0) + + (vt >>> 26)) | + 0), + (vt &= 67108863), + (i = Math.imul(S, z)), + (n = ((n = Math.imul(S, F)) + Math.imul(E, z)) | 0), + (o = Math.imul(E, F)), + (i = (i + Math.imul(w, H)) | 0), + (n = ((n = (n + Math.imul(w, V)) | 0) + Math.imul(_, H)) | 0), + (o = (o + Math.imul(_, V)) | 0), + (i = (i + Math.imul(m, W)) | 0), + (n = ((n = (n + Math.imul(m, Z)) | 0) + Math.imul(g, W)) | 0), + (o = (o + Math.imul(g, Z)) | 0), + (i = (i + Math.imul(p, X)) | 0), + (n = ((n = (n + Math.imul(p, Y)) | 0) + Math.imul(b, X)) | 0), + (o = (o + Math.imul(b, Y)) | 0); + var wt = + (((u + (i = (i + Math.imul(c, Q)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, tt)) | 0) + Math.imul(d, Q)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, tt)) | 0) + (n >>> 13)) | 0) + + (wt >>> 26)) | + 0), + (wt &= 67108863), + (i = Math.imul(k, z)), + (n = ((n = Math.imul(k, F)) + Math.imul(x, z)) | 0), + (o = Math.imul(x, F)), + (i = (i + Math.imul(S, H)) | 0), + (n = ((n = (n + Math.imul(S, V)) | 0) + Math.imul(E, H)) | 0), + (o = (o + Math.imul(E, V)) | 0), + (i = (i + Math.imul(w, W)) | 0), + (n = ((n = (n + Math.imul(w, Z)) | 0) + Math.imul(_, W)) | 0), + (o = (o + Math.imul(_, Z)) | 0), + (i = (i + Math.imul(m, X)) | 0), + (n = ((n = (n + Math.imul(m, Y)) | 0) + Math.imul(g, X)) | 0), + (o = (o + Math.imul(g, Y)) | 0), + (i = (i + Math.imul(p, Q)) | 0), + (n = + ((n = (n + Math.imul(p, tt)) | 0) + Math.imul(b, Q)) | 0), + (o = (o + Math.imul(b, tt)) | 0); + var _t = + (((u + (i = (i + Math.imul(c, rt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, it)) | 0) + Math.imul(d, rt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, it)) | 0) + (n >>> 13)) | 0) + + (_t >>> 26)) | + 0), + (_t &= 67108863), + (i = Math.imul(B, z)), + (n = ((n = Math.imul(B, F)) + Math.imul(R, z)) | 0), + (o = Math.imul(R, F)), + (i = (i + Math.imul(k, H)) | 0), + (n = ((n = (n + Math.imul(k, V)) | 0) + Math.imul(x, H)) | 0), + (o = (o + Math.imul(x, V)) | 0), + (i = (i + Math.imul(S, W)) | 0), + (n = ((n = (n + Math.imul(S, Z)) | 0) + Math.imul(E, W)) | 0), + (o = (o + Math.imul(E, Z)) | 0), + (i = (i + Math.imul(w, X)) | 0), + (n = ((n = (n + Math.imul(w, Y)) | 0) + Math.imul(_, X)) | 0), + (o = (o + Math.imul(_, Y)) | 0), + (i = (i + Math.imul(m, Q)) | 0), + (n = + ((n = (n + Math.imul(m, tt)) | 0) + Math.imul(g, Q)) | 0), + (o = (o + Math.imul(g, tt)) | 0), + (i = (i + Math.imul(p, rt)) | 0), + (n = + ((n = (n + Math.imul(p, it)) | 0) + Math.imul(b, rt)) | 0), + (o = (o + Math.imul(b, it)) | 0); + var Mt = + (((u + (i = (i + Math.imul(c, ot)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, at)) | 0) + Math.imul(d, ot)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, at)) | 0) + (n >>> 13)) | 0) + + (Mt >>> 26)) | + 0), + (Mt &= 67108863), + (i = Math.imul(j, z)), + (n = ((n = Math.imul(j, F)) + Math.imul(P, z)) | 0), + (o = Math.imul(P, F)), + (i = (i + Math.imul(B, H)) | 0), + (n = ((n = (n + Math.imul(B, V)) | 0) + Math.imul(R, H)) | 0), + (o = (o + Math.imul(R, V)) | 0), + (i = (i + Math.imul(k, W)) | 0), + (n = ((n = (n + Math.imul(k, Z)) | 0) + Math.imul(x, W)) | 0), + (o = (o + Math.imul(x, Z)) | 0), + (i = (i + Math.imul(S, X)) | 0), + (n = ((n = (n + Math.imul(S, Y)) | 0) + Math.imul(E, X)) | 0), + (o = (o + Math.imul(E, Y)) | 0), + (i = (i + Math.imul(w, Q)) | 0), + (n = + ((n = (n + Math.imul(w, tt)) | 0) + Math.imul(_, Q)) | 0), + (o = (o + Math.imul(_, tt)) | 0), + (i = (i + Math.imul(m, rt)) | 0), + (n = + ((n = (n + Math.imul(m, it)) | 0) + Math.imul(g, rt)) | 0), + (o = (o + Math.imul(g, it)) | 0), + (i = (i + Math.imul(p, ot)) | 0), + (n = + ((n = (n + Math.imul(p, at)) | 0) + Math.imul(b, ot)) | 0), + (o = (o + Math.imul(b, at)) | 0); + var St = + (((u + (i = (i + Math.imul(c, ft)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, ut)) | 0) + Math.imul(d, ft)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, ut)) | 0) + (n >>> 13)) | 0) + + (St >>> 26)) | + 0), + (St &= 67108863), + (i = Math.imul(L, z)), + (n = ((n = Math.imul(L, F)) + Math.imul(N, z)) | 0), + (o = Math.imul(N, F)), + (i = (i + Math.imul(j, H)) | 0), + (n = ((n = (n + Math.imul(j, V)) | 0) + Math.imul(P, H)) | 0), + (o = (o + Math.imul(P, V)) | 0), + (i = (i + Math.imul(B, W)) | 0), + (n = ((n = (n + Math.imul(B, Z)) | 0) + Math.imul(R, W)) | 0), + (o = (o + Math.imul(R, Z)) | 0), + (i = (i + Math.imul(k, X)) | 0), + (n = ((n = (n + Math.imul(k, Y)) | 0) + Math.imul(x, X)) | 0), + (o = (o + Math.imul(x, Y)) | 0), + (i = (i + Math.imul(S, Q)) | 0), + (n = + ((n = (n + Math.imul(S, tt)) | 0) + Math.imul(E, Q)) | 0), + (o = (o + Math.imul(E, tt)) | 0), + (i = (i + Math.imul(w, rt)) | 0), + (n = + ((n = (n + Math.imul(w, it)) | 0) + Math.imul(_, rt)) | 0), + (o = (o + Math.imul(_, it)) | 0), + (i = (i + Math.imul(m, ot)) | 0), + (n = + ((n = (n + Math.imul(m, at)) | 0) + Math.imul(g, ot)) | 0), + (o = (o + Math.imul(g, at)) | 0), + (i = (i + Math.imul(p, ft)) | 0), + (n = + ((n = (n + Math.imul(p, ut)) | 0) + Math.imul(b, ft)) | 0), + (o = (o + Math.imul(b, ut)) | 0); + var Et = + (((u + (i = (i + Math.imul(c, ct)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, dt)) | 0) + Math.imul(d, ct)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, dt)) | 0) + (n >>> 13)) | 0) + + (Et >>> 26)) | + 0), + (Et &= 67108863), + (i = Math.imul(U, z)), + (n = ((n = Math.imul(U, F)) + Math.imul(D, z)) | 0), + (o = Math.imul(D, F)), + (i = (i + Math.imul(L, H)) | 0), + (n = ((n = (n + Math.imul(L, V)) | 0) + Math.imul(N, H)) | 0), + (o = (o + Math.imul(N, V)) | 0), + (i = (i + Math.imul(j, W)) | 0), + (n = ((n = (n + Math.imul(j, Z)) | 0) + Math.imul(P, W)) | 0), + (o = (o + Math.imul(P, Z)) | 0), + (i = (i + Math.imul(B, X)) | 0), + (n = ((n = (n + Math.imul(B, Y)) | 0) + Math.imul(R, X)) | 0), + (o = (o + Math.imul(R, Y)) | 0), + (i = (i + Math.imul(k, Q)) | 0), + (n = + ((n = (n + Math.imul(k, tt)) | 0) + Math.imul(x, Q)) | 0), + (o = (o + Math.imul(x, tt)) | 0), + (i = (i + Math.imul(S, rt)) | 0), + (n = + ((n = (n + Math.imul(S, it)) | 0) + Math.imul(E, rt)) | 0), + (o = (o + Math.imul(E, it)) | 0), + (i = (i + Math.imul(w, ot)) | 0), + (n = + ((n = (n + Math.imul(w, at)) | 0) + Math.imul(_, ot)) | 0), + (o = (o + Math.imul(_, at)) | 0), + (i = (i + Math.imul(m, ft)) | 0), + (n = + ((n = (n + Math.imul(m, ut)) | 0) + Math.imul(g, ft)) | 0), + (o = (o + Math.imul(g, ut)) | 0), + (i = (i + Math.imul(p, ct)) | 0), + (n = + ((n = (n + Math.imul(p, dt)) | 0) + Math.imul(b, ct)) | 0), + (o = (o + Math.imul(b, dt)) | 0); + var At = + (((u + (i = (i + Math.imul(c, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(c, bt)) | 0) + Math.imul(d, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(d, bt)) | 0) + (n >>> 13)) | 0) + + (At >>> 26)) | + 0), + (At &= 67108863), + (i = Math.imul(U, H)), + (n = ((n = Math.imul(U, V)) + Math.imul(D, H)) | 0), + (o = Math.imul(D, V)), + (i = (i + Math.imul(L, W)) | 0), + (n = ((n = (n + Math.imul(L, Z)) | 0) + Math.imul(N, W)) | 0), + (o = (o + Math.imul(N, Z)) | 0), + (i = (i + Math.imul(j, X)) | 0), + (n = ((n = (n + Math.imul(j, Y)) | 0) + Math.imul(P, X)) | 0), + (o = (o + Math.imul(P, Y)) | 0), + (i = (i + Math.imul(B, Q)) | 0), + (n = + ((n = (n + Math.imul(B, tt)) | 0) + Math.imul(R, Q)) | 0), + (o = (o + Math.imul(R, tt)) | 0), + (i = (i + Math.imul(k, rt)) | 0), + (n = + ((n = (n + Math.imul(k, it)) | 0) + Math.imul(x, rt)) | 0), + (o = (o + Math.imul(x, it)) | 0), + (i = (i + Math.imul(S, ot)) | 0), + (n = + ((n = (n + Math.imul(S, at)) | 0) + Math.imul(E, ot)) | 0), + (o = (o + Math.imul(E, at)) | 0), + (i = (i + Math.imul(w, ft)) | 0), + (n = + ((n = (n + Math.imul(w, ut)) | 0) + Math.imul(_, ft)) | 0), + (o = (o + Math.imul(_, ut)) | 0), + (i = (i + Math.imul(m, ct)) | 0), + (n = + ((n = (n + Math.imul(m, dt)) | 0) + Math.imul(g, ct)) | 0), + (o = (o + Math.imul(g, dt)) | 0); + var kt = + (((u + (i = (i + Math.imul(p, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(p, bt)) | 0) + Math.imul(b, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(b, bt)) | 0) + (n >>> 13)) | 0) + + (kt >>> 26)) | + 0), + (kt &= 67108863), + (i = Math.imul(U, W)), + (n = ((n = Math.imul(U, Z)) + Math.imul(D, W)) | 0), + (o = Math.imul(D, Z)), + (i = (i + Math.imul(L, X)) | 0), + (n = ((n = (n + Math.imul(L, Y)) | 0) + Math.imul(N, X)) | 0), + (o = (o + Math.imul(N, Y)) | 0), + (i = (i + Math.imul(j, Q)) | 0), + (n = + ((n = (n + Math.imul(j, tt)) | 0) + Math.imul(P, Q)) | 0), + (o = (o + Math.imul(P, tt)) | 0), + (i = (i + Math.imul(B, rt)) | 0), + (n = + ((n = (n + Math.imul(B, it)) | 0) + Math.imul(R, rt)) | 0), + (o = (o + Math.imul(R, it)) | 0), + (i = (i + Math.imul(k, ot)) | 0), + (n = + ((n = (n + Math.imul(k, at)) | 0) + Math.imul(x, ot)) | 0), + (o = (o + Math.imul(x, at)) | 0), + (i = (i + Math.imul(S, ft)) | 0), + (n = + ((n = (n + Math.imul(S, ut)) | 0) + Math.imul(E, ft)) | 0), + (o = (o + Math.imul(E, ut)) | 0), + (i = (i + Math.imul(w, ct)) | 0), + (n = + ((n = (n + Math.imul(w, dt)) | 0) + Math.imul(_, ct)) | 0), + (o = (o + Math.imul(_, dt)) | 0); + var xt = + (((u + (i = (i + Math.imul(m, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(m, bt)) | 0) + Math.imul(g, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(g, bt)) | 0) + (n >>> 13)) | 0) + + (xt >>> 26)) | + 0), + (xt &= 67108863), + (i = Math.imul(U, X)), + (n = ((n = Math.imul(U, Y)) + Math.imul(D, X)) | 0), + (o = Math.imul(D, Y)), + (i = (i + Math.imul(L, Q)) | 0), + (n = + ((n = (n + Math.imul(L, tt)) | 0) + Math.imul(N, Q)) | 0), + (o = (o + Math.imul(N, tt)) | 0), + (i = (i + Math.imul(j, rt)) | 0), + (n = + ((n = (n + Math.imul(j, it)) | 0) + Math.imul(P, rt)) | 0), + (o = (o + Math.imul(P, it)) | 0), + (i = (i + Math.imul(B, ot)) | 0), + (n = + ((n = (n + Math.imul(B, at)) | 0) + Math.imul(R, ot)) | 0), + (o = (o + Math.imul(R, at)) | 0), + (i = (i + Math.imul(k, ft)) | 0), + (n = + ((n = (n + Math.imul(k, ut)) | 0) + Math.imul(x, ft)) | 0), + (o = (o + Math.imul(x, ut)) | 0), + (i = (i + Math.imul(S, ct)) | 0), + (n = + ((n = (n + Math.imul(S, dt)) | 0) + Math.imul(E, ct)) | 0), + (o = (o + Math.imul(E, dt)) | 0); + var It = + (((u + (i = (i + Math.imul(w, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(w, bt)) | 0) + Math.imul(_, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(_, bt)) | 0) + (n >>> 13)) | 0) + + (It >>> 26)) | + 0), + (It &= 67108863), + (i = Math.imul(U, Q)), + (n = ((n = Math.imul(U, tt)) + Math.imul(D, Q)) | 0), + (o = Math.imul(D, tt)), + (i = (i + Math.imul(L, rt)) | 0), + (n = + ((n = (n + Math.imul(L, it)) | 0) + Math.imul(N, rt)) | 0), + (o = (o + Math.imul(N, it)) | 0), + (i = (i + Math.imul(j, ot)) | 0), + (n = + ((n = (n + Math.imul(j, at)) | 0) + Math.imul(P, ot)) | 0), + (o = (o + Math.imul(P, at)) | 0), + (i = (i + Math.imul(B, ft)) | 0), + (n = + ((n = (n + Math.imul(B, ut)) | 0) + Math.imul(R, ft)) | 0), + (o = (o + Math.imul(R, ut)) | 0), + (i = (i + Math.imul(k, ct)) | 0), + (n = + ((n = (n + Math.imul(k, dt)) | 0) + Math.imul(x, ct)) | 0), + (o = (o + Math.imul(x, dt)) | 0); + var Bt = + (((u + (i = (i + Math.imul(S, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(S, bt)) | 0) + Math.imul(E, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(E, bt)) | 0) + (n >>> 13)) | 0) + + (Bt >>> 26)) | + 0), + (Bt &= 67108863), + (i = Math.imul(U, rt)), + (n = ((n = Math.imul(U, it)) + Math.imul(D, rt)) | 0), + (o = Math.imul(D, it)), + (i = (i + Math.imul(L, ot)) | 0), + (n = + ((n = (n + Math.imul(L, at)) | 0) + Math.imul(N, ot)) | 0), + (o = (o + Math.imul(N, at)) | 0), + (i = (i + Math.imul(j, ft)) | 0), + (n = + ((n = (n + Math.imul(j, ut)) | 0) + Math.imul(P, ft)) | 0), + (o = (o + Math.imul(P, ut)) | 0), + (i = (i + Math.imul(B, ct)) | 0), + (n = + ((n = (n + Math.imul(B, dt)) | 0) + Math.imul(R, ct)) | 0), + (o = (o + Math.imul(R, dt)) | 0); + var Rt = + (((u + (i = (i + Math.imul(k, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(k, bt)) | 0) + Math.imul(x, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(x, bt)) | 0) + (n >>> 13)) | 0) + + (Rt >>> 26)) | + 0), + (Rt &= 67108863), + (i = Math.imul(U, ot)), + (n = ((n = Math.imul(U, at)) + Math.imul(D, ot)) | 0), + (o = Math.imul(D, at)), + (i = (i + Math.imul(L, ft)) | 0), + (n = + ((n = (n + Math.imul(L, ut)) | 0) + Math.imul(N, ft)) | 0), + (o = (o + Math.imul(N, ut)) | 0), + (i = (i + Math.imul(j, ct)) | 0), + (n = + ((n = (n + Math.imul(j, dt)) | 0) + Math.imul(P, ct)) | 0), + (o = (o + Math.imul(P, dt)) | 0); + var Ot = + (((u + (i = (i + Math.imul(B, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(B, bt)) | 0) + Math.imul(R, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(R, bt)) | 0) + (n >>> 13)) | 0) + + (Ot >>> 26)) | + 0), + (Ot &= 67108863), + (i = Math.imul(U, ft)), + (n = ((n = Math.imul(U, ut)) + Math.imul(D, ft)) | 0), + (o = Math.imul(D, ut)), + (i = (i + Math.imul(L, ct)) | 0), + (n = + ((n = (n + Math.imul(L, dt)) | 0) + Math.imul(N, ct)) | 0), + (o = (o + Math.imul(N, dt)) | 0); + var jt = + (((u + (i = (i + Math.imul(j, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(j, bt)) | 0) + Math.imul(P, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(P, bt)) | 0) + (n >>> 13)) | 0) + + (jt >>> 26)) | + 0), + (jt &= 67108863), + (i = Math.imul(U, ct)), + (n = ((n = Math.imul(U, dt)) + Math.imul(D, ct)) | 0), + (o = Math.imul(D, dt)); + var Pt = + (((u + (i = (i + Math.imul(L, pt)) | 0)) | 0) + + ((8191 & + (n = + ((n = (n + Math.imul(L, bt)) | 0) + Math.imul(N, pt)) | + 0)) << + 13)) | + 0; + (u = + ((((o = (o + Math.imul(N, bt)) | 0) + (n >>> 13)) | 0) + + (Pt >>> 26)) | + 0), + (Pt &= 67108863); + var Tt = + (((u + (i = Math.imul(U, pt))) | 0) + + ((8191 & + (n = ((n = Math.imul(U, bt)) + Math.imul(D, pt)) | 0)) << + 13)) | + 0; + return ( + (u = + ((((o = Math.imul(D, bt)) + (n >>> 13)) | 0) + + (Tt >>> 26)) | + 0), + (Tt &= 67108863), + (f[0] = yt), + (f[1] = mt), + (f[2] = gt), + (f[3] = vt), + (f[4] = wt), + (f[5] = _t), + (f[6] = Mt), + (f[7] = St), + (f[8] = Et), + (f[9] = At), + (f[10] = kt), + (f[11] = xt), + (f[12] = It), + (f[13] = Bt), + (f[14] = Rt), + (f[15] = Ot), + (f[16] = jt), + (f[17] = Pt), + (f[18] = Tt), + 0 !== u && ((f[19] = u), r.length++), + r + ); + }; + function m(t, e, r) { + (r.negative = e.negative ^ t.negative), + (r.length = t.length + e.length); + for (var i = 0, n = 0, o = 0; o < r.length - 1; o++) { + var a = n; + n = 0; + for ( + var s = 67108863 & i, + f = Math.min(o, e.length - 1), + u = Math.max(0, o - t.length + 1); + u <= f; + u++ + ) { + var h = o - u, + c = (0 | t.words[h]) * (0 | e.words[u]), + d = 67108863 & c; + (s = 67108863 & (d = (d + s) | 0)), + (n += + (a = + ((a = (a + ((c / 67108864) | 0)) | 0) + (d >>> 26)) | + 0) >>> 26), + (a &= 67108863); + } + (r.words[o] = s), (i = a), (a = n); + } + return 0 !== i ? (r.words[o] = i) : r.length--, r._strip(); + } + function g(t, e, r) { + return m(t, e, r); + } + function v(t, e) { + (this.x = t), (this.y = e); + } + Math.imul || (y = b), + (o.prototype.mulTo = function (t, e) { + var r = this.length + t.length; + return 10 === this.length && 10 === t.length + ? y(this, t, e) + : r < 63 + ? b(this, t, e) + : r < 1024 + ? m(this, t, e) + : g(this, t, e); + }), + (v.prototype.makeRBT = function (t) { + for ( + var e = new Array(t), + r = o.prototype._countBits(t) - 1, + i = 0; + i < t; + i++ + ) + e[i] = this.revBin(i, r, t); + return e; + }), + (v.prototype.revBin = function (t, e, r) { + if (0 === t || t === r - 1) return t; + for (var i = 0, n = 0; n < e; n++) + (i |= (1 & t) << (e - n - 1)), (t >>= 1); + return i; + }), + (v.prototype.permute = function (t, e, r, i, n, o) { + for (var a = 0; a < o; a++) + (i[a] = e[t[a]]), (n[a] = r[t[a]]); + }), + (v.prototype.transform = function (t, e, r, i, n, o) { + this.permute(o, t, e, r, i, n); + for (var a = 1; a < n; a <<= 1) + for ( + var s = a << 1, + f = Math.cos((2 * Math.PI) / s), + u = Math.sin((2 * Math.PI) / s), + h = 0; + h < n; + h += s + ) + for (var c = f, d = u, l = 0; l < a; l++) { + var p = r[h + l], + b = i[h + l], + y = r[h + l + a], + m = i[h + l + a], + g = c * y - d * m; + (m = c * m + d * y), + (y = g), + (r[h + l] = p + y), + (i[h + l] = b + m), + (r[h + l + a] = p - y), + (i[h + l + a] = b - m), + l !== s && + ((g = f * c - u * d), (d = f * d + u * c), (c = g)); + } + }), + (v.prototype.guessLen13b = function (t, e) { + var r = 1 | Math.max(e, t), + i = 1 & r, + n = 0; + for (r = (r / 2) | 0; r; r >>>= 1) n++; + return 1 << (n + 1 + i); + }), + (v.prototype.conjugate = function (t, e, r) { + if (!(r <= 1)) + for (var i = 0; i < r / 2; i++) { + var n = t[i]; + (t[i] = t[r - i - 1]), + (t[r - i - 1] = n), + (n = e[i]), + (e[i] = -e[r - i - 1]), + (e[r - i - 1] = -n); + } + }), + (v.prototype.normalize13b = function (t, e) { + for (var r = 0, i = 0; i < e / 2; i++) { + var n = + 8192 * Math.round(t[2 * i + 1] / e) + + Math.round(t[2 * i] / e) + + r; + (t[i] = 67108863 & n), + (r = n < 67108864 ? 0 : (n / 67108864) | 0); + } + return t; + }), + (v.prototype.convert13b = function (t, e, r, n) { + for (var o = 0, a = 0; a < e; a++) + (o += 0 | t[a]), + (r[2 * a] = 8191 & o), + (o >>>= 13), + (r[2 * a + 1] = 8191 & o), + (o >>>= 13); + for (a = 2 * e; a < n; ++a) r[a] = 0; + i(0 === o), i(0 == (-8192 & o)); + }), + (v.prototype.stub = function (t) { + for (var e = new Array(t), r = 0; r < t; r++) e[r] = 0; + return e; + }), + (v.prototype.mulp = function (t, e, r) { + var i = 2 * this.guessLen13b(t.length, e.length), + n = this.makeRBT(i), + o = this.stub(i), + a = new Array(i), + s = new Array(i), + f = new Array(i), + u = new Array(i), + h = new Array(i), + c = new Array(i), + d = r.words; + (d.length = i), + this.convert13b(t.words, t.length, a, i), + this.convert13b(e.words, e.length, u, i), + this.transform(a, o, s, f, i, n), + this.transform(u, o, h, c, i, n); + for (var l = 0; l < i; l++) { + var p = s[l] * h[l] - f[l] * c[l]; + (f[l] = s[l] * c[l] + f[l] * h[l]), (s[l] = p); + } + return ( + this.conjugate(s, f, i), + this.transform(s, f, d, o, i, n), + this.conjugate(d, o, i), + this.normalize13b(d, i), + (r.negative = t.negative ^ e.negative), + (r.length = t.length + e.length), + r._strip() + ); + }), + (o.prototype.mul = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), + this.mulTo(t, e) + ); + }), + (o.prototype.mulf = function (t) { + var e = new o(null); + return ( + (e.words = new Array(this.length + t.length)), g(this, t, e) + ); + }), + (o.prototype.imul = function (t) { + return this.clone().mulTo(t, this); + }), + (o.prototype.imuln = function (t) { + var e = t < 0; + e && (t = -t), i("number" == typeof t), i(t < 67108864); + for (var r = 0, n = 0; n < this.length; n++) { + var o = (0 | this.words[n]) * t, + a = (67108863 & o) + (67108863 & r); + (r >>= 26), + (r += (o / 67108864) | 0), + (r += a >>> 26), + (this.words[n] = 67108863 & a); + } + return ( + 0 !== r && ((this.words[n] = r), this.length++), + e ? this.ineg() : this + ); + }), + (o.prototype.muln = function (t) { + return this.clone().imuln(t); + }), + (o.prototype.sqr = function () { + return this.mul(this); + }), + (o.prototype.isqr = function () { + return this.imul(this.clone()); + }), + (o.prototype.pow = function (t) { + var e = (function (t) { + for ( + var e = new Array(t.bitLength()), r = 0; + r < e.length; + r++ + ) { + var i = (r / 26) | 0, + n = r % 26; + e[r] = (t.words[i] >>> n) & 1; + } + return e; + })(t); + if (0 === e.length) return new o(1); + for ( + var r = this, i = 0; + i < e.length && 0 === e[i]; + i++, r = r.sqr() + ); + if (++i < e.length) + for (var n = r.sqr(); i < e.length; i++, n = n.sqr()) + 0 !== e[i] && (r = r.mul(n)); + return r; + }), + (o.prototype.iushln = function (t) { + i("number" == typeof t && t >= 0); + var e, + r = t % 26, + n = (t - r) / 26, + o = (67108863 >>> (26 - r)) << (26 - r); + if (0 !== r) { + var a = 0; + for (e = 0; e < this.length; e++) { + var s = this.words[e] & o, + f = ((0 | this.words[e]) - s) << r; + (this.words[e] = f | a), (a = s >>> (26 - r)); + } + a && ((this.words[e] = a), this.length++); + } + if (0 !== n) { + for (e = this.length - 1; e >= 0; e--) + this.words[e + n] = this.words[e]; + for (e = 0; e < n; e++) this.words[e] = 0; + this.length += n; + } + return this._strip(); + }), + (o.prototype.ishln = function (t) { + return i(0 === this.negative), this.iushln(t); + }), + (o.prototype.iushrn = function (t, e, r) { + var n; + i("number" == typeof t && t >= 0), + (n = e ? (e - (e % 26)) / 26 : 0); + var o = t % 26, + a = Math.min((t - o) / 26, this.length), + s = 67108863 ^ ((67108863 >>> o) << o), + f = r; + if (((n -= a), (n = Math.max(0, n)), f)) { + for (var u = 0; u < a; u++) f.words[u] = this.words[u]; + f.length = a; + } + if (0 === a); + else if (this.length > a) + for (this.length -= a, u = 0; u < this.length; u++) + this.words[u] = this.words[u + a]; + else (this.words[0] = 0), (this.length = 1); + var h = 0; + for ( + u = this.length - 1; + u >= 0 && (0 !== h || u >= n); + u-- + ) { + var c = 0 | this.words[u]; + (this.words[u] = (h << (26 - o)) | (c >>> o)), (h = c & s); + } + return ( + f && 0 !== h && (f.words[f.length++] = h), + 0 === this.length && + ((this.words[0] = 0), (this.length = 1)), + this._strip() + ); + }), + (o.prototype.ishrn = function (t, e, r) { + return i(0 === this.negative), this.iushrn(t, e, r); + }), + (o.prototype.shln = function (t) { + return this.clone().ishln(t); + }), + (o.prototype.ushln = function (t) { + return this.clone().iushln(t); + }), + (o.prototype.shrn = function (t) { + return this.clone().ishrn(t); + }), + (o.prototype.ushrn = function (t) { + return this.clone().iushrn(t); + }), + (o.prototype.testn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + return !(this.length <= r || !(this.words[r] & n)); + }), + (o.prototype.imaskn = function (t) { + i("number" == typeof t && t >= 0); + var e = t % 26, + r = (t - e) / 26; + if ( + (i( + 0 === this.negative, + "imaskn works only with positive numbers" + ), + this.length <= r) + ) + return this; + if ( + (0 !== e && r++, + (this.length = Math.min(r, this.length)), + 0 !== e) + ) { + var n = 67108863 ^ ((67108863 >>> e) << e); + this.words[this.length - 1] &= n; + } + return this._strip(); + }), + (o.prototype.maskn = function (t) { + return this.clone().imaskn(t); + }), + (o.prototype.iaddn = function (t) { + return ( + i("number" == typeof t), + i(t < 67108864), + t < 0 + ? this.isubn(-t) + : 0 !== this.negative + ? 1 === this.length && (0 | this.words[0]) <= t + ? ((this.words[0] = t - (0 | this.words[0])), + (this.negative = 0), + this) + : ((this.negative = 0), + this.isubn(t), + (this.negative = 1), + this) + : this._iaddn(t) + ); + }), + (o.prototype._iaddn = function (t) { + this.words[0] += t; + for ( + var e = 0; + e < this.length && this.words[e] >= 67108864; + e++ + ) + (this.words[e] -= 67108864), + e === this.length - 1 + ? (this.words[e + 1] = 1) + : this.words[e + 1]++; + return (this.length = Math.max(this.length, e + 1)), this; + }), + (o.prototype.isubn = function (t) { + if ((i("number" == typeof t), i(t < 67108864), t < 0)) + return this.iaddn(-t); + if (0 !== this.negative) + return ( + (this.negative = 0), + this.iaddn(t), + (this.negative = 1), + this + ); + if ( + ((this.words[0] -= t), + 1 === this.length && this.words[0] < 0) + ) + (this.words[0] = -this.words[0]), (this.negative = 1); + else + for (var e = 0; e < this.length && this.words[e] < 0; e++) + (this.words[e] += 67108864), (this.words[e + 1] -= 1); + return this._strip(); + }), + (o.prototype.addn = function (t) { + return this.clone().iaddn(t); + }), + (o.prototype.subn = function (t) { + return this.clone().isubn(t); + }), + (o.prototype.iabs = function () { + return (this.negative = 0), this; + }), + (o.prototype.abs = function () { + return this.clone().iabs(); + }), + (o.prototype._ishlnsubmul = function (t, e, r) { + var n, + o, + a = t.length + r; + this._expand(a); + var s = 0; + for (n = 0; n < t.length; n++) { + o = (0 | this.words[n + r]) + s; + var f = (0 | t.words[n]) * e; + (s = ((o -= 67108863 & f) >> 26) - ((f / 67108864) | 0)), + (this.words[n + r] = 67108863 & o); + } + for (; n < this.length - r; n++) + (s = (o = (0 | this.words[n + r]) + s) >> 26), + (this.words[n + r] = 67108863 & o); + if (0 === s) return this._strip(); + for (i(-1 === s), s = 0, n = 0; n < this.length; n++) + (s = (o = -(0 | this.words[n]) + s) >> 26), + (this.words[n] = 67108863 & o); + return (this.negative = 1), this._strip(); + }), + (o.prototype._wordDiv = function (t, e) { + var r = (this.length, t.length), + i = this.clone(), + n = t, + a = 0 | n.words[n.length - 1]; + 0 != (r = 26 - this._countBits(a)) && + ((n = n.ushln(r)), + i.iushln(r), + (a = 0 | n.words[n.length - 1])); + var s, + f = i.length - n.length; + if ("mod" !== e) { + ((s = new o(null)).length = f + 1), + (s.words = new Array(s.length)); + for (var u = 0; u < s.length; u++) s.words[u] = 0; + } + var h = i.clone()._ishlnsubmul(n, 1, f); + 0 === h.negative && ((i = h), s && (s.words[f] = 1)); + for (var c = f - 1; c >= 0; c--) { + var d = + 67108864 * (0 | i.words[n.length + c]) + + (0 | i.words[n.length + c - 1]); + for ( + d = Math.min((d / a) | 0, 67108863), + i._ishlnsubmul(n, d, c); + 0 !== i.negative; + + ) + d--, + (i.negative = 0), + i._ishlnsubmul(n, 1, c), + i.isZero() || (i.negative ^= 1); + s && (s.words[c] = d); + } + return ( + s && s._strip(), + i._strip(), + "div" !== e && 0 !== r && i.iushrn(r), + { div: s || null, mod: i } + ); + }), + (o.prototype.divmod = function (t, e, r) { + return ( + i(!t.isZero()), + this.isZero() + ? { div: new o(0), mod: new o(0) } + : 0 !== this.negative && 0 === t.negative + ? ((s = this.neg().divmod(t, e)), + "mod" !== e && (n = s.div.neg()), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.iadd(t)), + { div: n, mod: a }) + : 0 === this.negative && 0 !== t.negative + ? ((s = this.divmod(t.neg(), e)), + "mod" !== e && (n = s.div.neg()), + { div: n, mod: s.mod }) + : 0 != (this.negative & t.negative) + ? ((s = this.neg().divmod(t.neg(), e)), + "div" !== e && + ((a = s.mod.neg()), + r && 0 !== a.negative && a.isub(t)), + { div: s.div, mod: a }) + : t.length > this.length || this.cmp(t) < 0 + ? { div: new o(0), mod: this } + : 1 === t.length + ? "div" === e + ? { div: this.divn(t.words[0]), mod: null } + : "mod" === e + ? { div: null, mod: new o(this.modrn(t.words[0])) } + : { + div: this.divn(t.words[0]), + mod: new o(this.modrn(t.words[0])), + } + : this._wordDiv(t, e) + ); + var n, a, s; + }), + (o.prototype.div = function (t) { + return this.divmod(t, "div", !1).div; + }), + (o.prototype.mod = function (t) { + return this.divmod(t, "mod", !1).mod; + }), + (o.prototype.umod = function (t) { + return this.divmod(t, "mod", !0).mod; + }), + (o.prototype.divRound = function (t) { + var e = this.divmod(t); + if (e.mod.isZero()) return e.div; + var r = 0 !== e.div.negative ? e.mod.isub(t) : e.mod, + i = t.ushrn(1), + n = t.andln(1), + o = r.cmp(i); + return o < 0 || (1 === n && 0 === o) + ? e.div + : 0 !== e.div.negative + ? e.div.isubn(1) + : e.div.iaddn(1); + }), + (o.prototype.modrn = function (t) { + var e = t < 0; + e && (t = -t), i(t <= 67108863); + for ( + var r = (1 << 26) % t, n = 0, o = this.length - 1; + o >= 0; + o-- + ) + n = (r * n + (0 | this.words[o])) % t; + return e ? -n : n; + }), + (o.prototype.modn = function (t) { + return this.modrn(t); + }), + (o.prototype.idivn = function (t) { + var e = t < 0; + e && (t = -t), i(t <= 67108863); + for (var r = 0, n = this.length - 1; n >= 0; n--) { + var o = (0 | this.words[n]) + 67108864 * r; + (this.words[n] = (o / t) | 0), (r = o % t); + } + return this._strip(), e ? this.ineg() : this; + }), + (o.prototype.divn = function (t) { + return this.clone().idivn(t); + }), + (o.prototype.egcd = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n = new o(1), + a = new o(0), + s = new o(0), + f = new o(1), + u = 0; + e.isEven() && r.isEven(); + + ) + e.iushrn(1), r.iushrn(1), ++u; + for (var h = r.clone(), c = e.clone(); !e.isZero(); ) { + for ( + var d = 0, l = 1; + 0 == (e.words[0] & l) && d < 26; + ++d, l <<= 1 + ); + if (d > 0) + for (e.iushrn(d); d-- > 0; ) + (n.isOdd() || a.isOdd()) && (n.iadd(h), a.isub(c)), + n.iushrn(1), + a.iushrn(1); + for ( + var p = 0, b = 1; + 0 == (r.words[0] & b) && p < 26; + ++p, b <<= 1 + ); + if (p > 0) + for (r.iushrn(p); p-- > 0; ) + (s.isOdd() || f.isOdd()) && (s.iadd(h), f.isub(c)), + s.iushrn(1), + f.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), n.isub(s), a.isub(f)) + : (r.isub(e), s.isub(n), f.isub(a)); + } + return { a: s, b: f, gcd: r.iushln(u) }; + }), + (o.prototype._invmp = function (t) { + i(0 === t.negative), i(!t.isZero()); + var e = this, + r = t.clone(); + e = 0 !== e.negative ? e.umod(t) : e.clone(); + for ( + var n, a = new o(1), s = new o(0), f = r.clone(); + e.cmpn(1) > 0 && r.cmpn(1) > 0; + + ) { + for ( + var u = 0, h = 1; + 0 == (e.words[0] & h) && u < 26; + ++u, h <<= 1 + ); + if (u > 0) + for (e.iushrn(u); u-- > 0; ) + a.isOdd() && a.iadd(f), a.iushrn(1); + for ( + var c = 0, d = 1; + 0 == (r.words[0] & d) && c < 26; + ++c, d <<= 1 + ); + if (c > 0) + for (r.iushrn(c); c-- > 0; ) + s.isOdd() && s.iadd(f), s.iushrn(1); + e.cmp(r) >= 0 + ? (e.isub(r), a.isub(s)) + : (r.isub(e), s.isub(a)); + } + return ( + (n = 0 === e.cmpn(1) ? a : s).cmpn(0) < 0 && n.iadd(t), n + ); + }), + (o.prototype.gcd = function (t) { + if (this.isZero()) return t.abs(); + if (t.isZero()) return this.abs(); + var e = this.clone(), + r = t.clone(); + (e.negative = 0), (r.negative = 0); + for (var i = 0; e.isEven() && r.isEven(); i++) + e.iushrn(1), r.iushrn(1); + for (;;) { + for (; e.isEven(); ) e.iushrn(1); + for (; r.isEven(); ) r.iushrn(1); + var n = e.cmp(r); + if (n < 0) { + var o = e; + (e = r), (r = o); + } else if (0 === n || 0 === r.cmpn(1)) break; + e.isub(r); + } + return r.iushln(i); + }), + (o.prototype.invm = function (t) { + return this.egcd(t).a.umod(t); + }), + (o.prototype.isEven = function () { + return 0 == (1 & this.words[0]); + }), + (o.prototype.isOdd = function () { + return 1 == (1 & this.words[0]); + }), + (o.prototype.andln = function (t) { + return this.words[0] & t; + }), + (o.prototype.bincn = function (t) { + i("number" == typeof t); + var e = t % 26, + r = (t - e) / 26, + n = 1 << e; + if (this.length <= r) + return this._expand(r + 1), (this.words[r] |= n), this; + for (var o = n, a = r; 0 !== o && a < this.length; a++) { + var s = 0 | this.words[a]; + (o = (s += o) >>> 26), (s &= 67108863), (this.words[a] = s); + } + return 0 !== o && ((this.words[a] = o), this.length++), this; + }), + (o.prototype.isZero = function () { + return 1 === this.length && 0 === this.words[0]; + }), + (o.prototype.cmpn = function (t) { + var e, + r = t < 0; + if (0 !== this.negative && !r) return -1; + if (0 === this.negative && r) return 1; + if ((this._strip(), this.length > 1)) e = 1; + else { + r && (t = -t), i(t <= 67108863, "Number is too big"); + var n = 0 | this.words[0]; + e = n === t ? 0 : n < t ? -1 : 1; + } + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.cmp = function (t) { + if (0 !== this.negative && 0 === t.negative) return -1; + if (0 === this.negative && 0 !== t.negative) return 1; + var e = this.ucmp(t); + return 0 !== this.negative ? 0 | -e : e; + }), + (o.prototype.ucmp = function (t) { + if (this.length > t.length) return 1; + if (this.length < t.length) return -1; + for (var e = 0, r = this.length - 1; r >= 0; r--) { + var i = 0 | this.words[r], + n = 0 | t.words[r]; + if (i !== n) { + i < n ? (e = -1) : i > n && (e = 1); + break; + } + } + return e; + }), + (o.prototype.gtn = function (t) { + return 1 === this.cmpn(t); + }), + (o.prototype.gt = function (t) { + return 1 === this.cmp(t); + }), + (o.prototype.gten = function (t) { + return this.cmpn(t) >= 0; + }), + (o.prototype.gte = function (t) { + return this.cmp(t) >= 0; + }), + (o.prototype.ltn = function (t) { + return -1 === this.cmpn(t); + }), + (o.prototype.lt = function (t) { + return -1 === this.cmp(t); + }), + (o.prototype.lten = function (t) { + return this.cmpn(t) <= 0; + }), + (o.prototype.lte = function (t) { + return this.cmp(t) <= 0; + }), + (o.prototype.eqn = function (t) { + return 0 === this.cmpn(t); + }), + (o.prototype.eq = function (t) { + return 0 === this.cmp(t); + }), + (o.red = function (t) { + return new k(t); + }), + (o.prototype.toRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + i(0 === this.negative, "red works only with positives"), + t.convertTo(this)._forceRed(t) + ); + }), + (o.prototype.fromRed = function () { + return ( + i( + this.red, + "fromRed works only with numbers in reduction context" + ), + this.red.convertFrom(this) + ); + }), + (o.prototype._forceRed = function (t) { + return (this.red = t), this; + }), + (o.prototype.forceRed = function (t) { + return ( + i(!this.red, "Already a number in reduction context"), + this._forceRed(t) + ); + }), + (o.prototype.redAdd = function (t) { + return ( + i(this.red, "redAdd works only with red numbers"), + this.red.add(this, t) + ); + }), + (o.prototype.redIAdd = function (t) { + return ( + i(this.red, "redIAdd works only with red numbers"), + this.red.iadd(this, t) + ); + }), + (o.prototype.redSub = function (t) { + return ( + i(this.red, "redSub works only with red numbers"), + this.red.sub(this, t) + ); + }), + (o.prototype.redISub = function (t) { + return ( + i(this.red, "redISub works only with red numbers"), + this.red.isub(this, t) + ); + }), + (o.prototype.redShl = function (t) { + return ( + i(this.red, "redShl works only with red numbers"), + this.red.shl(this, t) + ); + }), + (o.prototype.redMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.mul(this, t) + ); + }), + (o.prototype.redIMul = function (t) { + return ( + i(this.red, "redMul works only with red numbers"), + this.red._verify2(this, t), + this.red.imul(this, t) + ); + }), + (o.prototype.redSqr = function () { + return ( + i(this.red, "redSqr works only with red numbers"), + this.red._verify1(this), + this.red.sqr(this) + ); + }), + (o.prototype.redISqr = function () { + return ( + i(this.red, "redISqr works only with red numbers"), + this.red._verify1(this), + this.red.isqr(this) + ); + }), + (o.prototype.redSqrt = function () { + return ( + i(this.red, "redSqrt works only with red numbers"), + this.red._verify1(this), + this.red.sqrt(this) + ); + }), + (o.prototype.redInvm = function () { + return ( + i(this.red, "redInvm works only with red numbers"), + this.red._verify1(this), + this.red.invm(this) + ); + }), + (o.prototype.redNeg = function () { + return ( + i(this.red, "redNeg works only with red numbers"), + this.red._verify1(this), + this.red.neg(this) + ); + }), + (o.prototype.redPow = function (t) { + return ( + i(this.red && !t.red, "redPow(normalNum)"), + this.red._verify1(this), + this.red.pow(this, t) + ); + }); + var w = { k256: null, p224: null, p192: null, p25519: null }; + function _(t, e) { + (this.name = t), + (this.p = new o(e, 16)), + (this.n = this.p.bitLength()), + (this.k = new o(1).iushln(this.n).isub(this.p)), + (this.tmp = this._tmp()); + } + function M() { + _.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + function S() { + _.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + function E() { + _.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + function A() { + _.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + function k(t) { + if ("string" == typeof t) { + var e = o._prime(t); + (this.m = e.p), (this.prime = e); + } else + i(t.gtn(1), "modulus must be greater than 1"), + (this.m = t), + (this.prime = null); + } + function x(t) { + k.call(this, t), + (this.shift = this.m.bitLength()), + this.shift % 26 != 0 && + (this.shift += 26 - (this.shift % 26)), + (this.r = new o(1).iushln(this.shift)), + (this.r2 = this.imod(this.r.sqr())), + (this.rinv = this.r._invmp(this.m)), + (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), + (this.minv = this.minv.umod(this.r)), + (this.minv = this.r.sub(this.minv)); + } + (_.prototype._tmp = function () { + var t = new o(null); + return (t.words = new Array(Math.ceil(this.n / 13))), t; + }), + (_.prototype.ireduce = function (t) { + var e, + r = t; + do { + this.split(r, this.tmp), + (e = (r = (r = this.imulK(r)).iadd( + this.tmp + )).bitLength()); + } while (e > this.n); + var i = e < this.n ? -1 : r.ucmp(this.p); + return ( + 0 === i + ? ((r.words[0] = 0), (r.length = 1)) + : i > 0 + ? r.isub(this.p) + : void 0 !== r.strip + ? r.strip() + : r._strip(), + r + ); + }), + (_.prototype.split = function (t, e) { + t.iushrn(this.n, 0, e); + }), + (_.prototype.imulK = function (t) { + return t.imul(this.k); + }), + n(M, _), + (M.prototype.split = function (t, e) { + for ( + var r = 4194303, i = Math.min(t.length, 9), n = 0; + n < i; + n++ + ) + e.words[n] = t.words[n]; + if (((e.length = i), t.length <= 9)) + return (t.words[0] = 0), void (t.length = 1); + var o = t.words[9]; + for (e.words[e.length++] = o & r, n = 10; n < t.length; n++) { + var a = 0 | t.words[n]; + (t.words[n - 10] = ((a & r) << 4) | (o >>> 22)), (o = a); + } + (o >>>= 22), + (t.words[n - 10] = o), + 0 === o && t.length > 10 + ? (t.length -= 10) + : (t.length -= 9); + }), + (M.prototype.imulK = function (t) { + (t.words[t.length] = 0), + (t.words[t.length + 1] = 0), + (t.length += 2); + for (var e = 0, r = 0; r < t.length; r++) { + var i = 0 | t.words[r]; + (e += 977 * i), + (t.words[r] = 67108863 & e), + (e = 64 * i + ((e / 67108864) | 0)); + } + return ( + 0 === t.words[t.length - 1] && + (t.length--, 0 === t.words[t.length - 1] && t.length--), + t + ); + }), + n(S, _), + n(E, _), + n(A, _), + (A.prototype.imulK = function (t) { + for (var e = 0, r = 0; r < t.length; r++) { + var i = 19 * (0 | t.words[r]) + e, + n = 67108863 & i; + (i >>>= 26), (t.words[r] = n), (e = i); + } + return 0 !== e && (t.words[t.length++] = e), t; + }), + (o._prime = function (t) { + if (w[t]) return w[t]; + var e; + if ("k256" === t) e = new M(); + else if ("p224" === t) e = new S(); + else if ("p192" === t) e = new E(); + else { + if ("p25519" !== t) throw new Error("Unknown prime " + t); + e = new A(); + } + return (w[t] = e), e; + }), + (k.prototype._verify1 = function (t) { + i(0 === t.negative, "red works only with positives"), + i(t.red, "red works only with red numbers"); + }), + (k.prototype._verify2 = function (t, e) { + i( + 0 == (t.negative | e.negative), + "red works only with positives" + ), + i( + t.red && t.red === e.red, + "red works only with red numbers" + ); + }), + (k.prototype.imod = function (t) { + return this.prime + ? this.prime.ireduce(t)._forceRed(this) + : (h(t, t.umod(this.m)._forceRed(this)), t); + }), + (k.prototype.neg = function (t) { + return t.isZero() ? t.clone() : this.m.sub(t)._forceRed(this); + }), + (k.prototype.add = function (t, e) { + this._verify2(t, e); + var r = t.add(e); + return ( + r.cmp(this.m) >= 0 && r.isub(this.m), r._forceRed(this) + ); + }), + (k.prototype.iadd = function (t, e) { + this._verify2(t, e); + var r = t.iadd(e); + return r.cmp(this.m) >= 0 && r.isub(this.m), r; + }), + (k.prototype.sub = function (t, e) { + this._verify2(t, e); + var r = t.sub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r._forceRed(this); + }), + (k.prototype.isub = function (t, e) { + this._verify2(t, e); + var r = t.isub(e); + return r.cmpn(0) < 0 && r.iadd(this.m), r; + }), + (k.prototype.shl = function (t, e) { + return this._verify1(t), this.imod(t.ushln(e)); + }), + (k.prototype.imul = function (t, e) { + return this._verify2(t, e), this.imod(t.imul(e)); + }), + (k.prototype.mul = function (t, e) { + return this._verify2(t, e), this.imod(t.mul(e)); + }), + (k.prototype.isqr = function (t) { + return this.imul(t, t.clone()); + }), + (k.prototype.sqr = function (t) { + return this.mul(t, t); + }), + (k.prototype.sqrt = function (t) { + if (t.isZero()) return t.clone(); + var e = this.m.andln(3); + if ((i(e % 2 == 1), 3 === e)) { + var r = this.m.add(new o(1)).iushrn(2); + return this.pow(t, r); + } + for ( + var n = this.m.subn(1), a = 0; + !n.isZero() && 0 === n.andln(1); + + ) + a++, n.iushrn(1); + i(!n.isZero()); + var s = new o(1).toRed(this), + f = s.redNeg(), + u = this.m.subn(1).iushrn(1), + h = this.m.bitLength(); + for ( + h = new o(2 * h * h).toRed(this); + 0 !== this.pow(h, u).cmp(f); + + ) + h.redIAdd(f); + for ( + var c = this.pow(h, n), + d = this.pow(t, n.addn(1).iushrn(1)), + l = this.pow(t, n), + p = a; + 0 !== l.cmp(s); + + ) { + for (var b = l, y = 0; 0 !== b.cmp(s); y++) b = b.redSqr(); + i(y < p); + var m = this.pow(c, new o(1).iushln(p - y - 1)); + (d = d.redMul(m)), + (c = m.redSqr()), + (l = l.redMul(c)), + (p = y); + } + return d; + }), + (k.prototype.invm = function (t) { + var e = t._invmp(this.m); + return 0 !== e.negative + ? ((e.negative = 0), this.imod(e).redNeg()) + : this.imod(e); + }), + (k.prototype.pow = function (t, e) { + if (e.isZero()) return new o(1).toRed(this); + if (0 === e.cmpn(1)) return t.clone(); + var r = new Array(16); + (r[0] = new o(1).toRed(this)), (r[1] = t); + for (var i = 2; i < r.length; i++) + r[i] = this.mul(r[i - 1], t); + var n = r[0], + a = 0, + s = 0, + f = e.bitLength() % 26; + for (0 === f && (f = 26), i = e.length - 1; i >= 0; i--) { + for (var u = e.words[i], h = f - 1; h >= 0; h--) { + var c = (u >> h) & 1; + n !== r[0] && (n = this.sqr(n)), + 0 !== c || 0 !== a + ? ((a <<= 1), + (a |= c), + (4 == ++s || (0 === i && 0 === h)) && + ((n = this.mul(n, r[a])), (s = 0), (a = 0))) + : (s = 0); + } + f = 26; + } + return n; + }), + (k.prototype.convertTo = function (t) { + var e = t.umod(this.m); + return e === t ? e.clone() : e; + }), + (k.prototype.convertFrom = function (t) { + var e = t.clone(); + return (e.red = null), e; + }), + (o.mont = function (t) { + return new x(t); + }), + n(x, k), + (x.prototype.convertTo = function (t) { + return this.imod(t.ushln(this.shift)); + }), + (x.prototype.convertFrom = function (t) { + var e = this.imod(t.mul(this.rinv)); + return (e.red = null), e; + }), + (x.prototype.imul = function (t, e) { + if (t.isZero() || e.isZero()) + return (t.words[0] = 0), (t.length = 1), t; + var r = t.imul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + o = n; + return ( + n.cmp(this.m) >= 0 + ? (o = n.isub(this.m)) + : n.cmpn(0) < 0 && (o = n.iadd(this.m)), + o._forceRed(this) + ); + }), + (x.prototype.mul = function (t, e) { + if (t.isZero() || e.isZero()) return new o(0)._forceRed(this); + var r = t.mul(e), + i = r + .maskn(this.shift) + .mul(this.minv) + .imaskn(this.shift) + .mul(this.m), + n = r.isub(i).iushrn(this.shift), + a = n; + return ( + n.cmp(this.m) >= 0 + ? (a = n.isub(this.m)) + : n.cmpn(0) < 0 && (a = n.iadd(this.m)), + a._forceRed(this) + ); + }), + (x.prototype.invm = function (t) { + return this.imod(t._invmp(this.m).mul(this.r2))._forceRed( + this + ); + }); + })((t = r.nmd(t)), this); + }, + 7295: (t, e, r) => { + var i = r(8764).Buffer; + t.exports = function (t, e) { + for ( + var r = Math.min(t.length, e.length), n = new i(r), o = 0; + o < r; + ++o + ) + n[o] = t[o] ^ e[o]; + return n; + }; + }, + 8764: (t, e, r) => { + "use strict"; + var i = r(5108); + const n = r(9742), + o = r(645), + a = + "function" == typeof Symbol && "function" == typeof Symbol.for + ? Symbol.for("nodejs.util.inspect.custom") + : null; + (e.Buffer = u), + (e.SlowBuffer = function (t) { + return +t != t && (t = 0), u.alloc(+t); + }), + (e.INSPECT_MAX_BYTES = 50); + const s = 2147483647; + function f(t) { + if (t > s) + throw new RangeError( + 'The value "' + t + '" is invalid for option "size"' + ); + const e = new Uint8Array(t); + return Object.setPrototypeOf(e, u.prototype), e; + } + function u(t, e, r) { + if ("number" == typeof t) { + if ("string" == typeof e) + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ); + return d(t); + } + return h(t, e, r); + } + function h(t, e, r) { + if ("string" == typeof t) + return (function (t, e) { + if ( + (("string" == typeof e && "" !== e) || (e = "utf8"), + !u.isEncoding(e)) + ) + throw new TypeError("Unknown encoding: " + e); + const r = 0 | y(t, e); + let i = f(r); + const n = i.write(t, e); + return n !== r && (i = i.slice(0, n)), i; + })(t, e); + if (ArrayBuffer.isView(t)) + return (function (t) { + if (X(t, Uint8Array)) { + const e = new Uint8Array(t); + return p(e.buffer, e.byteOffset, e.byteLength); + } + return l(t); + })(t); + if (null == t) + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + + typeof t + ); + if (X(t, ArrayBuffer) || (t && X(t.buffer, ArrayBuffer))) + return p(t, e, r); + if ( + "undefined" != typeof SharedArrayBuffer && + (X(t, SharedArrayBuffer) || + (t && X(t.buffer, SharedArrayBuffer))) + ) + return p(t, e, r); + if ("number" == typeof t) + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ); + const i = t.valueOf && t.valueOf(); + if (null != i && i !== t) return u.from(i, e, r); + const n = (function (t) { + if (u.isBuffer(t)) { + const e = 0 | b(t.length), + r = f(e); + return 0 === r.length || t.copy(r, 0, 0, e), r; + } + return void 0 !== t.length + ? "number" != typeof t.length || Y(t.length) + ? f(0) + : l(t) + : "Buffer" === t.type && Array.isArray(t.data) + ? l(t.data) + : void 0; + })(t); + if (n) return n; + if ( + "undefined" != typeof Symbol && + null != Symbol.toPrimitive && + "function" == typeof t[Symbol.toPrimitive] + ) + return u.from(t[Symbol.toPrimitive]("string"), e, r); + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + + typeof t + ); + } + function c(t) { + if ("number" != typeof t) + throw new TypeError('"size" argument must be of type number'); + if (t < 0) + throw new RangeError( + 'The value "' + t + '" is invalid for option "size"' + ); + } + function d(t) { + return c(t), f(t < 0 ? 0 : 0 | b(t)); + } + function l(t) { + const e = t.length < 0 ? 0 : 0 | b(t.length), + r = f(e); + for (let i = 0; i < e; i += 1) r[i] = 255 & t[i]; + return r; + } + function p(t, e, r) { + if (e < 0 || t.byteLength < e) + throw new RangeError('"offset" is outside of buffer bounds'); + if (t.byteLength < e + (r || 0)) + throw new RangeError('"length" is outside of buffer bounds'); + let i; + return ( + (i = + void 0 === e && void 0 === r + ? new Uint8Array(t) + : void 0 === r + ? new Uint8Array(t, e) + : new Uint8Array(t, e, r)), + Object.setPrototypeOf(i, u.prototype), + i + ); + } + function b(t) { + if (t >= s) + throw new RangeError( + "Attempt to allocate Buffer larger than maximum size: 0x" + + s.toString(16) + + " bytes" + ); + return 0 | t; + } + function y(t, e) { + if (u.isBuffer(t)) return t.length; + if (ArrayBuffer.isView(t) || X(t, ArrayBuffer)) + return t.byteLength; + if ("string" != typeof t) + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + + typeof t + ); + const r = t.length, + i = arguments.length > 2 && !0 === arguments[2]; + if (!i && 0 === r) return 0; + let n = !1; + for (;;) + switch (e) { + case "ascii": + case "latin1": + case "binary": + return r; + case "utf8": + case "utf-8": + return W(t).length; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return 2 * r; + case "hex": + return r >>> 1; + case "base64": + return Z(t).length; + default: + if (n) return i ? -1 : W(t).length; + (e = ("" + e).toLowerCase()), (n = !0); + } + } + function m(t, e, r) { + let i = !1; + if (((void 0 === e || e < 0) && (e = 0), e > this.length)) + return ""; + if ( + ((void 0 === r || r > this.length) && (r = this.length), r <= 0) + ) + return ""; + if ((r >>>= 0) <= (e >>>= 0)) return ""; + for (t || (t = "utf8"); ; ) + switch (t) { + case "hex": + return O(this, e, r); + case "utf8": + case "utf-8": + return x(this, e, r); + case "ascii": + return B(this, e, r); + case "latin1": + case "binary": + return R(this, e, r); + case "base64": + return k(this, e, r); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return j(this, e, r); + default: + if (i) throw new TypeError("Unknown encoding: " + t); + (t = (t + "").toLowerCase()), (i = !0); + } + } + function g(t, e, r) { + const i = t[e]; + (t[e] = t[r]), (t[r] = i); + } + function v(t, e, r, i, n) { + if (0 === t.length) return -1; + if ( + ("string" == typeof r + ? ((i = r), (r = 0)) + : r > 2147483647 + ? (r = 2147483647) + : r < -2147483648 && (r = -2147483648), + Y((r = +r)) && (r = n ? 0 : t.length - 1), + r < 0 && (r = t.length + r), + r >= t.length) + ) { + if (n) return -1; + r = t.length - 1; + } else if (r < 0) { + if (!n) return -1; + r = 0; + } + if (("string" == typeof e && (e = u.from(e, i)), u.isBuffer(e))) + return 0 === e.length ? -1 : w(t, e, r, i, n); + if ("number" == typeof e) + return ( + (e &= 255), + "function" == typeof Uint8Array.prototype.indexOf + ? n + ? Uint8Array.prototype.indexOf.call(t, e, r) + : Uint8Array.prototype.lastIndexOf.call(t, e, r) + : w(t, [e], r, i, n) + ); + throw new TypeError("val must be string, number or Buffer"); + } + function w(t, e, r, i, n) { + let o, + a = 1, + s = t.length, + f = e.length; + if ( + void 0 !== i && + ("ucs2" === (i = String(i).toLowerCase()) || + "ucs-2" === i || + "utf16le" === i || + "utf-16le" === i) + ) { + if (t.length < 2 || e.length < 2) return -1; + (a = 2), (s /= 2), (f /= 2), (r /= 2); + } + function u(t, e) { + return 1 === a ? t[e] : t.readUInt16BE(e * a); + } + if (n) { + let i = -1; + for (o = r; o < s; o++) + if (u(t, o) === u(e, -1 === i ? 0 : o - i)) { + if ((-1 === i && (i = o), o - i + 1 === f)) return i * a; + } else -1 !== i && (o -= o - i), (i = -1); + } else + for (r + f > s && (r = s - f), o = r; o >= 0; o--) { + let r = !0; + for (let i = 0; i < f; i++) + if (u(t, o + i) !== u(e, i)) { + r = !1; + break; + } + if (r) return o; + } + return -1; + } + function _(t, e, r, i) { + r = Number(r) || 0; + const n = t.length - r; + i ? (i = Number(i)) > n && (i = n) : (i = n); + const o = e.length; + let a; + for (i > o / 2 && (i = o / 2), a = 0; a < i; ++a) { + const i = parseInt(e.substr(2 * a, 2), 16); + if (Y(i)) return a; + t[r + a] = i; + } + return a; + } + function M(t, e, r, i) { + return $(W(e, t.length - r), t, r, i); + } + function S(t, e, r, i) { + return $( + (function (t) { + const e = []; + for (let r = 0; r < t.length; ++r) + e.push(255 & t.charCodeAt(r)); + return e; + })(e), + t, + r, + i + ); + } + function E(t, e, r, i) { + return $(Z(e), t, r, i); + } + function A(t, e, r, i) { + return $( + (function (t, e) { + let r, i, n; + const o = []; + for (let a = 0; a < t.length && !((e -= 2) < 0); ++a) + (r = t.charCodeAt(a)), + (i = r >> 8), + (n = r % 256), + o.push(n), + o.push(i); + return o; + })(e, t.length - r), + t, + r, + i + ); + } + function k(t, e, r) { + return 0 === e && r === t.length + ? n.fromByteArray(t) + : n.fromByteArray(t.slice(e, r)); + } + function x(t, e, r) { + r = Math.min(t.length, r); + const i = []; + let n = e; + for (; n < r; ) { + const e = t[n]; + let o = null, + a = e > 239 ? 4 : e > 223 ? 3 : e > 191 ? 2 : 1; + if (n + a <= r) { + let r, i, s, f; + switch (a) { + case 1: + e < 128 && (o = e); + break; + case 2: + (r = t[n + 1]), + 128 == (192 & r) && + ((f = ((31 & e) << 6) | (63 & r)), + f > 127 && (o = f)); + break; + case 3: + (r = t[n + 1]), + (i = t[n + 2]), + 128 == (192 & r) && + 128 == (192 & i) && + ((f = ((15 & e) << 12) | ((63 & r) << 6) | (63 & i)), + f > 2047 && (f < 55296 || f > 57343) && (o = f)); + break; + case 4: + (r = t[n + 1]), + (i = t[n + 2]), + (s = t[n + 3]), + 128 == (192 & r) && + 128 == (192 & i) && + 128 == (192 & s) && + ((f = + ((15 & e) << 18) | + ((63 & r) << 12) | + ((63 & i) << 6) | + (63 & s)), + f > 65535 && f < 1114112 && (o = f)); + } + } + null === o + ? ((o = 65533), (a = 1)) + : o > 65535 && + ((o -= 65536), + i.push(((o >>> 10) & 1023) | 55296), + (o = 56320 | (1023 & o))), + i.push(o), + (n += a); + } + return (function (t) { + const e = t.length; + if (e <= I) return String.fromCharCode.apply(String, t); + let r = "", + i = 0; + for (; i < e; ) + r += String.fromCharCode.apply(String, t.slice(i, (i += I))); + return r; + })(i); + } + (e.kMaxLength = s), + (u.TYPED_ARRAY_SUPPORT = (function () { + try { + const t = new Uint8Array(1), + e = { + foo: function () { + return 42; + }, + }; + return ( + Object.setPrototypeOf(e, Uint8Array.prototype), + Object.setPrototypeOf(t, e), + 42 === t.foo() + ); + } catch (t) { + return !1; + } + })()), + u.TYPED_ARRAY_SUPPORT || + void 0 === i || + "function" != typeof i.error || + i.error( + "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." + ), + Object.defineProperty(u.prototype, "parent", { + enumerable: !0, + get: function () { + if (u.isBuffer(this)) return this.buffer; + }, + }), + Object.defineProperty(u.prototype, "offset", { + enumerable: !0, + get: function () { + if (u.isBuffer(this)) return this.byteOffset; + }, + }), + (u.poolSize = 8192), + (u.from = function (t, e, r) { + return h(t, e, r); + }), + Object.setPrototypeOf(u.prototype, Uint8Array.prototype), + Object.setPrototypeOf(u, Uint8Array), + (u.alloc = function (t, e, r) { + return (function (t, e, r) { + return ( + c(t), + t <= 0 + ? f(t) + : void 0 !== e + ? "string" == typeof r + ? f(t).fill(e, r) + : f(t).fill(e) + : f(t) + ); + })(t, e, r); + }), + (u.allocUnsafe = function (t) { + return d(t); + }), + (u.allocUnsafeSlow = function (t) { + return d(t); + }), + (u.isBuffer = function (t) { + return null != t && !0 === t._isBuffer && t !== u.prototype; + }), + (u.compare = function (t, e) { + if ( + (X(t, Uint8Array) && (t = u.from(t, t.offset, t.byteLength)), + X(e, Uint8Array) && (e = u.from(e, e.offset, e.byteLength)), + !u.isBuffer(t) || !u.isBuffer(e)) + ) + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ); + if (t === e) return 0; + let r = t.length, + i = e.length; + for (let n = 0, o = Math.min(r, i); n < o; ++n) + if (t[n] !== e[n]) { + (r = t[n]), (i = e[n]); + break; + } + return r < i ? -1 : i < r ? 1 : 0; + }), + (u.isEncoding = function (t) { + switch (String(t).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "latin1": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return !0; + default: + return !1; + } + }), + (u.concat = function (t, e) { + if (!Array.isArray(t)) + throw new TypeError( + '"list" argument must be an Array of Buffers' + ); + if (0 === t.length) return u.alloc(0); + let r; + if (void 0 === e) + for (e = 0, r = 0; r < t.length; ++r) e += t[r].length; + const i = u.allocUnsafe(e); + let n = 0; + for (r = 0; r < t.length; ++r) { + let e = t[r]; + if (X(e, Uint8Array)) + n + e.length > i.length + ? (u.isBuffer(e) || (e = u.from(e)), e.copy(i, n)) + : Uint8Array.prototype.set.call(i, e, n); + else { + if (!u.isBuffer(e)) + throw new TypeError( + '"list" argument must be an Array of Buffers' + ); + e.copy(i, n); + } + n += e.length; + } + return i; + }), + (u.byteLength = y), + (u.prototype._isBuffer = !0), + (u.prototype.swap16 = function () { + const t = this.length; + if (t % 2 != 0) + throw new RangeError( + "Buffer size must be a multiple of 16-bits" + ); + for (let e = 0; e < t; e += 2) g(this, e, e + 1); + return this; + }), + (u.prototype.swap32 = function () { + const t = this.length; + if (t % 4 != 0) + throw new RangeError( + "Buffer size must be a multiple of 32-bits" + ); + for (let e = 0; e < t; e += 4) + g(this, e, e + 3), g(this, e + 1, e + 2); + return this; + }), + (u.prototype.swap64 = function () { + const t = this.length; + if (t % 8 != 0) + throw new RangeError( + "Buffer size must be a multiple of 64-bits" + ); + for (let e = 0; e < t; e += 8) + g(this, e, e + 7), + g(this, e + 1, e + 6), + g(this, e + 2, e + 5), + g(this, e + 3, e + 4); + return this; + }), + (u.prototype.toString = function () { + const t = this.length; + return 0 === t + ? "" + : 0 === arguments.length + ? x(this, 0, t) + : m.apply(this, arguments); + }), + (u.prototype.toLocaleString = u.prototype.toString), + (u.prototype.equals = function (t) { + if (!u.isBuffer(t)) + throw new TypeError("Argument must be a Buffer"); + return this === t || 0 === u.compare(this, t); + }), + (u.prototype.inspect = function () { + let t = ""; + const r = e.INSPECT_MAX_BYTES; + return ( + (t = this.toString("hex", 0, r) + .replace(/(.{2})/g, "$1 ") + .trim()), + this.length > r && (t += " ... "), + "" + ); + }), + a && (u.prototype[a] = u.prototype.inspect), + (u.prototype.compare = function (t, e, r, i, n) { + if ( + (X(t, Uint8Array) && (t = u.from(t, t.offset, t.byteLength)), + !u.isBuffer(t)) + ) + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + + typeof t + ); + if ( + (void 0 === e && (e = 0), + void 0 === r && (r = t ? t.length : 0), + void 0 === i && (i = 0), + void 0 === n && (n = this.length), + e < 0 || r > t.length || i < 0 || n > this.length) + ) + throw new RangeError("out of range index"); + if (i >= n && e >= r) return 0; + if (i >= n) return -1; + if (e >= r) return 1; + if (this === t) return 0; + let o = (n >>>= 0) - (i >>>= 0), + a = (r >>>= 0) - (e >>>= 0); + const s = Math.min(o, a), + f = this.slice(i, n), + h = t.slice(e, r); + for (let t = 0; t < s; ++t) + if (f[t] !== h[t]) { + (o = f[t]), (a = h[t]); + break; + } + return o < a ? -1 : a < o ? 1 : 0; + }), + (u.prototype.includes = function (t, e, r) { + return -1 !== this.indexOf(t, e, r); + }), + (u.prototype.indexOf = function (t, e, r) { + return v(this, t, e, r, !0); + }), + (u.prototype.lastIndexOf = function (t, e, r) { + return v(this, t, e, r, !1); + }), + (u.prototype.write = function (t, e, r, i) { + if (void 0 === e) (i = "utf8"), (r = this.length), (e = 0); + else if (void 0 === r && "string" == typeof e) + (i = e), (r = this.length), (e = 0); + else { + if (!isFinite(e)) + throw new Error( + "Buffer.write(string, encoding, offset[, length]) is no longer supported" + ); + (e >>>= 0), + isFinite(r) + ? ((r >>>= 0), void 0 === i && (i = "utf8")) + : ((i = r), (r = void 0)); + } + const n = this.length - e; + if ( + ((void 0 === r || r > n) && (r = n), + (t.length > 0 && (r < 0 || e < 0)) || e > this.length) + ) + throw new RangeError( + "Attempt to write outside buffer bounds" + ); + i || (i = "utf8"); + let o = !1; + for (;;) + switch (i) { + case "hex": + return _(this, t, e, r); + case "utf8": + case "utf-8": + return M(this, t, e, r); + case "ascii": + case "latin1": + case "binary": + return S(this, t, e, r); + case "base64": + return E(this, t, e, r); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return A(this, t, e, r); + default: + if (o) throw new TypeError("Unknown encoding: " + i); + (i = ("" + i).toLowerCase()), (o = !0); + } + }), + (u.prototype.toJSON = function () { + return { + type: "Buffer", + data: Array.prototype.slice.call(this._arr || this, 0), + }; + }); + const I = 4096; + function B(t, e, r) { + let i = ""; + r = Math.min(t.length, r); + for (let n = e; n < r; ++n) i += String.fromCharCode(127 & t[n]); + return i; + } + function R(t, e, r) { + let i = ""; + r = Math.min(t.length, r); + for (let n = e; n < r; ++n) i += String.fromCharCode(t[n]); + return i; + } + function O(t, e, r) { + const i = t.length; + (!e || e < 0) && (e = 0), (!r || r < 0 || r > i) && (r = i); + let n = ""; + for (let i = e; i < r; ++i) n += J[t[i]]; + return n; + } + function j(t, e, r) { + const i = t.slice(e, r); + let n = ""; + for (let t = 0; t < i.length - 1; t += 2) + n += String.fromCharCode(i[t] + 256 * i[t + 1]); + return n; + } + function P(t, e, r) { + if (t % 1 != 0 || t < 0) + throw new RangeError("offset is not uint"); + if (t + e > r) + throw new RangeError("Trying to access beyond buffer length"); + } + function T(t, e, r, i, n, o) { + if (!u.isBuffer(t)) + throw new TypeError( + '"buffer" argument must be a Buffer instance' + ); + if (e > n || e < o) + throw new RangeError('"value" argument is out of bounds'); + if (r + i > t.length) throw new RangeError("Index out of range"); + } + function L(t, e, r, i, n) { + K(e, i, n, t, r, 7); + let o = Number(e & BigInt(4294967295)); + (t[r++] = o), + (o >>= 8), + (t[r++] = o), + (o >>= 8), + (t[r++] = o), + (o >>= 8), + (t[r++] = o); + let a = Number((e >> BigInt(32)) & BigInt(4294967295)); + return ( + (t[r++] = a), + (a >>= 8), + (t[r++] = a), + (a >>= 8), + (t[r++] = a), + (a >>= 8), + (t[r++] = a), + r + ); + } + function N(t, e, r, i, n) { + K(e, i, n, t, r, 7); + let o = Number(e & BigInt(4294967295)); + (t[r + 7] = o), + (o >>= 8), + (t[r + 6] = o), + (o >>= 8), + (t[r + 5] = o), + (o >>= 8), + (t[r + 4] = o); + let a = Number((e >> BigInt(32)) & BigInt(4294967295)); + return ( + (t[r + 3] = a), + (a >>= 8), + (t[r + 2] = a), + (a >>= 8), + (t[r + 1] = a), + (a >>= 8), + (t[r] = a), + r + 8 + ); + } + function C(t, e, r, i, n, o) { + if (r + i > t.length) throw new RangeError("Index out of range"); + if (r < 0) throw new RangeError("Index out of range"); + } + function U(t, e, r, i, n) { + return ( + (e = +e), + (r >>>= 0), + n || C(t, 0, r, 4), + o.write(t, e, r, i, 23, 4), + r + 4 + ); + } + function D(t, e, r, i, n) { + return ( + (e = +e), + (r >>>= 0), + n || C(t, 0, r, 8), + o.write(t, e, r, i, 52, 8), + r + 8 + ); + } + (u.prototype.slice = function (t, e) { + const r = this.length; + (t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), + (e = void 0 === e ? r : ~~e) < 0 + ? (e += r) < 0 && (e = 0) + : e > r && (e = r), + e < t && (e = t); + const i = this.subarray(t, e); + return Object.setPrototypeOf(i, u.prototype), i; + }), + (u.prototype.readUintLE = u.prototype.readUIntLE = + function (t, e, r) { + (t >>>= 0), (e >>>= 0), r || P(t, e, this.length); + let i = this[t], + n = 1, + o = 0; + for (; ++o < e && (n *= 256); ) i += this[t + o] * n; + return i; + }), + (u.prototype.readUintBE = u.prototype.readUIntBE = + function (t, e, r) { + (t >>>= 0), (e >>>= 0), r || P(t, e, this.length); + let i = this[t + --e], + n = 1; + for (; e > 0 && (n *= 256); ) i += this[t + --e] * n; + return i; + }), + (u.prototype.readUint8 = u.prototype.readUInt8 = + function (t, e) { + return (t >>>= 0), e || P(t, 1, this.length), this[t]; + }), + (u.prototype.readUint16LE = u.prototype.readUInt16LE = + function (t, e) { + return ( + (t >>>= 0), + e || P(t, 2, this.length), + this[t] | (this[t + 1] << 8) + ); + }), + (u.prototype.readUint16BE = u.prototype.readUInt16BE = + function (t, e) { + return ( + (t >>>= 0), + e || P(t, 2, this.length), + (this[t] << 8) | this[t + 1] + ); + }), + (u.prototype.readUint32LE = u.prototype.readUInt32LE = + function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + (this[t] | (this[t + 1] << 8) | (this[t + 2] << 16)) + + 16777216 * this[t + 3] + ); + }), + (u.prototype.readUint32BE = u.prototype.readUInt32BE = + function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + 16777216 * this[t] + + ((this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3]) + ); + }), + (u.prototype.readBigUInt64LE = Q(function (t) { + H((t >>>= 0), "offset"); + const e = this[t], + r = this[t + 7]; + (void 0 !== e && void 0 !== r) || V(t, this.length - 8); + const i = + e + + 256 * this[++t] + + 65536 * this[++t] + + this[++t] * 2 ** 24, + n = + this[++t] + + 256 * this[++t] + + 65536 * this[++t] + + r * 2 ** 24; + return BigInt(i) + (BigInt(n) << BigInt(32)); + })), + (u.prototype.readBigUInt64BE = Q(function (t) { + H((t >>>= 0), "offset"); + const e = this[t], + r = this[t + 7]; + (void 0 !== e && void 0 !== r) || V(t, this.length - 8); + const i = + e * 2 ** 24 + + 65536 * this[++t] + + 256 * this[++t] + + this[++t], + n = + this[++t] * 2 ** 24 + + 65536 * this[++t] + + 256 * this[++t] + + r; + return (BigInt(i) << BigInt(32)) + BigInt(n); + })), + (u.prototype.readIntLE = function (t, e, r) { + (t >>>= 0), (e >>>= 0), r || P(t, e, this.length); + let i = this[t], + n = 1, + o = 0; + for (; ++o < e && (n *= 256); ) i += this[t + o] * n; + return (n *= 128), i >= n && (i -= Math.pow(2, 8 * e)), i; + }), + (u.prototype.readIntBE = function (t, e, r) { + (t >>>= 0), (e >>>= 0), r || P(t, e, this.length); + let i = e, + n = 1, + o = this[t + --i]; + for (; i > 0 && (n *= 256); ) o += this[t + --i] * n; + return (n *= 128), o >= n && (o -= Math.pow(2, 8 * e)), o; + }), + (u.prototype.readInt8 = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 1, this.length), + 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + ); + }), + (u.prototype.readInt16LE = function (t, e) { + (t >>>= 0), e || P(t, 2, this.length); + const r = this[t] | (this[t + 1] << 8); + return 32768 & r ? 4294901760 | r : r; + }), + (u.prototype.readInt16BE = function (t, e) { + (t >>>= 0), e || P(t, 2, this.length); + const r = this[t + 1] | (this[t] << 8); + return 32768 & r ? 4294901760 | r : r; + }), + (u.prototype.readInt32LE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + this[t] | + (this[t + 1] << 8) | + (this[t + 2] << 16) | + (this[t + 3] << 24) + ); + }), + (u.prototype.readInt32BE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + (this[t] << 24) | + (this[t + 1] << 16) | + (this[t + 2] << 8) | + this[t + 3] + ); + }), + (u.prototype.readBigInt64LE = Q(function (t) { + H((t >>>= 0), "offset"); + const e = this[t], + r = this[t + 7]; + (void 0 !== e && void 0 !== r) || V(t, this.length - 8); + const i = + this[t + 4] + + 256 * this[t + 5] + + 65536 * this[t + 6] + + (r << 24); + return ( + (BigInt(i) << BigInt(32)) + + BigInt( + e + + 256 * this[++t] + + 65536 * this[++t] + + this[++t] * 2 ** 24 + ) + ); + })), + (u.prototype.readBigInt64BE = Q(function (t) { + H((t >>>= 0), "offset"); + const e = this[t], + r = this[t + 7]; + (void 0 !== e && void 0 !== r) || V(t, this.length - 8); + const i = + (e << 24) + 65536 * this[++t] + 256 * this[++t] + this[++t]; + return ( + (BigInt(i) << BigInt(32)) + + BigInt( + this[++t] * 2 ** 24 + + 65536 * this[++t] + + 256 * this[++t] + + r + ) + ); + })), + (u.prototype.readFloatLE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + o.read(this, t, !0, 23, 4) + ); + }), + (u.prototype.readFloatBE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 4, this.length), + o.read(this, t, !1, 23, 4) + ); + }), + (u.prototype.readDoubleLE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 8, this.length), + o.read(this, t, !0, 52, 8) + ); + }), + (u.prototype.readDoubleBE = function (t, e) { + return ( + (t >>>= 0), + e || P(t, 8, this.length), + o.read(this, t, !1, 52, 8) + ); + }), + (u.prototype.writeUintLE = u.prototype.writeUIntLE = + function (t, e, r, i) { + (t = +t), + (e >>>= 0), + (r >>>= 0), + i || T(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); + let n = 1, + o = 0; + for (this[e] = 255 & t; ++o < r && (n *= 256); ) + this[e + o] = (t / n) & 255; + return e + r; + }), + (u.prototype.writeUintBE = u.prototype.writeUIntBE = + function (t, e, r, i) { + (t = +t), + (e >>>= 0), + (r >>>= 0), + i || T(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); + let n = r - 1, + o = 1; + for (this[e + n] = 255 & t; --n >= 0 && (o *= 256); ) + this[e + n] = (t / o) & 255; + return e + r; + }), + (u.prototype.writeUint8 = u.prototype.writeUInt8 = + function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 1, 255, 0), + (this[e] = 255 & t), + e + 1 + ); + }), + (u.prototype.writeUint16LE = u.prototype.writeUInt16LE = + function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 2, 65535, 0), + (this[e] = 255 & t), + (this[e + 1] = t >>> 8), + e + 2 + ); + }), + (u.prototype.writeUint16BE = u.prototype.writeUInt16BE = + function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 2, 65535, 0), + (this[e] = t >>> 8), + (this[e + 1] = 255 & t), + e + 2 + ); + }), + (u.prototype.writeUint32LE = u.prototype.writeUInt32LE = + function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 4, 4294967295, 0), + (this[e + 3] = t >>> 24), + (this[e + 2] = t >>> 16), + (this[e + 1] = t >>> 8), + (this[e] = 255 & t), + e + 4 + ); + }), + (u.prototype.writeUint32BE = u.prototype.writeUInt32BE = + function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 4, 4294967295, 0), + (this[e] = t >>> 24), + (this[e + 1] = t >>> 16), + (this[e + 2] = t >>> 8), + (this[e + 3] = 255 & t), + e + 4 + ); + }), + (u.prototype.writeBigUInt64LE = Q(function (t, e = 0) { + return L(this, t, e, BigInt(0), BigInt("0xffffffffffffffff")); + })), + (u.prototype.writeBigUInt64BE = Q(function (t, e = 0) { + return N(this, t, e, BigInt(0), BigInt("0xffffffffffffffff")); + })), + (u.prototype.writeIntLE = function (t, e, r, i) { + if (((t = +t), (e >>>= 0), !i)) { + const i = Math.pow(2, 8 * r - 1); + T(this, t, e, r, i - 1, -i); + } + let n = 0, + o = 1, + a = 0; + for (this[e] = 255 & t; ++n < r && (o *= 256); ) + t < 0 && 0 === a && 0 !== this[e + n - 1] && (a = 1), + (this[e + n] = (((t / o) >> 0) - a) & 255); + return e + r; + }), + (u.prototype.writeIntBE = function (t, e, r, i) { + if (((t = +t), (e >>>= 0), !i)) { + const i = Math.pow(2, 8 * r - 1); + T(this, t, e, r, i - 1, -i); + } + let n = r - 1, + o = 1, + a = 0; + for (this[e + n] = 255 & t; --n >= 0 && (o *= 256); ) + t < 0 && 0 === a && 0 !== this[e + n + 1] && (a = 1), + (this[e + n] = (((t / o) >> 0) - a) & 255); + return e + r; + }), + (u.prototype.writeInt8 = function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 1, 127, -128), + t < 0 && (t = 255 + t + 1), + (this[e] = 255 & t), + e + 1 + ); + }), + (u.prototype.writeInt16LE = function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 2, 32767, -32768), + (this[e] = 255 & t), + (this[e + 1] = t >>> 8), + e + 2 + ); + }), + (u.prototype.writeInt16BE = function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 2, 32767, -32768), + (this[e] = t >>> 8), + (this[e + 1] = 255 & t), + e + 2 + ); + }), + (u.prototype.writeInt32LE = function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 4, 2147483647, -2147483648), + (this[e] = 255 & t), + (this[e + 1] = t >>> 8), + (this[e + 2] = t >>> 16), + (this[e + 3] = t >>> 24), + e + 4 + ); + }), + (u.prototype.writeInt32BE = function (t, e, r) { + return ( + (t = +t), + (e >>>= 0), + r || T(this, t, e, 4, 2147483647, -2147483648), + t < 0 && (t = 4294967295 + t + 1), + (this[e] = t >>> 24), + (this[e + 1] = t >>> 16), + (this[e + 2] = t >>> 8), + (this[e + 3] = 255 & t), + e + 4 + ); + }), + (u.prototype.writeBigInt64LE = Q(function (t, e = 0) { + return L( + this, + t, + e, + -BigInt("0x8000000000000000"), + BigInt("0x7fffffffffffffff") + ); + })), + (u.prototype.writeBigInt64BE = Q(function (t, e = 0) { + return N( + this, + t, + e, + -BigInt("0x8000000000000000"), + BigInt("0x7fffffffffffffff") + ); + })), + (u.prototype.writeFloatLE = function (t, e, r) { + return U(this, t, e, !0, r); + }), + (u.prototype.writeFloatBE = function (t, e, r) { + return U(this, t, e, !1, r); + }), + (u.prototype.writeDoubleLE = function (t, e, r) { + return D(this, t, e, !0, r); + }), + (u.prototype.writeDoubleBE = function (t, e, r) { + return D(this, t, e, !1, r); + }), + (u.prototype.copy = function (t, e, r, i) { + if (!u.isBuffer(t)) + throw new TypeError("argument should be a Buffer"); + if ( + (r || (r = 0), + i || 0 === i || (i = this.length), + e >= t.length && (e = t.length), + e || (e = 0), + i > 0 && i < r && (i = r), + i === r) + ) + return 0; + if (0 === t.length || 0 === this.length) return 0; + if (e < 0) throw new RangeError("targetStart out of bounds"); + if (r < 0 || r >= this.length) + throw new RangeError("Index out of range"); + if (i < 0) throw new RangeError("sourceEnd out of bounds"); + i > this.length && (i = this.length), + t.length - e < i - r && (i = t.length - e + r); + const n = i - r; + return ( + this === t && + "function" == typeof Uint8Array.prototype.copyWithin + ? this.copyWithin(e, r, i) + : Uint8Array.prototype.set.call(t, this.subarray(r, i), e), + n + ); + }), + (u.prototype.fill = function (t, e, r, i) { + if ("string" == typeof t) { + if ( + ("string" == typeof e + ? ((i = e), (e = 0), (r = this.length)) + : "string" == typeof r && ((i = r), (r = this.length)), + void 0 !== i && "string" != typeof i) + ) + throw new TypeError("encoding must be a string"); + if ("string" == typeof i && !u.isEncoding(i)) + throw new TypeError("Unknown encoding: " + i); + if (1 === t.length) { + const e = t.charCodeAt(0); + (("utf8" === i && e < 128) || "latin1" === i) && (t = e); + } + } else + "number" == typeof t + ? (t &= 255) + : "boolean" == typeof t && (t = Number(t)); + if (e < 0 || this.length < e || this.length < r) + throw new RangeError("Out of range index"); + if (r <= e) return this; + let n; + if ( + ((e >>>= 0), + (r = void 0 === r ? this.length : r >>> 0), + t || (t = 0), + "number" == typeof t) + ) + for (n = e; n < r; ++n) this[n] = t; + else { + const o = u.isBuffer(t) ? t : u.from(t, i), + a = o.length; + if (0 === a) + throw new TypeError( + 'The value "' + t + '" is invalid for argument "value"' + ); + for (n = 0; n < r - e; ++n) this[n + e] = o[n % a]; + } + return this; + }); + const q = {}; + function z(t, e, r) { + q[t] = class extends r { + constructor() { + super(), + Object.defineProperty(this, "message", { + value: e.apply(this, arguments), + writable: !0, + configurable: !0, + }), + (this.name = `${this.name} [${t}]`), + this.stack, + delete this.name; + } + get code() { + return t; + } + set code(t) { + Object.defineProperty(this, "code", { + configurable: !0, + enumerable: !0, + value: t, + writable: !0, + }); + } + toString() { + return `${this.name} [${t}]: ${this.message}`; + } + }; + } + function F(t) { + let e = "", + r = t.length; + const i = "-" === t[0] ? 1 : 0; + for (; r >= i + 4; r -= 3) e = `_${t.slice(r - 3, r)}${e}`; + return `${t.slice(0, r)}${e}`; + } + function K(t, e, r, i, n, o) { + if (t > r || t < e) { + const i = "bigint" == typeof e ? "n" : ""; + let n; + throw ( + ((n = + o > 3 + ? 0 === e || e === BigInt(0) + ? `>= 0${i} and < 2${i} ** ${8 * (o + 1)}${i}` + : `>= -(2${i} ** ${8 * (o + 1) - 1}${i}) and < 2 ** ${ + 8 * (o + 1) - 1 + }${i}` + : `>= ${e}${i} and <= ${r}${i}`), + new q.ERR_OUT_OF_RANGE("value", n, t)) + ); + } + !(function (t, e, r) { + H(e, "offset"), + (void 0 !== t[e] && void 0 !== t[e + r]) || + V(e, t.length - (r + 1)); + })(i, n, o); + } + function H(t, e) { + if ("number" != typeof t) + throw new q.ERR_INVALID_ARG_TYPE(e, "number", t); + } + function V(t, e, r) { + if (Math.floor(t) !== t) + throw ( + (H(t, r), + new q.ERR_OUT_OF_RANGE(r || "offset", "an integer", t)) + ); + if (e < 0) throw new q.ERR_BUFFER_OUT_OF_BOUNDS(); + throw new q.ERR_OUT_OF_RANGE( + r || "offset", + `>= ${r ? 1 : 0} and <= ${e}`, + t + ); + } + z( + "ERR_BUFFER_OUT_OF_BOUNDS", + function (t) { + return t + ? `${t} is outside of buffer bounds` + : "Attempt to access memory outside buffer bounds"; + }, + RangeError + ), + z( + "ERR_INVALID_ARG_TYPE", + function (t, e) { + return `The "${t}" argument must be of type number. Received type ${typeof e}`; + }, + TypeError + ), + z( + "ERR_OUT_OF_RANGE", + function (t, e, r) { + let i = `The value of "${t}" is out of range.`, + n = r; + return ( + Number.isInteger(r) && Math.abs(r) > 2 ** 32 + ? (n = F(String(r))) + : "bigint" == typeof r && + ((n = String(r)), + (r > BigInt(2) ** BigInt(32) || + r < -(BigInt(2) ** BigInt(32))) && + (n = F(n)), + (n += "n")), + (i += ` It must be ${e}. Received ${n}`), + i + ); + }, + RangeError + ); + const G = /[^+/0-9A-Za-z-_]/g; + function W(t, e) { + let r; + e = e || 1 / 0; + const i = t.length; + let n = null; + const o = []; + for (let a = 0; a < i; ++a) { + if (((r = t.charCodeAt(a)), r > 55295 && r < 57344)) { + if (!n) { + if (r > 56319) { + (e -= 3) > -1 && o.push(239, 191, 189); + continue; + } + if (a + 1 === i) { + (e -= 3) > -1 && o.push(239, 191, 189); + continue; + } + n = r; + continue; + } + if (r < 56320) { + (e -= 3) > -1 && o.push(239, 191, 189), (n = r); + continue; + } + r = 65536 + (((n - 55296) << 10) | (r - 56320)); + } else n && (e -= 3) > -1 && o.push(239, 191, 189); + if (((n = null), r < 128)) { + if ((e -= 1) < 0) break; + o.push(r); + } else if (r < 2048) { + if ((e -= 2) < 0) break; + o.push((r >> 6) | 192, (63 & r) | 128); + } else if (r < 65536) { + if ((e -= 3) < 0) break; + o.push( + (r >> 12) | 224, + ((r >> 6) & 63) | 128, + (63 & r) | 128 + ); + } else { + if (!(r < 1114112)) throw new Error("Invalid code point"); + if ((e -= 4) < 0) break; + o.push( + (r >> 18) | 240, + ((r >> 12) & 63) | 128, + ((r >> 6) & 63) | 128, + (63 & r) | 128 + ); + } + } + return o; + } + function Z(t) { + return n.toByteArray( + (function (t) { + if ( + (t = (t = t.split("=")[0]).trim().replace(G, "")).length < 2 + ) + return ""; + for (; t.length % 4 != 0; ) t += "="; + return t; + })(t) + ); + } + function $(t, e, r, i) { + let n; + for (n = 0; n < i && !(n + r >= e.length || n >= t.length); ++n) + e[n + r] = t[n]; + return n; + } + function X(t, e) { + return ( + t instanceof e || + (null != t && + null != t.constructor && + null != t.constructor.name && + t.constructor.name === e.name) + ); + } + function Y(t) { + return t != t; + } + const J = (function () { + const t = "0123456789abcdef", + e = new Array(256); + for (let r = 0; r < 16; ++r) { + const i = 16 * r; + for (let n = 0; n < 16; ++n) e[i + n] = t[r] + t[n]; + } + return e; + })(); + function Q(t) { + return "undefined" == typeof BigInt ? tt : t; + } + function tt() { + throw new Error("BigInt not supported"); + } + }, + 1924: (t, e, r) => { + "use strict"; + var i = r(210), + n = r(5559), + o = n(i("String.prototype.indexOf")); + t.exports = function (t, e) { + var r = i(t, !!e); + return "function" == typeof r && o(t, ".prototype.") > -1 + ? n(r) + : r; + }; + }, + 5559: (t, e, r) => { + "use strict"; + var i = r(8612), + n = r(210), + o = n("%Function.prototype.apply%"), + a = n("%Function.prototype.call%"), + s = n("%Reflect.apply%", !0) || i.call(a, o), + f = n("%Object.getOwnPropertyDescriptor%", !0), + u = n("%Object.defineProperty%", !0), + h = n("%Math.max%"); + if (u) + try { + u({}, "a", { value: 1 }); + } catch (t) { + u = null; + } + t.exports = function (t) { + var e = s(i, a, arguments); + if (f && u) { + var r = f(e, "length"); + r.configurable && + u(e, "length", { + value: 1 + h(0, t.length - (arguments.length - 1)), + }); + } + return e; + }; + var c = function () { + return s(i, o, arguments); + }; + u ? u(t.exports, "apply", { value: c }) : (t.exports.apply = c); + }, + 1027: (t, e, r) => { + var i = r(9509).Buffer, + n = r(2830).Transform, + o = r(2553).s; + function a(t) { + n.call(this), + (this.hashMode = "string" == typeof t), + this.hashMode + ? (this[t] = this._finalOrDigest) + : (this.final = this._finalOrDigest), + this._final && + ((this.__final = this._final), (this._final = null)), + (this._decoder = null), + (this._encoding = null); + } + r(5717)(a, n), + (a.prototype.update = function (t, e, r) { + "string" == typeof t && (t = i.from(t, e)); + var n = this._update(t); + return this.hashMode + ? this + : (r && (n = this._toString(n, r)), n); + }), + (a.prototype.setAutoPadding = function () {}), + (a.prototype.getAuthTag = function () { + throw new Error("trying to get auth tag in unsupported state"); + }), + (a.prototype.setAuthTag = function () { + throw new Error("trying to set auth tag in unsupported state"); + }), + (a.prototype.setAAD = function () { + throw new Error("trying to set aad in unsupported state"); + }), + (a.prototype._transform = function (t, e, r) { + var i; + try { + this.hashMode ? this._update(t) : this.push(this._update(t)); + } catch (t) { + i = t; + } finally { + r(i); + } + }), + (a.prototype._flush = function (t) { + var e; + try { + this.push(this.__final()); + } catch (t) { + e = t; + } + t(e); + }), + (a.prototype._finalOrDigest = function (t) { + var e = this.__final() || i.alloc(0); + return t && (e = this._toString(e, t, !0)), e; + }), + (a.prototype._toString = function (t, e, r) { + if ( + (this._decoder || + ((this._decoder = new o(e)), (this._encoding = e)), + this._encoding !== e) + ) + throw new Error("can't switch encodings"); + var i = this._decoder.write(t); + return r && (i += this._decoder.end()), i; + }), + (t.exports = a); + }, + 5108: (t, e, r) => { + var i = r(9539), + n = r(9282); + function o() { + return new Date().getTime(); + } + var a, + s = Array.prototype.slice, + f = {}; + a = + void 0 !== r.g && r.g.console + ? r.g.console + : "undefined" != typeof window && window.console + ? window.console + : {}; + for ( + var u = [ + [function () {}, "log"], + [ + function () { + a.log.apply(a, arguments); + }, + "info", + ], + [ + function () { + a.log.apply(a, arguments); + }, + "warn", + ], + [ + function () { + a.warn.apply(a, arguments); + }, + "error", + ], + [ + function (t) { + f[t] = o(); + }, + "time", + ], + [ + function (t) { + var e = f[t]; + if (!e) throw new Error("No such label: " + t); + delete f[t]; + var r = o() - e; + a.log(t + ": " + r + "ms"); + }, + "timeEnd", + ], + [ + function () { + var t = new Error(); + (t.name = "Trace"), + (t.message = i.format.apply(null, arguments)), + a.error(t.stack); + }, + "trace", + ], + [ + function (t) { + a.log(i.inspect(t) + "\n"); + }, + "dir", + ], + [ + function (t) { + if (!t) { + var e = s.call(arguments, 1); + n.ok(!1, i.format.apply(null, e)); + } + }, + "assert", + ], + ], + h = 0; + h < u.length; + h++ + ) { + var c = u[h], + d = c[0], + l = c[1]; + a[l] || (a[l] = d); + } + t.exports = a; + }, + 6393: (t, e, r) => { + var i = r(8764).Buffer, + n = r(6266), + o = r(3550); + t.exports = function (t) { + return new s(t); + }; + var a = { + secp256k1: { name: "secp256k1", byteLength: 32 }, + secp224r1: { name: "p224", byteLength: 28 }, + prime256v1: { name: "p256", byteLength: 32 }, + prime192v1: { name: "p192", byteLength: 24 }, + ed25519: { name: "ed25519", byteLength: 32 }, + secp384r1: { name: "p384", byteLength: 48 }, + secp521r1: { name: "p521", byteLength: 66 }, + }; + function s(t) { + (this.curveType = a[t]), + this.curveType || (this.curveType = { name: t }), + (this.curve = new n.ec(this.curveType.name)), + (this.keys = void 0); + } + function f(t, e, r) { + Array.isArray(t) || (t = t.toArray()); + var n = new i(t); + if (r && n.length < r) { + var o = new i(r - n.length); + o.fill(0), (n = i.concat([o, n])); + } + return e ? n.toString(e) : n; + } + (a.p224 = a.secp224r1), + (a.p256 = a.secp256r1 = a.prime256v1), + (a.p192 = a.secp192r1 = a.prime192v1), + (a.p384 = a.secp384r1), + (a.p521 = a.secp521r1), + (s.prototype.generateKeys = function (t, e) { + return ( + (this.keys = this.curve.genKeyPair()), this.getPublicKey(t, e) + ); + }), + (s.prototype.computeSecret = function (t, e, r) { + return ( + (e = e || "utf8"), + i.isBuffer(t) || (t = new i(t, e)), + f( + this.curve + .keyFromPublic(t) + .getPublic() + .mul(this.keys.getPrivate()) + .getX(), + r, + this.curveType.byteLength + ) + ); + }), + (s.prototype.getPublicKey = function (t, e) { + var r = this.keys.getPublic("compressed" === e, !0); + return ( + "hybrid" === e && + (r[r.length - 1] % 2 ? (r[0] = 7) : (r[0] = 6)), + f(r, t) + ); + }), + (s.prototype.getPrivateKey = function (t) { + return f(this.keys.getPrivate(), t); + }), + (s.prototype.setPublicKey = function (t, e) { + return ( + (e = e || "utf8"), + i.isBuffer(t) || (t = new i(t, e)), + this.keys._importPublic(t), + this + ); + }), + (s.prototype.setPrivateKey = function (t, e) { + (e = e || "utf8"), i.isBuffer(t) || (t = new i(t, e)); + var r = new o(t); + return ( + (r = r.toString(16)), + (this.keys = this.curve.genKeyPair()), + this.keys._importPrivate(r), + this + ); + }); + }, + 3482: (t, e, r) => { + "use strict"; + var i = r(5717), + n = r(2318), + o = r(9785), + a = r(9072), + s = r(1027); + function f(t) { + s.call(this, "digest"), (this._hash = t); + } + i(f, s), + (f.prototype._update = function (t) { + this._hash.update(t); + }), + (f.prototype._final = function () { + return this._hash.digest(); + }), + (t.exports = function (t) { + return "md5" === (t = t.toLowerCase()) + ? new n() + : "rmd160" === t || "ripemd160" === t + ? new o() + : new f(a(t)); + }); + }, + 8028: (t, e, r) => { + var i = r(2318); + t.exports = function (t) { + return new i().update(t).digest(); + }; + }, + 8355: (t, e, r) => { + "use strict"; + var i = r(5717), + n = r(1031), + o = r(1027), + a = r(9509).Buffer, + s = r(8028), + f = r(9785), + u = r(9072), + h = a.alloc(128); + function c(t, e) { + o.call(this, "digest"), "string" == typeof e && (e = a.from(e)); + var r = "sha512" === t || "sha384" === t ? 128 : 64; + (this._alg = t), + (this._key = e), + e.length > r + ? (e = ("rmd160" === t ? new f() : u(t)).update(e).digest()) + : e.length < r && (e = a.concat([e, h], r)); + for ( + var i = (this._ipad = a.allocUnsafe(r)), + n = (this._opad = a.allocUnsafe(r)), + s = 0; + s < r; + s++ + ) + (i[s] = 54 ^ e[s]), (n[s] = 92 ^ e[s]); + (this._hash = "rmd160" === t ? new f() : u(t)), + this._hash.update(i); + } + i(c, o), + (c.prototype._update = function (t) { + this._hash.update(t); + }), + (c.prototype._final = function () { + var t = this._hash.digest(); + return ("rmd160" === this._alg ? new f() : u(this._alg)) + .update(this._opad) + .update(t) + .digest(); + }), + (t.exports = function (t, e) { + return "rmd160" === (t = t.toLowerCase()) || "ripemd160" === t + ? new c("rmd160", e) + : "md5" === t + ? new n(s, e) + : new c(t, e); + }); + }, + 1031: (t, e, r) => { + "use strict"; + var i = r(5717), + n = r(9509).Buffer, + o = r(1027), + a = n.alloc(128), + s = 64; + function f(t, e) { + o.call(this, "digest"), + "string" == typeof e && (e = n.from(e)), + (this._alg = t), + (this._key = e), + e.length > s + ? (e = t(e)) + : e.length < s && (e = n.concat([e, a], s)); + for ( + var r = (this._ipad = n.allocUnsafe(s)), + i = (this._opad = n.allocUnsafe(s)), + f = 0; + f < s; + f++ + ) + (r[f] = 54 ^ e[f]), (i[f] = 92 ^ e[f]); + this._hash = [r]; + } + i(f, o), + (f.prototype._update = function (t) { + this._hash.push(t); + }), + (f.prototype._final = function () { + var t = this._alg(n.concat(this._hash)); + return this._alg(n.concat([this._opad, t])); + }), + (t.exports = f); + }, + 5835: (t, e, r) => { + "use strict"; + (e.randomBytes = e.rng = e.pseudoRandomBytes = e.prng = r(1798)), + (e.createHash = e.Hash = r(3482)), + (e.createHmac = e.Hmac = r(8355)); + var i = r(6042), + n = Object.keys(i), + o = [ + "sha1", + "sha224", + "sha256", + "sha384", + "sha512", + "md5", + "rmd160", + ].concat(n); + e.getHashes = function () { + return o; + }; + var a = r(5632); + (e.pbkdf2 = a.pbkdf2), (e.pbkdf2Sync = a.pbkdf2Sync); + var s = r(3614); + (e.Cipher = s.Cipher), + (e.createCipher = s.createCipher), + (e.Cipheriv = s.Cipheriv), + (e.createCipheriv = s.createCipheriv), + (e.Decipher = s.Decipher), + (e.createDecipher = s.createDecipher), + (e.Decipheriv = s.Decipheriv), + (e.createDecipheriv = s.createDecipheriv), + (e.getCiphers = s.getCiphers), + (e.listCiphers = s.listCiphers); + var f = r(2607); + (e.DiffieHellmanGroup = f.DiffieHellmanGroup), + (e.createDiffieHellmanGroup = f.createDiffieHellmanGroup), + (e.getDiffieHellman = f.getDiffieHellman), + (e.createDiffieHellman = f.createDiffieHellman), + (e.DiffieHellman = f.DiffieHellman); + var u = r(4743); + (e.createSign = u.createSign), + (e.Sign = u.Sign), + (e.createVerify = u.createVerify), + (e.Verify = u.Verify), + (e.createECDH = r(6393)); + var h = r(7900); + (e.publicEncrypt = h.publicEncrypt), + (e.privateEncrypt = h.privateEncrypt), + (e.publicDecrypt = h.publicDecrypt), + (e.privateDecrypt = h.privateDecrypt); + var c = r(7963); + (e.randomFill = c.randomFill), + (e.randomFillSync = c.randomFillSync), + (e.createCredentials = function () { + throw new Error( + [ + "sorry, createCredentials is not implemented yet", + "we accept pull requests", + "https://github.com/crypto-browserify/crypto-browserify", + ].join("\n") + ); + }), + (e.constants = { + DH_CHECK_P_NOT_SAFE_PRIME: 2, + DH_CHECK_P_NOT_PRIME: 1, + DH_UNABLE_TO_CHECK_GENERATOR: 4, + DH_NOT_SUITABLE_GENERATOR: 8, + NPN_ENABLED: 1, + ALPN_ENABLED: 1, + RSA_PKCS1_PADDING: 1, + RSA_SSLV23_PADDING: 2, + RSA_NO_PADDING: 3, + RSA_PKCS1_OAEP_PADDING: 4, + RSA_X931_PADDING: 5, + RSA_PKCS1_PSS_PADDING: 6, + POINT_CONVERSION_COMPRESSED: 2, + POINT_CONVERSION_UNCOMPRESSED: 4, + POINT_CONVERSION_HYBRID: 6, + }); + }, + 4289: (t, e, r) => { + "use strict"; + var i = r(2215), + n = + "function" == typeof Symbol && "symbol" == typeof Symbol("foo"), + o = Object.prototype.toString, + a = Array.prototype.concat, + s = Object.defineProperty, + f = r(1044)(), + u = s && f, + h = function (t, e, r, i) { + var n; + (!(e in t) || + ("function" == typeof (n = i) && + "[object Function]" === o.call(n) && + i())) && + (u + ? s(t, e, { + configurable: !0, + enumerable: !1, + value: r, + writable: !0, + }) + : (t[e] = r)); + }, + c = function (t, e) { + var r = arguments.length > 2 ? arguments[2] : {}, + o = i(e); + n && (o = a.call(o, Object.getOwnPropertySymbols(e))); + for (var s = 0; s < o.length; s += 1) + h(t, o[s], e[o[s]], r[o[s]]); + }; + (c.supportsDescriptors = !!u), (t.exports = c); + }, + 5251: (t, e, r) => { + "use strict"; + (e.utils = r(1278)), + (e.Cipher = r(5756)), + (e.DES = r(778)), + (e.CBC = r(9051)), + (e.EDE = r(651)); + }, + 9051: (t, e, r) => { + "use strict"; + var i = r(9746), + n = r(5717), + o = {}; + function a(t) { + i.equal(t.length, 8, "Invalid IV length"), + (this.iv = new Array(8)); + for (var e = 0; e < this.iv.length; e++) this.iv[e] = t[e]; + } + (e.instantiate = function (t) { + function e(e) { + t.call(this, e), this._cbcInit(); + } + n(e, t); + for (var r = Object.keys(o), i = 0; i < r.length; i++) { + var a = r[i]; + e.prototype[a] = o[a]; + } + return ( + (e.create = function (t) { + return new e(t); + }), + e + ); + }), + (o._cbcInit = function () { + var t = new a(this.options.iv); + this._cbcState = t; + }), + (o._update = function (t, e, r, i) { + var n = this._cbcState, + o = this.constructor.super_.prototype, + a = n.iv; + if ("encrypt" === this.type) { + for (var s = 0; s < this.blockSize; s++) a[s] ^= t[e + s]; + for ( + o._update.call(this, a, 0, r, i), s = 0; + s < this.blockSize; + s++ + ) + a[s] = r[i + s]; + } else { + for ( + o._update.call(this, t, e, r, i), s = 0; + s < this.blockSize; + s++ + ) + r[i + s] ^= a[s]; + for (s = 0; s < this.blockSize; s++) a[s] = t[e + s]; + } + }); + }, + 5756: (t, e, r) => { + "use strict"; + var i = r(9746); + function n(t) { + (this.options = t), + (this.type = this.options.type), + (this.blockSize = 8), + this._init(), + (this.buffer = new Array(this.blockSize)), + (this.bufferOff = 0); + } + (t.exports = n), + (n.prototype._init = function () {}), + (n.prototype.update = function (t) { + return 0 === t.length + ? [] + : "decrypt" === this.type + ? this._updateDecrypt(t) + : this._updateEncrypt(t); + }), + (n.prototype._buffer = function (t, e) { + for ( + var r = Math.min( + this.buffer.length - this.bufferOff, + t.length - e + ), + i = 0; + i < r; + i++ + ) + this.buffer[this.bufferOff + i] = t[e + i]; + return (this.bufferOff += r), r; + }), + (n.prototype._flushBuffer = function (t, e) { + return ( + this._update(this.buffer, 0, t, e), + (this.bufferOff = 0), + this.blockSize + ); + }), + (n.prototype._updateEncrypt = function (t) { + var e = 0, + r = 0, + i = ((this.bufferOff + t.length) / this.blockSize) | 0, + n = new Array(i * this.blockSize); + 0 !== this.bufferOff && + ((e += this._buffer(t, e)), + this.bufferOff === this.buffer.length && + (r += this._flushBuffer(n, r))); + for ( + var o = t.length - ((t.length - e) % this.blockSize); + e < o; + e += this.blockSize + ) + this._update(t, e, n, r), (r += this.blockSize); + for (; e < t.length; e++, this.bufferOff++) + this.buffer[this.bufferOff] = t[e]; + return n; + }), + (n.prototype._updateDecrypt = function (t) { + for ( + var e = 0, + r = 0, + i = + Math.ceil((this.bufferOff + t.length) / this.blockSize) - + 1, + n = new Array(i * this.blockSize); + i > 0; + i-- + ) + (e += this._buffer(t, e)), (r += this._flushBuffer(n, r)); + return (e += this._buffer(t, e)), n; + }), + (n.prototype.final = function (t) { + var e, r; + return ( + t && (e = this.update(t)), + (r = + "encrypt" === this.type + ? this._finalEncrypt() + : this._finalDecrypt()), + e ? e.concat(r) : r + ); + }), + (n.prototype._pad = function (t, e) { + if (0 === e) return !1; + for (; e < t.length; ) t[e++] = 0; + return !0; + }), + (n.prototype._finalEncrypt = function () { + if (!this._pad(this.buffer, this.bufferOff)) return []; + var t = new Array(this.blockSize); + return this._update(this.buffer, 0, t, 0), t; + }), + (n.prototype._unpad = function (t) { + return t; + }), + (n.prototype._finalDecrypt = function () { + i.equal( + this.bufferOff, + this.blockSize, + "Not enough data to decrypt" + ); + var t = new Array(this.blockSize); + return this._flushBuffer(t, 0), this._unpad(t); + }); + }, + 778: (t, e, r) => { + "use strict"; + var i = r(9746), + n = r(5717), + o = r(1278), + a = r(5756); + function s() { + (this.tmp = new Array(2)), (this.keys = null); + } + function f(t) { + a.call(this, t); + var e = new s(); + (this._desState = e), this.deriveKeys(e, t.key); + } + n(f, a), + (t.exports = f), + (f.create = function (t) { + return new f(t); + }); + var u = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]; + (f.prototype.deriveKeys = function (t, e) { + (t.keys = new Array(32)), + i.equal(e.length, this.blockSize, "Invalid key length"); + var r = o.readUInt32BE(e, 0), + n = o.readUInt32BE(e, 4); + o.pc1(r, n, t.tmp, 0), (r = t.tmp[0]), (n = t.tmp[1]); + for (var a = 0; a < t.keys.length; a += 2) { + var s = u[a >>> 1]; + (r = o.r28shl(r, s)), + (n = o.r28shl(n, s)), + o.pc2(r, n, t.keys, a); + } + }), + (f.prototype._update = function (t, e, r, i) { + var n = this._desState, + a = o.readUInt32BE(t, e), + s = o.readUInt32BE(t, e + 4); + o.ip(a, s, n.tmp, 0), + (a = n.tmp[0]), + (s = n.tmp[1]), + "encrypt" === this.type + ? this._encrypt(n, a, s, n.tmp, 0) + : this._decrypt(n, a, s, n.tmp, 0), + (a = n.tmp[0]), + (s = n.tmp[1]), + o.writeUInt32BE(r, a, i), + o.writeUInt32BE(r, s, i + 4); + }), + (f.prototype._pad = function (t, e) { + for (var r = t.length - e, i = e; i < t.length; i++) t[i] = r; + return !0; + }), + (f.prototype._unpad = function (t) { + for ( + var e = t[t.length - 1], r = t.length - e; + r < t.length; + r++ + ) + i.equal(t[r], e); + return t.slice(0, t.length - e); + }), + (f.prototype._encrypt = function (t, e, r, i, n) { + for (var a = e, s = r, f = 0; f < t.keys.length; f += 2) { + var u = t.keys[f], + h = t.keys[f + 1]; + o.expand(s, t.tmp, 0), (u ^= t.tmp[0]), (h ^= t.tmp[1]); + var c = o.substitute(u, h), + d = s; + (s = (a ^ o.permute(c)) >>> 0), (a = d); + } + o.rip(s, a, i, n); + }), + (f.prototype._decrypt = function (t, e, r, i, n) { + for (var a = r, s = e, f = t.keys.length - 2; f >= 0; f -= 2) { + var u = t.keys[f], + h = t.keys[f + 1]; + o.expand(a, t.tmp, 0), (u ^= t.tmp[0]), (h ^= t.tmp[1]); + var c = o.substitute(u, h), + d = a; + (a = (s ^ o.permute(c)) >>> 0), (s = d); + } + o.rip(a, s, i, n); + }); + }, + 651: (t, e, r) => { + "use strict"; + var i = r(9746), + n = r(5717), + o = r(5756), + a = r(778); + function s(t, e) { + i.equal(e.length, 24, "Invalid key length"); + var r = e.slice(0, 8), + n = e.slice(8, 16), + o = e.slice(16, 24); + this.ciphers = + "encrypt" === t + ? [ + a.create({ type: "encrypt", key: r }), + a.create({ type: "decrypt", key: n }), + a.create({ type: "encrypt", key: o }), + ] + : [ + a.create({ type: "decrypt", key: o }), + a.create({ type: "encrypt", key: n }), + a.create({ type: "decrypt", key: r }), + ]; + } + function f(t) { + o.call(this, t); + var e = new s(this.type, this.options.key); + this._edeState = e; + } + n(f, o), + (t.exports = f), + (f.create = function (t) { + return new f(t); + }), + (f.prototype._update = function (t, e, r, i) { + var n = this._edeState; + n.ciphers[0]._update(t, e, r, i), + n.ciphers[1]._update(r, i, r, i), + n.ciphers[2]._update(r, i, r, i); + }), + (f.prototype._pad = a.prototype._pad), + (f.prototype._unpad = a.prototype._unpad); + }, + 1278: (t, e) => { + "use strict"; + (e.readUInt32BE = function (t, e) { + return ( + ((t[0 + e] << 24) | + (t[1 + e] << 16) | + (t[2 + e] << 8) | + t[3 + e]) >>> + 0 + ); + }), + (e.writeUInt32BE = function (t, e, r) { + (t[0 + r] = e >>> 24), + (t[1 + r] = (e >>> 16) & 255), + (t[2 + r] = (e >>> 8) & 255), + (t[3 + r] = 255 & e); + }), + (e.ip = function (t, e, r, i) { + for (var n = 0, o = 0, a = 6; a >= 0; a -= 2) { + for (var s = 0; s <= 24; s += 8) + (n <<= 1), (n |= (e >>> (s + a)) & 1); + for (s = 0; s <= 24; s += 8) + (n <<= 1), (n |= (t >>> (s + a)) & 1); + } + for (a = 6; a >= 0; a -= 2) { + for (s = 1; s <= 25; s += 8) + (o <<= 1), (o |= (e >>> (s + a)) & 1); + for (s = 1; s <= 25; s += 8) + (o <<= 1), (o |= (t >>> (s + a)) & 1); + } + (r[i + 0] = n >>> 0), (r[i + 1] = o >>> 0); + }), + (e.rip = function (t, e, r, i) { + for (var n = 0, o = 0, a = 0; a < 4; a++) + for (var s = 24; s >= 0; s -= 8) + (n <<= 1), + (n |= (e >>> (s + a)) & 1), + (n <<= 1), + (n |= (t >>> (s + a)) & 1); + for (a = 4; a < 8; a++) + for (s = 24; s >= 0; s -= 8) + (o <<= 1), + (o |= (e >>> (s + a)) & 1), + (o <<= 1), + (o |= (t >>> (s + a)) & 1); + (r[i + 0] = n >>> 0), (r[i + 1] = o >>> 0); + }), + (e.pc1 = function (t, e, r, i) { + for (var n = 0, o = 0, a = 7; a >= 5; a--) { + for (var s = 0; s <= 24; s += 8) + (n <<= 1), (n |= (e >> (s + a)) & 1); + for (s = 0; s <= 24; s += 8) + (n <<= 1), (n |= (t >> (s + a)) & 1); + } + for (s = 0; s <= 24; s += 8) + (n <<= 1), (n |= (e >> (s + a)) & 1); + for (a = 1; a <= 3; a++) { + for (s = 0; s <= 24; s += 8) + (o <<= 1), (o |= (e >> (s + a)) & 1); + for (s = 0; s <= 24; s += 8) + (o <<= 1), (o |= (t >> (s + a)) & 1); + } + for (s = 0; s <= 24; s += 8) + (o <<= 1), (o |= (t >> (s + a)) & 1); + (r[i + 0] = n >>> 0), (r[i + 1] = o >>> 0); + }), + (e.r28shl = function (t, e) { + return ((t << e) & 268435455) | (t >>> (28 - e)); + }); + var r = [ + 14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, + 12, 21, 1, 8, 15, 26, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, + 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24, + ]; + (e.pc2 = function (t, e, i, n) { + for (var o = 0, a = 0, s = r.length >>> 1, f = 0; f < s; f++) + (o <<= 1), (o |= (t >>> r[f]) & 1); + for (f = s; f < r.length; f++) (a <<= 1), (a |= (e >>> r[f]) & 1); + (i[n + 0] = o >>> 0), (i[n + 1] = a >>> 0); + }), + (e.expand = function (t, e, r) { + var i = 0, + n = 0; + i = ((1 & t) << 5) | (t >>> 27); + for (var o = 23; o >= 15; o -= 4) + (i <<= 6), (i |= (t >>> o) & 63); + for (o = 11; o >= 3; o -= 4) (n |= (t >>> o) & 63), (n <<= 6); + (n |= ((31 & t) << 1) | (t >>> 31)), + (e[r + 0] = i >>> 0), + (e[r + 1] = n >>> 0); + }); + var i = [ + 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, + 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, + 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, + 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, + 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, + 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, + 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, + 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, + 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, + 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, + 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, + 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, + 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, + 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, + 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, + 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, + 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, + 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, + 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, + 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, + 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, + 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, + 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, + 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, + 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, + 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, + 15, 3, 3, 5, 5, 6, 8, 11, + ]; + e.substitute = function (t, e) { + for (var r = 0, n = 0; n < 4; n++) + (r <<= 4), (r |= i[64 * n + ((t >>> (18 - 6 * n)) & 63)]); + for (n = 0; n < 4; n++) + (r <<= 4), (r |= i[256 + 64 * n + ((e >>> (18 - 6 * n)) & 63)]); + return r >>> 0; + }; + var n = [ + 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, + 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7, + ]; + (e.permute = function (t) { + for (var e = 0, r = 0; r < n.length; r++) + (e <<= 1), (e |= (t >>> n[r]) & 1); + return e >>> 0; + }), + (e.padSplit = function (t, e, r) { + for (var i = t.toString(2); i.length < e; ) i = "0" + i; + for (var n = [], o = 0; o < e; o += r) + n.push(i.slice(o, o + r)); + return n.join(" "); + }); + }, + 2607: (t, e, r) => { + var i = r(8764).Buffer, + n = r(3590), + o = r(9799), + a = r(7426), + s = { binary: !0, hex: !0, base64: !0 }; + (e.DiffieHellmanGroup = + e.createDiffieHellmanGroup = + e.getDiffieHellman = + function (t) { + var e = new i(o[t].prime, "hex"), + r = new i(o[t].gen, "hex"); + return new a(e, r); + }), + (e.createDiffieHellman = e.DiffieHellman = + function t(e, r, o, f) { + return i.isBuffer(r) || void 0 === s[r] + ? t(e, "binary", r, o) + : ((r = r || "binary"), + (f = f || "binary"), + (o = o || new i([2])), + i.isBuffer(o) || (o = new i(o, f)), + "number" == typeof e + ? new a(n(e, o), o, !0) + : (i.isBuffer(e) || (e = new i(e, r)), + new a(e, o, !0))); + }); + }, + 7426: (t, e, r) => { + var i = r(8764).Buffer, + n = r(3550), + o = new (r(3047))(), + a = new n(24), + s = new n(11), + f = new n(10), + u = new n(3), + h = new n(7), + c = r(3590), + d = r(1798); + function l(t, e) { + return ( + (e = e || "utf8"), + i.isBuffer(t) || (t = new i(t, e)), + (this._pub = new n(t)), + this + ); + } + function p(t, e) { + return ( + (e = e || "utf8"), + i.isBuffer(t) || (t = new i(t, e)), + (this._priv = new n(t)), + this + ); + } + t.exports = y; + var b = {}; + function y(t, e, r) { + this.setGenerator(e), + (this.__prime = new n(t)), + (this._prime = n.mont(this.__prime)), + (this._primeLen = t.length), + (this._pub = void 0), + (this._priv = void 0), + (this._primeCode = void 0), + r + ? ((this.setPublicKey = l), (this.setPrivateKey = p)) + : (this._primeCode = 8); + } + function m(t, e) { + var r = new i(t.toArray()); + return e ? r.toString(e) : r; + } + Object.defineProperty(y.prototype, "verifyError", { + enumerable: !0, + get: function () { + return ( + "number" != typeof this._primeCode && + (this._primeCode = (function (t, e) { + var r = e.toString("hex"), + i = [r, t.toString(16)].join("_"); + if (i in b) return b[i]; + var n, + d = 0; + if ( + t.isEven() || + !c.simpleSieve || + !c.fermatTest(t) || + !o.test(t) + ) + return ( + (d += 1), + (d += "02" === r || "05" === r ? 8 : 4), + (b[i] = d), + d + ); + switch ((o.test(t.shrn(1)) || (d += 2), r)) { + case "02": + t.mod(a).cmp(s) && (d += 8); + break; + case "05": + (n = t.mod(f)).cmp(u) && n.cmp(h) && (d += 8); + break; + default: + d += 4; + } + return (b[i] = d), d; + })(this.__prime, this.__gen)), + this._primeCode + ); + }, + }), + (y.prototype.generateKeys = function () { + return ( + this._priv || (this._priv = new n(d(this._primeLen))), + (this._pub = this._gen + .toRed(this._prime) + .redPow(this._priv) + .fromRed()), + this.getPublicKey() + ); + }), + (y.prototype.computeSecret = function (t) { + var e = (t = (t = new n(t)).toRed(this._prime)) + .redPow(this._priv) + .fromRed(), + r = new i(e.toArray()), + o = this.getPrime(); + if (r.length < o.length) { + var a = new i(o.length - r.length); + a.fill(0), (r = i.concat([a, r])); + } + return r; + }), + (y.prototype.getPublicKey = function (t) { + return m(this._pub, t); + }), + (y.prototype.getPrivateKey = function (t) { + return m(this._priv, t); + }), + (y.prototype.getPrime = function (t) { + return m(this.__prime, t); + }), + (y.prototype.getGenerator = function (t) { + return m(this._gen, t); + }), + (y.prototype.setGenerator = function (t, e) { + return ( + (e = e || "utf8"), + i.isBuffer(t) || (t = new i(t, e)), + (this.__gen = t), + (this._gen = new n(t)), + this + ); + }); + }, + 3590: (t, e, r) => { + var i = r(1798); + (t.exports = g), (g.simpleSieve = y), (g.fermatTest = m); + var n = r(3550), + o = new n(24), + a = new (r(3047))(), + s = new n(1), + f = new n(2), + u = new n(5), + h = (new n(16), new n(8), new n(10)), + c = new n(3), + d = (new n(7), new n(11)), + l = new n(4), + p = (new n(12), null); + function b() { + if (null !== p) return p; + var t = []; + t[0] = 2; + for (var e = 1, r = 3; r < 1048576; r += 2) { + for ( + var i = Math.ceil(Math.sqrt(r)), n = 0; + n < e && t[n] <= i && r % t[n] != 0; + n++ + ); + (e !== n && t[n] <= i) || (t[e++] = r); + } + return (p = t), t; + } + function y(t) { + for (var e = b(), r = 0; r < e.length; r++) + if (0 === t.modn(e[r])) return 0 === t.cmpn(e[r]); + return !0; + } + function m(t) { + var e = n.mont(t); + return 0 === f.toRed(e).redPow(t.subn(1)).fromRed().cmpn(1); + } + function g(t, e) { + if (t < 16) + return new n(2 === e || 5 === e ? [140, 123] : [140, 39]); + var r, p; + for (e = new n(e); ; ) { + for (r = new n(i(Math.ceil(t / 8))); r.bitLength() > t; ) + r.ishrn(1); + if ( + (r.isEven() && r.iadd(s), r.testn(1) || r.iadd(f), e.cmp(f)) + ) { + if (!e.cmp(u)) for (; r.mod(h).cmp(c); ) r.iadd(l); + } else for (; r.mod(o).cmp(d); ) r.iadd(l); + if ( + y((p = r.shrn(1))) && + y(r) && + m(p) && + m(r) && + a.test(p) && + a.test(r) + ) + return r; + } + } + }, + 6266: (t, e, r) => { + "use strict"; + var i = e; + (i.version = r(8597).i8), + (i.utils = r(953)), + (i.rand = r(9931)), + (i.curve = r(8254)), + (i.curves = r(5427)), + (i.ec = r(7954)), + (i.eddsa = r(5980)); + }, + 4918: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(953), + o = n.getNAF, + a = n.getJSF, + s = n.assert; + function f(t, e) { + (this.type = t), + (this.p = new i(e.p, 16)), + (this.red = e.prime ? i.red(e.prime) : i.mont(this.p)), + (this.zero = new i(0).toRed(this.red)), + (this.one = new i(1).toRed(this.red)), + (this.two = new i(2).toRed(this.red)), + (this.n = e.n && new i(e.n, 16)), + (this.g = e.g && this.pointFromJSON(e.g, e.gRed)), + (this._wnafT1 = new Array(4)), + (this._wnafT2 = new Array(4)), + (this._wnafT3 = new Array(4)), + (this._wnafT4 = new Array(4)), + (this._bitLength = this.n ? this.n.bitLength() : 0); + var r = this.n && this.p.div(this.n); + !r || r.cmpn(100) > 0 + ? (this.redN = null) + : ((this._maxwellTrick = !0), + (this.redN = this.n.toRed(this.red))); + } + function u(t, e) { + (this.curve = t), (this.type = e), (this.precomputed = null); + } + (t.exports = f), + (f.prototype.point = function () { + throw new Error("Not implemented"); + }), + (f.prototype.validate = function () { + throw new Error("Not implemented"); + }), + (f.prototype._fixedNafMul = function (t, e) { + s(t.precomputed); + var r = t._getDoubles(), + i = o(e, 1, this._bitLength), + n = (1 << (r.step + 1)) - (r.step % 2 == 0 ? 2 : 1); + n /= 3; + var a, + f, + u = []; + for (a = 0; a < i.length; a += r.step) { + f = 0; + for (var h = a + r.step - 1; h >= a; h--) f = (f << 1) + i[h]; + u.push(f); + } + for ( + var c = this.jpoint(null, null, null), + d = this.jpoint(null, null, null), + l = n; + l > 0; + l-- + ) { + for (a = 0; a < u.length; a++) + (f = u[a]) === l + ? (d = d.mixedAdd(r.points[a])) + : f === -l && (d = d.mixedAdd(r.points[a].neg())); + c = c.add(d); + } + return c.toP(); + }), + (f.prototype._wnafMul = function (t, e) { + var r = 4, + i = t._getNAFPoints(r); + r = i.wnd; + for ( + var n = i.points, + a = o(e, r, this._bitLength), + f = this.jpoint(null, null, null), + u = a.length - 1; + u >= 0; + u-- + ) { + for (var h = 0; u >= 0 && 0 === a[u]; u--) h++; + if ((u >= 0 && h++, (f = f.dblp(h)), u < 0)) break; + var c = a[u]; + s(0 !== c), + (f = + "affine" === t.type + ? c > 0 + ? f.mixedAdd(n[(c - 1) >> 1]) + : f.mixedAdd(n[(-c - 1) >> 1].neg()) + : c > 0 + ? f.add(n[(c - 1) >> 1]) + : f.add(n[(-c - 1) >> 1].neg())); + } + return "affine" === t.type ? f.toP() : f; + }), + (f.prototype._wnafMulAdd = function (t, e, r, i, n) { + var s, + f, + u, + h = this._wnafT1, + c = this._wnafT2, + d = this._wnafT3, + l = 0; + for (s = 0; s < i; s++) { + var p = (u = e[s])._getNAFPoints(t); + (h[s] = p.wnd), (c[s] = p.points); + } + for (s = i - 1; s >= 1; s -= 2) { + var b = s - 1, + y = s; + if (1 === h[b] && 1 === h[y]) { + var m = [e[b], null, null, e[y]]; + 0 === e[b].y.cmp(e[y].y) + ? ((m[1] = e[b].add(e[y])), + (m[2] = e[b].toJ().mixedAdd(e[y].neg()))) + : 0 === e[b].y.cmp(e[y].y.redNeg()) + ? ((m[1] = e[b].toJ().mixedAdd(e[y])), + (m[2] = e[b].add(e[y].neg()))) + : ((m[1] = e[b].toJ().mixedAdd(e[y])), + (m[2] = e[b].toJ().mixedAdd(e[y].neg()))); + var g = [-3, -1, -5, -7, 0, 7, 5, 1, 3], + v = a(r[b], r[y]); + for ( + l = Math.max(v[0].length, l), + d[b] = new Array(l), + d[y] = new Array(l), + f = 0; + f < l; + f++ + ) { + var w = 0 | v[0][f], + _ = 0 | v[1][f]; + (d[b][f] = g[3 * (w + 1) + (_ + 1)]), + (d[y][f] = 0), + (c[b] = m); + } + } else + (d[b] = o(r[b], h[b], this._bitLength)), + (d[y] = o(r[y], h[y], this._bitLength)), + (l = Math.max(d[b].length, l)), + (l = Math.max(d[y].length, l)); + } + var M = this.jpoint(null, null, null), + S = this._wnafT4; + for (s = l; s >= 0; s--) { + for (var E = 0; s >= 0; ) { + var A = !0; + for (f = 0; f < i; f++) + (S[f] = 0 | d[f][s]), 0 !== S[f] && (A = !1); + if (!A) break; + E++, s--; + } + if ((s >= 0 && E++, (M = M.dblp(E)), s < 0)) break; + for (f = 0; f < i; f++) { + var k = S[f]; + 0 !== k && + (k > 0 + ? (u = c[f][(k - 1) >> 1]) + : k < 0 && (u = c[f][(-k - 1) >> 1].neg()), + (M = "affine" === u.type ? M.mixedAdd(u) : M.add(u))); + } + } + for (s = 0; s < i; s++) c[s] = null; + return n ? M : M.toP(); + }), + (f.BasePoint = u), + (u.prototype.eq = function () { + throw new Error("Not implemented"); + }), + (u.prototype.validate = function () { + return this.curve.validate(this); + }), + (f.prototype.decodePoint = function (t, e) { + t = n.toArray(t, e); + var r = this.p.byteLength(); + if ( + (4 === t[0] || 6 === t[0] || 7 === t[0]) && + t.length - 1 == 2 * r + ) + return ( + 6 === t[0] + ? s(t[t.length - 1] % 2 == 0) + : 7 === t[0] && s(t[t.length - 1] % 2 == 1), + this.point(t.slice(1, 1 + r), t.slice(1 + r, 1 + 2 * r)) + ); + if ((2 === t[0] || 3 === t[0]) && t.length - 1 === r) + return this.pointFromX(t.slice(1, 1 + r), 3 === t[0]); + throw new Error("Unknown point format"); + }), + (u.prototype.encodeCompressed = function (t) { + return this.encode(t, !0); + }), + (u.prototype._encode = function (t) { + var e = this.curve.p.byteLength(), + r = this.getX().toArray("be", e); + return t + ? [this.getY().isEven() ? 2 : 3].concat(r) + : [4].concat(r, this.getY().toArray("be", e)); + }), + (u.prototype.encode = function (t, e) { + return n.encode(this._encode(e), t); + }), + (u.prototype.precompute = function (t) { + if (this.precomputed) return this; + var e = { doubles: null, naf: null, beta: null }; + return ( + (e.naf = this._getNAFPoints(8)), + (e.doubles = this._getDoubles(4, t)), + (e.beta = this._getBeta()), + (this.precomputed = e), + this + ); + }), + (u.prototype._hasDoubles = function (t) { + if (!this.precomputed) return !1; + var e = this.precomputed.doubles; + return ( + !!e && + e.points.length >= Math.ceil((t.bitLength() + 1) / e.step) + ); + }), + (u.prototype._getDoubles = function (t, e) { + if (this.precomputed && this.precomputed.doubles) + return this.precomputed.doubles; + for (var r = [this], i = this, n = 0; n < e; n += t) { + for (var o = 0; o < t; o++) i = i.dbl(); + r.push(i); + } + return { step: t, points: r }; + }), + (u.prototype._getNAFPoints = function (t) { + if (this.precomputed && this.precomputed.naf) + return this.precomputed.naf; + for ( + var e = [this], + r = (1 << t) - 1, + i = 1 === r ? null : this.dbl(), + n = 1; + n < r; + n++ + ) + e[n] = e[n - 1].add(i); + return { wnd: t, points: e }; + }), + (u.prototype._getBeta = function () { + return null; + }), + (u.prototype.dblp = function (t) { + for (var e = this, r = 0; r < t; r++) e = e.dbl(); + return e; + }); + }, + 1138: (t, e, r) => { + "use strict"; + var i = r(953), + n = r(3550), + o = r(5717), + a = r(4918), + s = i.assert; + function f(t) { + (this.twisted = 1 != (0 | t.a)), + (this.mOneA = this.twisted && -1 == (0 | t.a)), + (this.extended = this.mOneA), + a.call(this, "edwards", t), + (this.a = new n(t.a, 16).umod(this.red.m)), + (this.a = this.a.toRed(this.red)), + (this.c = new n(t.c, 16).toRed(this.red)), + (this.c2 = this.c.redSqr()), + (this.d = new n(t.d, 16).toRed(this.red)), + (this.dd = this.d.redAdd(this.d)), + s(!this.twisted || 0 === this.c.fromRed().cmpn(1)), + (this.oneC = 1 == (0 | t.c)); + } + function u(t, e, r, i, o) { + a.BasePoint.call(this, t, "projective"), + null === e && null === r && null === i + ? ((this.x = this.curve.zero), + (this.y = this.curve.one), + (this.z = this.curve.one), + (this.t = this.curve.zero), + (this.zOne = !0)) + : ((this.x = new n(e, 16)), + (this.y = new n(r, 16)), + (this.z = i ? new n(i, 16) : this.curve.one), + (this.t = o && new n(o, 16)), + this.x.red || (this.x = this.x.toRed(this.curve.red)), + this.y.red || (this.y = this.y.toRed(this.curve.red)), + this.z.red || (this.z = this.z.toRed(this.curve.red)), + this.t && + !this.t.red && + (this.t = this.t.toRed(this.curve.red)), + (this.zOne = this.z === this.curve.one), + this.curve.extended && + !this.t && + ((this.t = this.x.redMul(this.y)), + this.zOne || (this.t = this.t.redMul(this.z.redInvm())))); + } + o(f, a), + (t.exports = f), + (f.prototype._mulA = function (t) { + return this.mOneA ? t.redNeg() : this.a.redMul(t); + }), + (f.prototype._mulC = function (t) { + return this.oneC ? t : this.c.redMul(t); + }), + (f.prototype.jpoint = function (t, e, r, i) { + return this.point(t, e, r, i); + }), + (f.prototype.pointFromX = function (t, e) { + (t = new n(t, 16)).red || (t = t.toRed(this.red)); + var r = t.redSqr(), + i = this.c2.redSub(this.a.redMul(r)), + o = this.one.redSub(this.c2.redMul(this.d).redMul(r)), + a = i.redMul(o.redInvm()), + s = a.redSqrt(); + if (0 !== s.redSqr().redSub(a).cmp(this.zero)) + throw new Error("invalid point"); + var f = s.fromRed().isOdd(); + return ( + ((e && !f) || (!e && f)) && (s = s.redNeg()), this.point(t, s) + ); + }), + (f.prototype.pointFromY = function (t, e) { + (t = new n(t, 16)).red || (t = t.toRed(this.red)); + var r = t.redSqr(), + i = r.redSub(this.c2), + o = r.redMul(this.d).redMul(this.c2).redSub(this.a), + a = i.redMul(o.redInvm()); + if (0 === a.cmp(this.zero)) { + if (e) throw new Error("invalid point"); + return this.point(this.zero, t); + } + var s = a.redSqrt(); + if (0 !== s.redSqr().redSub(a).cmp(this.zero)) + throw new Error("invalid point"); + return ( + s.fromRed().isOdd() !== e && (s = s.redNeg()), + this.point(s, t) + ); + }), + (f.prototype.validate = function (t) { + if (t.isInfinity()) return !0; + t.normalize(); + var e = t.x.redSqr(), + r = t.y.redSqr(), + i = e.redMul(this.a).redAdd(r), + n = this.c2.redMul( + this.one.redAdd(this.d.redMul(e).redMul(r)) + ); + return 0 === i.cmp(n); + }), + o(u, a.BasePoint), + (f.prototype.pointFromJSON = function (t) { + return u.fromJSON(this, t); + }), + (f.prototype.point = function (t, e, r, i) { + return new u(this, t, e, r, i); + }), + (u.fromJSON = function (t, e) { + return new u(t, e[0], e[1], e[2]); + }), + (u.prototype.inspect = function () { + return this.isInfinity() + ? "" + : ""; + }), + (u.prototype.isInfinity = function () { + return ( + 0 === this.x.cmpn(0) && + (0 === this.y.cmp(this.z) || + (this.zOne && 0 === this.y.cmp(this.curve.c))) + ); + }), + (u.prototype._extDbl = function () { + var t = this.x.redSqr(), + e = this.y.redSqr(), + r = this.z.redSqr(); + r = r.redIAdd(r); + var i = this.curve._mulA(t), + n = this.x.redAdd(this.y).redSqr().redISub(t).redISub(e), + o = i.redAdd(e), + a = o.redSub(r), + s = i.redSub(e), + f = n.redMul(a), + u = o.redMul(s), + h = n.redMul(s), + c = a.redMul(o); + return this.curve.point(f, u, c, h); + }), + (u.prototype._projDbl = function () { + var t, + e, + r, + i, + n, + o, + a = this.x.redAdd(this.y).redSqr(), + s = this.x.redSqr(), + f = this.y.redSqr(); + if (this.curve.twisted) { + var u = (i = this.curve._mulA(s)).redAdd(f); + this.zOne + ? ((t = a + .redSub(s) + .redSub(f) + .redMul(u.redSub(this.curve.two))), + (e = u.redMul(i.redSub(f))), + (r = u.redSqr().redSub(u).redSub(u))) + : ((n = this.z.redSqr()), + (o = u.redSub(n).redISub(n)), + (t = a.redSub(s).redISub(f).redMul(o)), + (e = u.redMul(i.redSub(f))), + (r = u.redMul(o))); + } else + (i = s.redAdd(f)), + (n = this.curve._mulC(this.z).redSqr()), + (o = i.redSub(n).redSub(n)), + (t = this.curve._mulC(a.redISub(i)).redMul(o)), + (e = this.curve._mulC(i).redMul(s.redISub(f))), + (r = i.redMul(o)); + return this.curve.point(t, e, r); + }), + (u.prototype.dbl = function () { + return this.isInfinity() + ? this + : this.curve.extended + ? this._extDbl() + : this._projDbl(); + }), + (u.prototype._extAdd = function (t) { + var e = this.y.redSub(this.x).redMul(t.y.redSub(t.x)), + r = this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)), + i = this.t.redMul(this.curve.dd).redMul(t.t), + n = this.z.redMul(t.z.redAdd(t.z)), + o = r.redSub(e), + a = n.redSub(i), + s = n.redAdd(i), + f = r.redAdd(e), + u = o.redMul(a), + h = s.redMul(f), + c = o.redMul(f), + d = a.redMul(s); + return this.curve.point(u, h, d, c); + }), + (u.prototype._projAdd = function (t) { + var e, + r, + i = this.z.redMul(t.z), + n = i.redSqr(), + o = this.x.redMul(t.x), + a = this.y.redMul(t.y), + s = this.curve.d.redMul(o).redMul(a), + f = n.redSub(s), + u = n.redAdd(s), + h = this.x + .redAdd(this.y) + .redMul(t.x.redAdd(t.y)) + .redISub(o) + .redISub(a), + c = i.redMul(f).redMul(h); + return ( + this.curve.twisted + ? ((e = i.redMul(u).redMul(a.redSub(this.curve._mulA(o)))), + (r = f.redMul(u))) + : ((e = i.redMul(u).redMul(a.redSub(o))), + (r = this.curve._mulC(f).redMul(u))), + this.curve.point(c, e, r) + ); + }), + (u.prototype.add = function (t) { + return this.isInfinity() + ? t + : t.isInfinity() + ? this + : this.curve.extended + ? this._extAdd(t) + : this._projAdd(t); + }), + (u.prototype.mul = function (t) { + return this._hasDoubles(t) + ? this.curve._fixedNafMul(this, t) + : this.curve._wnafMul(this, t); + }), + (u.prototype.mulAdd = function (t, e, r) { + return this.curve._wnafMulAdd(1, [this, e], [t, r], 2, !1); + }), + (u.prototype.jmulAdd = function (t, e, r) { + return this.curve._wnafMulAdd(1, [this, e], [t, r], 2, !0); + }), + (u.prototype.normalize = function () { + if (this.zOne) return this; + var t = this.z.redInvm(); + return ( + (this.x = this.x.redMul(t)), + (this.y = this.y.redMul(t)), + this.t && (this.t = this.t.redMul(t)), + (this.z = this.curve.one), + (this.zOne = !0), + this + ); + }), + (u.prototype.neg = function () { + return this.curve.point( + this.x.redNeg(), + this.y, + this.z, + this.t && this.t.redNeg() + ); + }), + (u.prototype.getX = function () { + return this.normalize(), this.x.fromRed(); + }), + (u.prototype.getY = function () { + return this.normalize(), this.y.fromRed(); + }), + (u.prototype.eq = function (t) { + return ( + this === t || + (0 === this.getX().cmp(t.getX()) && + 0 === this.getY().cmp(t.getY())) + ); + }), + (u.prototype.eqXToP = function (t) { + var e = t.toRed(this.curve.red).redMul(this.z); + if (0 === this.x.cmp(e)) return !0; + for ( + var r = t.clone(), i = this.curve.redN.redMul(this.z); + ; + + ) { + if ((r.iadd(this.curve.n), r.cmp(this.curve.p) >= 0)) + return !1; + if ((e.redIAdd(i), 0 === this.x.cmp(e))) return !0; + } + }), + (u.prototype.toP = u.prototype.normalize), + (u.prototype.mixedAdd = u.prototype.add); + }, + 8254: (t, e, r) => { + "use strict"; + var i = e; + (i.base = r(4918)), + (i.short = r(6673)), + (i.mont = r(2881)), + (i.edwards = r(1138)); + }, + 2881: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(5717), + o = r(4918), + a = r(953); + function s(t) { + o.call(this, "mont", t), + (this.a = new i(t.a, 16).toRed(this.red)), + (this.b = new i(t.b, 16).toRed(this.red)), + (this.i4 = new i(4).toRed(this.red).redInvm()), + (this.two = new i(2).toRed(this.red)), + (this.a24 = this.i4.redMul(this.a.redAdd(this.two))); + } + function f(t, e, r) { + o.BasePoint.call(this, t, "projective"), + null === e && null === r + ? ((this.x = this.curve.one), (this.z = this.curve.zero)) + : ((this.x = new i(e, 16)), + (this.z = new i(r, 16)), + this.x.red || (this.x = this.x.toRed(this.curve.red)), + this.z.red || (this.z = this.z.toRed(this.curve.red))); + } + n(s, o), + (t.exports = s), + (s.prototype.validate = function (t) { + var e = t.normalize().x, + r = e.redSqr(), + i = r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e); + return 0 === i.redSqrt().redSqr().cmp(i); + }), + n(f, o.BasePoint), + (s.prototype.decodePoint = function (t, e) { + return this.point(a.toArray(t, e), 1); + }), + (s.prototype.point = function (t, e) { + return new f(this, t, e); + }), + (s.prototype.pointFromJSON = function (t) { + return f.fromJSON(this, t); + }), + (f.prototype.precompute = function () {}), + (f.prototype._encode = function () { + return this.getX().toArray("be", this.curve.p.byteLength()); + }), + (f.fromJSON = function (t, e) { + return new f(t, e[0], e[1] || t.one); + }), + (f.prototype.inspect = function () { + return this.isInfinity() + ? "" + : ""; + }), + (f.prototype.isInfinity = function () { + return 0 === this.z.cmpn(0); + }), + (f.prototype.dbl = function () { + var t = this.x.redAdd(this.z).redSqr(), + e = this.x.redSub(this.z).redSqr(), + r = t.redSub(e), + i = t.redMul(e), + n = r.redMul(e.redAdd(this.curve.a24.redMul(r))); + return this.curve.point(i, n); + }), + (f.prototype.add = function () { + throw new Error("Not supported on Montgomery curve"); + }), + (f.prototype.diffAdd = function (t, e) { + var r = this.x.redAdd(this.z), + i = this.x.redSub(this.z), + n = t.x.redAdd(t.z), + o = t.x.redSub(t.z).redMul(r), + a = n.redMul(i), + s = e.z.redMul(o.redAdd(a).redSqr()), + f = e.x.redMul(o.redISub(a).redSqr()); + return this.curve.point(s, f); + }), + (f.prototype.mul = function (t) { + for ( + var e = t.clone(), + r = this, + i = this.curve.point(null, null), + n = []; + 0 !== e.cmpn(0); + e.iushrn(1) + ) + n.push(e.andln(1)); + for (var o = n.length - 1; o >= 0; o--) + 0 === n[o] + ? ((r = r.diffAdd(i, this)), (i = i.dbl())) + : ((i = r.diffAdd(i, this)), (r = r.dbl())); + return i; + }), + (f.prototype.mulAdd = function () { + throw new Error("Not supported on Montgomery curve"); + }), + (f.prototype.jumlAdd = function () { + throw new Error("Not supported on Montgomery curve"); + }), + (f.prototype.eq = function (t) { + return 0 === this.getX().cmp(t.getX()); + }), + (f.prototype.normalize = function () { + return ( + (this.x = this.x.redMul(this.z.redInvm())), + (this.z = this.curve.one), + this + ); + }), + (f.prototype.getX = function () { + return this.normalize(), this.x.fromRed(); + }); + }, + 6673: (t, e, r) => { + "use strict"; + var i = r(953), + n = r(3550), + o = r(5717), + a = r(4918), + s = i.assert; + function f(t) { + a.call(this, "short", t), + (this.a = new n(t.a, 16).toRed(this.red)), + (this.b = new n(t.b, 16).toRed(this.red)), + (this.tinv = this.two.redInvm()), + (this.zeroA = 0 === this.a.fromRed().cmpn(0)), + (this.threeA = 0 === this.a.fromRed().sub(this.p).cmpn(-3)), + (this.endo = this._getEndomorphism(t)), + (this._endoWnafT1 = new Array(4)), + (this._endoWnafT2 = new Array(4)); + } + function u(t, e, r, i) { + a.BasePoint.call(this, t, "affine"), + null === e && null === r + ? ((this.x = null), (this.y = null), (this.inf = !0)) + : ((this.x = new n(e, 16)), + (this.y = new n(r, 16)), + i && + (this.x.forceRed(this.curve.red), + this.y.forceRed(this.curve.red)), + this.x.red || (this.x = this.x.toRed(this.curve.red)), + this.y.red || (this.y = this.y.toRed(this.curve.red)), + (this.inf = !1)); + } + function h(t, e, r, i) { + a.BasePoint.call(this, t, "jacobian"), + null === e && null === r && null === i + ? ((this.x = this.curve.one), + (this.y = this.curve.one), + (this.z = new n(0))) + : ((this.x = new n(e, 16)), + (this.y = new n(r, 16)), + (this.z = new n(i, 16))), + this.x.red || (this.x = this.x.toRed(this.curve.red)), + this.y.red || (this.y = this.y.toRed(this.curve.red)), + this.z.red || (this.z = this.z.toRed(this.curve.red)), + (this.zOne = this.z === this.curve.one); + } + o(f, a), + (t.exports = f), + (f.prototype._getEndomorphism = function (t) { + if (this.zeroA && this.g && this.n && 1 === this.p.modn(3)) { + var e, r; + if (t.beta) e = new n(t.beta, 16).toRed(this.red); + else { + var i = this._getEndoRoots(this.p); + e = (e = i[0].cmp(i[1]) < 0 ? i[0] : i[1]).toRed(this.red); + } + if (t.lambda) r = new n(t.lambda, 16); + else { + var o = this._getEndoRoots(this.n); + 0 === this.g.mul(o[0]).x.cmp(this.g.x.redMul(e)) + ? (r = o[0]) + : ((r = o[1]), + s(0 === this.g.mul(r).x.cmp(this.g.x.redMul(e)))); + } + return { + beta: e, + lambda: r, + basis: t.basis + ? t.basis.map(function (t) { + return { a: new n(t.a, 16), b: new n(t.b, 16) }; + }) + : this._getEndoBasis(r), + }; + } + }), + (f.prototype._getEndoRoots = function (t) { + var e = t === this.p ? this.red : n.mont(t), + r = new n(2).toRed(e).redInvm(), + i = r.redNeg(), + o = new n(3).toRed(e).redNeg().redSqrt().redMul(r); + return [i.redAdd(o).fromRed(), i.redSub(o).fromRed()]; + }), + (f.prototype._getEndoBasis = function (t) { + for ( + var e, + r, + i, + o, + a, + s, + f, + u, + h, + c = this.n.ushrn(Math.floor(this.n.bitLength() / 2)), + d = t, + l = this.n.clone(), + p = new n(1), + b = new n(0), + y = new n(0), + m = new n(1), + g = 0; + 0 !== d.cmpn(0); + + ) { + var v = l.div(d); + (u = l.sub(v.mul(d))), (h = y.sub(v.mul(p))); + var w = m.sub(v.mul(b)); + if (!i && u.cmp(c) < 0) + (e = f.neg()), (r = p), (i = u.neg()), (o = h); + else if (i && 2 == ++g) break; + (f = u), (l = d), (d = u), (y = p), (p = h), (m = b), (b = w); + } + (a = u.neg()), (s = h); + var _ = i.sqr().add(o.sqr()); + return ( + a.sqr().add(s.sqr()).cmp(_) >= 0 && ((a = e), (s = r)), + i.negative && ((i = i.neg()), (o = o.neg())), + a.negative && ((a = a.neg()), (s = s.neg())), + [ + { a: i, b: o }, + { a, b: s }, + ] + ); + }), + (f.prototype._endoSplit = function (t) { + var e = this.endo.basis, + r = e[0], + i = e[1], + n = i.b.mul(t).divRound(this.n), + o = r.b.neg().mul(t).divRound(this.n), + a = n.mul(r.a), + s = o.mul(i.a), + f = n.mul(r.b), + u = o.mul(i.b); + return { k1: t.sub(a).sub(s), k2: f.add(u).neg() }; + }), + (f.prototype.pointFromX = function (t, e) { + (t = new n(t, 16)).red || (t = t.toRed(this.red)); + var r = t + .redSqr() + .redMul(t) + .redIAdd(t.redMul(this.a)) + .redIAdd(this.b), + i = r.redSqrt(); + if (0 !== i.redSqr().redSub(r).cmp(this.zero)) + throw new Error("invalid point"); + var o = i.fromRed().isOdd(); + return ( + ((e && !o) || (!e && o)) && (i = i.redNeg()), this.point(t, i) + ); + }), + (f.prototype.validate = function (t) { + if (t.inf) return !0; + var e = t.x, + r = t.y, + i = this.a.redMul(e), + n = e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b); + return 0 === r.redSqr().redISub(n).cmpn(0); + }), + (f.prototype._endoWnafMulAdd = function (t, e, r) { + for ( + var i = this._endoWnafT1, n = this._endoWnafT2, o = 0; + o < t.length; + o++ + ) { + var a = this._endoSplit(e[o]), + s = t[o], + f = s._getBeta(); + a.k1.negative && (a.k1.ineg(), (s = s.neg(!0))), + a.k2.negative && (a.k2.ineg(), (f = f.neg(!0))), + (i[2 * o] = s), + (i[2 * o + 1] = f), + (n[2 * o] = a.k1), + (n[2 * o + 1] = a.k2); + } + for ( + var u = this._wnafMulAdd(1, i, n, 2 * o, r), h = 0; + h < 2 * o; + h++ + ) + (i[h] = null), (n[h] = null); + return u; + }), + o(u, a.BasePoint), + (f.prototype.point = function (t, e, r) { + return new u(this, t, e, r); + }), + (f.prototype.pointFromJSON = function (t, e) { + return u.fromJSON(this, t, e); + }), + (u.prototype._getBeta = function () { + if (this.curve.endo) { + var t = this.precomputed; + if (t && t.beta) return t.beta; + var e = this.curve.point( + this.x.redMul(this.curve.endo.beta), + this.y + ); + if (t) { + var r = this.curve, + i = function (t) { + return r.point(t.x.redMul(r.endo.beta), t.y); + }; + (t.beta = e), + (e.precomputed = { + beta: null, + naf: t.naf && { + wnd: t.naf.wnd, + points: t.naf.points.map(i), + }, + doubles: t.doubles && { + step: t.doubles.step, + points: t.doubles.points.map(i), + }, + }); + } + return e; + } + }), + (u.prototype.toJSON = function () { + return this.precomputed + ? [ + this.x, + this.y, + this.precomputed && { + doubles: this.precomputed.doubles && { + step: this.precomputed.doubles.step, + points: this.precomputed.doubles.points.slice(1), + }, + naf: this.precomputed.naf && { + wnd: this.precomputed.naf.wnd, + points: this.precomputed.naf.points.slice(1), + }, + }, + ] + : [this.x, this.y]; + }), + (u.fromJSON = function (t, e, r) { + "string" == typeof e && (e = JSON.parse(e)); + var i = t.point(e[0], e[1], r); + if (!e[2]) return i; + function n(e) { + return t.point(e[0], e[1], r); + } + var o = e[2]; + return ( + (i.precomputed = { + beta: null, + doubles: o.doubles && { + step: o.doubles.step, + points: [i].concat(o.doubles.points.map(n)), + }, + naf: o.naf && { + wnd: o.naf.wnd, + points: [i].concat(o.naf.points.map(n)), + }, + }), + i + ); + }), + (u.prototype.inspect = function () { + return this.isInfinity() + ? "" + : ""; + }), + (u.prototype.isInfinity = function () { + return this.inf; + }), + (u.prototype.add = function (t) { + if (this.inf) return t; + if (t.inf) return this; + if (this.eq(t)) return this.dbl(); + if (this.neg().eq(t)) return this.curve.point(null, null); + if (0 === this.x.cmp(t.x)) return this.curve.point(null, null); + var e = this.y.redSub(t.y); + 0 !== e.cmpn(0) && (e = e.redMul(this.x.redSub(t.x).redInvm())); + var r = e.redSqr().redISub(this.x).redISub(t.x), + i = e.redMul(this.x.redSub(r)).redISub(this.y); + return this.curve.point(r, i); + }), + (u.prototype.dbl = function () { + if (this.inf) return this; + var t = this.y.redAdd(this.y); + if (0 === t.cmpn(0)) return this.curve.point(null, null); + var e = this.curve.a, + r = this.x.redSqr(), + i = t.redInvm(), + n = r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i), + o = n.redSqr().redISub(this.x.redAdd(this.x)), + a = n.redMul(this.x.redSub(o)).redISub(this.y); + return this.curve.point(o, a); + }), + (u.prototype.getX = function () { + return this.x.fromRed(); + }), + (u.prototype.getY = function () { + return this.y.fromRed(); + }), + (u.prototype.mul = function (t) { + return ( + (t = new n(t, 16)), + this.isInfinity() + ? this + : this._hasDoubles(t) + ? this.curve._fixedNafMul(this, t) + : this.curve.endo + ? this.curve._endoWnafMulAdd([this], [t]) + : this.curve._wnafMul(this, t) + ); + }), + (u.prototype.mulAdd = function (t, e, r) { + var i = [this, e], + n = [t, r]; + return this.curve.endo + ? this.curve._endoWnafMulAdd(i, n) + : this.curve._wnafMulAdd(1, i, n, 2); + }), + (u.prototype.jmulAdd = function (t, e, r) { + var i = [this, e], + n = [t, r]; + return this.curve.endo + ? this.curve._endoWnafMulAdd(i, n, !0) + : this.curve._wnafMulAdd(1, i, n, 2, !0); + }), + (u.prototype.eq = function (t) { + return ( + this === t || + (this.inf === t.inf && + (this.inf || + (0 === this.x.cmp(t.x) && 0 === this.y.cmp(t.y)))) + ); + }), + (u.prototype.neg = function (t) { + if (this.inf) return this; + var e = this.curve.point(this.x, this.y.redNeg()); + if (t && this.precomputed) { + var r = this.precomputed, + i = function (t) { + return t.neg(); + }; + e.precomputed = { + naf: r.naf && { + wnd: r.naf.wnd, + points: r.naf.points.map(i), + }, + doubles: r.doubles && { + step: r.doubles.step, + points: r.doubles.points.map(i), + }, + }; + } + return e; + }), + (u.prototype.toJ = function () { + return this.inf + ? this.curve.jpoint(null, null, null) + : this.curve.jpoint(this.x, this.y, this.curve.one); + }), + o(h, a.BasePoint), + (f.prototype.jpoint = function (t, e, r) { + return new h(this, t, e, r); + }), + (h.prototype.toP = function () { + if (this.isInfinity()) return this.curve.point(null, null); + var t = this.z.redInvm(), + e = t.redSqr(), + r = this.x.redMul(e), + i = this.y.redMul(e).redMul(t); + return this.curve.point(r, i); + }), + (h.prototype.neg = function () { + return this.curve.jpoint(this.x, this.y.redNeg(), this.z); + }), + (h.prototype.add = function (t) { + if (this.isInfinity()) return t; + if (t.isInfinity()) return this; + var e = t.z.redSqr(), + r = this.z.redSqr(), + i = this.x.redMul(e), + n = t.x.redMul(r), + o = this.y.redMul(e.redMul(t.z)), + a = t.y.redMul(r.redMul(this.z)), + s = i.redSub(n), + f = o.redSub(a); + if (0 === s.cmpn(0)) + return 0 !== f.cmpn(0) + ? this.curve.jpoint(null, null, null) + : this.dbl(); + var u = s.redSqr(), + h = u.redMul(s), + c = i.redMul(u), + d = f.redSqr().redIAdd(h).redISub(c).redISub(c), + l = f.redMul(c.redISub(d)).redISub(o.redMul(h)), + p = this.z.redMul(t.z).redMul(s); + return this.curve.jpoint(d, l, p); + }), + (h.prototype.mixedAdd = function (t) { + if (this.isInfinity()) return t.toJ(); + if (t.isInfinity()) return this; + var e = this.z.redSqr(), + r = this.x, + i = t.x.redMul(e), + n = this.y, + o = t.y.redMul(e).redMul(this.z), + a = r.redSub(i), + s = n.redSub(o); + if (0 === a.cmpn(0)) + return 0 !== s.cmpn(0) + ? this.curve.jpoint(null, null, null) + : this.dbl(); + var f = a.redSqr(), + u = f.redMul(a), + h = r.redMul(f), + c = s.redSqr().redIAdd(u).redISub(h).redISub(h), + d = s.redMul(h.redISub(c)).redISub(n.redMul(u)), + l = this.z.redMul(a); + return this.curve.jpoint(c, d, l); + }), + (h.prototype.dblp = function (t) { + if (0 === t) return this; + if (this.isInfinity()) return this; + if (!t) return this.dbl(); + var e; + if (this.curve.zeroA || this.curve.threeA) { + var r = this; + for (e = 0; e < t; e++) r = r.dbl(); + return r; + } + var i = this.curve.a, + n = this.curve.tinv, + o = this.x, + a = this.y, + s = this.z, + f = s.redSqr().redSqr(), + u = a.redAdd(a); + for (e = 0; e < t; e++) { + var h = o.redSqr(), + c = u.redSqr(), + d = c.redSqr(), + l = h.redAdd(h).redIAdd(h).redIAdd(i.redMul(f)), + p = o.redMul(c), + b = l.redSqr().redISub(p.redAdd(p)), + y = p.redISub(b), + m = l.redMul(y); + m = m.redIAdd(m).redISub(d); + var g = u.redMul(s); + e + 1 < t && (f = f.redMul(d)), (o = b), (s = g), (u = m); + } + return this.curve.jpoint(o, u.redMul(n), s); + }), + (h.prototype.dbl = function () { + return this.isInfinity() + ? this + : this.curve.zeroA + ? this._zeroDbl() + : this.curve.threeA + ? this._threeDbl() + : this._dbl(); + }), + (h.prototype._zeroDbl = function () { + var t, e, r; + if (this.zOne) { + var i = this.x.redSqr(), + n = this.y.redSqr(), + o = n.redSqr(), + a = this.x.redAdd(n).redSqr().redISub(i).redISub(o); + a = a.redIAdd(a); + var s = i.redAdd(i).redIAdd(i), + f = s.redSqr().redISub(a).redISub(a), + u = o.redIAdd(o); + (u = (u = u.redIAdd(u)).redIAdd(u)), + (t = f), + (e = s.redMul(a.redISub(f)).redISub(u)), + (r = this.y.redAdd(this.y)); + } else { + var h = this.x.redSqr(), + c = this.y.redSqr(), + d = c.redSqr(), + l = this.x.redAdd(c).redSqr().redISub(h).redISub(d); + l = l.redIAdd(l); + var p = h.redAdd(h).redIAdd(h), + b = p.redSqr(), + y = d.redIAdd(d); + (y = (y = y.redIAdd(y)).redIAdd(y)), + (t = b.redISub(l).redISub(l)), + (e = p.redMul(l.redISub(t)).redISub(y)), + (r = (r = this.y.redMul(this.z)).redIAdd(r)); + } + return this.curve.jpoint(t, e, r); + }), + (h.prototype._threeDbl = function () { + var t, e, r; + if (this.zOne) { + var i = this.x.redSqr(), + n = this.y.redSqr(), + o = n.redSqr(), + a = this.x.redAdd(n).redSqr().redISub(i).redISub(o); + a = a.redIAdd(a); + var s = i.redAdd(i).redIAdd(i).redIAdd(this.curve.a), + f = s.redSqr().redISub(a).redISub(a); + t = f; + var u = o.redIAdd(o); + (u = (u = u.redIAdd(u)).redIAdd(u)), + (e = s.redMul(a.redISub(f)).redISub(u)), + (r = this.y.redAdd(this.y)); + } else { + var h = this.z.redSqr(), + c = this.y.redSqr(), + d = this.x.redMul(c), + l = this.x.redSub(h).redMul(this.x.redAdd(h)); + l = l.redAdd(l).redIAdd(l); + var p = d.redIAdd(d), + b = (p = p.redIAdd(p)).redAdd(p); + (t = l.redSqr().redISub(b)), + (r = this.y.redAdd(this.z).redSqr().redISub(c).redISub(h)); + var y = c.redSqr(); + (y = (y = (y = y.redIAdd(y)).redIAdd(y)).redIAdd(y)), + (e = l.redMul(p.redISub(t)).redISub(y)); + } + return this.curve.jpoint(t, e, r); + }), + (h.prototype._dbl = function () { + var t = this.curve.a, + e = this.x, + r = this.y, + i = this.z, + n = i.redSqr().redSqr(), + o = e.redSqr(), + a = r.redSqr(), + s = o.redAdd(o).redIAdd(o).redIAdd(t.redMul(n)), + f = e.redAdd(e), + u = (f = f.redIAdd(f)).redMul(a), + h = s.redSqr().redISub(u.redAdd(u)), + c = u.redISub(h), + d = a.redSqr(); + d = (d = (d = d.redIAdd(d)).redIAdd(d)).redIAdd(d); + var l = s.redMul(c).redISub(d), + p = r.redAdd(r).redMul(i); + return this.curve.jpoint(h, l, p); + }), + (h.prototype.trpl = function () { + if (!this.curve.zeroA) return this.dbl().add(this); + var t = this.x.redSqr(), + e = this.y.redSqr(), + r = this.z.redSqr(), + i = e.redSqr(), + n = t.redAdd(t).redIAdd(t), + o = n.redSqr(), + a = this.x.redAdd(e).redSqr().redISub(t).redISub(i), + s = (a = (a = (a = a.redIAdd(a)) + .redAdd(a) + .redIAdd(a)).redISub(o)).redSqr(), + f = i.redIAdd(i); + f = (f = (f = f.redIAdd(f)).redIAdd(f)).redIAdd(f); + var u = n.redIAdd(a).redSqr().redISub(o).redISub(s).redISub(f), + h = e.redMul(u); + h = (h = h.redIAdd(h)).redIAdd(h); + var c = this.x.redMul(s).redISub(h); + c = (c = c.redIAdd(c)).redIAdd(c); + var d = this.y.redMul( + u.redMul(f.redISub(u)).redISub(a.redMul(s)) + ); + d = (d = (d = d.redIAdd(d)).redIAdd(d)).redIAdd(d); + var l = this.z.redAdd(a).redSqr().redISub(r).redISub(s); + return this.curve.jpoint(c, d, l); + }), + (h.prototype.mul = function (t, e) { + return (t = new n(t, e)), this.curve._wnafMul(this, t); + }), + (h.prototype.eq = function (t) { + if ("affine" === t.type) return this.eq(t.toJ()); + if (this === t) return !0; + var e = this.z.redSqr(), + r = t.z.redSqr(); + if (0 !== this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0)) + return !1; + var i = e.redMul(this.z), + n = r.redMul(t.z); + return 0 === this.y.redMul(n).redISub(t.y.redMul(i)).cmpn(0); + }), + (h.prototype.eqXToP = function (t) { + var e = this.z.redSqr(), + r = t.toRed(this.curve.red).redMul(e); + if (0 === this.x.cmp(r)) return !0; + for (var i = t.clone(), n = this.curve.redN.redMul(e); ; ) { + if ((i.iadd(this.curve.n), i.cmp(this.curve.p) >= 0)) + return !1; + if ((r.redIAdd(n), 0 === this.x.cmp(r))) return !0; + } + }), + (h.prototype.inspect = function () { + return this.isInfinity() + ? "" + : ""; + }), + (h.prototype.isInfinity = function () { + return 0 === this.z.cmpn(0); + }); + }, + 5427: (t, e, r) => { + "use strict"; + var i, + n = e, + o = r(3715), + a = r(8254), + s = r(953).assert; + function f(t) { + "short" === t.type + ? (this.curve = new a.short(t)) + : "edwards" === t.type + ? (this.curve = new a.edwards(t)) + : (this.curve = new a.mont(t)), + (this.g = this.curve.g), + (this.n = this.curve.n), + (this.hash = t.hash), + s(this.g.validate(), "Invalid curve"), + s(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O"); + } + function u(t, e) { + Object.defineProperty(n, t, { + configurable: !0, + enumerable: !0, + get: function () { + var r = new f(e); + return ( + Object.defineProperty(n, t, { + configurable: !0, + enumerable: !0, + value: r, + }), + r + ); + }, + }); + } + (n.PresetCurve = f), + u("p192", { + type: "short", + prime: "p192", + p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc", + b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1", + n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831", + hash: o.sha256, + gRed: !1, + g: [ + "188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", + "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811", + ], + }), + u("p224", { + type: "short", + prime: "p224", + p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe", + b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4", + n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d", + hash: o.sha256, + gRed: !1, + g: [ + "b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", + "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34", + ], + }), + u("p256", { + type: "short", + prime: null, + p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff", + a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc", + b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b", + n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551", + hash: o.sha256, + gRed: !1, + g: [ + "6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", + "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5", + ], + }), + u("p384", { + type: "short", + prime: null, + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff", + a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc", + b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef", + n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973", + hash: o.sha384, + gRed: !1, + g: [ + "aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7", + "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f", + ], + }), + u("p521", { + type: "short", + prime: null, + p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff", + a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc", + b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00", + n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409", + hash: o.sha512, + gRed: !1, + g: [ + "000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", + "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650", + ], + }), + u("curve25519", { + type: "mont", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "76d06", + b: "1", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: o.sha256, + gRed: !1, + g: ["9"], + }), + u("ed25519", { + type: "edwards", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "-1", + c: "1", + d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: o.sha256, + gRed: !1, + g: [ + "216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", + "6666666666666666666666666666666666666666666666666666666666666658", + ], + }); + try { + i = r(1037); + } catch (t) { + i = void 0; + } + u("secp256k1", { + type: "short", + prime: "k256", + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f", + a: "0", + b: "7", + n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141", + h: "1", + hash: o.sha256, + beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee", + lambda: + "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72", + basis: [ + { + a: "3086d221a7d46bcde86c90e49284eb15", + b: "-e4437ed6010e88286f547fa90abfe4c3", + }, + { + a: "114ca50f7a8e2f3f657c1108d9d44cfd8", + b: "3086d221a7d46bcde86c90e49284eb15", + }, + ], + gRed: !1, + g: [ + "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", + i, + ], + }); + }, + 7954: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(2156), + o = r(953), + a = r(5427), + s = r(9931), + f = o.assert, + u = r(1251), + h = r(611); + function c(t) { + if (!(this instanceof c)) return new c(t); + "string" == typeof t && + (f( + Object.prototype.hasOwnProperty.call(a, t), + "Unknown curve " + t + ), + (t = a[t])), + t instanceof a.PresetCurve && (t = { curve: t }), + (this.curve = t.curve.curve), + (this.n = this.curve.n), + (this.nh = this.n.ushrn(1)), + (this.g = this.curve.g), + (this.g = t.curve.g), + this.g.precompute(t.curve.n.bitLength() + 1), + (this.hash = t.hash || t.curve.hash); + } + (t.exports = c), + (c.prototype.keyPair = function (t) { + return new u(this, t); + }), + (c.prototype.keyFromPrivate = function (t, e) { + return u.fromPrivate(this, t, e); + }), + (c.prototype.keyFromPublic = function (t, e) { + return u.fromPublic(this, t, e); + }), + (c.prototype.genKeyPair = function (t) { + t || (t = {}); + for ( + var e = new n({ + hash: this.hash, + pers: t.pers, + persEnc: t.persEnc || "utf8", + entropy: t.entropy || s(this.hash.hmacStrength), + entropyEnc: (t.entropy && t.entropyEnc) || "utf8", + nonce: this.n.toArray(), + }), + r = this.n.byteLength(), + o = this.n.sub(new i(2)); + ; + + ) { + var a = new i(e.generate(r)); + if (!(a.cmp(o) > 0)) + return a.iaddn(1), this.keyFromPrivate(a); + } + }), + (c.prototype._truncateToN = function (t, e) { + var r = 8 * t.byteLength() - this.n.bitLength(); + return ( + r > 0 && (t = t.ushrn(r)), + !e && t.cmp(this.n) >= 0 ? t.sub(this.n) : t + ); + }), + (c.prototype.sign = function (t, e, r, o) { + "object" == typeof r && ((o = r), (r = null)), + o || (o = {}), + (e = this.keyFromPrivate(e, r)), + (t = this._truncateToN(new i(t, 16))); + for ( + var a = this.n.byteLength(), + s = e.getPrivate().toArray("be", a), + f = t.toArray("be", a), + u = new n({ + hash: this.hash, + entropy: s, + nonce: f, + pers: o.pers, + persEnc: o.persEnc || "utf8", + }), + c = this.n.sub(new i(1)), + d = 0; + ; + d++ + ) { + var l = o.k ? o.k(d) : new i(u.generate(this.n.byteLength())); + if ( + !( + (l = this._truncateToN(l, !0)).cmpn(1) <= 0 || + l.cmp(c) >= 0 + ) + ) { + var p = this.g.mul(l); + if (!p.isInfinity()) { + var b = p.getX(), + y = b.umod(this.n); + if (0 !== y.cmpn(0)) { + var m = l + .invm(this.n) + .mul(y.mul(e.getPrivate()).iadd(t)); + if (0 !== (m = m.umod(this.n)).cmpn(0)) { + var g = + (p.getY().isOdd() ? 1 : 0) | + (0 !== b.cmp(y) ? 2 : 0); + return ( + o.canonical && + m.cmp(this.nh) > 0 && + ((m = this.n.sub(m)), (g ^= 1)), + new h({ r: y, s: m, recoveryParam: g }) + ); + } + } + } + } + } + }), + (c.prototype.verify = function (t, e, r, n) { + (t = this._truncateToN(new i(t, 16))), + (r = this.keyFromPublic(r, n)); + var o = (e = new h(e, "hex")).r, + a = e.s; + if (o.cmpn(1) < 0 || o.cmp(this.n) >= 0) return !1; + if (a.cmpn(1) < 0 || a.cmp(this.n) >= 0) return !1; + var s, + f = a.invm(this.n), + u = f.mul(t).umod(this.n), + c = f.mul(o).umod(this.n); + return this.curve._maxwellTrick + ? !(s = this.g.jmulAdd(u, r.getPublic(), c)).isInfinity() && + s.eqXToP(o) + : !(s = this.g.mulAdd(u, r.getPublic(), c)).isInfinity() && + 0 === s.getX().umod(this.n).cmp(o); + }), + (c.prototype.recoverPubKey = function (t, e, r, n) { + f((3 & r) === r, "The recovery param is more than two bits"), + (e = new h(e, n)); + var o = this.n, + a = new i(t), + s = e.r, + u = e.s, + c = 1 & r, + d = r >> 1; + if (s.cmp(this.curve.p.umod(this.curve.n)) >= 0 && d) + throw new Error("Unable to find sencond key candinate"); + s = d + ? this.curve.pointFromX(s.add(this.curve.n), c) + : this.curve.pointFromX(s, c); + var l = e.r.invm(o), + p = o.sub(a).mul(l).umod(o), + b = u.mul(l).umod(o); + return this.g.mulAdd(p, s, b); + }), + (c.prototype.getKeyRecoveryParam = function (t, e, r, i) { + if (null !== (e = new h(e, i)).recoveryParam) + return e.recoveryParam; + for (var n = 0; n < 4; n++) { + var o; + try { + o = this.recoverPubKey(t, e, n); + } catch (t) { + continue; + } + if (o.eq(r)) return n; + } + throw new Error("Unable to find valid recovery factor"); + }); + }, + 1251: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(953).assert; + function o(t, e) { + (this.ec = t), + (this.priv = null), + (this.pub = null), + e.priv && this._importPrivate(e.priv, e.privEnc), + e.pub && this._importPublic(e.pub, e.pubEnc); + } + (t.exports = o), + (o.fromPublic = function (t, e, r) { + return e instanceof o ? e : new o(t, { pub: e, pubEnc: r }); + }), + (o.fromPrivate = function (t, e, r) { + return e instanceof o ? e : new o(t, { priv: e, privEnc: r }); + }), + (o.prototype.validate = function () { + var t = this.getPublic(); + return t.isInfinity() + ? { result: !1, reason: "Invalid public key" } + : t.validate() + ? t.mul(this.ec.curve.n).isInfinity() + ? { result: !0, reason: null } + : { result: !1, reason: "Public key * N != O" } + : { result: !1, reason: "Public key is not a point" }; + }), + (o.prototype.getPublic = function (t, e) { + return ( + "string" == typeof t && ((e = t), (t = null)), + this.pub || (this.pub = this.ec.g.mul(this.priv)), + e ? this.pub.encode(e, t) : this.pub + ); + }), + (o.prototype.getPrivate = function (t) { + return "hex" === t ? this.priv.toString(16, 2) : this.priv; + }), + (o.prototype._importPrivate = function (t, e) { + (this.priv = new i(t, e || 16)), + (this.priv = this.priv.umod(this.ec.curve.n)); + }), + (o.prototype._importPublic = function (t, e) { + if (t.x || t.y) + return ( + "mont" === this.ec.curve.type + ? n(t.x, "Need x coordinate") + : ("short" !== this.ec.curve.type && + "edwards" !== this.ec.curve.type) || + n(t.x && t.y, "Need both x and y coordinate"), + void (this.pub = this.ec.curve.point(t.x, t.y)) + ); + this.pub = this.ec.curve.decodePoint(t, e); + }), + (o.prototype.derive = function (t) { + return ( + t.validate() || n(t.validate(), "public point not validated"), + t.mul(this.priv).getX() + ); + }), + (o.prototype.sign = function (t, e, r) { + return this.ec.sign(t, this, e, r); + }), + (o.prototype.verify = function (t, e) { + return this.ec.verify(t, e, this); + }), + (o.prototype.inspect = function () { + return ( + "" + ); + }); + }, + 611: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(953), + o = n.assert; + function a(t, e) { + if (t instanceof a) return t; + this._importDER(t, e) || + (o(t.r && t.s, "Signature without r or s"), + (this.r = new i(t.r, 16)), + (this.s = new i(t.s, 16)), + void 0 === t.recoveryParam + ? (this.recoveryParam = null) + : (this.recoveryParam = t.recoveryParam)); + } + function s() { + this.place = 0; + } + function f(t, e) { + var r = t[e.place++]; + if (!(128 & r)) return r; + var i = 15 & r; + if (0 === i || i > 4) return !1; + for (var n = 0, o = 0, a = e.place; o < i; o++, a++) + (n <<= 8), (n |= t[a]), (n >>>= 0); + return !(n <= 127) && ((e.place = a), n); + } + function u(t) { + for ( + var e = 0, r = t.length - 1; + !t[e] && !(128 & t[e + 1]) && e < r; + + ) + e++; + return 0 === e ? t : t.slice(e); + } + function h(t, e) { + if (e < 128) t.push(e); + else { + var r = 1 + ((Math.log(e) / Math.LN2) >>> 3); + for (t.push(128 | r); --r; ) t.push((e >>> (r << 3)) & 255); + t.push(e); + } + } + (t.exports = a), + (a.prototype._importDER = function (t, e) { + t = n.toArray(t, e); + var r = new s(); + if (48 !== t[r.place++]) return !1; + var o = f(t, r); + if (!1 === o) return !1; + if (o + r.place !== t.length) return !1; + if (2 !== t[r.place++]) return !1; + var a = f(t, r); + if (!1 === a) return !1; + var u = t.slice(r.place, a + r.place); + if (((r.place += a), 2 !== t[r.place++])) return !1; + var h = f(t, r); + if (!1 === h) return !1; + if (t.length !== h + r.place) return !1; + var c = t.slice(r.place, h + r.place); + if (0 === u[0]) { + if (!(128 & u[1])) return !1; + u = u.slice(1); + } + if (0 === c[0]) { + if (!(128 & c[1])) return !1; + c = c.slice(1); + } + return ( + (this.r = new i(u)), + (this.s = new i(c)), + (this.recoveryParam = null), + !0 + ); + }), + (a.prototype.toDER = function (t) { + var e = this.r.toArray(), + r = this.s.toArray(); + for ( + 128 & e[0] && (e = [0].concat(e)), + 128 & r[0] && (r = [0].concat(r)), + e = u(e), + r = u(r); + !(r[0] || 128 & r[1]); + + ) + r = r.slice(1); + var i = [2]; + h(i, e.length), (i = i.concat(e)).push(2), h(i, r.length); + var o = i.concat(r), + a = [48]; + return h(a, o.length), (a = a.concat(o)), n.encode(a, t); + }); + }, + 5980: (t, e, r) => { + "use strict"; + var i = r(3715), + n = r(5427), + o = r(953), + a = o.assert, + s = o.parseBytes, + f = r(9087), + u = r(3622); + function h(t) { + if ( + (a("ed25519" === t, "only tested with ed25519 so far"), + !(this instanceof h)) + ) + return new h(t); + (t = n[t].curve), + (this.curve = t), + (this.g = t.g), + this.g.precompute(t.n.bitLength() + 1), + (this.pointClass = t.point().constructor), + (this.encodingLength = Math.ceil(t.n.bitLength() / 8)), + (this.hash = i.sha512); + } + (t.exports = h), + (h.prototype.sign = function (t, e) { + t = s(t); + var r = this.keyFromSecret(e), + i = this.hashInt(r.messagePrefix(), t), + n = this.g.mul(i), + o = this.encodePoint(n), + a = this.hashInt(o, r.pubBytes(), t).mul(r.priv()), + f = i.add(a).umod(this.curve.n); + return this.makeSignature({ R: n, S: f, Rencoded: o }); + }), + (h.prototype.verify = function (t, e, r) { + (t = s(t)), (e = this.makeSignature(e)); + var i = this.keyFromPublic(r), + n = this.hashInt(e.Rencoded(), i.pubBytes(), t), + o = this.g.mul(e.S()); + return e.R().add(i.pub().mul(n)).eq(o); + }), + (h.prototype.hashInt = function () { + for (var t = this.hash(), e = 0; e < arguments.length; e++) + t.update(arguments[e]); + return o.intFromLE(t.digest()).umod(this.curve.n); + }), + (h.prototype.keyFromPublic = function (t) { + return f.fromPublic(this, t); + }), + (h.prototype.keyFromSecret = function (t) { + return f.fromSecret(this, t); + }), + (h.prototype.makeSignature = function (t) { + return t instanceof u ? t : new u(this, t); + }), + (h.prototype.encodePoint = function (t) { + var e = t.getY().toArray("le", this.encodingLength); + return ( + (e[this.encodingLength - 1] |= t.getX().isOdd() ? 128 : 0), e + ); + }), + (h.prototype.decodePoint = function (t) { + var e = (t = o.parseBytes(t)).length - 1, + r = t.slice(0, e).concat(-129 & t[e]), + i = 0 != (128 & t[e]), + n = o.intFromLE(r); + return this.curve.pointFromY(n, i); + }), + (h.prototype.encodeInt = function (t) { + return t.toArray("le", this.encodingLength); + }), + (h.prototype.decodeInt = function (t) { + return o.intFromLE(t); + }), + (h.prototype.isPoint = function (t) { + return t instanceof this.pointClass; + }); + }, + 9087: (t, e, r) => { + "use strict"; + var i = r(953), + n = i.assert, + o = i.parseBytes, + a = i.cachedProperty; + function s(t, e) { + (this.eddsa = t), + (this._secret = o(e.secret)), + t.isPoint(e.pub) + ? (this._pub = e.pub) + : (this._pubBytes = o(e.pub)); + } + (s.fromPublic = function (t, e) { + return e instanceof s ? e : new s(t, { pub: e }); + }), + (s.fromSecret = function (t, e) { + return e instanceof s ? e : new s(t, { secret: e }); + }), + (s.prototype.secret = function () { + return this._secret; + }), + a(s, "pubBytes", function () { + return this.eddsa.encodePoint(this.pub()); + }), + a(s, "pub", function () { + return this._pubBytes + ? this.eddsa.decodePoint(this._pubBytes) + : this.eddsa.g.mul(this.priv()); + }), + a(s, "privBytes", function () { + var t = this.eddsa, + e = this.hash(), + r = t.encodingLength - 1, + i = e.slice(0, t.encodingLength); + return (i[0] &= 248), (i[r] &= 127), (i[r] |= 64), i; + }), + a(s, "priv", function () { + return this.eddsa.decodeInt(this.privBytes()); + }), + a(s, "hash", function () { + return this.eddsa.hash().update(this.secret()).digest(); + }), + a(s, "messagePrefix", function () { + return this.hash().slice(this.eddsa.encodingLength); + }), + (s.prototype.sign = function (t) { + return ( + n(this._secret, "KeyPair can only verify"), + this.eddsa.sign(t, this) + ); + }), + (s.prototype.verify = function (t, e) { + return this.eddsa.verify(t, e, this); + }), + (s.prototype.getSecret = function (t) { + return ( + n(this._secret, "KeyPair is public only"), + i.encode(this.secret(), t) + ); + }), + (s.prototype.getPublic = function (t) { + return i.encode(this.pubBytes(), t); + }), + (t.exports = s); + }, + 3622: (t, e, r) => { + "use strict"; + var i = r(3550), + n = r(953), + o = n.assert, + a = n.cachedProperty, + s = n.parseBytes; + function f(t, e) { + (this.eddsa = t), + "object" != typeof e && (e = s(e)), + Array.isArray(e) && + (e = { + R: e.slice(0, t.encodingLength), + S: e.slice(t.encodingLength), + }), + o(e.R && e.S, "Signature without R or S"), + t.isPoint(e.R) && (this._R = e.R), + e.S instanceof i && (this._S = e.S), + (this._Rencoded = Array.isArray(e.R) ? e.R : e.Rencoded), + (this._Sencoded = Array.isArray(e.S) ? e.S : e.Sencoded); + } + a(f, "S", function () { + return this.eddsa.decodeInt(this.Sencoded()); + }), + a(f, "R", function () { + return this.eddsa.decodePoint(this.Rencoded()); + }), + a(f, "Rencoded", function () { + return this.eddsa.encodePoint(this.R()); + }), + a(f, "Sencoded", function () { + return this.eddsa.encodeInt(this.S()); + }), + (f.prototype.toBytes = function () { + return this.Rencoded().concat(this.Sencoded()); + }), + (f.prototype.toHex = function () { + return n.encode(this.toBytes(), "hex").toUpperCase(); + }), + (t.exports = f); + }, + 1037: (t) => { + t.exports = { + doubles: { + step: 4, + points: [ + [ + "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", + "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821", + ], + [ + "8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", + "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf", + ], + [ + "175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", + "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695", + ], + [ + "363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", + "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9", + ], + [ + "8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", + "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36", + ], + [ + "723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", + "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f", + ], + [ + "eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", + "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999", + ], + [ + "100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", + "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09", + ], + [ + "e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", + "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d", + ], + [ + "feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", + "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088", + ], + [ + "da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", + "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d", + ], + [ + "53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", + "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8", + ], + [ + "8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", + "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a", + ], + [ + "385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", + "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453", + ], + [ + "6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", + "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160", + ], + [ + "3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", + "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0", + ], + [ + "85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", + "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6", + ], + [ + "948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", + "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589", + ], + [ + "6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", + "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17", + ], + [ + "e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", + "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda", + ], + [ + "e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", + "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd", + ], + [ + "213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", + "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2", + ], + [ + "4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", + "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6", + ], + [ + "fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", + "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f", + ], + [ + "76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", + "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01", + ], + [ + "c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", + "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3", + ], + [ + "d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", + "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f", + ], + [ + "b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", + "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7", + ], + [ + "e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", + "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78", + ], + [ + "a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", + "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1", + ], + [ + "90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", + "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150", + ], + [ + "8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", + "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82", + ], + [ + "e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", + "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc", + ], + [ + "8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", + "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b", + ], + [ + "e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", + "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51", + ], + [ + "b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", + "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45", + ], + [ + "d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", + "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120", + ], + [ + "324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", + "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84", + ], + [ + "4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", + "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d", + ], + [ + "9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", + "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d", + ], + [ + "6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", + "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8", + ], + [ + "a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", + "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8", + ], + [ + "7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", + "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac", + ], + [ + "928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", + "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f", + ], + [ + "85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", + "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962", + ], + [ + "ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", + "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907", + ], + [ + "827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", + "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec", + ], + [ + "eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", + "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d", + ], + [ + "e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", + "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414", + ], + [ + "1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", + "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd", + ], + [ + "146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", + "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0", + ], + [ + "fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", + "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811", + ], + [ + "da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", + "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1", + ], + [ + "a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", + "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c", + ], + [ + "174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", + "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73", + ], + [ + "959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", + "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd", + ], + [ + "d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", + "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405", + ], + [ + "64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", + "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589", + ], + [ + "8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", + "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e", + ], + [ + "13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", + "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27", + ], + [ + "bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", + "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1", + ], + [ + "8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", + "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482", + ], + [ + "8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", + "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945", + ], + [ + "dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", + "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573", + ], + [ + "f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", + "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82", + ], + ], + }, + naf: { + wnd: 7, + points: [ + [ + "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", + "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672", + ], + [ + "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", + "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6", + ], + [ + "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", + "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da", + ], + [ + "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", + "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37", + ], + [ + "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", + "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b", + ], + [ + "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", + "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81", + ], + [ + "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", + "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58", + ], + [ + "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", + "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77", + ], + [ + "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", + "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a", + ], + [ + "352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", + "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c", + ], + [ + "2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", + "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67", + ], + [ + "9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", + "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402", + ], + [ + "daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", + "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55", + ], + [ + "c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", + "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482", + ], + [ + "6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", + "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82", + ], + [ + "1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", + "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396", + ], + [ + "605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", + "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49", + ], + [ + "62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", + "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf", + ], + [ + "80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", + "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a", + ], + [ + "7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", + "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7", + ], + [ + "d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", + "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933", + ], + [ + "49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", + "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a", + ], + [ + "77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", + "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6", + ], + [ + "f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", + "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37", + ], + [ + "463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", + "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e", + ], + [ + "f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", + "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6", + ], + [ + "caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", + "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476", + ], + [ + "2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", + "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40", + ], + [ + "7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", + "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61", + ], + [ + "754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", + "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683", + ], + [ + "e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", + "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5", + ], + [ + "186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", + "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b", + ], + [ + "df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", + "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417", + ], + [ + "5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", + "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868", + ], + [ + "290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", + "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a", + ], + [ + "af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", + "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6", + ], + [ + "766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", + "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996", + ], + [ + "59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", + "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e", + ], + [ + "f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", + "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d", + ], + [ + "7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", + "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2", + ], + [ + "948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", + "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e", + ], + [ + "7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", + "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437", + ], + [ + "3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", + "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311", + ], + [ + "d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", + "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4", + ], + [ + "1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", + "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575", + ], + [ + "733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", + "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d", + ], + [ + "15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", + "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d", + ], + [ + "a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", + "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629", + ], + [ + "e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", + "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06", + ], + [ + "311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", + "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374", + ], + [ + "34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", + "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee", + ], + [ + "f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", + "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1", + ], + [ + "d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", + "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b", + ], + [ + "32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", + "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661", + ], + [ + "7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", + "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6", + ], + [ + "ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", + "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e", + ], + [ + "16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", + "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d", + ], + [ + "eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", + "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc", + ], + [ + "78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", + "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4", + ], + [ + "494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", + "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c", + ], + [ + "a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", + "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b", + ], + [ + "c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", + "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913", + ], + [ + "841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", + "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154", + ], + [ + "5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", + "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865", + ], + [ + "36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", + "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc", + ], + [ + "336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", + "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224", + ], + [ + "8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", + "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e", + ], + [ + "1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", + "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6", + ], + [ + "85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", + "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511", + ], + [ + "29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", + "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b", + ], + [ + "a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", + "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2", + ], + [ + "4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", + "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c", + ], + [ + "d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", + "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3", + ], + [ + "ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", + "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d", + ], + [ + "af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", + "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700", + ], + [ + "e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", + "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4", + ], + [ + "591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", + "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196", + ], + [ + "11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", + "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4", + ], + [ + "3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", + "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257", + ], + [ + "cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", + "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13", + ], + [ + "c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", + "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096", + ], + [ + "c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", + "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38", + ], + [ + "a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", + "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f", + ], + [ + "347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", + "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448", + ], + [ + "da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", + "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a", + ], + [ + "c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", + "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4", + ], + [ + "4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", + "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437", + ], + [ + "3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", + "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7", + ], + [ + "cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", + "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d", + ], + [ + "b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", + "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a", + ], + [ + "d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", + "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54", + ], + [ + "48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", + "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77", + ], + [ + "dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", + "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517", + ], + [ + "6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", + "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10", + ], + [ + "e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", + "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125", + ], + [ + "eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", + "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e", + ], + [ + "13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", + "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1", + ], + [ + "ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", + "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2", + ], + [ + "b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", + "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423", + ], + [ + "ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", + "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8", + ], + [ + "8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", + "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758", + ], + [ + "52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", + "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375", + ], + [ + "e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", + "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d", + ], + [ + "7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", + "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec", + ], + [ + "5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", + "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0", + ], + [ + "32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", + "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c", + ], + [ + "e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", + "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4", + ], + [ + "8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", + "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f", + ], + [ + "4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", + "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649", + ], + [ + "3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", + "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826", + ], + [ + "674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", + "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5", + ], + [ + "d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", + "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87", + ], + [ + "30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", + "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b", + ], + [ + "be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", + "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc", + ], + [ + "93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", + "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c", + ], + [ + "b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", + "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f", + ], + [ + "d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", + "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a", + ], + [ + "d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", + "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46", + ], + [ + "463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", + "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f", + ], + [ + "7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", + "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03", + ], + [ + "74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", + "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08", + ], + [ + "30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", + "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8", + ], + [ + "9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", + "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373", + ], + [ + "176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", + "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3", + ], + [ + "75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", + "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8", + ], + [ + "809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", + "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1", + ], + [ + "1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", + "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9", + ], + ], + }, + }; + }, + 953: (t, e, r) => { + "use strict"; + var i = e, + n = r(3550), + o = r(9746), + a = r(4504); + (i.assert = o), + (i.toArray = a.toArray), + (i.zero2 = a.zero2), + (i.toHex = a.toHex), + (i.encode = a.encode), + (i.getNAF = function (t, e, r) { + var i = new Array(Math.max(t.bitLength(), r) + 1); + i.fill(0); + for ( + var n = 1 << (e + 1), o = t.clone(), a = 0; + a < i.length; + a++ + ) { + var s, + f = o.andln(n - 1); + o.isOdd() + ? ((s = f > (n >> 1) - 1 ? (n >> 1) - f : f), o.isubn(s)) + : (s = 0), + (i[a] = s), + o.iushrn(1); + } + return i; + }), + (i.getJSF = function (t, e) { + var r = [[], []]; + (t = t.clone()), (e = e.clone()); + for (var i, n = 0, o = 0; t.cmpn(-n) > 0 || e.cmpn(-o) > 0; ) { + var a, + s, + f = (t.andln(3) + n) & 3, + u = (e.andln(3) + o) & 3; + 3 === f && (f = -1), + 3 === u && (u = -1), + (a = + 0 == (1 & f) + ? 0 + : (3 != (i = (t.andln(7) + n) & 7) && 5 !== i) || + 2 !== u + ? f + : -f), + r[0].push(a), + (s = + 0 == (1 & u) + ? 0 + : (3 != (i = (e.andln(7) + o) & 7) && 5 !== i) || + 2 !== f + ? u + : -u), + r[1].push(s), + 2 * n === a + 1 && (n = 1 - n), + 2 * o === s + 1 && (o = 1 - o), + t.iushrn(1), + e.iushrn(1); + } + return r; + }), + (i.cachedProperty = function (t, e, r) { + var i = "_" + e; + t.prototype[e] = function () { + return void 0 !== this[i] + ? this[i] + : (this[i] = r.call(this)); + }; + }), + (i.parseBytes = function (t) { + return "string" == typeof t ? i.toArray(t, "hex") : t; + }), + (i.intFromLE = function (t) { + return new n(t, "hex", "le"); + }); + }, + 8091: (t) => { + "use strict"; + function e(t, e) { + if (null == t) + throw new TypeError("Cannot convert first argument to object"); + for (var r = Object(t), i = 1; i < arguments.length; i++) { + var n = arguments[i]; + if (null != n) + for ( + var o = Object.keys(Object(n)), a = 0, s = o.length; + a < s; + a++ + ) { + var f = o[a], + u = Object.getOwnPropertyDescriptor(n, f); + void 0 !== u && u.enumerable && (r[f] = n[f]); + } + } + return r; + } + t.exports = { + assign: e, + polyfill: function () { + Object.assign || + Object.defineProperty(Object, "assign", { + enumerable: !1, + configurable: !0, + writable: !0, + value: e, + }); + }, + }; + }, + 7187: (t, e, r) => { + "use strict"; + var i, + n = r(5108), + o = "object" == typeof Reflect ? Reflect : null, + a = + o && "function" == typeof o.apply + ? o.apply + : function (t, e, r) { + return Function.prototype.apply.call(t, e, r); + }; + i = + o && "function" == typeof o.ownKeys + ? o.ownKeys + : Object.getOwnPropertySymbols + ? function (t) { + return Object.getOwnPropertyNames(t).concat( + Object.getOwnPropertySymbols(t) + ); + } + : function (t) { + return Object.getOwnPropertyNames(t); + }; + var s = + Number.isNaN || + function (t) { + return t != t; + }; + function f() { + f.init.call(this); + } + (t.exports = f), + (t.exports.once = function (t, e) { + return new Promise(function (r, i) { + function n(r) { + t.removeListener(e, o), i(r); + } + function o() { + "function" == typeof t.removeListener && + t.removeListener("error", n), + r([].slice.call(arguments)); + } + g(t, e, o, { once: !0 }), + "error" !== e && + (function (t, e, r) { + "function" == typeof t.on && + g(t, "error", e, { once: !0 }); + })(t, n); + }); + }), + (f.EventEmitter = f), + (f.prototype._events = void 0), + (f.prototype._eventsCount = 0), + (f.prototype._maxListeners = void 0); + var u = 10; + function h(t) { + if ("function" != typeof t) + throw new TypeError( + 'The "listener" argument must be of type Function. Received type ' + + typeof t + ); + } + function c(t) { + return void 0 === t._maxListeners + ? f.defaultMaxListeners + : t._maxListeners; + } + function d(t, e, r, i) { + var o, a, s, f; + if ( + (h(r), + void 0 === (a = t._events) + ? ((a = t._events = Object.create(null)), + (t._eventsCount = 0)) + : (void 0 !== a.newListener && + (t.emit("newListener", e, r.listener ? r.listener : r), + (a = t._events)), + (s = a[e])), + void 0 === s) + ) + (s = a[e] = r), ++t._eventsCount; + else if ( + ("function" == typeof s + ? (s = a[e] = i ? [r, s] : [s, r]) + : i + ? s.unshift(r) + : s.push(r), + (o = c(t)) > 0 && s.length > o && !s.warned) + ) { + s.warned = !0; + var u = new Error( + "Possible EventEmitter memory leak detected. " + + s.length + + " " + + String(e) + + " listeners added. Use emitter.setMaxListeners() to increase limit" + ); + (u.name = "MaxListenersExceededWarning"), + (u.emitter = t), + (u.type = e), + (u.count = s.length), + (f = u), + n && n.warn && n.warn(f); + } + return t; + } + function l() { + if (!this.fired) + return ( + this.target.removeListener(this.type, this.wrapFn), + (this.fired = !0), + 0 === arguments.length + ? this.listener.call(this.target) + : this.listener.apply(this.target, arguments) + ); + } + function p(t, e, r) { + var i = { + fired: !1, + wrapFn: void 0, + target: t, + type: e, + listener: r, + }, + n = l.bind(i); + return (n.listener = r), (i.wrapFn = n), n; + } + function b(t, e, r) { + var i = t._events; + if (void 0 === i) return []; + var n = i[e]; + return void 0 === n + ? [] + : "function" == typeof n + ? r + ? [n.listener || n] + : [n] + : r + ? (function (t) { + for (var e = new Array(t.length), r = 0; r < e.length; ++r) + e[r] = t[r].listener || t[r]; + return e; + })(n) + : m(n, n.length); + } + function y(t) { + var e = this._events; + if (void 0 !== e) { + var r = e[t]; + if ("function" == typeof r) return 1; + if (void 0 !== r) return r.length; + } + return 0; + } + function m(t, e) { + for (var r = new Array(e), i = 0; i < e; ++i) r[i] = t[i]; + return r; + } + function g(t, e, r, i) { + if ("function" == typeof t.on) i.once ? t.once(e, r) : t.on(e, r); + else { + if ("function" != typeof t.addEventListener) + throw new TypeError( + 'The "emitter" argument must be of type EventEmitter. Received type ' + + typeof t + ); + t.addEventListener(e, function n(o) { + i.once && t.removeEventListener(e, n), r(o); + }); + } + } + Object.defineProperty(f, "defaultMaxListeners", { + enumerable: !0, + get: function () { + return u; + }, + set: function (t) { + if ("number" != typeof t || t < 0 || s(t)) + throw new RangeError( + 'The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + + t + + "." + ); + u = t; + }, + }), + (f.init = function () { + (void 0 !== this._events && + this._events !== Object.getPrototypeOf(this)._events) || + ((this._events = Object.create(null)), + (this._eventsCount = 0)), + (this._maxListeners = this._maxListeners || void 0); + }), + (f.prototype.setMaxListeners = function (t) { + if ("number" != typeof t || t < 0 || s(t)) + throw new RangeError( + 'The value of "n" is out of range. It must be a non-negative number. Received ' + + t + + "." + ); + return (this._maxListeners = t), this; + }), + (f.prototype.getMaxListeners = function () { + return c(this); + }), + (f.prototype.emit = function (t) { + for (var e = [], r = 1; r < arguments.length; r++) + e.push(arguments[r]); + var i = "error" === t, + n = this._events; + if (void 0 !== n) i = i && void 0 === n.error; + else if (!i) return !1; + if (i) { + var o; + if ((e.length > 0 && (o = e[0]), o instanceof Error)) throw o; + var s = new Error( + "Unhandled error." + (o ? " (" + o.message + ")" : "") + ); + throw ((s.context = o), s); + } + var f = n[t]; + if (void 0 === f) return !1; + if ("function" == typeof f) a(f, this, e); + else { + var u = f.length, + h = m(f, u); + for (r = 0; r < u; ++r) a(h[r], this, e); + } + return !0; + }), + (f.prototype.addListener = function (t, e) { + return d(this, t, e, !1); + }), + (f.prototype.on = f.prototype.addListener), + (f.prototype.prependListener = function (t, e) { + return d(this, t, e, !0); + }), + (f.prototype.once = function (t, e) { + return h(e), this.on(t, p(this, t, e)), this; + }), + (f.prototype.prependOnceListener = function (t, e) { + return h(e), this.prependListener(t, p(this, t, e)), this; + }), + (f.prototype.removeListener = function (t, e) { + var r, i, n, o, a; + if ((h(e), void 0 === (i = this._events))) return this; + if (void 0 === (r = i[t])) return this; + if (r === e || r.listener === e) + 0 == --this._eventsCount + ? (this._events = Object.create(null)) + : (delete i[t], + i.removeListener && + this.emit("removeListener", t, r.listener || e)); + else if ("function" != typeof r) { + for (n = -1, o = r.length - 1; o >= 0; o--) + if (r[o] === e || r[o].listener === e) { + (a = r[o].listener), (n = o); + break; + } + if (n < 0) return this; + 0 === n + ? r.shift() + : (function (t, e) { + for (; e + 1 < t.length; e++) t[e] = t[e + 1]; + t.pop(); + })(r, n), + 1 === r.length && (i[t] = r[0]), + void 0 !== i.removeListener && + this.emit("removeListener", t, a || e); + } + return this; + }), + (f.prototype.off = f.prototype.removeListener), + (f.prototype.removeAllListeners = function (t) { + var e, r, i; + if (void 0 === (r = this._events)) return this; + if (void 0 === r.removeListener) + return ( + 0 === arguments.length + ? ((this._events = Object.create(null)), + (this._eventsCount = 0)) + : void 0 !== r[t] && + (0 == --this._eventsCount + ? (this._events = Object.create(null)) + : delete r[t]), + this + ); + if (0 === arguments.length) { + var n, + o = Object.keys(r); + for (i = 0; i < o.length; ++i) + "removeListener" !== (n = o[i]) && + this.removeAllListeners(n); + return ( + this.removeAllListeners("removeListener"), + (this._events = Object.create(null)), + (this._eventsCount = 0), + this + ); + } + if ("function" == typeof (e = r[t])) this.removeListener(t, e); + else if (void 0 !== e) + for (i = e.length - 1; i >= 0; i--) + this.removeListener(t, e[i]); + return this; + }), + (f.prototype.listeners = function (t) { + return b(this, t, !0); + }), + (f.prototype.rawListeners = function (t) { + return b(this, t, !1); + }), + (f.listenerCount = function (t, e) { + return "function" == typeof t.listenerCount + ? t.listenerCount(e) + : y.call(t, e); + }), + (f.prototype.listenerCount = y), + (f.prototype.eventNames = function () { + return this._eventsCount > 0 ? i(this._events) : []; + }); + }, + 3048: (t, e, r) => { + var i = r(9509).Buffer, + n = r(2318); + t.exports = function (t, e, r, o) { + if ( + (i.isBuffer(t) || (t = i.from(t, "binary")), + e && + (i.isBuffer(e) || (e = i.from(e, "binary")), 8 !== e.length)) + ) + throw new RangeError( + "salt should be Buffer with 8 byte length" + ); + for ( + var a = r / 8, + s = i.alloc(a), + f = i.alloc(o || 0), + u = i.alloc(0); + a > 0 || o > 0; + + ) { + var h = new n(); + h.update(u), h.update(t), e && h.update(e), (u = h.digest()); + var c = 0; + if (a > 0) { + var d = s.length - a; + (c = Math.min(a, u.length)), u.copy(s, d, 0, c), (a -= c); + } + if (c < u.length && o > 0) { + var l = f.length - o, + p = Math.min(o, u.length - c); + u.copy(f, l, c, c + p), (o -= p); + } + } + return u.fill(0), { key: s, iv: f }; + }; + }, + 4029: (t, e, r) => { + "use strict"; + var i = r(5320), + n = Object.prototype.toString, + o = Object.prototype.hasOwnProperty, + a = function (t, e, r) { + for (var i = 0, n = t.length; i < n; i++) + o.call(t, i) && + (null == r ? e(t[i], i, t) : e.call(r, t[i], i, t)); + }, + s = function (t, e, r) { + for (var i = 0, n = t.length; i < n; i++) + null == r + ? e(t.charAt(i), i, t) + : e.call(r, t.charAt(i), i, t); + }, + f = function (t, e, r) { + for (var i in t) + o.call(t, i) && + (null == r ? e(t[i], i, t) : e.call(r, t[i], i, t)); + }; + t.exports = function (t, e, r) { + if (!i(e)) throw new TypeError("iterator must be a function"); + var o; + arguments.length >= 3 && (o = r), + "[object Array]" === n.call(t) + ? a(t, e, o) + : "string" == typeof t + ? s(t, e, o) + : f(t, e, o); + }; + }, + 7648: (t) => { + "use strict"; + var e = "Function.prototype.bind called on incompatible ", + r = Array.prototype.slice, + i = Object.prototype.toString, + n = "[object Function]"; + t.exports = function (t) { + var o = this; + if ("function" != typeof o || i.call(o) !== n) + throw new TypeError(e + o); + for ( + var a, + s = r.call(arguments, 1), + f = function () { + if (this instanceof a) { + var e = o.apply(this, s.concat(r.call(arguments))); + return Object(e) === e ? e : this; + } + return o.apply(t, s.concat(r.call(arguments))); + }, + u = Math.max(0, o.length - s.length), + h = [], + c = 0; + c < u; + c++ + ) + h.push("$" + c); + if ( + ((a = Function( + "binder", + "return function (" + + h.join(",") + + "){ return binder.apply(this,arguments); }" + )(f)), + o.prototype) + ) { + var d = function () {}; + (d.prototype = o.prototype), + (a.prototype = new d()), + (d.prototype = null); + } + return a; + }; + }, + 8612: (t, e, r) => { + "use strict"; + var i = r(7648); + t.exports = Function.prototype.bind || i; + }, + 9637: (t, e, r) => { + "use strict"; + const { Buffer: i } = r(8764), + { createHash: n, createHmac: o } = r(5835), + a = {}, + s = (t) => { + switch (t) { + case "sha256": + case "sha3-256": + case "blake2s256": + return 32; + case "sha512": + case "sha3-512": + case "blake2b512": + return 64; + case "sha224": + case "sha3-224": + return 28; + case "sha384": + case "sha3-384": + return 48; + case "sha1": + return 20; + case "md5": + return 16; + default: { + let e = a[t]; + return ( + void 0 === e && ((e = n(t).digest().length), (a[t] = e)), + e + ); + } + } + }, + f = (t, e, r, n) => { + const a = i.isBuffer(r) ? r : i.from(r), + s = n && n.length ? i.from(n) : i.alloc(e, 0); + return o(t, s).update(a).digest(); + }, + u = (t, e, r, n, a) => { + const s = i.isBuffer(a) ? a : i.from(a || ""), + f = s.length, + u = Math.ceil(n / e); + if (u > 255) + throw new Error(`OKM length ${n} is too long for ${t} hash`); + const h = i.alloc(e * u + f + 1); + for (let i = 1, n = 0, a = 0; i <= u; ++i) + s.copy(h, a), + (h[a + f] = i), + o(t, r) + .update(h.slice(n, a + f + 1)) + .digest() + .copy(h, a), + (n = a), + (a += e); + return h.slice(0, n); + }; + function h( + t, + e, + { salt: r = "", info: i = "", hash: n = "SHA-256" } = {} + ) { + n = n.toLowerCase().replace("-", ""); + const o = s(n), + a = f(n, o, t, r); + return u(n, o, a, e, i); + } + Object.defineProperties(h, { + hash_length: { + configurable: !1, + enumerable: !1, + writable: !1, + value: s, + }, + extract: { + configurable: !1, + enumerable: !1, + writable: !1, + value: f, + }, + expand: { + configurable: !1, + enumerable: !1, + writable: !1, + value: u, + }, + }), + (t.exports = h); + }, + 210: (t, e, r) => { + "use strict"; + var i, + n = SyntaxError, + o = Function, + a = TypeError, + s = function (t) { + try { + return o('"use strict"; return (' + t + ").constructor;")(); + } catch (t) {} + }, + f = Object.getOwnPropertyDescriptor; + if (f) + try { + f({}, ""); + } catch (t) { + f = null; + } + var u = function () { + throw new a(); + }, + h = f + ? (function () { + try { + return u; + } catch (t) { + try { + return f(arguments, "callee").get; + } catch (t) { + return u; + } + } + })() + : u, + c = r(1405)(), + d = + Object.getPrototypeOf || + function (t) { + return t.__proto__; + }, + l = {}, + p = "undefined" == typeof Uint8Array ? i : d(Uint8Array), + b = { + "%AggregateError%": + "undefined" == typeof AggregateError ? i : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": + "undefined" == typeof ArrayBuffer ? i : ArrayBuffer, + "%ArrayIteratorPrototype%": c ? d([][Symbol.iterator]()) : i, + "%AsyncFromSyncIteratorPrototype%": i, + "%AsyncFunction%": l, + "%AsyncGenerator%": l, + "%AsyncGeneratorFunction%": l, + "%AsyncIteratorPrototype%": l, + "%Atomics%": "undefined" == typeof Atomics ? i : Atomics, + "%BigInt%": "undefined" == typeof BigInt ? i : BigInt, + "%Boolean%": Boolean, + "%DataView%": "undefined" == typeof DataView ? i : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": Error, + "%eval%": eval, + "%EvalError%": EvalError, + "%Float32Array%": + "undefined" == typeof Float32Array ? i : Float32Array, + "%Float64Array%": + "undefined" == typeof Float64Array ? i : Float64Array, + "%FinalizationRegistry%": + "undefined" == typeof FinalizationRegistry + ? i + : FinalizationRegistry, + "%Function%": o, + "%GeneratorFunction%": l, + "%Int8Array%": "undefined" == typeof Int8Array ? i : Int8Array, + "%Int16Array%": + "undefined" == typeof Int16Array ? i : Int16Array, + "%Int32Array%": + "undefined" == typeof Int32Array ? i : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": c ? d(d([][Symbol.iterator]())) : i, + "%JSON%": "object" == typeof JSON ? JSON : i, + "%Map%": "undefined" == typeof Map ? i : Map, + "%MapIteratorPrototype%": + "undefined" != typeof Map && c + ? d(new Map()[Symbol.iterator]()) + : i, + "%Math%": Math, + "%Number%": Number, + "%Object%": Object, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": "undefined" == typeof Promise ? i : Promise, + "%Proxy%": "undefined" == typeof Proxy ? i : Proxy, + "%RangeError%": RangeError, + "%ReferenceError%": ReferenceError, + "%Reflect%": "undefined" == typeof Reflect ? i : Reflect, + "%RegExp%": RegExp, + "%Set%": "undefined" == typeof Set ? i : Set, + "%SetIteratorPrototype%": + "undefined" != typeof Set && c + ? d(new Set()[Symbol.iterator]()) + : i, + "%SharedArrayBuffer%": + "undefined" == typeof SharedArrayBuffer + ? i + : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": c ? d(""[Symbol.iterator]()) : i, + "%Symbol%": c ? Symbol : i, + "%SyntaxError%": n, + "%ThrowTypeError%": h, + "%TypedArray%": p, + "%TypeError%": a, + "%Uint8Array%": + "undefined" == typeof Uint8Array ? i : Uint8Array, + "%Uint8ClampedArray%": + "undefined" == typeof Uint8ClampedArray + ? i + : Uint8ClampedArray, + "%Uint16Array%": + "undefined" == typeof Uint16Array ? i : Uint16Array, + "%Uint32Array%": + "undefined" == typeof Uint32Array ? i : Uint32Array, + "%URIError%": URIError, + "%WeakMap%": "undefined" == typeof WeakMap ? i : WeakMap, + "%WeakRef%": "undefined" == typeof WeakRef ? i : WeakRef, + "%WeakSet%": "undefined" == typeof WeakSet ? i : WeakSet, + }, + y = function t(e) { + var r; + if ("%AsyncFunction%" === e) r = s("async function () {}"); + else if ("%GeneratorFunction%" === e) r = s("function* () {}"); + else if ("%AsyncGeneratorFunction%" === e) + r = s("async function* () {}"); + else if ("%AsyncGenerator%" === e) { + var i = t("%AsyncGeneratorFunction%"); + i && (r = i.prototype); + } else if ("%AsyncIteratorPrototype%" === e) { + var n = t("%AsyncGenerator%"); + n && (r = d(n.prototype)); + } + return (b[e] = r), r; + }, + m = { + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": [ + "AsyncGeneratorFunction", + "prototype", + "prototype", + ], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": [ + "GeneratorFunction", + "prototype", + "prototype", + ], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": [ + "SharedArrayBuffer", + "prototype", + ], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": [ + "Uint8ClampedArray", + "prototype", + ], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"], + }, + g = r(8612), + v = r(7642), + w = g.call(Function.call, Array.prototype.concat), + _ = g.call(Function.apply, Array.prototype.splice), + M = g.call(Function.call, String.prototype.replace), + S = g.call(Function.call, String.prototype.slice), + E = g.call(Function.call, RegExp.prototype.exec), + A = + /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g, + k = /\\(\\)?/g, + x = function (t) { + var e = S(t, 0, 1), + r = S(t, -1); + if ("%" === e && "%" !== r) + throw new n("invalid intrinsic syntax, expected closing `%`"); + if ("%" === r && "%" !== e) + throw new n("invalid intrinsic syntax, expected opening `%`"); + var i = []; + return ( + M(t, A, function (t, e, r, n) { + i[i.length] = r ? M(n, k, "$1") : e || t; + }), + i + ); + }, + I = function (t, e) { + var r, + i = t; + if ((v(m, i) && (i = "%" + (r = m[i])[0] + "%"), v(b, i))) { + var o = b[i]; + if ((o === l && (o = y(i)), void 0 === o && !e)) + throw new a( + "intrinsic " + + t + + " exists, but is not available. Please file an issue!" + ); + return { alias: r, name: i, value: o }; + } + throw new n("intrinsic " + t + " does not exist!"); + }; + t.exports = function (t, e) { + if ("string" != typeof t || 0 === t.length) + throw new a("intrinsic name must be a non-empty string"); + if (arguments.length > 1 && "boolean" != typeof e) + throw new a('"allowMissing" argument must be a boolean'); + if (null === E(/^%?[^%]*%?$/, t)) + throw new n( + "`%` may not be present anywhere but at the beginning and end of the intrinsic name" + ); + var r = x(t), + i = r.length > 0 ? r[0] : "", + o = I("%" + i + "%", e), + s = o.name, + u = o.value, + h = !1, + c = o.alias; + c && ((i = c[0]), _(r, w([0, 1], c))); + for (var d = 1, l = !0; d < r.length; d += 1) { + var p = r[d], + y = S(p, 0, 1), + m = S(p, -1); + if ( + ('"' === y || + "'" === y || + "`" === y || + '"' === m || + "'" === m || + "`" === m) && + y !== m + ) + throw new n( + "property names with quotes must have matching quotes" + ); + if ( + (("constructor" !== p && l) || (h = !0), + v(b, (s = "%" + (i += "." + p) + "%"))) + ) + u = b[s]; + else if (null != u) { + if (!(p in u)) { + if (!e) + throw new a( + "base intrinsic for " + + t + + " exists, but the property is not available." + ); + return; + } + if (f && d + 1 >= r.length) { + var g = f(u, p); + u = + (l = !!g) && "get" in g && !("originalValue" in g.get) + ? g.get + : u[p]; + } else (l = v(u, p)), (u = u[p]); + l && !h && (b[s] = u); + } + } + return u; + }; + }, + 7296: (t, e, r) => { + "use strict"; + var i = r(210)("%Object.getOwnPropertyDescriptor%", !0); + if (i) + try { + i([], "length"); + } catch (t) { + i = null; + } + t.exports = i; + }, + 1044: (t, e, r) => { + "use strict"; + var i = r(210)("%Object.defineProperty%", !0), + n = function () { + if (i) + try { + return i({}, "a", { value: 1 }), !0; + } catch (t) { + return !1; + } + return !1; + }; + (n.hasArrayLengthDefineBug = function () { + if (!n()) return null; + try { + return 1 !== i([], "length", { value: 1 }).length; + } catch (t) { + return !0; + } + }), + (t.exports = n); + }, + 1405: (t, e, r) => { + "use strict"; + var i = "undefined" != typeof Symbol && Symbol, + n = r(5419); + t.exports = function () { + return ( + "function" == typeof i && + "function" == typeof Symbol && + "symbol" == typeof i("foo") && + "symbol" == typeof Symbol("bar") && + n() + ); + }; + }, + 5419: (t) => { + "use strict"; + t.exports = function () { + if ( + "function" != typeof Symbol || + "function" != typeof Object.getOwnPropertySymbols + ) + return !1; + if ("symbol" == typeof Symbol.iterator) return !0; + var t = {}, + e = Symbol("test"), + r = Object(e); + if ("string" == typeof e) return !1; + if ("[object Symbol]" !== Object.prototype.toString.call(e)) + return !1; + if ("[object Symbol]" !== Object.prototype.toString.call(r)) + return !1; + for (e in ((t[e] = 42), t)) return !1; + if ( + "function" == typeof Object.keys && + 0 !== Object.keys(t).length + ) + return !1; + if ( + "function" == typeof Object.getOwnPropertyNames && + 0 !== Object.getOwnPropertyNames(t).length + ) + return !1; + var i = Object.getOwnPropertySymbols(t); + if (1 !== i.length || i[0] !== e) return !1; + if (!Object.prototype.propertyIsEnumerable.call(t, e)) return !1; + if ("function" == typeof Object.getOwnPropertyDescriptor) { + var n = Object.getOwnPropertyDescriptor(t, e); + if (42 !== n.value || !0 !== n.enumerable) return !1; + } + return !0; + }; + }, + 6410: (t, e, r) => { + "use strict"; + var i = r(5419); + t.exports = function () { + return i() && !!Symbol.toStringTag; + }; + }, + 7642: (t, e, r) => { + "use strict"; + var i = r(8612); + t.exports = i.call(Function.call, Object.prototype.hasOwnProperty); + }, + 3349: (t, e, r) => { + "use strict"; + var i = r(9509).Buffer, + n = r(8473).Transform; + function o(t) { + n.call(this), + (this._block = i.allocUnsafe(t)), + (this._blockSize = t), + (this._blockOffset = 0), + (this._length = [0, 0, 0, 0]), + (this._finalized = !1); + } + r(5717)(o, n), + (o.prototype._transform = function (t, e, r) { + var i = null; + try { + this.update(t, e); + } catch (t) { + i = t; + } + r(i); + }), + (o.prototype._flush = function (t) { + var e = null; + try { + this.push(this.digest()); + } catch (t) { + e = t; + } + t(e); + }), + (o.prototype.update = function (t, e) { + if ( + ((function (t, e) { + if (!i.isBuffer(t) && "string" != typeof t) + throw new TypeError("Data must be a string or a buffer"); + })(t), + this._finalized) + ) + throw new Error("Digest already called"); + i.isBuffer(t) || (t = i.from(t, e)); + for ( + var r = this._block, n = 0; + this._blockOffset + t.length - n >= this._blockSize; + + ) { + for (var o = this._blockOffset; o < this._blockSize; ) + r[o++] = t[n++]; + this._update(), (this._blockOffset = 0); + } + for (; n < t.length; ) r[this._blockOffset++] = t[n++]; + for (var a = 0, s = 8 * t.length; s > 0; ++a) + (this._length[a] += s), + (s = (this._length[a] / 4294967296) | 0) > 0 && + (this._length[a] -= 4294967296 * s); + return this; + }), + (o.prototype._update = function () { + throw new Error("_update is not implemented"); + }), + (o.prototype.digest = function (t) { + if (this._finalized) throw new Error("Digest already called"); + this._finalized = !0; + var e = this._digest(); + void 0 !== t && (e = e.toString(t)), + this._block.fill(0), + (this._blockOffset = 0); + for (var r = 0; r < 4; ++r) this._length[r] = 0; + return e; + }), + (o.prototype._digest = function () { + throw new Error("_digest is not implemented"); + }), + (t.exports = o); + }, + 3715: (t, e, r) => { + var i = e; + (i.utils = r(6436)), + (i.common = r(5772)), + (i.sha = r(9041)), + (i.ripemd = r(2949)), + (i.hmac = r(2344)), + (i.sha1 = i.sha.sha1), + (i.sha256 = i.sha.sha256), + (i.sha224 = i.sha.sha224), + (i.sha384 = i.sha.sha384), + (i.sha512 = i.sha.sha512), + (i.ripemd160 = i.ripemd.ripemd160); + }, + 5772: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(9746); + function o() { + (this.pending = null), + (this.pendingTotal = 0), + (this.blockSize = this.constructor.blockSize), + (this.outSize = this.constructor.outSize), + (this.hmacStrength = this.constructor.hmacStrength), + (this.padLength = this.constructor.padLength / 8), + (this.endian = "big"), + (this._delta8 = this.blockSize / 8), + (this._delta32 = this.blockSize / 32); + } + (e.BlockHash = o), + (o.prototype.update = function (t, e) { + if ( + ((t = i.toArray(t, e)), + this.pending + ? (this.pending = this.pending.concat(t)) + : (this.pending = t), + (this.pendingTotal += t.length), + this.pending.length >= this._delta8) + ) { + var r = (t = this.pending).length % this._delta8; + (this.pending = t.slice(t.length - r, t.length)), + 0 === this.pending.length && (this.pending = null), + (t = i.join32(t, 0, t.length - r, this.endian)); + for (var n = 0; n < t.length; n += this._delta32) + this._update(t, n, n + this._delta32); + } + return this; + }), + (o.prototype.digest = function (t) { + return ( + this.update(this._pad()), + n(null === this.pending), + this._digest(t) + ); + }), + (o.prototype._pad = function () { + var t = this.pendingTotal, + e = this._delta8, + r = e - ((t + this.padLength) % e), + i = new Array(r + this.padLength); + i[0] = 128; + for (var n = 1; n < r; n++) i[n] = 0; + if (((t <<= 3), "big" === this.endian)) { + for (var o = 8; o < this.padLength; o++) i[n++] = 0; + (i[n++] = 0), + (i[n++] = 0), + (i[n++] = 0), + (i[n++] = 0), + (i[n++] = (t >>> 24) & 255), + (i[n++] = (t >>> 16) & 255), + (i[n++] = (t >>> 8) & 255), + (i[n++] = 255 & t); + } else + for ( + i[n++] = 255 & t, + i[n++] = (t >>> 8) & 255, + i[n++] = (t >>> 16) & 255, + i[n++] = (t >>> 24) & 255, + i[n++] = 0, + i[n++] = 0, + i[n++] = 0, + i[n++] = 0, + o = 8; + o < this.padLength; + o++ + ) + i[n++] = 0; + return i; + }); + }, + 2344: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(9746); + function o(t, e, r) { + if (!(this instanceof o)) return new o(t, e, r); + (this.Hash = t), + (this.blockSize = t.blockSize / 8), + (this.outSize = t.outSize / 8), + (this.inner = null), + (this.outer = null), + this._init(i.toArray(e, r)); + } + (t.exports = o), + (o.prototype._init = function (t) { + t.length > this.blockSize && + (t = new this.Hash().update(t).digest()), + n(t.length <= this.blockSize); + for (var e = t.length; e < this.blockSize; e++) t.push(0); + for (e = 0; e < t.length; e++) t[e] ^= 54; + for ( + this.inner = new this.Hash().update(t), e = 0; + e < t.length; + e++ + ) + t[e] ^= 106; + this.outer = new this.Hash().update(t); + }), + (o.prototype.update = function (t, e) { + return this.inner.update(t, e), this; + }), + (o.prototype.digest = function (t) { + return ( + this.outer.update(this.inner.digest()), this.outer.digest(t) + ); + }); + }, + 2949: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(5772), + o = i.rotl32, + a = i.sum32, + s = i.sum32_3, + f = i.sum32_4, + u = n.BlockHash; + function h() { + if (!(this instanceof h)) return new h(); + u.call(this), + (this.h = [ + 1732584193, 4023233417, 2562383102, 271733878, 3285377520, + ]), + (this.endian = "little"); + } + function c(t, e, r, i) { + return t <= 15 + ? e ^ r ^ i + : t <= 31 + ? (e & r) | (~e & i) + : t <= 47 + ? (e | ~r) ^ i + : t <= 63 + ? (e & i) | (r & ~i) + : e ^ (r | ~i); + } + function d(t) { + return t <= 15 + ? 0 + : t <= 31 + ? 1518500249 + : t <= 47 + ? 1859775393 + : t <= 63 + ? 2400959708 + : 2840853838; + } + function l(t) { + return t <= 15 + ? 1352829926 + : t <= 31 + ? 1548603684 + : t <= 47 + ? 1836072691 + : t <= 63 + ? 2053994217 + : 0; + } + i.inherits(h, u), + (e.ripemd160 = h), + (h.blockSize = 512), + (h.outSize = 160), + (h.hmacStrength = 192), + (h.padLength = 64), + (h.prototype._update = function (t, e) { + for ( + var r = this.h[0], + i = this.h[1], + n = this.h[2], + u = this.h[3], + h = this.h[4], + g = r, + v = i, + w = n, + _ = u, + M = h, + S = 0; + S < 80; + S++ + ) { + var E = a(o(f(r, c(S, i, n, u), t[p[S] + e], d(S)), y[S]), h); + (r = h), + (h = u), + (u = o(n, 10)), + (n = i), + (i = E), + (E = a( + o(f(g, c(79 - S, v, w, _), t[b[S] + e], l(S)), m[S]), + M + )), + (g = M), + (M = _), + (_ = o(w, 10)), + (w = v), + (v = E); + } + (E = s(this.h[1], n, _)), + (this.h[1] = s(this.h[2], u, M)), + (this.h[2] = s(this.h[3], h, g)), + (this.h[3] = s(this.h[4], r, v)), + (this.h[4] = s(this.h[0], i, w)), + (this.h[0] = E); + }), + (h.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h, "little") + : i.split32(this.h, "little"); + }); + var p = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, + 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, + 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, + 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, + 11, 6, 15, 13, + ], + b = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, + 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, + 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, + 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, + 14, 0, 3, 9, 11, + ], + y = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, + 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, + 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, + 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, + 13, 14, 11, 8, 5, 6, + ], + m = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, + 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, + 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, + 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, + 13, 6, 5, 15, 13, 11, 11, + ]; + }, + 9041: (t, e, r) => { + "use strict"; + (e.sha1 = r(4761)), + (e.sha224 = r(799)), + (e.sha256 = r(9344)), + (e.sha384 = r(772)), + (e.sha512 = r(5900)); + }, + 4761: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(5772), + o = r(7038), + a = i.rotl32, + s = i.sum32, + f = i.sum32_5, + u = o.ft_1, + h = n.BlockHash, + c = [1518500249, 1859775393, 2400959708, 3395469782]; + function d() { + if (!(this instanceof d)) return new d(); + h.call(this), + (this.h = [ + 1732584193, 4023233417, 2562383102, 271733878, 3285377520, + ]), + (this.W = new Array(80)); + } + i.inherits(d, h), + (t.exports = d), + (d.blockSize = 512), + (d.outSize = 160), + (d.hmacStrength = 80), + (d.padLength = 64), + (d.prototype._update = function (t, e) { + for (var r = this.W, i = 0; i < 16; i++) r[i] = t[e + i]; + for (; i < r.length; i++) + r[i] = a(r[i - 3] ^ r[i - 8] ^ r[i - 14] ^ r[i - 16], 1); + var n = this.h[0], + o = this.h[1], + h = this.h[2], + d = this.h[3], + l = this.h[4]; + for (i = 0; i < r.length; i++) { + var p = ~~(i / 20), + b = f(a(n, 5), u(p, o, h, d), l, r[i], c[p]); + (l = d), (d = h), (h = a(o, 30)), (o = n), (n = b); + } + (this.h[0] = s(this.h[0], n)), + (this.h[1] = s(this.h[1], o)), + (this.h[2] = s(this.h[2], h)), + (this.h[3] = s(this.h[3], d)), + (this.h[4] = s(this.h[4], l)); + }), + (d.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h, "big") + : i.split32(this.h, "big"); + }); + }, + 799: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(9344); + function o() { + if (!(this instanceof o)) return new o(); + n.call(this), + (this.h = [ + 3238371032, 914150663, 812702999, 4144912697, 4290775857, + 1750603025, 1694076839, 3204075428, + ]); + } + i.inherits(o, n), + (t.exports = o), + (o.blockSize = 512), + (o.outSize = 224), + (o.hmacStrength = 192), + (o.padLength = 64), + (o.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h.slice(0, 7), "big") + : i.split32(this.h.slice(0, 7), "big"); + }); + }, + 9344: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(5772), + o = r(7038), + a = r(9746), + s = i.sum32, + f = i.sum32_4, + u = i.sum32_5, + h = o.ch32, + c = o.maj32, + d = o.s0_256, + l = o.s1_256, + p = o.g0_256, + b = o.g1_256, + y = n.BlockHash, + m = [ + 1116352408, 1899447441, 3049323471, 3921009573, 961987163, + 1508970993, 2453635748, 2870763221, 3624381080, 310598401, + 607225278, 1426881987, 1925078388, 2162078206, 2614888103, + 3248222580, 3835390401, 4022224774, 264347078, 604807628, + 770255983, 1249150122, 1555081692, 1996064986, 2554220882, + 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, + 113926993, 338241895, 666307205, 773529912, 1294757372, + 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, + 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, + 3600352804, 4094571909, 275423344, 430227734, 506948616, + 659060556, 883997877, 958139571, 1322822218, 1537002063, + 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, + 2428436474, 2756734187, 3204031479, 3329325298, + ]; + function g() { + if (!(this instanceof g)) return new g(); + y.call(this), + (this.h = [ + 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, + 2600822924, 528734635, 1541459225, + ]), + (this.k = m), + (this.W = new Array(64)); + } + i.inherits(g, y), + (t.exports = g), + (g.blockSize = 512), + (g.outSize = 256), + (g.hmacStrength = 192), + (g.padLength = 64), + (g.prototype._update = function (t, e) { + for (var r = this.W, i = 0; i < 16; i++) r[i] = t[e + i]; + for (; i < r.length; i++) + r[i] = f(b(r[i - 2]), r[i - 7], p(r[i - 15]), r[i - 16]); + var n = this.h[0], + o = this.h[1], + y = this.h[2], + m = this.h[3], + g = this.h[4], + v = this.h[5], + w = this.h[6], + _ = this.h[7]; + for (a(this.k.length === r.length), i = 0; i < r.length; i++) { + var M = u(_, l(g), h(g, v, w), this.k[i], r[i]), + S = s(d(n), c(n, o, y)); + (_ = w), + (w = v), + (v = g), + (g = s(m, M)), + (m = y), + (y = o), + (o = n), + (n = s(M, S)); + } + (this.h[0] = s(this.h[0], n)), + (this.h[1] = s(this.h[1], o)), + (this.h[2] = s(this.h[2], y)), + (this.h[3] = s(this.h[3], m)), + (this.h[4] = s(this.h[4], g)), + (this.h[5] = s(this.h[5], v)), + (this.h[6] = s(this.h[6], w)), + (this.h[7] = s(this.h[7], _)); + }), + (g.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h, "big") + : i.split32(this.h, "big"); + }); + }, + 772: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(5900); + function o() { + if (!(this instanceof o)) return new o(); + n.call(this), + (this.h = [ + 3418070365, 3238371032, 1654270250, 914150663, 2438529370, + 812702999, 355462360, 4144912697, 1731405415, 4290775857, + 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, + 3204075428, + ]); + } + i.inherits(o, n), + (t.exports = o), + (o.blockSize = 1024), + (o.outSize = 384), + (o.hmacStrength = 192), + (o.padLength = 128), + (o.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h.slice(0, 12), "big") + : i.split32(this.h.slice(0, 12), "big"); + }); + }, + 5900: (t, e, r) => { + "use strict"; + var i = r(6436), + n = r(5772), + o = r(9746), + a = i.rotr64_hi, + s = i.rotr64_lo, + f = i.shr64_hi, + u = i.shr64_lo, + h = i.sum64, + c = i.sum64_hi, + d = i.sum64_lo, + l = i.sum64_4_hi, + p = i.sum64_4_lo, + b = i.sum64_5_hi, + y = i.sum64_5_lo, + m = n.BlockHash, + g = [ + 1116352408, 3609767458, 1899447441, 602891725, 3049323471, + 3964484399, 3921009573, 2173295548, 961987163, 4081628472, + 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, + 3664609560, 3624381080, 2734883394, 310598401, 1164996542, + 607225278, 1323610764, 1426881987, 3590304994, 1925078388, + 4068182383, 2162078206, 991336113, 2614888103, 633803317, + 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, + 944711139, 264347078, 2341262773, 604807628, 2007800933, + 770255983, 1495990901, 1249150122, 1856431235, 1555081692, + 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, + 2821834349, 766784016, 2952996808, 2566594879, 3210313671, + 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, + 113926993, 3758326383, 338241895, 168717936, 666307205, + 1188179964, 773529912, 1546045734, 1294757372, 1522805485, + 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, + 1014477480, 2177026350, 1206759142, 2456956037, 344077627, + 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, + 3505952657, 3345764771, 106217008, 3516065817, 3606008344, + 3600352804, 1432725776, 4094571909, 1467031594, 275423344, + 851169720, 430227734, 3100823752, 506948616, 1363258195, + 659060556, 3750685593, 883997877, 3785050280, 958139571, + 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, + 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, + 1125592928, 2227730452, 2716904306, 2361852424, 442776044, + 2428436474, 593698344, 2756734187, 3733110249, 3204031479, + 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, + 3515267271, 566280711, 3940187606, 3454069534, 4118630271, + 4000239992, 116418474, 1914138554, 174292421, 2731055270, + 289380356, 3203993006, 460393269, 320620315, 685471733, + 587496836, 852142971, 1086792851, 1017036298, 365543100, + 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, + 4234509866, 1607167915, 987167468, 1816402316, 1246189591, + ]; + function v() { + if (!(this instanceof v)) return new v(); + m.call(this), + (this.h = [ + 1779033703, 4089235720, 3144134277, 2227873595, 1013904242, + 4271175723, 2773480762, 1595750129, 1359893119, 2917565137, + 2600822924, 725511199, 528734635, 4215389547, 1541459225, + 327033209, + ]), + (this.k = g), + (this.W = new Array(160)); + } + function w(t, e, r, i, n) { + var o = (t & r) ^ (~t & n); + return o < 0 && (o += 4294967296), o; + } + function _(t, e, r, i, n, o) { + var a = (e & i) ^ (~e & o); + return a < 0 && (a += 4294967296), a; + } + function M(t, e, r, i, n) { + var o = (t & r) ^ (t & n) ^ (r & n); + return o < 0 && (o += 4294967296), o; + } + function S(t, e, r, i, n, o) { + var a = (e & i) ^ (e & o) ^ (i & o); + return a < 0 && (a += 4294967296), a; + } + function E(t, e) { + var r = a(t, e, 28) ^ a(e, t, 2) ^ a(e, t, 7); + return r < 0 && (r += 4294967296), r; + } + function A(t, e) { + var r = s(t, e, 28) ^ s(e, t, 2) ^ s(e, t, 7); + return r < 0 && (r += 4294967296), r; + } + function k(t, e) { + var r = s(t, e, 14) ^ s(t, e, 18) ^ s(e, t, 9); + return r < 0 && (r += 4294967296), r; + } + function x(t, e) { + var r = a(t, e, 1) ^ a(t, e, 8) ^ f(t, e, 7); + return r < 0 && (r += 4294967296), r; + } + function I(t, e) { + var r = s(t, e, 1) ^ s(t, e, 8) ^ u(t, e, 7); + return r < 0 && (r += 4294967296), r; + } + function B(t, e) { + var r = s(t, e, 19) ^ s(e, t, 29) ^ u(t, e, 6); + return r < 0 && (r += 4294967296), r; + } + i.inherits(v, m), + (t.exports = v), + (v.blockSize = 1024), + (v.outSize = 512), + (v.hmacStrength = 192), + (v.padLength = 128), + (v.prototype._prepareBlock = function (t, e) { + for (var r = this.W, i = 0; i < 32; i++) r[i] = t[e + i]; + for (; i < r.length; i += 2) { + var n = + ((y = r[i - 4]), + (m = r[i - 3]), + (g = void 0), + (g = a(y, m, 19) ^ a(m, y, 29) ^ f(y, m, 6)) < 0 && + (g += 4294967296), + g), + o = B(r[i - 4], r[i - 3]), + s = r[i - 14], + u = r[i - 13], + h = x(r[i - 30], r[i - 29]), + c = I(r[i - 30], r[i - 29]), + d = r[i - 32], + b = r[i - 31]; + (r[i] = l(n, o, s, u, h, c, d, b)), + (r[i + 1] = p(n, o, s, u, h, c, d, b)); + } + var y, m, g; + }), + (v.prototype._update = function (t, e) { + this._prepareBlock(t, e); + var r, + i, + n, + s = this.W, + f = this.h[0], + u = this.h[1], + l = this.h[2], + p = this.h[3], + m = this.h[4], + g = this.h[5], + v = this.h[6], + x = this.h[7], + I = this.h[8], + B = this.h[9], + R = this.h[10], + O = this.h[11], + j = this.h[12], + P = this.h[13], + T = this.h[14], + L = this.h[15]; + o(this.k.length === s.length); + for (var N = 0; N < s.length; N += 2) { + var C = T, + U = L, + D = + ((n = void 0), + (n = a((r = I), (i = B), 14) ^ a(r, i, 18) ^ a(i, r, 9)) < + 0 && (n += 4294967296), + n), + q = k(I, B), + z = w(I, 0, R, 0, j), + F = _(0, B, 0, O, 0, P), + K = this.k[N], + H = this.k[N + 1], + V = s[N], + G = s[N + 1], + W = b(C, U, D, q, z, F, K, H, V, G), + Z = y(C, U, D, q, z, F, K, H, V, G); + (C = E(f, u)), + (U = A(f, u)), + (D = M(f, 0, l, 0, m)), + (q = S(0, u, 0, p, 0, g)); + var $ = c(C, U, D, q), + X = d(C, U, D, q); + (T = j), + (L = P), + (j = R), + (P = O), + (R = I), + (O = B), + (I = c(v, x, W, Z)), + (B = d(x, x, W, Z)), + (v = m), + (x = g), + (m = l), + (g = p), + (l = f), + (p = u), + (f = c(W, Z, $, X)), + (u = d(W, Z, $, X)); + } + h(this.h, 0, f, u), + h(this.h, 2, l, p), + h(this.h, 4, m, g), + h(this.h, 6, v, x), + h(this.h, 8, I, B), + h(this.h, 10, R, O), + h(this.h, 12, j, P), + h(this.h, 14, T, L); + }), + (v.prototype._digest = function (t) { + return "hex" === t + ? i.toHex32(this.h, "big") + : i.split32(this.h, "big"); + }); + }, + 7038: (t, e, r) => { + "use strict"; + var i = r(6436).rotr32; + function n(t, e, r) { + return (t & e) ^ (~t & r); + } + function o(t, e, r) { + return (t & e) ^ (t & r) ^ (e & r); + } + function a(t, e, r) { + return t ^ e ^ r; + } + (e.ft_1 = function (t, e, r, i) { + return 0 === t + ? n(e, r, i) + : 1 === t || 3 === t + ? a(e, r, i) + : 2 === t + ? o(e, r, i) + : void 0; + }), + (e.ch32 = n), + (e.maj32 = o), + (e.p32 = a), + (e.s0_256 = function (t) { + return i(t, 2) ^ i(t, 13) ^ i(t, 22); + }), + (e.s1_256 = function (t) { + return i(t, 6) ^ i(t, 11) ^ i(t, 25); + }), + (e.g0_256 = function (t) { + return i(t, 7) ^ i(t, 18) ^ (t >>> 3); + }), + (e.g1_256 = function (t) { + return i(t, 17) ^ i(t, 19) ^ (t >>> 10); + }); + }, + 6436: (t, e, r) => { + "use strict"; + var i = r(9746), + n = r(5717); + function o(t, e) { + return ( + 55296 == (64512 & t.charCodeAt(e)) && + !(e < 0 || e + 1 >= t.length) && + 56320 == (64512 & t.charCodeAt(e + 1)) + ); + } + function a(t) { + return ( + ((t >>> 24) | + ((t >>> 8) & 65280) | + ((t << 8) & 16711680) | + ((255 & t) << 24)) >>> + 0 + ); + } + function s(t) { + return 1 === t.length ? "0" + t : t; + } + function f(t) { + return 7 === t.length + ? "0" + t + : 6 === t.length + ? "00" + t + : 5 === t.length + ? "000" + t + : 4 === t.length + ? "0000" + t + : 3 === t.length + ? "00000" + t + : 2 === t.length + ? "000000" + t + : 1 === t.length + ? "0000000" + t + : t; + } + (e.inherits = n), + (e.toArray = function (t, e) { + if (Array.isArray(t)) return t.slice(); + if (!t) return []; + var r = []; + if ("string" == typeof t) + if (e) { + if ("hex" === e) + for ( + (t = t.replace(/[^a-z0-9]+/gi, "")).length % 2 != 0 && + (t = "0" + t), + n = 0; + n < t.length; + n += 2 + ) + r.push(parseInt(t[n] + t[n + 1], 16)); + } else + for (var i = 0, n = 0; n < t.length; n++) { + var a = t.charCodeAt(n); + a < 128 + ? (r[i++] = a) + : a < 2048 + ? ((r[i++] = (a >> 6) | 192), (r[i++] = (63 & a) | 128)) + : o(t, n) + ? ((a = + 65536 + + ((1023 & a) << 10) + + (1023 & t.charCodeAt(++n))), + (r[i++] = (a >> 18) | 240), + (r[i++] = ((a >> 12) & 63) | 128), + (r[i++] = ((a >> 6) & 63) | 128), + (r[i++] = (63 & a) | 128)) + : ((r[i++] = (a >> 12) | 224), + (r[i++] = ((a >> 6) & 63) | 128), + (r[i++] = (63 & a) | 128)); + } + else for (n = 0; n < t.length; n++) r[n] = 0 | t[n]; + return r; + }), + (e.toHex = function (t) { + for (var e = "", r = 0; r < t.length; r++) + e += s(t[r].toString(16)); + return e; + }), + (e.htonl = a), + (e.toHex32 = function (t, e) { + for (var r = "", i = 0; i < t.length; i++) { + var n = t[i]; + "little" === e && (n = a(n)), (r += f(n.toString(16))); + } + return r; + }), + (e.zero2 = s), + (e.zero8 = f), + (e.join32 = function (t, e, r, n) { + var o = r - e; + i(o % 4 == 0); + for ( + var a = new Array(o / 4), s = 0, f = e; + s < a.length; + s++, f += 4 + ) { + var u; + (u = + "big" === n + ? (t[f] << 24) | + (t[f + 1] << 16) | + (t[f + 2] << 8) | + t[f + 3] + : (t[f + 3] << 24) | + (t[f + 2] << 16) | + (t[f + 1] << 8) | + t[f]), + (a[s] = u >>> 0); + } + return a; + }), + (e.split32 = function (t, e) { + for ( + var r = new Array(4 * t.length), i = 0, n = 0; + i < t.length; + i++, n += 4 + ) { + var o = t[i]; + "big" === e + ? ((r[n] = o >>> 24), + (r[n + 1] = (o >>> 16) & 255), + (r[n + 2] = (o >>> 8) & 255), + (r[n + 3] = 255 & o)) + : ((r[n + 3] = o >>> 24), + (r[n + 2] = (o >>> 16) & 255), + (r[n + 1] = (o >>> 8) & 255), + (r[n] = 255 & o)); + } + return r; + }), + (e.rotr32 = function (t, e) { + return (t >>> e) | (t << (32 - e)); + }), + (e.rotl32 = function (t, e) { + return (t << e) | (t >>> (32 - e)); + }), + (e.sum32 = function (t, e) { + return (t + e) >>> 0; + }), + (e.sum32_3 = function (t, e, r) { + return (t + e + r) >>> 0; + }), + (e.sum32_4 = function (t, e, r, i) { + return (t + e + r + i) >>> 0; + }), + (e.sum32_5 = function (t, e, r, i, n) { + return (t + e + r + i + n) >>> 0; + }), + (e.sum64 = function (t, e, r, i) { + var n = t[e], + o = (i + t[e + 1]) >>> 0, + a = (o < i ? 1 : 0) + r + n; + (t[e] = a >>> 0), (t[e + 1] = o); + }), + (e.sum64_hi = function (t, e, r, i) { + return (((e + i) >>> 0 < e ? 1 : 0) + t + r) >>> 0; + }), + (e.sum64_lo = function (t, e, r, i) { + return (e + i) >>> 0; + }), + (e.sum64_4_hi = function (t, e, r, i, n, o, a, s) { + var f = 0, + u = e; + return ( + (f += (u = (u + i) >>> 0) < e ? 1 : 0), + (f += (u = (u + o) >>> 0) < o ? 1 : 0), + (t + r + n + a + (f += (u = (u + s) >>> 0) < s ? 1 : 0)) >>> 0 + ); + }), + (e.sum64_4_lo = function (t, e, r, i, n, o, a, s) { + return (e + i + o + s) >>> 0; + }), + (e.sum64_5_hi = function (t, e, r, i, n, o, a, s, f, u) { + var h = 0, + c = e; + return ( + (h += (c = (c + i) >>> 0) < e ? 1 : 0), + (h += (c = (c + o) >>> 0) < o ? 1 : 0), + (h += (c = (c + s) >>> 0) < s ? 1 : 0), + (t + + r + + n + + a + + f + + (h += (c = (c + u) >>> 0) < u ? 1 : 0)) >>> + 0 + ); + }), + (e.sum64_5_lo = function (t, e, r, i, n, o, a, s, f, u) { + return (e + i + o + s + u) >>> 0; + }), + (e.rotr64_hi = function (t, e, r) { + return ((e << (32 - r)) | (t >>> r)) >>> 0; + }), + (e.rotr64_lo = function (t, e, r) { + return ((t << (32 - r)) | (e >>> r)) >>> 0; + }), + (e.shr64_hi = function (t, e, r) { + return t >>> r; + }), + (e.shr64_lo = function (t, e, r) { + return ((t << (32 - r)) | (e >>> r)) >>> 0; + }); + }, + 2156: (t, e, r) => { + "use strict"; + var i = r(3715), + n = r(4504), + o = r(9746); + function a(t) { + if (!(this instanceof a)) return new a(t); + (this.hash = t.hash), + (this.predResist = !!t.predResist), + (this.outLen = this.hash.outSize), + (this.minEntropy = t.minEntropy || this.hash.hmacStrength), + (this._reseed = null), + (this.reseedInterval = null), + (this.K = null), + (this.V = null); + var e = n.toArray(t.entropy, t.entropyEnc || "hex"), + r = n.toArray(t.nonce, t.nonceEnc || "hex"), + i = n.toArray(t.pers, t.persEnc || "hex"); + o( + e.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + this.minEntropy + " bits" + ), + this._init(e, r, i); + } + (t.exports = a), + (a.prototype._init = function (t, e, r) { + var i = t.concat(e).concat(r); + (this.K = new Array(this.outLen / 8)), + (this.V = new Array(this.outLen / 8)); + for (var n = 0; n < this.V.length; n++) + (this.K[n] = 0), (this.V[n] = 1); + this._update(i), + (this._reseed = 1), + (this.reseedInterval = 281474976710656); + }), + (a.prototype._hmac = function () { + return new i.hmac(this.hash, this.K); + }), + (a.prototype._update = function (t) { + var e = this._hmac().update(this.V).update([0]); + t && (e = e.update(t)), + (this.K = e.digest()), + (this.V = this._hmac().update(this.V).digest()), + t && + ((this.K = this._hmac() + .update(this.V) + .update([1]) + .update(t) + .digest()), + (this.V = this._hmac().update(this.V).digest())); + }), + (a.prototype.reseed = function (t, e, r, i) { + "string" != typeof e && ((i = r), (r = e), (e = null)), + (t = n.toArray(t, e)), + (r = n.toArray(r, i)), + o( + t.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + + this.minEntropy + + " bits" + ), + this._update(t.concat(r || [])), + (this._reseed = 1); + }), + (a.prototype.generate = function (t, e, r, i) { + if (this._reseed > this.reseedInterval) + throw new Error("Reseed is required"); + "string" != typeof e && ((i = r), (r = e), (e = null)), + r && ((r = n.toArray(r, i || "hex")), this._update(r)); + for (var o = []; o.length < t; ) + (this.V = this._hmac().update(this.V).digest()), + (o = o.concat(this.V)); + var a = o.slice(0, t); + return this._update(r), this._reseed++, n.encode(a, e); + }); + }, + 645: (t, e) => { + (e.read = function (t, e, r, i, n) { + var o, + a, + s = 8 * n - i - 1, + f = (1 << s) - 1, + u = f >> 1, + h = -7, + c = r ? n - 1 : 0, + d = r ? -1 : 1, + l = t[e + c]; + for ( + c += d, o = l & ((1 << -h) - 1), l >>= -h, h += s; + h > 0; + o = 256 * o + t[e + c], c += d, h -= 8 + ); + for ( + a = o & ((1 << -h) - 1), o >>= -h, h += i; + h > 0; + a = 256 * a + t[e + c], c += d, h -= 8 + ); + if (0 === o) o = 1 - u; + else { + if (o === f) return a ? NaN : (1 / 0) * (l ? -1 : 1); + (a += Math.pow(2, i)), (o -= u); + } + return (l ? -1 : 1) * a * Math.pow(2, o - i); + }), + (e.write = function (t, e, r, i, n, o) { + var a, + s, + f, + u = 8 * o - n - 1, + h = (1 << u) - 1, + c = h >> 1, + d = 23 === n ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + l = i ? 0 : o - 1, + p = i ? 1 : -1, + b = e < 0 || (0 === e && 1 / e < 0) ? 1 : 0; + for ( + e = Math.abs(e), + isNaN(e) || e === 1 / 0 + ? ((s = isNaN(e) ? 1 : 0), (a = h)) + : ((a = Math.floor(Math.log(e) / Math.LN2)), + e * (f = Math.pow(2, -a)) < 1 && (a--, (f *= 2)), + (e += a + c >= 1 ? d / f : d * Math.pow(2, 1 - c)) * + f >= + 2 && (a++, (f /= 2)), + a + c >= h + ? ((s = 0), (a = h)) + : a + c >= 1 + ? ((s = (e * f - 1) * Math.pow(2, n)), (a += c)) + : ((s = e * Math.pow(2, c - 1) * Math.pow(2, n)), + (a = 0))); + n >= 8; + t[r + l] = 255 & s, l += p, s /= 256, n -= 8 + ); + for ( + a = (a << n) | s, u += n; + u > 0; + t[r + l] = 255 & a, l += p, a /= 256, u -= 8 + ); + t[r + l - p] |= 128 * b; + }); + }, + 5717: (t) => { + "function" == typeof Object.create + ? (t.exports = function (t, e) { + e && + ((t.super_ = e), + (t.prototype = Object.create(e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0, + }, + }))); + }) + : (t.exports = function (t, e) { + if (e) { + t.super_ = e; + var r = function () {}; + (r.prototype = e.prototype), + (t.prototype = new r()), + (t.prototype.constructor = t); + } + }); + }, + 2584: (t, e, r) => { + "use strict"; + var i = r(6410)(), + n = r(1924)("Object.prototype.toString"), + o = function (t) { + return ( + !( + i && + t && + "object" == typeof t && + Symbol.toStringTag in t + ) && "[object Arguments]" === n(t) + ); + }, + a = function (t) { + return ( + !!o(t) || + (null !== t && + "object" == typeof t && + "number" == typeof t.length && + t.length >= 0 && + "[object Array]" !== n(t) && + "[object Function]" === n(t.callee)) + ); + }, + s = (function () { + return o(arguments); + })(); + (o.isLegacyArguments = a), (t.exports = s ? o : a); + }, + 5320: (t) => { + "use strict"; + var e, + r, + i = Function.prototype.toString, + n = + "object" == typeof Reflect && null !== Reflect && Reflect.apply; + if ( + "function" == typeof n && + "function" == typeof Object.defineProperty + ) + try { + (e = Object.defineProperty({}, "length", { + get: function () { + throw r; + }, + })), + (r = {}), + n( + function () { + throw 42; + }, + null, + e + ); + } catch (t) { + t !== r && (n = null); + } + else n = null; + var o = /^\s*class\b/, + a = function (t) { + try { + var e = i.call(t); + return o.test(e); + } catch (t) { + return !1; + } + }, + s = function (t) { + try { + return !a(t) && (i.call(t), !0); + } catch (t) { + return !1; + } + }, + f = Object.prototype.toString, + u = "function" == typeof Symbol && !!Symbol.toStringTag, + h = !(0 in [,]), + c = function () { + return !1; + }; + if ("object" == typeof document) { + var d = document.all; + f.call(d) === f.call(document.all) && + (c = function (t) { + if ((h || !t) && (void 0 === t || "object" == typeof t)) + try { + var e = f.call(t); + return ( + ("[object HTMLAllCollection]" === e || + "[object HTML document.all class]" === e || + "[object HTMLCollection]" === e || + "[object Object]" === e) && + null == t("") + ); + } catch (t) {} + return !1; + }); + } + t.exports = n + ? function (t) { + if (c(t)) return !0; + if (!t) return !1; + if ("function" != typeof t && "object" != typeof t) return !1; + try { + n(t, null, e); + } catch (t) { + if (t !== r) return !1; + } + return !a(t) && s(t); + } + : function (t) { + if (c(t)) return !0; + if (!t) return !1; + if ("function" != typeof t && "object" != typeof t) return !1; + if (u) return s(t); + if (a(t)) return !1; + var e = f.call(t); + return ( + !( + "[object Function]" !== e && + "[object GeneratorFunction]" !== e && + !/^\[object HTML/.test(e) + ) && s(t) + ); + }; + }, + 8662: (t, e, r) => { + "use strict"; + var i, + n = Object.prototype.toString, + o = Function.prototype.toString, + a = /^\s*(?:function)?\*/, + s = r(6410)(), + f = Object.getPrototypeOf; + t.exports = function (t) { + if ("function" != typeof t) return !1; + if (a.test(o.call(t))) return !0; + if (!s) return "[object GeneratorFunction]" === n.call(t); + if (!f) return !1; + if (void 0 === i) { + var e = (function () { + if (!s) return !1; + try { + return Function("return function*() {}")(); + } catch (t) {} + })(); + i = !!e && f(e); + } + return f(t) === i; + }; + }, + 8611: (t) => { + "use strict"; + t.exports = function (t) { + return t != t; + }; + }, + 360: (t, e, r) => { + "use strict"; + var i = r(5559), + n = r(4289), + o = r(8611), + a = r(9415), + s = r(3194), + f = i(a(), Number); + n(f, { getPolyfill: a, implementation: o, shim: s }), + (t.exports = f); + }, + 9415: (t, e, r) => { + "use strict"; + var i = r(8611); + t.exports = function () { + return Number.isNaN && Number.isNaN(NaN) && !Number.isNaN("a") + ? Number.isNaN + : i; + }; + }, + 3194: (t, e, r) => { + "use strict"; + var i = r(4289), + n = r(9415); + t.exports = function () { + var t = n(); + return ( + i( + Number, + { isNaN: t }, + { + isNaN: function () { + return Number.isNaN !== t; + }, + } + ), + t + ); + }; + }, + 5692: (t, e, r) => { + "use strict"; + var i = r(4029), + n = r(3083), + o = r(1924), + a = o("Object.prototype.toString"), + s = r(6410)(), + f = r(7296), + u = "undefined" == typeof globalThis ? r.g : globalThis, + h = n(), + c = + o("Array.prototype.indexOf", !0) || + function (t, e) { + for (var r = 0; r < t.length; r += 1) + if (t[r] === e) return r; + return -1; + }, + d = o("String.prototype.slice"), + l = {}, + p = Object.getPrototypeOf; + s && + f && + p && + i(h, function (t) { + var e = new u[t](); + if (Symbol.toStringTag in e) { + var r = p(e), + i = f(r, Symbol.toStringTag); + if (!i) { + var n = p(r); + i = f(n, Symbol.toStringTag); + } + l[t] = i.get; + } + }), + (t.exports = function (t) { + if (!t || "object" != typeof t) return !1; + if (!s || !(Symbol.toStringTag in t)) { + var e = d(a(t), 8, -1); + return c(h, e) > -1; + } + return ( + !!f && + (function (t) { + var e = !1; + return ( + i(l, function (r, i) { + if (!e) + try { + e = r.call(t) === i; + } catch (t) {} + }), + e + ); + })(t) + ); + }); + }, + 2318: (t, e, r) => { + "use strict"; + var i = r(5717), + n = r(3349), + o = r(9509).Buffer, + a = new Array(16); + function s() { + n.call(this, 64), + (this._a = 1732584193), + (this._b = 4023233417), + (this._c = 2562383102), + (this._d = 271733878); + } + function f(t, e) { + return (t << e) | (t >>> (32 - e)); + } + function u(t, e, r, i, n, o, a) { + return (f((t + ((e & r) | (~e & i)) + n + o) | 0, a) + e) | 0; + } + function h(t, e, r, i, n, o, a) { + return (f((t + ((e & i) | (r & ~i)) + n + o) | 0, a) + e) | 0; + } + function c(t, e, r, i, n, o, a) { + return (f((t + (e ^ r ^ i) + n + o) | 0, a) + e) | 0; + } + function d(t, e, r, i, n, o, a) { + return (f((t + (r ^ (e | ~i)) + n + o) | 0, a) + e) | 0; + } + i(s, n), + (s.prototype._update = function () { + for (var t = a, e = 0; e < 16; ++e) + t[e] = this._block.readInt32LE(4 * e); + var r = this._a, + i = this._b, + n = this._c, + o = this._d; + (r = u(r, i, n, o, t[0], 3614090360, 7)), + (o = u(o, r, i, n, t[1], 3905402710, 12)), + (n = u(n, o, r, i, t[2], 606105819, 17)), + (i = u(i, n, o, r, t[3], 3250441966, 22)), + (r = u(r, i, n, o, t[4], 4118548399, 7)), + (o = u(o, r, i, n, t[5], 1200080426, 12)), + (n = u(n, o, r, i, t[6], 2821735955, 17)), + (i = u(i, n, o, r, t[7], 4249261313, 22)), + (r = u(r, i, n, o, t[8], 1770035416, 7)), + (o = u(o, r, i, n, t[9], 2336552879, 12)), + (n = u(n, o, r, i, t[10], 4294925233, 17)), + (i = u(i, n, o, r, t[11], 2304563134, 22)), + (r = u(r, i, n, o, t[12], 1804603682, 7)), + (o = u(o, r, i, n, t[13], 4254626195, 12)), + (n = u(n, o, r, i, t[14], 2792965006, 17)), + (r = h( + r, + (i = u(i, n, o, r, t[15], 1236535329, 22)), + n, + o, + t[1], + 4129170786, + 5 + )), + (o = h(o, r, i, n, t[6], 3225465664, 9)), + (n = h(n, o, r, i, t[11], 643717713, 14)), + (i = h(i, n, o, r, t[0], 3921069994, 20)), + (r = h(r, i, n, o, t[5], 3593408605, 5)), + (o = h(o, r, i, n, t[10], 38016083, 9)), + (n = h(n, o, r, i, t[15], 3634488961, 14)), + (i = h(i, n, o, r, t[4], 3889429448, 20)), + (r = h(r, i, n, o, t[9], 568446438, 5)), + (o = h(o, r, i, n, t[14], 3275163606, 9)), + (n = h(n, o, r, i, t[3], 4107603335, 14)), + (i = h(i, n, o, r, t[8], 1163531501, 20)), + (r = h(r, i, n, o, t[13], 2850285829, 5)), + (o = h(o, r, i, n, t[2], 4243563512, 9)), + (n = h(n, o, r, i, t[7], 1735328473, 14)), + (r = c( + r, + (i = h(i, n, o, r, t[12], 2368359562, 20)), + n, + o, + t[5], + 4294588738, + 4 + )), + (o = c(o, r, i, n, t[8], 2272392833, 11)), + (n = c(n, o, r, i, t[11], 1839030562, 16)), + (i = c(i, n, o, r, t[14], 4259657740, 23)), + (r = c(r, i, n, o, t[1], 2763975236, 4)), + (o = c(o, r, i, n, t[4], 1272893353, 11)), + (n = c(n, o, r, i, t[7], 4139469664, 16)), + (i = c(i, n, o, r, t[10], 3200236656, 23)), + (r = c(r, i, n, o, t[13], 681279174, 4)), + (o = c(o, r, i, n, t[0], 3936430074, 11)), + (n = c(n, o, r, i, t[3], 3572445317, 16)), + (i = c(i, n, o, r, t[6], 76029189, 23)), + (r = c(r, i, n, o, t[9], 3654602809, 4)), + (o = c(o, r, i, n, t[12], 3873151461, 11)), + (n = c(n, o, r, i, t[15], 530742520, 16)), + (r = d( + r, + (i = c(i, n, o, r, t[2], 3299628645, 23)), + n, + o, + t[0], + 4096336452, + 6 + )), + (o = d(o, r, i, n, t[7], 1126891415, 10)), + (n = d(n, o, r, i, t[14], 2878612391, 15)), + (i = d(i, n, o, r, t[5], 4237533241, 21)), + (r = d(r, i, n, o, t[12], 1700485571, 6)), + (o = d(o, r, i, n, t[3], 2399980690, 10)), + (n = d(n, o, r, i, t[10], 4293915773, 15)), + (i = d(i, n, o, r, t[1], 2240044497, 21)), + (r = d(r, i, n, o, t[8], 1873313359, 6)), + (o = d(o, r, i, n, t[15], 4264355552, 10)), + (n = d(n, o, r, i, t[6], 2734768916, 15)), + (i = d(i, n, o, r, t[13], 1309151649, 21)), + (r = d(r, i, n, o, t[4], 4149444226, 6)), + (o = d(o, r, i, n, t[11], 3174756917, 10)), + (n = d(n, o, r, i, t[2], 718787259, 15)), + (i = d(i, n, o, r, t[9], 3951481745, 21)), + (this._a = (this._a + r) | 0), + (this._b = (this._b + i) | 0), + (this._c = (this._c + n) | 0), + (this._d = (this._d + o) | 0); + }), + (s.prototype._digest = function () { + (this._block[this._blockOffset++] = 128), + this._blockOffset > 56 && + (this._block.fill(0, this._blockOffset, 64), + this._update(), + (this._blockOffset = 0)), + this._block.fill(0, this._blockOffset, 56), + this._block.writeUInt32LE(this._length[0], 56), + this._block.writeUInt32LE(this._length[1], 60), + this._update(); + var t = o.allocUnsafe(16); + return ( + t.writeInt32LE(this._a, 0), + t.writeInt32LE(this._b, 4), + t.writeInt32LE(this._c, 8), + t.writeInt32LE(this._d, 12), + t + ); + }), + (t.exports = s); + }, + 3047: (t, e, r) => { + var i = r(3550), + n = r(9931); + function o(t) { + this.rand = t || new n.Rand(); + } + (t.exports = o), + (o.create = function (t) { + return new o(t); + }), + (o.prototype._randbelow = function (t) { + var e = t.bitLength(), + r = Math.ceil(e / 8); + do { + var n = new i(this.rand.generate(r)); + } while (n.cmp(t) >= 0); + return n; + }), + (o.prototype._randrange = function (t, e) { + var r = e.sub(t); + return t.add(this._randbelow(r)); + }), + (o.prototype.test = function (t, e, r) { + var n = t.bitLength(), + o = i.mont(t), + a = new i(1).toRed(o); + e || (e = Math.max(1, (n / 48) | 0)); + for (var s = t.subn(1), f = 0; !s.testn(f); f++); + for (var u = t.shrn(f), h = s.toRed(o); e > 0; e--) { + var c = this._randrange(new i(2), s); + r && r(c); + var d = c.toRed(o).redPow(u); + if (0 !== d.cmp(a) && 0 !== d.cmp(h)) { + for (var l = 1; l < f; l++) { + if (0 === (d = d.redSqr()).cmp(a)) return !1; + if (0 === d.cmp(h)) break; + } + if (l === f) return !1; + } + } + return !0; + }), + (o.prototype.getDivisor = function (t, e) { + var r = t.bitLength(), + n = i.mont(t), + o = new i(1).toRed(n); + e || (e = Math.max(1, (r / 48) | 0)); + for (var a = t.subn(1), s = 0; !a.testn(s); s++); + for (var f = t.shrn(s), u = a.toRed(n); e > 0; e--) { + var h = this._randrange(new i(2), a), + c = t.gcd(h); + if (0 !== c.cmpn(1)) return c; + var d = h.toRed(n).redPow(f); + if (0 !== d.cmp(o) && 0 !== d.cmp(u)) { + for (var l = 1; l < s; l++) { + if (0 === (d = d.redSqr()).cmp(o)) + return d.fromRed().subn(1).gcd(t); + if (0 === d.cmp(u)) break; + } + if (l === s) + return (d = d.redSqr()).fromRed().subn(1).gcd(t); + } + } + return !1; + }); + }, + 9746: (t) => { + function e(t, e) { + if (!t) throw new Error(e || "Assertion failed"); + } + (t.exports = e), + (e.equal = function (t, e, r) { + if (t != e) + throw new Error(r || "Assertion failed: " + t + " != " + e); + }); + }, + 4504: (t, e) => { + "use strict"; + var r = e; + function i(t) { + return 1 === t.length ? "0" + t : t; + } + function n(t) { + for (var e = "", r = 0; r < t.length; r++) + e += i(t[r].toString(16)); + return e; + } + (r.toArray = function (t, e) { + if (Array.isArray(t)) return t.slice(); + if (!t) return []; + var r = []; + if ("string" != typeof t) { + for (var i = 0; i < t.length; i++) r[i] = 0 | t[i]; + return r; + } + if ("hex" === e) + for ( + (t = t.replace(/[^a-z0-9]+/gi, "")).length % 2 != 0 && + (t = "0" + t), + i = 0; + i < t.length; + i += 2 + ) + r.push(parseInt(t[i] + t[i + 1], 16)); + else + for (i = 0; i < t.length; i++) { + var n = t.charCodeAt(i), + o = n >> 8, + a = 255 & n; + o ? r.push(o, a) : r.push(a); + } + return r; + }), + (r.zero2 = i), + (r.toHex = n), + (r.encode = function (t, e) { + return "hex" === e ? n(t) : t; + }); + }, + 4244: (t) => { + "use strict"; + var e = function (t) { + return t != t; + }; + t.exports = function (t, r) { + return 0 === t && 0 === r + ? 1 / t == 1 / r + : t === r || !(!e(t) || !e(r)); + }; + }, + 609: (t, e, r) => { + "use strict"; + var i = r(4289), + n = r(5559), + o = r(4244), + a = r(5624), + s = r(2281), + f = n(a(), Object); + i(f, { getPolyfill: a, implementation: o, shim: s }), + (t.exports = f); + }, + 5624: (t, e, r) => { + "use strict"; + var i = r(4244); + t.exports = function () { + return "function" == typeof Object.is ? Object.is : i; + }; + }, + 2281: (t, e, r) => { + "use strict"; + var i = r(5624), + n = r(4289); + t.exports = function () { + var t = i(); + return ( + n( + Object, + { is: t }, + { + is: function () { + return Object.is !== t; + }, + } + ), + t + ); + }; + }, + 8987: (t, e, r) => { + "use strict"; + var i; + if (!Object.keys) { + var n = Object.prototype.hasOwnProperty, + o = Object.prototype.toString, + a = r(1414), + s = Object.prototype.propertyIsEnumerable, + f = !s.call({ toString: null }, "toString"), + u = s.call(function () {}, "prototype"), + h = [ + "toString", + "toLocaleString", + "valueOf", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "constructor", + ], + c = function (t) { + var e = t.constructor; + return e && e.prototype === t; + }, + d = { + $applicationCache: !0, + $console: !0, + $external: !0, + $frame: !0, + $frameElement: !0, + $frames: !0, + $innerHeight: !0, + $innerWidth: !0, + $onmozfullscreenchange: !0, + $onmozfullscreenerror: !0, + $outerHeight: !0, + $outerWidth: !0, + $pageXOffset: !0, + $pageYOffset: !0, + $parent: !0, + $scrollLeft: !0, + $scrollTop: !0, + $scrollX: !0, + $scrollY: !0, + $self: !0, + $webkitIndexedDB: !0, + $webkitStorageInfo: !0, + $window: !0, + }, + l = (function () { + if ("undefined" == typeof window) return !1; + for (var t in window) + try { + if ( + !d["$" + t] && + n.call(window, t) && + null !== window[t] && + "object" == typeof window[t] + ) + try { + c(window[t]); + } catch (t) { + return !0; + } + } catch (t) { + return !0; + } + return !1; + })(); + i = function (t) { + var e = null !== t && "object" == typeof t, + r = "[object Function]" === o.call(t), + i = a(t), + s = e && "[object String]" === o.call(t), + d = []; + if (!e && !r && !i) + throw new TypeError("Object.keys called on a non-object"); + var p = u && r; + if (s && t.length > 0 && !n.call(t, 0)) + for (var b = 0; b < t.length; ++b) d.push(String(b)); + if (i && t.length > 0) + for (var y = 0; y < t.length; ++y) d.push(String(y)); + else + for (var m in t) + (p && "prototype" === m) || + !n.call(t, m) || + d.push(String(m)); + if (f) + for ( + var g = (function (t) { + if ("undefined" == typeof window || !l) return c(t); + try { + return c(t); + } catch (t) { + return !1; + } + })(t), + v = 0; + v < h.length; + ++v + ) + (g && "constructor" === h[v]) || + !n.call(t, h[v]) || + d.push(h[v]); + return d; + }; + } + t.exports = i; + }, + 2215: (t, e, r) => { + "use strict"; + var i = Array.prototype.slice, + n = r(1414), + o = Object.keys, + a = o + ? function (t) { + return o(t); + } + : r(8987), + s = Object.keys; + (a.shim = function () { + if (Object.keys) { + var t = (function () { + var t = Object.keys(arguments); + return t && t.length === arguments.length; + })(1, 2); + t || + (Object.keys = function (t) { + return n(t) ? s(i.call(t)) : s(t); + }); + } else Object.keys = a; + return Object.keys || a; + }), + (t.exports = a); + }, + 1414: (t) => { + "use strict"; + var e = Object.prototype.toString; + t.exports = function (t) { + var r = e.call(t), + i = "[object Arguments]" === r; + return ( + i || + (i = + "[object Array]" !== r && + null !== t && + "object" == typeof t && + "number" == typeof t.length && + t.length >= 0 && + "[object Function]" === e.call(t.callee)), + i + ); + }; + }, + 2818: (t, e, r) => { + "use strict"; + var i = r(9809); + e.certificate = r(1934); + var n = i.define("RSAPrivateKey", function () { + this.seq().obj( + this.key("version").int(), + this.key("modulus").int(), + this.key("publicExponent").int(), + this.key("privateExponent").int(), + this.key("prime1").int(), + this.key("prime2").int(), + this.key("exponent1").int(), + this.key("exponent2").int(), + this.key("coefficient").int() + ); + }); + e.RSAPrivateKey = n; + var o = i.define("RSAPublicKey", function () { + this.seq().obj( + this.key("modulus").int(), + this.key("publicExponent").int() + ); + }); + e.RSAPublicKey = o; + var a = i.define("SubjectPublicKeyInfo", function () { + this.seq().obj( + this.key("algorithm").use(s), + this.key("subjectPublicKey").bitstr() + ); + }); + e.PublicKey = a; + var s = i.define("AlgorithmIdentifier", function () { + this.seq().obj( + this.key("algorithm").objid(), + this.key("none").null_().optional(), + this.key("curve").objid().optional(), + this.key("params") + .seq() + .obj( + this.key("p").int(), + this.key("q").int(), + this.key("g").int() + ) + .optional() + ); + }), + f = i.define("PrivateKeyInfo", function () { + this.seq().obj( + this.key("version").int(), + this.key("algorithm").use(s), + this.key("subjectPrivateKey").octstr() + ); + }); + e.PrivateKey = f; + var u = i.define("EncryptedPrivateKeyInfo", function () { + this.seq().obj( + this.key("algorithm") + .seq() + .obj( + this.key("id").objid(), + this.key("decrypt") + .seq() + .obj( + this.key("kde") + .seq() + .obj( + this.key("id").objid(), + this.key("kdeparams") + .seq() + .obj( + this.key("salt").octstr(), + this.key("iters").int() + ) + ), + this.key("cipher") + .seq() + .obj( + this.key("algo").objid(), + this.key("iv").octstr() + ) + ) + ), + this.key("subjectPrivateKey").octstr() + ); + }); + e.EncryptedPrivateKey = u; + var h = i.define("DSAPrivateKey", function () { + this.seq().obj( + this.key("version").int(), + this.key("p").int(), + this.key("q").int(), + this.key("g").int(), + this.key("pub_key").int(), + this.key("priv_key").int() + ); + }); + (e.DSAPrivateKey = h), + (e.DSAparam = i.define("DSAparam", function () { + this.int(); + })); + var c = i.define("ECPrivateKey", function () { + this.seq().obj( + this.key("version").int(), + this.key("privateKey").octstr(), + this.key("parameters").optional().explicit(0).use(d), + this.key("publicKey").optional().explicit(1).bitstr() + ); + }); + e.ECPrivateKey = c; + var d = i.define("ECParameters", function () { + this.choice({ namedCurve: this.objid() }); + }); + e.signature = i.define("signature", function () { + this.seq().obj(this.key("r").int(), this.key("s").int()); + }); + }, + 1934: (t, e, r) => { + "use strict"; + var i = r(9809), + n = i.define("Time", function () { + this.choice({ + utcTime: this.utctime(), + generalTime: this.gentime(), + }); + }), + o = i.define("AttributeTypeValue", function () { + this.seq().obj( + this.key("type").objid(), + this.key("value").any() + ); + }), + a = i.define("AlgorithmIdentifier", function () { + this.seq().obj( + this.key("algorithm").objid(), + this.key("parameters").optional(), + this.key("curve").objid().optional() + ); + }), + s = i.define("SubjectPublicKeyInfo", function () { + this.seq().obj( + this.key("algorithm").use(a), + this.key("subjectPublicKey").bitstr() + ); + }), + f = i.define("RelativeDistinguishedName", function () { + this.setof(o); + }), + u = i.define("RDNSequence", function () { + this.seqof(f); + }), + h = i.define("Name", function () { + this.choice({ rdnSequence: this.use(u) }); + }), + c = i.define("Validity", function () { + this.seq().obj( + this.key("notBefore").use(n), + this.key("notAfter").use(n) + ); + }), + d = i.define("Extension", function () { + this.seq().obj( + this.key("extnID").objid(), + this.key("critical").bool().def(!1), + this.key("extnValue").octstr() + ); + }), + l = i.define("TBSCertificate", function () { + this.seq().obj( + this.key("version").explicit(0).int().optional(), + this.key("serialNumber").int(), + this.key("signature").use(a), + this.key("issuer").use(h), + this.key("validity").use(c), + this.key("subject").use(h), + this.key("subjectPublicKeyInfo").use(s), + this.key("issuerUniqueID").implicit(1).bitstr().optional(), + this.key("subjectUniqueID").implicit(2).bitstr().optional(), + this.key("extensions").explicit(3).seqof(d).optional() + ); + }), + p = i.define("X509Certificate", function () { + this.seq().obj( + this.key("tbsCertificate").use(l), + this.key("signatureAlgorithm").use(a), + this.key("signatureValue").bitstr() + ); + }); + t.exports = p; + }, + 7631: (t, e, r) => { + var i = + /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m, + n = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m, + o = + /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m, + a = r(3048), + s = r(4696), + f = r(9509).Buffer; + t.exports = function (t, e) { + var r, + u = t.toString(), + h = u.match(i); + if (h) { + var c = "aes" + h[1], + d = f.from(h[2], "hex"), + l = f.from(h[3].replace(/[\r\n]/g, ""), "base64"), + p = a(e, d.slice(0, 8), parseInt(h[1], 10)).key, + b = [], + y = s.createDecipheriv(c, p, d); + b.push(y.update(l)), b.push(y.final()), (r = f.concat(b)); + } else { + var m = u.match(o); + r = f.from(m[2].replace(/[\r\n]/g, ""), "base64"); + } + return { tag: u.match(n)[1], data: r }; + }; + }, + 980: (t, e, r) => { + var i = r(2818), + n = r(2562), + o = r(7631), + a = r(4696), + s = r(5632), + f = r(9509).Buffer; + function u(t) { + var e; + "object" != typeof t || + f.isBuffer(t) || + ((e = t.passphrase), (t = t.key)), + "string" == typeof t && (t = f.from(t)); + var r, + u, + h = o(t, e), + c = h.tag, + d = h.data; + switch (c) { + case "CERTIFICATE": + u = i.certificate.decode(d, "der").tbsCertificate + .subjectPublicKeyInfo; + case "PUBLIC KEY": + switch ( + (u || (u = i.PublicKey.decode(d, "der")), + (r = u.algorithm.algorithm.join("."))) + ) { + case "1.2.840.113549.1.1.1": + return i.RSAPublicKey.decode( + u.subjectPublicKey.data, + "der" + ); + case "1.2.840.10045.2.1": + return ( + (u.subjectPrivateKey = u.subjectPublicKey), + { type: "ec", data: u } + ); + case "1.2.840.10040.4.1": + return ( + (u.algorithm.params.pub_key = i.DSAparam.decode( + u.subjectPublicKey.data, + "der" + )), + { type: "dsa", data: u.algorithm.params } + ); + default: + throw new Error("unknown key id " + r); + } + case "ENCRYPTED PRIVATE KEY": + d = (function (t, e) { + var r = t.algorithm.decrypt.kde.kdeparams.salt, + i = parseInt( + t.algorithm.decrypt.kde.kdeparams.iters.toString(), + 10 + ), + o = n[t.algorithm.decrypt.cipher.algo.join(".")], + u = t.algorithm.decrypt.cipher.iv, + h = t.subjectPrivateKey, + c = parseInt(o.split("-")[1], 10) / 8, + d = s.pbkdf2Sync(e, r, i, c, "sha1"), + l = a.createDecipheriv(o, d, u), + p = []; + return p.push(l.update(h)), p.push(l.final()), f.concat(p); + })((d = i.EncryptedPrivateKey.decode(d, "der")), e); + case "PRIVATE KEY": + switch ( + (r = (u = i.PrivateKey.decode( + d, + "der" + )).algorithm.algorithm.join(".")) + ) { + case "1.2.840.113549.1.1.1": + return i.RSAPrivateKey.decode(u.subjectPrivateKey, "der"); + case "1.2.840.10045.2.1": + return { + curve: u.algorithm.curve, + privateKey: i.ECPrivateKey.decode( + u.subjectPrivateKey, + "der" + ).privateKey, + }; + case "1.2.840.10040.4.1": + return ( + (u.algorithm.params.priv_key = i.DSAparam.decode( + u.subjectPrivateKey, + "der" + )), + { type: "dsa", params: u.algorithm.params } + ); + default: + throw new Error("unknown key id " + r); + } + case "RSA PUBLIC KEY": + return i.RSAPublicKey.decode(d, "der"); + case "RSA PRIVATE KEY": + return i.RSAPrivateKey.decode(d, "der"); + case "DSA PRIVATE KEY": + return { + type: "dsa", + params: i.DSAPrivateKey.decode(d, "der"), + }; + case "EC PRIVATE KEY": + return { + curve: (d = i.ECPrivateKey.decode(d, "der")).parameters + .value, + privateKey: d.privateKey, + }; + default: + throw new Error("unknown key type " + c); + } + } + (t.exports = u), (u.signature = i.signature); + }, + 5632: (t, e, r) => { + (e.pbkdf2 = r(8638)), (e.pbkdf2Sync = r(1257)); + }, + 8638: (t, e, r) => { + var i, + n, + o = r(9509).Buffer, + a = r(7357), + s = r(2368), + f = r(1257), + u = r(7777), + h = r.g.crypto && r.g.crypto.subtle, + c = { + sha: "SHA-1", + "sha-1": "SHA-1", + sha1: "SHA-1", + sha256: "SHA-256", + "sha-256": "SHA-256", + sha384: "SHA-384", + "sha-384": "SHA-384", + "sha-512": "SHA-512", + sha512: "SHA-512", + }, + d = []; + function l() { + return ( + n || + (n = + r.g.process && r.g.process.nextTick + ? r.g.process.nextTick + : r.g.queueMicrotask + ? r.g.queueMicrotask + : r.g.setImmediate + ? r.g.setImmediate + : r.g.setTimeout) + ); + } + function p(t, e, r, i, n) { + return h + .importKey("raw", t, { name: "PBKDF2" }, !1, ["deriveBits"]) + .then(function (t) { + return h.deriveBits( + { + name: "PBKDF2", + salt: e, + iterations: r, + hash: { name: n }, + }, + t, + i << 3 + ); + }) + .then(function (t) { + return o.from(t); + }); + } + t.exports = function (t, e, n, b, y, m) { + "function" == typeof y && ((m = y), (y = void 0)); + var g = c[(y = y || "sha1").toLowerCase()]; + if (g && "function" == typeof r.g.Promise) { + if ( + (a(n, b), + (t = u(t, s, "Password")), + (e = u(e, s, "Salt")), + "function" != typeof m) + ) + throw new Error("No callback provided to pbkdf2"); + !(function (t, e) { + t.then( + function (t) { + l()(function () { + e(null, t); + }); + }, + function (t) { + l()(function () { + e(t); + }); + } + ); + })( + (function (t) { + if (r.g.process && !r.g.process.browser) + return Promise.resolve(!1); + if (!h || !h.importKey || !h.deriveBits) + return Promise.resolve(!1); + if (void 0 !== d[t]) return d[t]; + var e = p((i = i || o.alloc(8)), i, 10, 128, t) + .then(function () { + return !0; + }) + .catch(function () { + return !1; + }); + return (d[t] = e), e; + })(g).then(function (r) { + return r ? p(t, e, n, b, g) : f(t, e, n, b, y); + }), + m + ); + } else + l()(function () { + var r; + try { + r = f(t, e, n, b, y); + } catch (t) { + return m(t); + } + m(null, r); + }); + }; + }, + 2368: (t, e, r) => { + var i, + n = r(4155); + (i = + r.g.process && r.g.process.browser + ? "utf-8" + : r.g.process && r.g.process.version + ? parseInt(n.version.split(".")[0].slice(1), 10) >= 6 + ? "utf-8" + : "binary" + : "utf-8"), + (t.exports = i); + }, + 7357: (t) => { + var e = Math.pow(2, 30) - 1; + t.exports = function (t, r) { + if ("number" != typeof t) + throw new TypeError("Iterations not a number"); + if (t < 0) throw new TypeError("Bad iterations"); + if ("number" != typeof r) + throw new TypeError("Key length not a number"); + if (r < 0 || r > e || r != r) + throw new TypeError("Bad key length"); + }; + }, + 1257: (t, e, r) => { + var i = r(8028), + n = r(9785), + o = r(9072), + a = r(9509).Buffer, + s = r(7357), + f = r(2368), + u = r(7777), + h = a.alloc(128), + c = { + md5: 16, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64, + rmd160: 20, + ripemd160: 20, + }; + function d(t, e, r) { + var s = (function (t) { + return "rmd160" === t || "ripemd160" === t + ? function (t) { + return new n().update(t).digest(); + } + : "md5" === t + ? i + : function (e) { + return o(t).update(e).digest(); + }; + })(t), + f = "sha512" === t || "sha384" === t ? 128 : 64; + e.length > f + ? (e = s(e)) + : e.length < f && (e = a.concat([e, h], f)); + for ( + var u = a.allocUnsafe(f + c[t]), + d = a.allocUnsafe(f + c[t]), + l = 0; + l < f; + l++ + ) + (u[l] = 54 ^ e[l]), (d[l] = 92 ^ e[l]); + var p = a.allocUnsafe(f + r + 4); + u.copy(p, 0, 0, f), + (this.ipad1 = p), + (this.ipad2 = u), + (this.opad = d), + (this.alg = t), + (this.blocksize = f), + (this.hash = s), + (this.size = c[t]); + } + (d.prototype.run = function (t, e) { + return ( + t.copy(e, this.blocksize), + this.hash(e).copy(this.opad, this.blocksize), + this.hash(this.opad) + ); + }), + (t.exports = function (t, e, r, i, n) { + s(r, i); + var o = new d( + (n = n || "sha1"), + (t = u(t, f, "Password")), + (e = u(e, f, "Salt")).length + ), + h = a.allocUnsafe(i), + l = a.allocUnsafe(e.length + 4); + e.copy(l, 0, 0, e.length); + for ( + var p = 0, b = c[n], y = Math.ceil(i / b), m = 1; + m <= y; + m++ + ) { + l.writeUInt32BE(m, e.length); + for (var g = o.run(l, o.ipad1), v = g, w = 1; w < r; w++) { + v = o.run(v, o.ipad2); + for (var _ = 0; _ < b; _++) g[_] ^= v[_]; + } + g.copy(h, p), (p += b); + } + return h; + }); + }, + 7777: (t, e, r) => { + var i = r(9509).Buffer; + t.exports = function (t, e, r) { + if (i.isBuffer(t)) return t; + if ("string" == typeof t) return i.from(t, e); + if (ArrayBuffer.isView(t)) return i.from(t.buffer); + throw new TypeError( + r + " must be a string, a Buffer, a typed array or a DataView" + ); + }; + }, + 4155: (t) => { + var e, + r, + i = (t.exports = {}); + function n() { + throw new Error("setTimeout has not been defined"); + } + function o() { + throw new Error("clearTimeout has not been defined"); + } + function a(t) { + if (e === setTimeout) return setTimeout(t, 0); + if ((e === n || !e) && setTimeout) + return (e = setTimeout), setTimeout(t, 0); + try { + return e(t, 0); + } catch (r) { + try { + return e.call(null, t, 0); + } catch (r) { + return e.call(this, t, 0); + } + } + } + !(function () { + try { + e = "function" == typeof setTimeout ? setTimeout : n; + } catch (t) { + e = n; + } + try { + r = "function" == typeof clearTimeout ? clearTimeout : o; + } catch (t) { + r = o; + } + })(); + var s, + f = [], + u = !1, + h = -1; + function c() { + u && + s && + ((u = !1), + s.length ? (f = s.concat(f)) : (h = -1), + f.length && d()); + } + function d() { + if (!u) { + var t = a(c); + u = !0; + for (var e = f.length; e; ) { + for (s = f, f = []; ++h < e; ) s && s[h].run(); + (h = -1), (e = f.length); + } + (s = null), + (u = !1), + (function (t) { + if (r === clearTimeout) return clearTimeout(t); + if ((r === o || !r) && clearTimeout) + return (r = clearTimeout), clearTimeout(t); + try { + r(t); + } catch (e) { + try { + return r.call(null, t); + } catch (e) { + return r.call(this, t); + } + } + })(t); + } + } + function l(t, e) { + (this.fun = t), (this.array = e); + } + function p() {} + (i.nextTick = function (t) { + var e = new Array(arguments.length - 1); + if (arguments.length > 1) + for (var r = 1; r < arguments.length; r++) + e[r - 1] = arguments[r]; + f.push(new l(t, e)), 1 !== f.length || u || a(d); + }), + (l.prototype.run = function () { + this.fun.apply(null, this.array); + }), + (i.title = "browser"), + (i.browser = !0), + (i.env = {}), + (i.argv = []), + (i.version = ""), + (i.versions = {}), + (i.on = p), + (i.addListener = p), + (i.once = p), + (i.off = p), + (i.removeListener = p), + (i.removeAllListeners = p), + (i.emit = p), + (i.prependListener = p), + (i.prependOnceListener = p), + (i.listeners = function (t) { + return []; + }), + (i.binding = function (t) { + throw new Error("process.binding is not supported"); + }), + (i.cwd = function () { + return "/"; + }), + (i.chdir = function (t) { + throw new Error("process.chdir is not supported"); + }), + (i.umask = function () { + return 0; + }); + }, + 7900: (t, e, r) => { + (e.publicEncrypt = r(6559)), + (e.privateDecrypt = r(6138)), + (e.privateEncrypt = function (t, r) { + return e.publicEncrypt(t, r, !0); + }), + (e.publicDecrypt = function (t, r) { + return e.privateDecrypt(t, r, !0); + }); + }, + 9199: (t, e, r) => { + var i = r(3482), + n = r(9509).Buffer; + function o(t) { + var e = n.allocUnsafe(4); + return e.writeUInt32BE(t, 0), e; + } + t.exports = function (t, e) { + for (var r, a = n.alloc(0), s = 0; a.length < e; ) + (r = o(s++)), + (a = n.concat([a, i("sha1").update(t).update(r).digest()])); + return a.slice(0, e); + }; + }, + 6138: (t, e, r) => { + var i = r(980), + n = r(9199), + o = r(7859), + a = r(3550), + s = r(3663), + f = r(3482), + u = r(4818), + h = r(9509).Buffer; + t.exports = function (t, e, r) { + var c; + c = t.padding ? t.padding : r ? 1 : 4; + var d, + l = i(t), + p = l.modulus.byteLength(); + if (e.length > p || new a(e).cmp(l.modulus) >= 0) + throw new Error("decryption error"); + d = r ? u(new a(e), l) : s(e, l); + var b = h.alloc(p - d.length); + if (((d = h.concat([b, d], p)), 4 === c)) + return (function (t, e) { + var r = t.modulus.byteLength(), + i = f("sha1").update(h.alloc(0)).digest(), + a = i.length; + if (0 !== e[0]) throw new Error("decryption error"); + var s = e.slice(1, a + 1), + u = e.slice(a + 1), + c = o(s, n(u, a)), + d = o(u, n(c, r - a - 1)); + if ( + (function (t, e) { + (t = h.from(t)), (e = h.from(e)); + var r = 0, + i = t.length; + t.length !== e.length && + (r++, (i = Math.min(t.length, e.length))); + for (var n = -1; ++n < i; ) r += t[n] ^ e[n]; + return r; + })(i, d.slice(0, a)) + ) + throw new Error("decryption error"); + for (var l = a; 0 === d[l]; ) l++; + if (1 !== d[l++]) throw new Error("decryption error"); + return d.slice(l); + })(l, d); + if (1 === c) + return (function (t, e, r) { + for (var i = e.slice(0, 2), n = 2, o = 0; 0 !== e[n++]; ) + if (n >= e.length) { + o++; + break; + } + var a = e.slice(2, n - 1); + if ( + ((("0002" !== i.toString("hex") && !r) || + ("0001" !== i.toString("hex") && r)) && + o++, + a.length < 8 && o++, + o) + ) + throw new Error("decryption error"); + return e.slice(n); + })(0, d, r); + if (3 === c) return d; + throw new Error("unknown padding"); + }; + }, + 6559: (t, e, r) => { + var i = r(980), + n = r(1798), + o = r(3482), + a = r(9199), + s = r(7859), + f = r(3550), + u = r(4818), + h = r(3663), + c = r(9509).Buffer; + t.exports = function (t, e, r) { + var d; + d = t.padding ? t.padding : r ? 1 : 4; + var l, + p = i(t); + if (4 === d) + l = (function (t, e) { + var r = t.modulus.byteLength(), + i = e.length, + u = o("sha1").update(c.alloc(0)).digest(), + h = u.length, + d = 2 * h; + if (i > r - d - 2) throw new Error("message too long"); + var l = c.alloc(r - i - d - 2), + p = r - h - 1, + b = n(h), + y = s(c.concat([u, l, c.alloc(1, 1), e], p), a(b, p)), + m = s(b, a(y, h)); + return new f(c.concat([c.alloc(1), m, y], r)); + })(p, e); + else if (1 === d) + l = (function (t, e, r) { + var i, + o = e.length, + a = t.modulus.byteLength(); + if (o > a - 11) throw new Error("message too long"); + return ( + (i = r + ? c.alloc(a - o - 3, 255) + : (function (t) { + for ( + var e, + r = c.allocUnsafe(t), + i = 0, + o = n(2 * t), + a = 0; + i < t; + + ) + a === o.length && ((o = n(2 * t)), (a = 0)), + (e = o[a++]) && (r[i++] = e); + return r; + })(a - o - 3)), + new f( + c.concat([c.from([0, r ? 1 : 2]), i, c.alloc(1), e], a) + ) + ); + })(p, e, r); + else { + if (3 !== d) throw new Error("unknown padding"); + if ((l = new f(e)).cmp(p.modulus) >= 0) + throw new Error("data too long for modulus"); + } + return r ? h(l, p) : u(l, p); + }; + }, + 4818: (t, e, r) => { + var i = r(3550), + n = r(9509).Buffer; + t.exports = function (t, e) { + return n.from( + t + .toRed(i.mont(e.modulus)) + .redPow(new i(e.publicExponent)) + .fromRed() + .toArray() + ); + }; + }, + 7859: (t) => { + t.exports = function (t, e) { + for (var r = t.length, i = -1; ++i < r; ) t[i] ^= e[i]; + return t; + }; + }, + 1798: (t, e, r) => { + "use strict"; + var i = r(4155), + n = 65536, + o = r(9509).Buffer, + a = r.g.crypto || r.g.msCrypto; + a && a.getRandomValues + ? (t.exports = function (t, e) { + if (t > 4294967295) + throw new RangeError("requested too many random bytes"); + var r = o.allocUnsafe(t); + if (t > 0) + if (t > n) + for (var s = 0; s < t; s += n) + a.getRandomValues(r.slice(s, s + n)); + else a.getRandomValues(r); + return "function" == typeof e + ? i.nextTick(function () { + e(null, r); + }) + : r; + }) + : (t.exports = function () { + throw new Error( + "Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11" + ); + }); + }, + 7963: (t, e, r) => { + "use strict"; + var i = r(4155); + function n() { + throw new Error( + "secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11" + ); + } + var o = r(9509), + a = r(1798), + s = o.Buffer, + f = o.kMaxLength, + u = r.g.crypto || r.g.msCrypto, + h = Math.pow(2, 32) - 1; + function c(t, e) { + if ("number" != typeof t || t != t) + throw new TypeError("offset must be a number"); + if (t > h || t < 0) + throw new TypeError("offset must be a uint32"); + if (t > f || t > e) throw new RangeError("offset out of range"); + } + function d(t, e, r) { + if ("number" != typeof t || t != t) + throw new TypeError("size must be a number"); + if (t > h || t < 0) throw new TypeError("size must be a uint32"); + if (t + e > r || t > f) throw new RangeError("buffer too small"); + } + function l(t, e, r, n) { + if (i.browser) { + var o = t.buffer, + s = new Uint8Array(o, e, r); + return ( + u.getRandomValues(s), + n + ? void i.nextTick(function () { + n(null, t); + }) + : t + ); + } + if (!n) return a(r).copy(t, e), t; + a(r, function (r, i) { + if (r) return n(r); + i.copy(t, e), n(null, t); + }); + } + (u && u.getRandomValues) || !i.browser + ? ((e.randomFill = function (t, e, i, n) { + if (!(s.isBuffer(t) || t instanceof r.g.Uint8Array)) + throw new TypeError( + '"buf" argument must be a Buffer or Uint8Array' + ); + if ("function" == typeof e) (n = e), (e = 0), (i = t.length); + else if ("function" == typeof i) (n = i), (i = t.length - e); + else if ("function" != typeof n) + throw new TypeError('"cb" argument must be a function'); + return c(e, t.length), d(i, e, t.length), l(t, e, i, n); + }), + (e.randomFillSync = function (t, e, i) { + if ( + (void 0 === e && (e = 0), + !(s.isBuffer(t) || t instanceof r.g.Uint8Array)) + ) + throw new TypeError( + '"buf" argument must be a Buffer or Uint8Array' + ); + return ( + c(e, t.length), + void 0 === i && (i = t.length - e), + d(i, e, t.length), + l(t, e, i) + ); + })) + : ((e.randomFill = n), (e.randomFillSync = n)); + }, + 4281: (t) => { + "use strict"; + var e = {}; + function r(t, r, i) { + i || (i = Error); + var n = (function (t) { + var e, i; + function n(e, i, n) { + return ( + t.call( + this, + (function (t, e, i) { + return "string" == typeof r ? r : r(t, e, i); + })(e, i, n) + ) || this + ); + } + return ( + (i = t), + ((e = n).prototype = Object.create(i.prototype)), + (e.prototype.constructor = e), + (e.__proto__ = i), + n + ); + })(i); + (n.prototype.name = i.name), (n.prototype.code = t), (e[t] = n); + } + function i(t, e) { + if (Array.isArray(t)) { + var r = t.length; + return ( + (t = t.map(function (t) { + return String(t); + })), + r > 2 + ? "one of " + .concat(e, " ") + .concat(t.slice(0, r - 1).join(", "), ", or ") + + t[r - 1] + : 2 === r + ? "one of ".concat(e, " ").concat(t[0], " or ").concat(t[1]) + : "of ".concat(e, " ").concat(t[0]) + ); + } + return "of ".concat(e, " ").concat(String(t)); + } + r( + "ERR_INVALID_OPT_VALUE", + function (t, e) { + return ( + 'The value "' + e + '" is invalid for option "' + t + '"' + ); + }, + TypeError + ), + r( + "ERR_INVALID_ARG_TYPE", + function (t, e, r) { + var n, o, a, s, f; + if ( + ("string" == typeof e && + ((o = "not "), e.substr(0, o.length) === o) + ? ((n = "must not be"), (e = e.replace(/^not /, ""))) + : (n = "must be"), + (function (t, e, r) { + return ( + (void 0 === r || r > t.length) && (r = t.length), + t.substring(r - e.length, r) === e + ); + })(t, " argument")) + ) + a = "The " + .concat(t, " ") + .concat(n, " ") + .concat(i(e, "type")); + else { + var u = + ("number" != typeof f && (f = 0), + f + ".".length > (s = t).length || + -1 === s.indexOf(".", f) + ? "argument" + : "property"); + a = 'The "' + .concat(t, '" ') + .concat(u, " ") + .concat(n, " ") + .concat(i(e, "type")); + } + return a + ". Received type ".concat(typeof r); + }, + TypeError + ), + r("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"), + r("ERR_METHOD_NOT_IMPLEMENTED", function (t) { + return "The " + t + " method is not implemented"; + }), + r("ERR_STREAM_PREMATURE_CLOSE", "Premature close"), + r("ERR_STREAM_DESTROYED", function (t) { + return "Cannot call " + t + " after a stream was destroyed"; + }), + r("ERR_MULTIPLE_CALLBACK", "Callback called multiple times"), + r("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"), + r("ERR_STREAM_WRITE_AFTER_END", "write after end"), + r( + "ERR_STREAM_NULL_VALUES", + "May not write null values to stream", + TypeError + ), + r( + "ERR_UNKNOWN_ENCODING", + function (t) { + return "Unknown encoding: " + t; + }, + TypeError + ), + r( + "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", + "stream.unshift() after end event" + ), + (t.exports.q = e); + }, + 6753: (t, e, r) => { + "use strict"; + var i = r(4155), + n = + Object.keys || + function (t) { + var e = []; + for (var r in t) e.push(r); + return e; + }; + t.exports = h; + var o = r(9481), + a = r(4229); + r(5717)(h, o); + for (var s = n(a.prototype), f = 0; f < s.length; f++) { + var u = s[f]; + h.prototype[u] || (h.prototype[u] = a.prototype[u]); + } + function h(t) { + if (!(this instanceof h)) return new h(t); + o.call(this, t), + a.call(this, t), + (this.allowHalfOpen = !0), + t && + (!1 === t.readable && (this.readable = !1), + !1 === t.writable && (this.writable = !1), + !1 === t.allowHalfOpen && + ((this.allowHalfOpen = !1), this.once("end", c))); + } + function c() { + this._writableState.ended || i.nextTick(d, this); + } + function d(t) { + t.end(); + } + Object.defineProperty(h.prototype, "writableHighWaterMark", { + enumerable: !1, + get: function () { + return this._writableState.highWaterMark; + }, + }), + Object.defineProperty(h.prototype, "writableBuffer", { + enumerable: !1, + get: function () { + return this._writableState && this._writableState.getBuffer(); + }, + }), + Object.defineProperty(h.prototype, "writableLength", { + enumerable: !1, + get: function () { + return this._writableState.length; + }, + }), + Object.defineProperty(h.prototype, "destroyed", { + enumerable: !1, + get: function () { + return ( + void 0 !== this._readableState && + void 0 !== this._writableState && + this._readableState.destroyed && + this._writableState.destroyed + ); + }, + set: function (t) { + void 0 !== this._readableState && + void 0 !== this._writableState && + ((this._readableState.destroyed = t), + (this._writableState.destroyed = t)); + }, + }); + }, + 2725: (t, e, r) => { + "use strict"; + t.exports = n; + var i = r(4605); + function n(t) { + if (!(this instanceof n)) return new n(t); + i.call(this, t); + } + r(5717)(n, i), + (n.prototype._transform = function (t, e, r) { + r(null, t); + }); + }, + 9481: (t, e, r) => { + "use strict"; + var i, + n = r(4155); + (t.exports = A), (A.ReadableState = E), r(7187).EventEmitter; + var o, + a = function (t, e) { + return t.listeners(e).length; + }, + s = r(2503), + f = r(8764).Buffer, + u = r.g.Uint8Array || function () {}, + h = r(4616); + o = h && h.debuglog ? h.debuglog("stream") : function () {}; + var c, + d, + l, + p = r(7327), + b = r(1195), + y = r(2457).getHighWaterMark, + m = r(4281).q, + g = m.ERR_INVALID_ARG_TYPE, + v = m.ERR_STREAM_PUSH_AFTER_EOF, + w = m.ERR_METHOD_NOT_IMPLEMENTED, + _ = m.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + r(5717)(A, s); + var M = b.errorOrDestroy, + S = ["error", "close", "destroy", "pause", "resume"]; + function E(t, e, n) { + (i = i || r(6753)), + (t = t || {}), + "boolean" != typeof n && (n = e instanceof i), + (this.objectMode = !!t.objectMode), + n && + (this.objectMode = this.objectMode || !!t.readableObjectMode), + (this.highWaterMark = y(this, t, "readableHighWaterMark", n)), + (this.buffer = new p()), + (this.length = 0), + (this.pipes = null), + (this.pipesCount = 0), + (this.flowing = null), + (this.ended = !1), + (this.endEmitted = !1), + (this.reading = !1), + (this.sync = !0), + (this.needReadable = !1), + (this.emittedReadable = !1), + (this.readableListening = !1), + (this.resumeScheduled = !1), + (this.paused = !0), + (this.emitClose = !1 !== t.emitClose), + (this.autoDestroy = !!t.autoDestroy), + (this.destroyed = !1), + (this.defaultEncoding = t.defaultEncoding || "utf8"), + (this.awaitDrain = 0), + (this.readingMore = !1), + (this.decoder = null), + (this.encoding = null), + t.encoding && + (c || (c = r(2553).s), + (this.decoder = new c(t.encoding)), + (this.encoding = t.encoding)); + } + function A(t) { + if (((i = i || r(6753)), !(this instanceof A))) return new A(t); + var e = this instanceof i; + (this._readableState = new E(t, this, e)), + (this.readable = !0), + t && + ("function" == typeof t.read && (this._read = t.read), + "function" == typeof t.destroy && + (this._destroy = t.destroy)), + s.call(this); + } + function k(t, e, r, i, n) { + o("readableAddChunk", e); + var a, + s = t._readableState; + if (null === e) + (s.reading = !1), + (function (t, e) { + if ((o("onEofChunk"), !e.ended)) { + if (e.decoder) { + var r = e.decoder.end(); + r && + r.length && + (e.buffer.push(r), + (e.length += e.objectMode ? 1 : r.length)); + } + (e.ended = !0), + e.sync + ? R(t) + : ((e.needReadable = !1), + e.emittedReadable || + ((e.emittedReadable = !0), O(t))); + } + })(t, s); + else if ( + (n || + (a = (function (t, e) { + var r, i; + return ( + (i = e), + f.isBuffer(i) || + i instanceof u || + "string" == typeof e || + void 0 === e || + t.objectMode || + (r = new g( + "chunk", + ["string", "Buffer", "Uint8Array"], + e + )), + r + ); + })(s, e)), + a) + ) + M(t, a); + else if (s.objectMode || (e && e.length > 0)) + if ( + ("string" == typeof e || + s.objectMode || + Object.getPrototypeOf(e) === f.prototype || + (e = (function (t) { + return f.from(t); + })(e)), + i) + ) + s.endEmitted ? M(t, new _()) : x(t, s, e, !0); + else if (s.ended) M(t, new v()); + else { + if (s.destroyed) return !1; + (s.reading = !1), + s.decoder && !r + ? ((e = s.decoder.write(e)), + s.objectMode || 0 !== e.length + ? x(t, s, e, !1) + : j(t, s)) + : x(t, s, e, !1); + } + else i || ((s.reading = !1), j(t, s)); + return !s.ended && (s.length < s.highWaterMark || 0 === s.length); + } + function x(t, e, r, i) { + e.flowing && 0 === e.length && !e.sync + ? ((e.awaitDrain = 0), t.emit("data", r)) + : ((e.length += e.objectMode ? 1 : r.length), + i ? e.buffer.unshift(r) : e.buffer.push(r), + e.needReadable && R(t)), + j(t, e); + } + Object.defineProperty(A.prototype, "destroyed", { + enumerable: !1, + get: function () { + return ( + void 0 !== this._readableState && + this._readableState.destroyed + ); + }, + set: function (t) { + this._readableState && (this._readableState.destroyed = t); + }, + }), + (A.prototype.destroy = b.destroy), + (A.prototype._undestroy = b.undestroy), + (A.prototype._destroy = function (t, e) { + e(t); + }), + (A.prototype.push = function (t, e) { + var r, + i = this._readableState; + return ( + i.objectMode + ? (r = !0) + : "string" == typeof t && + ((e = e || i.defaultEncoding) !== i.encoding && + ((t = f.from(t, e)), (e = "")), + (r = !0)), + k(this, t, e, !1, r) + ); + }), + (A.prototype.unshift = function (t) { + return k(this, t, null, !0, !1); + }), + (A.prototype.isPaused = function () { + return !1 === this._readableState.flowing; + }), + (A.prototype.setEncoding = function (t) { + c || (c = r(2553).s); + var e = new c(t); + (this._readableState.decoder = e), + (this._readableState.encoding = + this._readableState.decoder.encoding); + for ( + var i = this._readableState.buffer.head, n = ""; + null !== i; + + ) + (n += e.write(i.data)), (i = i.next); + return ( + this._readableState.buffer.clear(), + "" !== n && this._readableState.buffer.push(n), + (this._readableState.length = n.length), + this + ); + }); + var I = 1073741824; + function B(t, e) { + return t <= 0 || (0 === e.length && e.ended) + ? 0 + : e.objectMode + ? 1 + : t != t + ? e.flowing && e.length + ? e.buffer.head.data.length + : e.length + : (t > e.highWaterMark && + (e.highWaterMark = (function (t) { + return ( + t >= I + ? (t = I) + : (t--, + (t |= t >>> 1), + (t |= t >>> 2), + (t |= t >>> 4), + (t |= t >>> 8), + (t |= t >>> 16), + t++), + t + ); + })(t)), + t <= e.length + ? t + : e.ended + ? e.length + : ((e.needReadable = !0), 0)); + } + function R(t) { + var e = t._readableState; + o("emitReadable", e.needReadable, e.emittedReadable), + (e.needReadable = !1), + e.emittedReadable || + (o("emitReadable", e.flowing), + (e.emittedReadable = !0), + n.nextTick(O, t)); + } + function O(t) { + var e = t._readableState; + o("emitReadable_", e.destroyed, e.length, e.ended), + e.destroyed || + (!e.length && !e.ended) || + (t.emit("readable"), (e.emittedReadable = !1)), + (e.needReadable = + !e.flowing && !e.ended && e.length <= e.highWaterMark), + C(t); + } + function j(t, e) { + e.readingMore || ((e.readingMore = !0), n.nextTick(P, t, e)); + } + function P(t, e) { + for ( + ; + !e.reading && + !e.ended && + (e.length < e.highWaterMark || (e.flowing && 0 === e.length)); + + ) { + var r = e.length; + if ((o("maybeReadMore read 0"), t.read(0), r === e.length)) + break; + } + e.readingMore = !1; + } + function T(t) { + var e = t._readableState; + (e.readableListening = t.listenerCount("readable") > 0), + e.resumeScheduled && !e.paused + ? (e.flowing = !0) + : t.listenerCount("data") > 0 && t.resume(); + } + function L(t) { + o("readable nexttick read 0"), t.read(0); + } + function N(t, e) { + o("resume", e.reading), + e.reading || t.read(0), + (e.resumeScheduled = !1), + t.emit("resume"), + C(t), + e.flowing && !e.reading && t.read(0); + } + function C(t) { + var e = t._readableState; + for (o("flow", e.flowing); e.flowing && null !== t.read(); ); + } + function U(t, e) { + return 0 === e.length + ? null + : (e.objectMode + ? (r = e.buffer.shift()) + : !t || t >= e.length + ? ((r = e.decoder + ? e.buffer.join("") + : 1 === e.buffer.length + ? e.buffer.first() + : e.buffer.concat(e.length)), + e.buffer.clear()) + : (r = e.buffer.consume(t, e.decoder)), + r); + var r; + } + function D(t) { + var e = t._readableState; + o("endReadable", e.endEmitted), + e.endEmitted || ((e.ended = !0), n.nextTick(q, e, t)); + } + function q(t, e) { + if ( + (o("endReadableNT", t.endEmitted, t.length), + !t.endEmitted && + 0 === t.length && + ((t.endEmitted = !0), + (e.readable = !1), + e.emit("end"), + t.autoDestroy)) + ) { + var r = e._writableState; + (!r || (r.autoDestroy && r.finished)) && e.destroy(); + } + } + function z(t, e) { + for (var r = 0, i = t.length; r < i; r++) + if (t[r] === e) return r; + return -1; + } + (A.prototype.read = function (t) { + o("read", t), (t = parseInt(t, 10)); + var e = this._readableState, + r = t; + if ( + (0 !== t && (e.emittedReadable = !1), + 0 === t && + e.needReadable && + ((0 !== e.highWaterMark + ? e.length >= e.highWaterMark + : e.length > 0) || + e.ended)) + ) + return ( + o("read: emitReadable", e.length, e.ended), + 0 === e.length && e.ended ? D(this) : R(this), + null + ); + if (0 === (t = B(t, e)) && e.ended) + return 0 === e.length && D(this), null; + var i, + n = e.needReadable; + return ( + o("need readable", n), + (0 === e.length || e.length - t < e.highWaterMark) && + o("length less than watermark", (n = !0)), + e.ended || e.reading + ? o("reading or ended", (n = !1)) + : n && + (o("do read"), + (e.reading = !0), + (e.sync = !0), + 0 === e.length && (e.needReadable = !0), + this._read(e.highWaterMark), + (e.sync = !1), + e.reading || (t = B(r, e))), + null === (i = t > 0 ? U(t, e) : null) + ? ((e.needReadable = e.length <= e.highWaterMark), (t = 0)) + : ((e.length -= t), (e.awaitDrain = 0)), + 0 === e.length && + (e.ended || (e.needReadable = !0), + r !== t && e.ended && D(this)), + null !== i && this.emit("data", i), + i + ); + }), + (A.prototype._read = function (t) { + M(this, new w("_read()")); + }), + (A.prototype.pipe = function (t, e) { + var r = this, + i = this._readableState; + switch (i.pipesCount) { + case 0: + i.pipes = t; + break; + case 1: + i.pipes = [i.pipes, t]; + break; + default: + i.pipes.push(t); + } + (i.pipesCount += 1), + o("pipe count=%d opts=%j", i.pipesCount, e); + var s = + (e && !1 === e.end) || t === n.stdout || t === n.stderr + ? b + : f; + function f() { + o("onend"), t.end(); + } + i.endEmitted ? n.nextTick(s) : r.once("end", s), + t.on("unpipe", function e(n, a) { + o("onunpipe"), + n === r && + a && + !1 === a.hasUnpiped && + ((a.hasUnpiped = !0), + o("cleanup"), + t.removeListener("close", l), + t.removeListener("finish", p), + t.removeListener("drain", u), + t.removeListener("error", d), + t.removeListener("unpipe", e), + r.removeListener("end", f), + r.removeListener("end", b), + r.removeListener("data", c), + (h = !0), + !i.awaitDrain || + (t._writableState && !t._writableState.needDrain) || + u()); + }); + var u = (function (t) { + return function () { + var e = t._readableState; + o("pipeOnDrain", e.awaitDrain), + e.awaitDrain && e.awaitDrain--, + 0 === e.awaitDrain && + a(t, "data") && + ((e.flowing = !0), C(t)); + }; + })(r); + t.on("drain", u); + var h = !1; + function c(e) { + o("ondata"); + var n = t.write(e); + o("dest.write", n), + !1 === n && + (((1 === i.pipesCount && i.pipes === t) || + (i.pipesCount > 1 && -1 !== z(i.pipes, t))) && + !h && + (o("false write response, pause", i.awaitDrain), + i.awaitDrain++), + r.pause()); + } + function d(e) { + o("onerror", e), + b(), + t.removeListener("error", d), + 0 === a(t, "error") && M(t, e); + } + function l() { + t.removeListener("finish", p), b(); + } + function p() { + o("onfinish"), t.removeListener("close", l), b(); + } + function b() { + o("unpipe"), r.unpipe(t); + } + return ( + r.on("data", c), + (function (t, e, r) { + if ("function" == typeof t.prependListener) + return t.prependListener(e, r); + t._events && t._events.error + ? Array.isArray(t._events.error) + ? t._events.error.unshift(r) + : (t._events.error = [r, t._events.error]) + : t.on(e, r); + })(t, "error", d), + t.once("close", l), + t.once("finish", p), + t.emit("pipe", r), + i.flowing || (o("pipe resume"), r.resume()), + t + ); + }), + (A.prototype.unpipe = function (t) { + var e = this._readableState, + r = { hasUnpiped: !1 }; + if (0 === e.pipesCount) return this; + if (1 === e.pipesCount) + return ( + (t && t !== e.pipes) || + (t || (t = e.pipes), + (e.pipes = null), + (e.pipesCount = 0), + (e.flowing = !1), + t && t.emit("unpipe", this, r)), + this + ); + if (!t) { + var i = e.pipes, + n = e.pipesCount; + (e.pipes = null), (e.pipesCount = 0), (e.flowing = !1); + for (var o = 0; o < n; o++) + i[o].emit("unpipe", this, { hasUnpiped: !1 }); + return this; + } + var a = z(e.pipes, t); + return ( + -1 === a || + (e.pipes.splice(a, 1), + (e.pipesCount -= 1), + 1 === e.pipesCount && (e.pipes = e.pipes[0]), + t.emit("unpipe", this, r)), + this + ); + }), + (A.prototype.on = function (t, e) { + var r = s.prototype.on.call(this, t, e), + i = this._readableState; + return ( + "data" === t + ? ((i.readableListening = + this.listenerCount("readable") > 0), + !1 !== i.flowing && this.resume()) + : "readable" === t && + (i.endEmitted || + i.readableListening || + ((i.readableListening = i.needReadable = !0), + (i.flowing = !1), + (i.emittedReadable = !1), + o("on readable", i.length, i.reading), + i.length ? R(this) : i.reading || n.nextTick(L, this))), + r + ); + }), + (A.prototype.addListener = A.prototype.on), + (A.prototype.removeListener = function (t, e) { + var r = s.prototype.removeListener.call(this, t, e); + return "readable" === t && n.nextTick(T, this), r; + }), + (A.prototype.removeAllListeners = function (t) { + var e = s.prototype.removeAllListeners.apply(this, arguments); + return ( + ("readable" !== t && void 0 !== t) || n.nextTick(T, this), e + ); + }), + (A.prototype.resume = function () { + var t = this._readableState; + return ( + t.flowing || + (o("resume"), + (t.flowing = !t.readableListening), + (function (t, e) { + e.resumeScheduled || + ((e.resumeScheduled = !0), n.nextTick(N, t, e)); + })(this, t)), + (t.paused = !1), + this + ); + }), + (A.prototype.pause = function () { + return ( + o("call pause flowing=%j", this._readableState.flowing), + !1 !== this._readableState.flowing && + (o("pause"), + (this._readableState.flowing = !1), + this.emit("pause")), + (this._readableState.paused = !0), + this + ); + }), + (A.prototype.wrap = function (t) { + var e = this, + r = this._readableState, + i = !1; + for (var n in (t.on("end", function () { + if ((o("wrapped end"), r.decoder && !r.ended)) { + var t = r.decoder.end(); + t && t.length && e.push(t); + } + e.push(null); + }), + t.on("data", function (n) { + o("wrapped data"), + r.decoder && (n = r.decoder.write(n)), + (r.objectMode && null == n) || + ((r.objectMode || (n && n.length)) && + (e.push(n) || ((i = !0), t.pause()))); + }), + t)) + void 0 === this[n] && + "function" == typeof t[n] && + (this[n] = (function (e) { + return function () { + return t[e].apply(t, arguments); + }; + })(n)); + for (var a = 0; a < S.length; a++) + t.on(S[a], this.emit.bind(this, S[a])); + return ( + (this._read = function (e) { + o("wrapped _read", e), i && ((i = !1), t.resume()); + }), + this + ); + }), + "function" == typeof Symbol && + (A.prototype[Symbol.asyncIterator] = function () { + return void 0 === d && (d = r(5850)), d(this); + }), + Object.defineProperty(A.prototype, "readableHighWaterMark", { + enumerable: !1, + get: function () { + return this._readableState.highWaterMark; + }, + }), + Object.defineProperty(A.prototype, "readableBuffer", { + enumerable: !1, + get: function () { + return this._readableState && this._readableState.buffer; + }, + }), + Object.defineProperty(A.prototype, "readableFlowing", { + enumerable: !1, + get: function () { + return this._readableState.flowing; + }, + set: function (t) { + this._readableState && (this._readableState.flowing = t); + }, + }), + (A._fromList = U), + Object.defineProperty(A.prototype, "readableLength", { + enumerable: !1, + get: function () { + return this._readableState.length; + }, + }), + "function" == typeof Symbol && + (A.from = function (t, e) { + return void 0 === l && (l = r(5167)), l(A, t, e); + }); + }, + 4605: (t, e, r) => { + "use strict"; + t.exports = h; + var i = r(4281).q, + n = i.ERR_METHOD_NOT_IMPLEMENTED, + o = i.ERR_MULTIPLE_CALLBACK, + a = i.ERR_TRANSFORM_ALREADY_TRANSFORMING, + s = i.ERR_TRANSFORM_WITH_LENGTH_0, + f = r(6753); + function u(t, e) { + var r = this._transformState; + r.transforming = !1; + var i = r.writecb; + if (null === i) return this.emit("error", new o()); + (r.writechunk = null), + (r.writecb = null), + null != e && this.push(e), + i(t); + var n = this._readableState; + (n.reading = !1), + (n.needReadable || n.length < n.highWaterMark) && + this._read(n.highWaterMark); + } + function h(t) { + if (!(this instanceof h)) return new h(t); + f.call(this, t), + (this._transformState = { + afterTransform: u.bind(this), + needTransform: !1, + transforming: !1, + writecb: null, + writechunk: null, + writeencoding: null, + }), + (this._readableState.needReadable = !0), + (this._readableState.sync = !1), + t && + ("function" == typeof t.transform && + (this._transform = t.transform), + "function" == typeof t.flush && (this._flush = t.flush)), + this.on("prefinish", c); + } + function c() { + var t = this; + "function" != typeof this._flush || this._readableState.destroyed + ? d(this, null, null) + : this._flush(function (e, r) { + d(t, e, r); + }); + } + function d(t, e, r) { + if (e) return t.emit("error", e); + if ((null != r && t.push(r), t._writableState.length)) + throw new s(); + if (t._transformState.transforming) throw new a(); + return t.push(null); + } + r(5717)(h, f), + (h.prototype.push = function (t, e) { + return ( + (this._transformState.needTransform = !1), + f.prototype.push.call(this, t, e) + ); + }), + (h.prototype._transform = function (t, e, r) { + r(new n("_transform()")); + }), + (h.prototype._write = function (t, e, r) { + var i = this._transformState; + if ( + ((i.writecb = r), + (i.writechunk = t), + (i.writeencoding = e), + !i.transforming) + ) { + var n = this._readableState; + (i.needTransform || + n.needReadable || + n.length < n.highWaterMark) && + this._read(n.highWaterMark); + } + }), + (h.prototype._read = function (t) { + var e = this._transformState; + null === e.writechunk || e.transforming + ? (e.needTransform = !0) + : ((e.transforming = !0), + this._transform( + e.writechunk, + e.writeencoding, + e.afterTransform + )); + }), + (h.prototype._destroy = function (t, e) { + f.prototype._destroy.call(this, t, function (t) { + e(t); + }); + }); + }, + 4229: (t, e, r) => { + "use strict"; + var i, + n = r(4155); + function o(t) { + var e = this; + (this.next = null), + (this.entry = null), + (this.finish = function () { + !(function (t, e, r) { + var i = t.entry; + for (t.entry = null; i; ) { + var n = i.callback; + e.pendingcb--, n(undefined), (i = i.next); + } + e.corkedRequestsFree.next = t; + })(e, t); + }); + } + (t.exports = A), (A.WritableState = E); + var a, + s = { deprecate: r(4927) }, + f = r(2503), + u = r(8764).Buffer, + h = r.g.Uint8Array || function () {}, + c = r(1195), + d = r(2457).getHighWaterMark, + l = r(4281).q, + p = l.ERR_INVALID_ARG_TYPE, + b = l.ERR_METHOD_NOT_IMPLEMENTED, + y = l.ERR_MULTIPLE_CALLBACK, + m = l.ERR_STREAM_CANNOT_PIPE, + g = l.ERR_STREAM_DESTROYED, + v = l.ERR_STREAM_NULL_VALUES, + w = l.ERR_STREAM_WRITE_AFTER_END, + _ = l.ERR_UNKNOWN_ENCODING, + M = c.errorOrDestroy; + function S() {} + function E(t, e, a) { + (i = i || r(6753)), + (t = t || {}), + "boolean" != typeof a && (a = e instanceof i), + (this.objectMode = !!t.objectMode), + a && + (this.objectMode = this.objectMode || !!t.writableObjectMode), + (this.highWaterMark = d(this, t, "writableHighWaterMark", a)), + (this.finalCalled = !1), + (this.needDrain = !1), + (this.ending = !1), + (this.ended = !1), + (this.finished = !1), + (this.destroyed = !1); + var s = !1 === t.decodeStrings; + (this.decodeStrings = !s), + (this.defaultEncoding = t.defaultEncoding || "utf8"), + (this.length = 0), + (this.writing = !1), + (this.corked = 0), + (this.sync = !0), + (this.bufferProcessing = !1), + (this.onwrite = function (t) { + !(function (t, e) { + var r = t._writableState, + i = r.sync, + o = r.writecb; + if ("function" != typeof o) throw new y(); + if ( + ((function (t) { + (t.writing = !1), + (t.writecb = null), + (t.length -= t.writelen), + (t.writelen = 0); + })(r), + e) + ) + !(function (t, e, r, i, o) { + --e.pendingcb, + r + ? (n.nextTick(o, i), + n.nextTick(O, t, e), + (t._writableState.errorEmitted = !0), + M(t, i)) + : (o(i), + (t._writableState.errorEmitted = !0), + M(t, i), + O(t, e)); + })(t, r, i, e, o); + else { + var a = B(r) || t.destroyed; + a || + r.corked || + r.bufferProcessing || + !r.bufferedRequest || + I(t, r), + i ? n.nextTick(x, t, r, a, o) : x(t, r, a, o); + } + })(e, t); + }), + (this.writecb = null), + (this.writelen = 0), + (this.bufferedRequest = null), + (this.lastBufferedRequest = null), + (this.pendingcb = 0), + (this.prefinished = !1), + (this.errorEmitted = !1), + (this.emitClose = !1 !== t.emitClose), + (this.autoDestroy = !!t.autoDestroy), + (this.bufferedRequestCount = 0), + (this.corkedRequestsFree = new o(this)); + } + function A(t) { + var e = this instanceof (i = i || r(6753)); + if (!e && !a.call(A, this)) return new A(t); + (this._writableState = new E(t, this, e)), + (this.writable = !0), + t && + ("function" == typeof t.write && (this._write = t.write), + "function" == typeof t.writev && (this._writev = t.writev), + "function" == typeof t.destroy && (this._destroy = t.destroy), + "function" == typeof t.final && (this._final = t.final)), + f.call(this); + } + function k(t, e, r, i, n, o, a) { + (e.writelen = i), + (e.writecb = a), + (e.writing = !0), + (e.sync = !0), + e.destroyed + ? e.onwrite(new g("write")) + : r + ? t._writev(n, e.onwrite) + : t._write(n, o, e.onwrite), + (e.sync = !1); + } + function x(t, e, r, i) { + r || + (function (t, e) { + 0 === e.length && + e.needDrain && + ((e.needDrain = !1), t.emit("drain")); + })(t, e), + e.pendingcb--, + i(), + O(t, e); + } + function I(t, e) { + e.bufferProcessing = !0; + var r = e.bufferedRequest; + if (t._writev && r && r.next) { + var i = e.bufferedRequestCount, + n = new Array(i), + a = e.corkedRequestsFree; + a.entry = r; + for (var s = 0, f = !0; r; ) + (n[s] = r), r.isBuf || (f = !1), (r = r.next), (s += 1); + (n.allBuffers = f), + k(t, e, !0, e.length, n, "", a.finish), + e.pendingcb++, + (e.lastBufferedRequest = null), + a.next + ? ((e.corkedRequestsFree = a.next), (a.next = null)) + : (e.corkedRequestsFree = new o(e)), + (e.bufferedRequestCount = 0); + } else { + for (; r; ) { + var u = r.chunk, + h = r.encoding, + c = r.callback; + if ( + (k(t, e, !1, e.objectMode ? 1 : u.length, u, h, c), + (r = r.next), + e.bufferedRequestCount--, + e.writing) + ) + break; + } + null === r && (e.lastBufferedRequest = null); + } + (e.bufferedRequest = r), (e.bufferProcessing = !1); + } + function B(t) { + return ( + t.ending && + 0 === t.length && + null === t.bufferedRequest && + !t.finished && + !t.writing + ); + } + function R(t, e) { + t._final(function (r) { + e.pendingcb--, + r && M(t, r), + (e.prefinished = !0), + t.emit("prefinish"), + O(t, e); + }); + } + function O(t, e) { + var r = B(e); + if ( + r && + ((function (t, e) { + e.prefinished || + e.finalCalled || + ("function" != typeof t._final || e.destroyed + ? ((e.prefinished = !0), t.emit("prefinish")) + : (e.pendingcb++, + (e.finalCalled = !0), + n.nextTick(R, t, e))); + })(t, e), + 0 === e.pendingcb && + ((e.finished = !0), t.emit("finish"), e.autoDestroy)) + ) { + var i = t._readableState; + (!i || (i.autoDestroy && i.endEmitted)) && t.destroy(); + } + return r; + } + r(5717)(A, f), + (E.prototype.getBuffer = function () { + for (var t = this.bufferedRequest, e = []; t; ) + e.push(t), (t = t.next); + return e; + }), + (function () { + try { + Object.defineProperty(E.prototype, "buffer", { + get: s.deprecate( + function () { + return this.getBuffer(); + }, + "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", + "DEP0003" + ), + }); + } catch (t) {} + })(), + "function" == typeof Symbol && + Symbol.hasInstance && + "function" == typeof Function.prototype[Symbol.hasInstance] + ? ((a = Function.prototype[Symbol.hasInstance]), + Object.defineProperty(A, Symbol.hasInstance, { + value: function (t) { + return ( + !!a.call(this, t) || + (this === A && t && t._writableState instanceof E) + ); + }, + })) + : (a = function (t) { + return t instanceof this; + }), + (A.prototype.pipe = function () { + M(this, new m()); + }), + (A.prototype.write = function (t, e, r) { + var i, + o = this._writableState, + a = !1, + s = + !o.objectMode && ((i = t), u.isBuffer(i) || i instanceof h); + return ( + s && + !u.isBuffer(t) && + (t = (function (t) { + return u.from(t); + })(t)), + "function" == typeof e && ((r = e), (e = null)), + s ? (e = "buffer") : e || (e = o.defaultEncoding), + "function" != typeof r && (r = S), + o.ending + ? (function (t, e) { + var r = new w(); + M(t, r), n.nextTick(e, r); + })(this, r) + : (s || + (function (t, e, r, i) { + var o; + return ( + null === r + ? (o = new v()) + : "string" == typeof r || + e.objectMode || + (o = new p("chunk", ["string", "Buffer"], r)), + !o || (M(t, o), n.nextTick(i, o), !1) + ); + })(this, o, t, r)) && + (o.pendingcb++, + (a = (function (t, e, r, i, n, o) { + if (!r) { + var a = (function (t, e, r) { + return ( + t.objectMode || + !1 === t.decodeStrings || + "string" != typeof e || + (e = u.from(e, r)), + e + ); + })(e, i, n); + i !== a && ((r = !0), (n = "buffer"), (i = a)); + } + var s = e.objectMode ? 1 : i.length; + e.length += s; + var f = e.length < e.highWaterMark; + if ((f || (e.needDrain = !0), e.writing || e.corked)) { + var h = e.lastBufferedRequest; + (e.lastBufferedRequest = { + chunk: i, + encoding: n, + isBuf: r, + callback: o, + next: null, + }), + h + ? (h.next = e.lastBufferedRequest) + : (e.bufferedRequest = e.lastBufferedRequest), + (e.bufferedRequestCount += 1); + } else k(t, e, !1, s, i, n, o); + return f; + })(this, o, s, t, e, r))), + a + ); + }), + (A.prototype.cork = function () { + this._writableState.corked++; + }), + (A.prototype.uncork = function () { + var t = this._writableState; + t.corked && + (t.corked--, + t.writing || + t.corked || + t.bufferProcessing || + !t.bufferedRequest || + I(this, t)); + }), + (A.prototype.setDefaultEncoding = function (t) { + if ( + ("string" == typeof t && (t = t.toLowerCase()), + !( + [ + "hex", + "utf8", + "utf-8", + "ascii", + "binary", + "base64", + "ucs2", + "ucs-2", + "utf16le", + "utf-16le", + "raw", + ].indexOf((t + "").toLowerCase()) > -1 + )) + ) + throw new _(t); + return (this._writableState.defaultEncoding = t), this; + }), + Object.defineProperty(A.prototype, "writableBuffer", { + enumerable: !1, + get: function () { + return this._writableState && this._writableState.getBuffer(); + }, + }), + Object.defineProperty(A.prototype, "writableHighWaterMark", { + enumerable: !1, + get: function () { + return this._writableState.highWaterMark; + }, + }), + (A.prototype._write = function (t, e, r) { + r(new b("_write()")); + }), + (A.prototype._writev = null), + (A.prototype.end = function (t, e, r) { + var i = this._writableState; + return ( + "function" == typeof t + ? ((r = t), (t = null), (e = null)) + : "function" == typeof e && ((r = e), (e = null)), + null != t && this.write(t, e), + i.corked && ((i.corked = 1), this.uncork()), + i.ending || + (function (t, e, r) { + (e.ending = !0), + O(t, e), + r && (e.finished ? n.nextTick(r) : t.once("finish", r)), + (e.ended = !0), + (t.writable = !1); + })(this, i, r), + this + ); + }), + Object.defineProperty(A.prototype, "writableLength", { + enumerable: !1, + get: function () { + return this._writableState.length; + }, + }), + Object.defineProperty(A.prototype, "destroyed", { + enumerable: !1, + get: function () { + return ( + void 0 !== this._writableState && + this._writableState.destroyed + ); + }, + set: function (t) { + this._writableState && (this._writableState.destroyed = t); + }, + }), + (A.prototype.destroy = c.destroy), + (A.prototype._undestroy = c.undestroy), + (A.prototype._destroy = function (t, e) { + e(t); + }); + }, + 5850: (t, e, r) => { + "use strict"; + var i, + n = r(4155); + function o(t, e, r) { + return ( + e in t + ? Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (t[e] = r), + t + ); + } + var a = r(8610), + s = Symbol("lastResolve"), + f = Symbol("lastReject"), + u = Symbol("error"), + h = Symbol("ended"), + c = Symbol("lastPromise"), + d = Symbol("handlePromise"), + l = Symbol("stream"); + function p(t, e) { + return { value: t, done: e }; + } + function b(t) { + var e = t[s]; + if (null !== e) { + var r = t[l].read(); + null !== r && + ((t[c] = null), (t[s] = null), (t[f] = null), e(p(r, !1))); + } + } + function y(t) { + n.nextTick(b, t); + } + var m = Object.getPrototypeOf(function () {}), + g = Object.setPrototypeOf( + (o( + (i = { + get stream() { + return this[l]; + }, + next: function () { + var t = this, + e = this[u]; + if (null !== e) return Promise.reject(e); + if (this[h]) return Promise.resolve(p(void 0, !0)); + if (this[l].destroyed) + return new Promise(function (e, r) { + n.nextTick(function () { + t[u] ? r(t[u]) : e(p(void 0, !0)); + }); + }); + var r, + i = this[c]; + if (i) + r = new Promise( + (function (t, e) { + return function (r, i) { + t.then(function () { + e[h] ? r(p(void 0, !0)) : e[d](r, i); + }, i); + }; + })(i, this) + ); + else { + var o = this[l].read(); + if (null !== o) return Promise.resolve(p(o, !1)); + r = new Promise(this[d]); + } + return (this[c] = r), r; + }, + }), + Symbol.asyncIterator, + function () { + return this; + } + ), + o(i, "return", function () { + var t = this; + return new Promise(function (e, r) { + t[l].destroy(null, function (t) { + t ? r(t) : e(p(void 0, !0)); + }); + }); + }), + i), + m + ); + t.exports = function (t) { + var e, + r = Object.create( + g, + (o((e = {}), l, { value: t, writable: !0 }), + o(e, s, { value: null, writable: !0 }), + o(e, f, { value: null, writable: !0 }), + o(e, u, { value: null, writable: !0 }), + o(e, h, { value: t._readableState.endEmitted, writable: !0 }), + o(e, d, { + value: function (t, e) { + var i = r[l].read(); + i + ? ((r[c] = null), + (r[s] = null), + (r[f] = null), + t(p(i, !1))) + : ((r[s] = t), (r[f] = e)); + }, + writable: !0, + }), + e) + ); + return ( + (r[c] = null), + a(t, function (t) { + if (t && "ERR_STREAM_PREMATURE_CLOSE" !== t.code) { + var e = r[f]; + return ( + null !== e && + ((r[c] = null), (r[s] = null), (r[f] = null), e(t)), + void (r[u] = t) + ); + } + var i = r[s]; + null !== i && + ((r[c] = null), + (r[s] = null), + (r[f] = null), + i(p(void 0, !0))), + (r[h] = !0); + }), + t.on("readable", y.bind(null, r)), + r + ); + }; + }, + 7327: (t, e, r) => { + "use strict"; + function i(t, e) { + var r = Object.keys(t); + if (Object.getOwnPropertySymbols) { + var i = Object.getOwnPropertySymbols(t); + e && + (i = i.filter(function (e) { + return Object.getOwnPropertyDescriptor(t, e).enumerable; + })), + r.push.apply(r, i); + } + return r; + } + function n(t, e, r) { + return ( + e in t + ? Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (t[e] = r), + t + ); + } + function o(t, e) { + for (var r = 0; r < e.length; r++) { + var i = e[r]; + (i.enumerable = i.enumerable || !1), + (i.configurable = !0), + "value" in i && (i.writable = !0), + Object.defineProperty(t, i.key, i); + } + } + var a = r(8764).Buffer, + s = r(2361).inspect, + f = (s && s.custom) || "inspect"; + t.exports = (function () { + function t() { + !(function (t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); + })(this, t), + (this.head = null), + (this.tail = null), + (this.length = 0); + } + var e, r; + return ( + (e = t), + (r = [ + { + key: "push", + value: function (t) { + var e = { data: t, next: null }; + this.length > 0 ? (this.tail.next = e) : (this.head = e), + (this.tail = e), + ++this.length; + }, + }, + { + key: "unshift", + value: function (t) { + var e = { data: t, next: this.head }; + 0 === this.length && (this.tail = e), + (this.head = e), + ++this.length; + }, + }, + { + key: "shift", + value: function () { + if (0 !== this.length) { + var t = this.head.data; + return ( + 1 === this.length + ? (this.head = this.tail = null) + : (this.head = this.head.next), + --this.length, + t + ); + } + }, + }, + { + key: "clear", + value: function () { + (this.head = this.tail = null), (this.length = 0); + }, + }, + { + key: "join", + value: function (t) { + if (0 === this.length) return ""; + for (var e = this.head, r = "" + e.data; (e = e.next); ) + r += t + e.data; + return r; + }, + }, + { + key: "concat", + value: function (t) { + if (0 === this.length) return a.alloc(0); + for ( + var e, + r, + i, + n = a.allocUnsafe(t >>> 0), + o = this.head, + s = 0; + o; + + ) + (e = o.data), + (r = n), + (i = s), + a.prototype.copy.call(e, r, i), + (s += o.data.length), + (o = o.next); + return n; + }, + }, + { + key: "consume", + value: function (t, e) { + var r; + return ( + t < this.head.data.length + ? ((r = this.head.data.slice(0, t)), + (this.head.data = this.head.data.slice(t))) + : (r = + t === this.head.data.length + ? this.shift() + : e + ? this._getString(t) + : this._getBuffer(t)), + r + ); + }, + }, + { + key: "first", + value: function () { + return this.head.data; + }, + }, + { + key: "_getString", + value: function (t) { + var e = this.head, + r = 1, + i = e.data; + for (t -= i.length; (e = e.next); ) { + var n = e.data, + o = t > n.length ? n.length : t; + if ( + (o === n.length ? (i += n) : (i += n.slice(0, t)), + 0 == (t -= o)) + ) { + o === n.length + ? (++r, + e.next + ? (this.head = e.next) + : (this.head = this.tail = null)) + : ((this.head = e), (e.data = n.slice(o))); + break; + } + ++r; + } + return (this.length -= r), i; + }, + }, + { + key: "_getBuffer", + value: function (t) { + var e = a.allocUnsafe(t), + r = this.head, + i = 1; + for (r.data.copy(e), t -= r.data.length; (r = r.next); ) { + var n = r.data, + o = t > n.length ? n.length : t; + if ((n.copy(e, e.length - t, 0, o), 0 == (t -= o))) { + o === n.length + ? (++i, + r.next + ? (this.head = r.next) + : (this.head = this.tail = null)) + : ((this.head = r), (r.data = n.slice(o))); + break; + } + ++i; + } + return (this.length -= i), e; + }, + }, + { + key: f, + value: function (t, e) { + return s( + this, + (function (t) { + for (var e = 1; e < arguments.length; e++) { + var r = null != arguments[e] ? arguments[e] : {}; + e % 2 + ? i(Object(r), !0).forEach(function (e) { + n(t, e, r[e]); + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties( + t, + Object.getOwnPropertyDescriptors(r) + ) + : i(Object(r)).forEach(function (e) { + Object.defineProperty( + t, + e, + Object.getOwnPropertyDescriptor(r, e) + ); + }); + } + return t; + })({}, e, { depth: 0, customInspect: !1 }) + ); + }, + }, + ]), + r && o(e.prototype, r), + t + ); + })(); + }, + 1195: (t, e, r) => { + "use strict"; + var i = r(4155); + function n(t, e) { + a(t, e), o(t); + } + function o(t) { + (t._writableState && !t._writableState.emitClose) || + (t._readableState && !t._readableState.emitClose) || + t.emit("close"); + } + function a(t, e) { + t.emit("error", e); + } + t.exports = { + destroy: function (t, e) { + var r = this, + s = this._readableState && this._readableState.destroyed, + f = this._writableState && this._writableState.destroyed; + return s || f + ? (e + ? e(t) + : t && + (this._writableState + ? this._writableState.errorEmitted || + ((this._writableState.errorEmitted = !0), + i.nextTick(a, this, t)) + : i.nextTick(a, this, t)), + this) + : (this._readableState && + (this._readableState.destroyed = !0), + this._writableState && (this._writableState.destroyed = !0), + this._destroy(t || null, function (t) { + !e && t + ? r._writableState + ? r._writableState.errorEmitted + ? i.nextTick(o, r) + : ((r._writableState.errorEmitted = !0), + i.nextTick(n, r, t)) + : i.nextTick(n, r, t) + : e + ? (i.nextTick(o, r), e(t)) + : i.nextTick(o, r); + }), + this); + }, + undestroy: function () { + this._readableState && + ((this._readableState.destroyed = !1), + (this._readableState.reading = !1), + (this._readableState.ended = !1), + (this._readableState.endEmitted = !1)), + this._writableState && + ((this._writableState.destroyed = !1), + (this._writableState.ended = !1), + (this._writableState.ending = !1), + (this._writableState.finalCalled = !1), + (this._writableState.prefinished = !1), + (this._writableState.finished = !1), + (this._writableState.errorEmitted = !1)); + }, + errorOrDestroy: function (t, e) { + var r = t._readableState, + i = t._writableState; + (r && r.autoDestroy) || (i && i.autoDestroy) + ? t.destroy(e) + : t.emit("error", e); + }, + }; + }, + 8610: (t, e, r) => { + "use strict"; + var i = r(4281).q.ERR_STREAM_PREMATURE_CLOSE; + function n() {} + t.exports = function t(e, r, o) { + if ("function" == typeof r) return t(e, null, r); + r || (r = {}), + (o = (function (t) { + var e = !1; + return function () { + if (!e) { + e = !0; + for ( + var r = arguments.length, i = new Array(r), n = 0; + n < r; + n++ + ) + i[n] = arguments[n]; + t.apply(this, i); + } + }; + })(o || n)); + var a = r.readable || (!1 !== r.readable && e.readable), + s = r.writable || (!1 !== r.writable && e.writable), + f = function () { + e.writable || h(); + }, + u = e._writableState && e._writableState.finished, + h = function () { + (s = !1), (u = !0), a || o.call(e); + }, + c = e._readableState && e._readableState.endEmitted, + d = function () { + (a = !1), (c = !0), s || o.call(e); + }, + l = function (t) { + o.call(e, t); + }, + p = function () { + var t; + return a && !c + ? ((e._readableState && e._readableState.ended) || + (t = new i()), + o.call(e, t)) + : s && !u + ? ((e._writableState && e._writableState.ended) || + (t = new i()), + o.call(e, t)) + : void 0; + }, + b = function () { + e.req.on("finish", h); + }; + return ( + (function (t) { + return t.setHeader && "function" == typeof t.abort; + })(e) + ? (e.on("complete", h), + e.on("abort", p), + e.req ? b() : e.on("request", b)) + : s && + !e._writableState && + (e.on("end", f), e.on("close", f)), + e.on("end", d), + e.on("finish", h), + !1 !== r.error && e.on("error", l), + e.on("close", p), + function () { + e.removeListener("complete", h), + e.removeListener("abort", p), + e.removeListener("request", b), + e.req && e.req.removeListener("finish", h), + e.removeListener("end", f), + e.removeListener("close", f), + e.removeListener("finish", h), + e.removeListener("end", d), + e.removeListener("error", l), + e.removeListener("close", p); + } + ); + }; + }, + 5167: (t) => { + t.exports = function () { + throw new Error("Readable.from is not available in the browser"); + }; + }, + 9946: (t, e, r) => { + "use strict"; + var i, + n = r(4281).q, + o = n.ERR_MISSING_ARGS, + a = n.ERR_STREAM_DESTROYED; + function s(t) { + if (t) throw t; + } + function f(t, e, n, o) { + o = (function (t) { + var e = !1; + return function () { + e || ((e = !0), t.apply(void 0, arguments)); + }; + })(o); + var s = !1; + t.on("close", function () { + s = !0; + }), + void 0 === i && (i = r(8610)), + i(t, { readable: e, writable: n }, function (t) { + if (t) return o(t); + (s = !0), o(); + }); + var f = !1; + return function (e) { + if (!s && !f) + return ( + (f = !0), + (function (t) { + return t.setHeader && "function" == typeof t.abort; + })(t) + ? t.abort() + : "function" == typeof t.destroy + ? t.destroy() + : void o(e || new a("pipe")) + ); + }; + } + function u(t) { + t(); + } + function h(t, e) { + return t.pipe(e); + } + function c(t) { + return t.length + ? "function" != typeof t[t.length - 1] + ? s + : t.pop() + : s; + } + t.exports = function () { + for ( + var t = arguments.length, e = new Array(t), r = 0; + r < t; + r++ + ) + e[r] = arguments[r]; + var i, + n = c(e); + if ((Array.isArray(e[0]) && (e = e[0]), e.length < 2)) + throw new o("streams"); + var a = e.map(function (t, r) { + var o = r < e.length - 1; + return f(t, o, r > 0, function (t) { + i || (i = t), t && a.forEach(u), o || (a.forEach(u), n(i)); + }); + }); + return e.reduce(h); + }; + }, + 2457: (t, e, r) => { + "use strict"; + var i = r(4281).q.ERR_INVALID_OPT_VALUE; + t.exports = { + getHighWaterMark: function (t, e, r, n) { + var o = (function (t, e, r) { + return null != t.highWaterMark + ? t.highWaterMark + : e + ? t[r] + : null; + })(e, n, r); + if (null != o) { + if (!isFinite(o) || Math.floor(o) !== o || o < 0) + throw new i(n ? r : "highWaterMark", o); + return Math.floor(o); + } + return t.objectMode ? 16 : 16384; + }, + }; + }, + 2503: (t, e, r) => { + t.exports = r(7187).EventEmitter; + }, + 8473: (t, e, r) => { + ((e = t.exports = r(9481)).Stream = e), + (e.Readable = e), + (e.Writable = r(4229)), + (e.Duplex = r(6753)), + (e.Transform = r(4605)), + (e.PassThrough = r(2725)), + (e.finished = r(8610)), + (e.pipeline = r(9946)); + }, + 9785: (t, e, r) => { + "use strict"; + var i = r(8764).Buffer, + n = r(5717), + o = r(3349), + a = new Array(16), + s = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, + 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, + 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, + 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, + 11, 6, 15, 13, + ], + f = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, + 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, + 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, + 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, + 14, 0, 3, 9, 11, + ], + u = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, + 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, + 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, + 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, + 13, 14, 11, 8, 5, 6, + ], + h = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, + 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, + 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, + 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, + 13, 6, 5, 15, 13, 11, 11, + ], + c = [0, 1518500249, 1859775393, 2400959708, 2840853838], + d = [1352829926, 1548603684, 1836072691, 2053994217, 0]; + function l() { + o.call(this, 64), + (this._a = 1732584193), + (this._b = 4023233417), + (this._c = 2562383102), + (this._d = 271733878), + (this._e = 3285377520); + } + function p(t, e) { + return (t << e) | (t >>> (32 - e)); + } + function b(t, e, r, i, n, o, a, s) { + return (p((t + (e ^ r ^ i) + o + a) | 0, s) + n) | 0; + } + function y(t, e, r, i, n, o, a, s) { + return (p((t + ((e & r) | (~e & i)) + o + a) | 0, s) + n) | 0; + } + function m(t, e, r, i, n, o, a, s) { + return (p((t + ((e | ~r) ^ i) + o + a) | 0, s) + n) | 0; + } + function g(t, e, r, i, n, o, a, s) { + return (p((t + ((e & i) | (r & ~i)) + o + a) | 0, s) + n) | 0; + } + function v(t, e, r, i, n, o, a, s) { + return (p((t + (e ^ (r | ~i)) + o + a) | 0, s) + n) | 0; + } + n(l, o), + (l.prototype._update = function () { + for (var t = a, e = 0; e < 16; ++e) + t[e] = this._block.readInt32LE(4 * e); + for ( + var r = 0 | this._a, + i = 0 | this._b, + n = 0 | this._c, + o = 0 | this._d, + l = 0 | this._e, + w = 0 | this._a, + _ = 0 | this._b, + M = 0 | this._c, + S = 0 | this._d, + E = 0 | this._e, + A = 0; + A < 80; + A += 1 + ) { + var k, x; + A < 16 + ? ((k = b(r, i, n, o, l, t[s[A]], c[0], u[A])), + (x = v(w, _, M, S, E, t[f[A]], d[0], h[A]))) + : A < 32 + ? ((k = y(r, i, n, o, l, t[s[A]], c[1], u[A])), + (x = g(w, _, M, S, E, t[f[A]], d[1], h[A]))) + : A < 48 + ? ((k = m(r, i, n, o, l, t[s[A]], c[2], u[A])), + (x = m(w, _, M, S, E, t[f[A]], d[2], h[A]))) + : A < 64 + ? ((k = g(r, i, n, o, l, t[s[A]], c[3], u[A])), + (x = y(w, _, M, S, E, t[f[A]], d[3], h[A]))) + : ((k = v(r, i, n, o, l, t[s[A]], c[4], u[A])), + (x = b(w, _, M, S, E, t[f[A]], d[4], h[A]))), + (r = l), + (l = o), + (o = p(n, 10)), + (n = i), + (i = k), + (w = E), + (E = S), + (S = p(M, 10)), + (M = _), + (_ = x); + } + var I = (this._b + n + S) | 0; + (this._b = (this._c + o + E) | 0), + (this._c = (this._d + l + w) | 0), + (this._d = (this._e + r + _) | 0), + (this._e = (this._a + i + M) | 0), + (this._a = I); + }), + (l.prototype._digest = function () { + (this._block[this._blockOffset++] = 128), + this._blockOffset > 56 && + (this._block.fill(0, this._blockOffset, 64), + this._update(), + (this._blockOffset = 0)), + this._block.fill(0, this._blockOffset, 56), + this._block.writeUInt32LE(this._length[0], 56), + this._block.writeUInt32LE(this._length[1], 60), + this._update(); + var t = i.alloc ? i.alloc(20) : new i(20); + return ( + t.writeInt32LE(this._a, 0), + t.writeInt32LE(this._b, 4), + t.writeInt32LE(this._c, 8), + t.writeInt32LE(this._d, 12), + t.writeInt32LE(this._e, 16), + t + ); + }), + (t.exports = l); + }, + 9509: (t, e, r) => { + var i = r(8764), + n = i.Buffer; + function o(t, e) { + for (var r in t) e[r] = t[r]; + } + function a(t, e, r) { + return n(t, e, r); + } + n.from && n.alloc && n.allocUnsafe && n.allocUnsafeSlow + ? (t.exports = i) + : (o(i, e), (e.Buffer = a)), + (a.prototype = Object.create(n.prototype)), + o(n, a), + (a.from = function (t, e, r) { + if ("number" == typeof t) + throw new TypeError("Argument must not be a number"); + return n(t, e, r); + }), + (a.alloc = function (t, e, r) { + if ("number" != typeof t) + throw new TypeError("Argument must be a number"); + var i = n(t); + return ( + void 0 !== e + ? "string" == typeof r + ? i.fill(e, r) + : i.fill(e) + : i.fill(0), + i + ); + }), + (a.allocUnsafe = function (t) { + if ("number" != typeof t) + throw new TypeError("Argument must be a number"); + return n(t); + }), + (a.allocUnsafeSlow = function (t) { + if ("number" != typeof t) + throw new TypeError("Argument must be a number"); + return i.SlowBuffer(t); + }); + }, + 2399: (t, e, r) => { + "use strict"; + var i, + n = r(4155), + o = r(8764), + a = o.Buffer, + s = {}; + for (i in o) + o.hasOwnProperty(i) && + "SlowBuffer" !== i && + "Buffer" !== i && + (s[i] = o[i]); + var f = (s.Buffer = {}); + for (i in a) + a.hasOwnProperty(i) && + "allocUnsafe" !== i && + "allocUnsafeSlow" !== i && + (f[i] = a[i]); + if ( + ((s.Buffer.prototype = a.prototype), + (f.from && f.from !== Uint8Array.from) || + (f.from = function (t, e, r) { + if ("number" == typeof t) + throw new TypeError( + 'The "value" argument must not be of type number. Received type ' + + typeof t + ); + if (t && void 0 === t.length) + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + + typeof t + ); + return a(t, e, r); + }), + f.alloc || + (f.alloc = function (t, e, r) { + if ("number" != typeof t) + throw new TypeError( + 'The "size" argument must be of type number. Received type ' + + typeof t + ); + if (t < 0 || t >= 2 * (1 << 30)) + throw new RangeError( + 'The value "' + t + '" is invalid for option "size"' + ); + var i = a(t); + return ( + e && 0 !== e.length + ? "string" == typeof r + ? i.fill(e, r) + : i.fill(e) + : i.fill(0), + i + ); + }), + !s.kStringMaxLength) + ) + try { + s.kStringMaxLength = n.binding("buffer").kStringMaxLength; + } catch (t) {} + s.constants || + ((s.constants = { MAX_LENGTH: s.kMaxLength }), + s.kStringMaxLength && + (s.constants.MAX_STRING_LENGTH = s.kStringMaxLength)), + (t.exports = s); + }, + 7221: (t, e, r) => { + t.exports = r(9119)(r(8573)); + }, + 8573: (t, e, r) => { + const i = new (0, r(6266).ec)("secp256k1"), + n = i.curve, + o = n.n.constructor; + function a(t) { + const e = t[0]; + switch (e) { + case 2: + case 3: + return 33 !== t.length + ? null + : (function (t, e) { + let r = new o(e); + if (r.cmp(n.p) >= 0) return null; + r = r.toRed(n.red); + let a = r.redSqr().redIMul(r).redIAdd(n.b).redSqrt(); + return ( + (3 === t) !== a.isOdd() && (a = a.redNeg()), + i.keyPair({ pub: { x: r, y: a } }) + ); + })(e, t.subarray(1, 33)); + case 4: + case 6: + case 7: + return 65 !== t.length + ? null + : (function (t, e, r) { + let a = new o(e), + s = new o(r); + if (a.cmp(n.p) >= 0 || s.cmp(n.p) >= 0) return null; + if ( + ((a = a.toRed(n.red)), + (s = s.toRed(n.red)), + (6 === t || 7 === t) && s.isOdd() !== (7 === t)) + ) + return null; + const f = a.redSqr().redIMul(a); + return s.redSqr().redISub(f.redIAdd(n.b)).isZero() + ? i.keyPair({ pub: { x: a, y: s } }) + : null; + })(e, t.subarray(1, 33), t.subarray(33, 65)); + default: + return null; + } + } + function s(t, e) { + const r = e.encode(null, 33 === t.length); + for (let e = 0; e < t.length; ++e) t[e] = r[e]; + } + t.exports = { + contextRandomize: () => 0, + privateKeyVerify(t) { + const e = new o(t); + return e.cmp(n.n) < 0 && !e.isZero() ? 0 : 1; + }, + privateKeyNegate(t) { + const e = new o(t), + r = n.n.sub(e).umod(n.n).toArrayLike(Uint8Array, "be", 32); + return t.set(r), 0; + }, + privateKeyTweakAdd(t, e) { + const r = new o(e); + if (r.cmp(n.n) >= 0) return 1; + if ( + (r.iadd(new o(t)), r.cmp(n.n) >= 0 && r.isub(n.n), r.isZero()) + ) + return 1; + const i = r.toArrayLike(Uint8Array, "be", 32); + return t.set(i), 0; + }, + privateKeyTweakMul(t, e) { + let r = new o(e); + if (r.cmp(n.n) >= 0 || r.isZero()) return 1; + r.imul(new o(t)), r.cmp(n.n) >= 0 && (r = r.umod(n.n)); + const i = r.toArrayLike(Uint8Array, "be", 32); + return t.set(i), 0; + }, + publicKeyVerify: (t) => (null === a(t) ? 1 : 0), + publicKeyCreate(t, e) { + const r = new o(e); + return r.cmp(n.n) >= 0 || r.isZero() + ? 1 + : (s(t, i.keyFromPrivate(e).getPublic()), 0); + }, + publicKeyConvert(t, e) { + const r = a(e); + return null === r ? 1 : (s(t, r.getPublic()), 0); + }, + publicKeyNegate(t, e) { + const r = a(e); + if (null === r) return 1; + const i = r.getPublic(); + return (i.y = i.y.redNeg()), s(t, i), 0; + }, + publicKeyCombine(t, e) { + const r = new Array(e.length); + for (let t = 0; t < e.length; ++t) + if (((r[t] = a(e[t])), null === r[t])) return 1; + let i = r[0].getPublic(); + for (let t = 1; t < r.length; ++t) i = i.add(r[t].pub); + return i.isInfinity() ? 2 : (s(t, i), 0); + }, + publicKeyTweakAdd(t, e, r) { + const i = a(e); + if (null === i) return 1; + if ((r = new o(r)).cmp(n.n) >= 0) return 2; + const f = i.getPublic().add(n.g.mul(r)); + return f.isInfinity() ? 2 : (s(t, f), 0); + }, + publicKeyTweakMul(t, e, r) { + const i = a(e); + return null === i + ? 1 + : (r = new o(r)).cmp(n.n) >= 0 || r.isZero() + ? 2 + : (s(t, i.getPublic().mul(r)), 0); + }, + signatureNormalize(t) { + const e = new o(t.subarray(0, 32)), + r = new o(t.subarray(32, 64)); + return e.cmp(n.n) >= 0 || r.cmp(n.n) >= 0 + ? 1 + : (1 === r.cmp(i.nh) && + t.set(n.n.sub(r).toArrayLike(Uint8Array, "be", 32), 32), + 0); + }, + signatureExport(t, e) { + const r = e.subarray(0, 32), + i = e.subarray(32, 64); + if (new o(r).cmp(n.n) >= 0) return 1; + if (new o(i).cmp(n.n) >= 0) return 1; + const { output: a } = t; + let s = a.subarray(4, 37); + (s[0] = 0), s.set(r, 1); + let f = 33, + u = 0; + for (; f > 1 && 0 === s[u] && !(128 & s[u + 1]); --f, ++u); + if (((s = s.subarray(u)), 128 & s[0])) return 1; + if (f > 1 && 0 === s[0] && !(128 & s[1])) return 1; + let h = a.subarray(39, 72); + (h[0] = 0), h.set(i, 1); + let c = 33, + d = 0; + for (; c > 1 && 0 === h[d] && !(128 & h[d + 1]); --c, ++d); + return ( + (h = h.subarray(d)), + 128 & h[0] || (c > 1 && 0 === h[0] && !(128 & h[1])) + ? 1 + : ((t.outputlen = 6 + f + c), + (a[0] = 48), + (a[1] = t.outputlen - 2), + (a[2] = 2), + (a[3] = s.length), + a.set(s, 4), + (a[4 + f] = 2), + (a[5 + f] = h.length), + a.set(h, 6 + f), + 0) + ); + }, + signatureImport(t, e) { + if (e.length < 8) return 1; + if (e.length > 72) return 1; + if (48 !== e[0]) return 1; + if (e[1] !== e.length - 2) return 1; + if (2 !== e[2]) return 1; + const r = e[3]; + if (0 === r) return 1; + if (5 + r >= e.length) return 1; + if (2 !== e[4 + r]) return 1; + const i = e[5 + r]; + if (0 === i) return 1; + if (6 + r + i !== e.length) return 1; + if (128 & e[4]) return 1; + if (r > 1 && 0 === e[4] && !(128 & e[5])) return 1; + if (128 & e[r + 6]) return 1; + if (i > 1 && 0 === e[r + 6] && !(128 & e[r + 7])) return 1; + let a = e.subarray(4, 4 + r); + if ( + (33 === a.length && 0 === a[0] && (a = a.subarray(1)), + a.length > 32) + ) + return 1; + let s = e.subarray(6 + r); + if ( + (33 === s.length && 0 === s[0] && (s = s.slice(1)), + s.length > 32) + ) + throw new Error("S length is too long"); + let f = new o(a); + f.cmp(n.n) >= 0 && (f = new o(0)); + let u = new o(e.subarray(6 + r)); + return ( + u.cmp(n.n) >= 0 && (u = new o(0)), + t.set(f.toArrayLike(Uint8Array, "be", 32), 0), + t.set(u.toArrayLike(Uint8Array, "be", 32), 32), + 0 + ); + }, + ecdsaSign(t, e, r, a, s) { + if (s) { + const t = s; + s = (i) => { + const n = t(e, r, null, a, i); + if (!(n instanceof Uint8Array && 32 === n.length)) + throw new Error("This is the way"); + return new o(n); + }; + } + const f = new o(r); + if (f.cmp(n.n) >= 0 || f.isZero()) return 1; + let u; + try { + u = i.sign(e, r, { canonical: !0, k: s, pers: a }); + } catch (t) { + return 1; + } + return ( + t.signature.set(u.r.toArrayLike(Uint8Array, "be", 32), 0), + t.signature.set(u.s.toArrayLike(Uint8Array, "be", 32), 32), + (t.recid = u.recoveryParam), + 0 + ); + }, + ecdsaVerify(t, e, r) { + const s = { r: t.subarray(0, 32), s: t.subarray(32, 64) }, + f = new o(s.r), + u = new o(s.s); + if (f.cmp(n.n) >= 0 || u.cmp(n.n) >= 0) return 1; + if (1 === u.cmp(i.nh) || f.isZero() || u.isZero()) return 3; + const h = a(r); + if (null === h) return 2; + const c = h.getPublic(); + return i.verify(e, s, c) ? 0 : 3; + }, + ecdsaRecover(t, e, r, a) { + const f = { r: e.slice(0, 32), s: e.slice(32, 64) }, + u = new o(f.r), + h = new o(f.s); + if (u.cmp(n.n) >= 0 || h.cmp(n.n) >= 0) return 1; + if (u.isZero() || h.isZero()) return 2; + let c; + try { + c = i.recoverPubKey(a, f, r); + } catch (t) { + return 2; + } + return s(t, c), 0; + }, + ecdh(t, e, r, s, f, u, h) { + const c = a(e); + if (null === c) return 1; + const d = new o(r); + if (d.cmp(n.n) >= 0 || d.isZero()) return 2; + const l = c.getPublic().mul(d); + if (void 0 === f) { + const e = l.encode(null, !0), + r = i.hash().update(e).digest(); + for (let e = 0; e < 32; ++e) t[e] = r[e]; + } else { + u || (u = new Uint8Array(32)); + const e = l.getX().toArray("be", 32); + for (let t = 0; t < 32; ++t) u[t] = e[t]; + h || (h = new Uint8Array(32)); + const r = l.getY().toArray("be", 32); + for (let t = 0; t < 32; ++t) h[t] = r[t]; + const i = f(u, h, s); + if (!(i instanceof Uint8Array && i.length === t.length)) + return 2; + t.set(i); + } + return 0; + }, + }; + }, + 9119: (t) => { + const e = "Impossible case. Please create issue.", + r = + "The tweak was out of range or the resulted private key is invalid", + i = "The tweak was out of range or equal to zero", + n = "Public Key could not be parsed", + o = "Public Key serialization error", + a = "Signature could not be parsed"; + function s(t, e) { + if (!t) throw new Error(e); + } + function f(t, e, r) { + if ( + (s( + e instanceof Uint8Array, + `Expected ${t} to be an Uint8Array` + ), + void 0 !== r) + ) + if (Array.isArray(r)) { + const i = `Expected ${t} to be an Uint8Array with length [${r.join( + ", " + )}]`; + s(r.includes(e.length), i); + } else { + const i = `Expected ${t} to be an Uint8Array with length ${r}`; + s(e.length === r, i); + } + } + function u(t) { + s("Boolean" === c(t), "Expected compressed to be a Boolean"); + } + function h(t = (t) => new Uint8Array(t), e) { + return "function" == typeof t && (t = t(e)), f("output", t, e), t; + } + function c(t) { + return Object.prototype.toString.call(t).slice(8, -1); + } + t.exports = (t) => ({ + contextRandomize(e) { + if ( + (s( + null === e || e instanceof Uint8Array, + "Expected seed to be an Uint8Array or null" + ), + null !== e && f("seed", e, 32), + 1 === t.contextRandomize(e)) + ) + throw new Error("Unknow error on context randomization"); + }, + privateKeyVerify: (e) => ( + f("private key", e, 32), 0 === t.privateKeyVerify(e) + ), + privateKeyNegate(r) { + switch ((f("private key", r, 32), t.privateKeyNegate(r))) { + case 0: + return r; + case 1: + throw new Error(e); + } + }, + privateKeyTweakAdd(e, i) { + switch ( + (f("private key", e, 32), + f("tweak", i, 32), + t.privateKeyTweakAdd(e, i)) + ) { + case 0: + return e; + case 1: + throw new Error(r); + } + }, + privateKeyTweakMul(e, r) { + switch ( + (f("private key", e, 32), + f("tweak", r, 32), + t.privateKeyTweakMul(e, r)) + ) { + case 0: + return e; + case 1: + throw new Error(i); + } + }, + publicKeyVerify: (e) => ( + f("public key", e, [33, 65]), 0 === t.publicKeyVerify(e) + ), + publicKeyCreate(e, r = !0, i) { + switch ( + (f("private key", e, 32), + u(r), + (i = h(i, r ? 33 : 65)), + t.publicKeyCreate(i, e)) + ) { + case 0: + return i; + case 1: + throw new Error("Private Key is invalid"); + case 2: + throw new Error(o); + } + }, + publicKeyConvert(e, r = !0, i) { + switch ( + (f("public key", e, [33, 65]), + u(r), + (i = h(i, r ? 33 : 65)), + t.publicKeyConvert(i, e)) + ) { + case 0: + return i; + case 1: + throw new Error(n); + case 2: + throw new Error(o); + } + }, + publicKeyNegate(r, i = !0, a) { + switch ( + (f("public key", r, [33, 65]), + u(i), + (a = h(a, i ? 33 : 65)), + t.publicKeyNegate(a, r)) + ) { + case 0: + return a; + case 1: + throw new Error(n); + case 2: + throw new Error(e); + case 3: + throw new Error(o); + } + }, + publicKeyCombine(e, r = !0, i) { + s(Array.isArray(e), "Expected public keys to be an Array"), + s( + e.length > 0, + "Expected public keys array will have more than zero items" + ); + for (const t of e) f("public key", t, [33, 65]); + switch ( + (u(r), (i = h(i, r ? 33 : 65)), t.publicKeyCombine(i, e)) + ) { + case 0: + return i; + case 1: + throw new Error(n); + case 2: + throw new Error("The sum of the public keys is not valid"); + case 3: + throw new Error(o); + } + }, + publicKeyTweakAdd(e, i, o = !0, a) { + switch ( + (f("public key", e, [33, 65]), + f("tweak", i, 32), + u(o), + (a = h(a, o ? 33 : 65)), + t.publicKeyTweakAdd(a, e, i)) + ) { + case 0: + return a; + case 1: + throw new Error(n); + case 2: + throw new Error(r); + } + }, + publicKeyTweakMul(e, r, o = !0, a) { + switch ( + (f("public key", e, [33, 65]), + f("tweak", r, 32), + u(o), + (a = h(a, o ? 33 : 65)), + t.publicKeyTweakMul(a, e, r)) + ) { + case 0: + return a; + case 1: + throw new Error(n); + case 2: + throw new Error(i); + } + }, + signatureNormalize(e) { + switch ((f("signature", e, 64), t.signatureNormalize(e))) { + case 0: + return e; + case 1: + throw new Error(a); + } + }, + signatureExport(r, i) { + f("signature", r, 64); + const n = { output: (i = h(i, 72)), outputlen: 72 }; + switch (t.signatureExport(n, r)) { + case 0: + return i.slice(0, n.outputlen); + case 1: + throw new Error(a); + case 2: + throw new Error(e); + } + }, + signatureImport(r, i) { + switch ( + (f("signature", r), (i = h(i, 64)), t.signatureImport(i, r)) + ) { + case 0: + return i; + case 1: + throw new Error(a); + case 2: + throw new Error(e); + } + }, + ecdsaSign(r, i, n = {}, o) { + f("message", r, 32), + f("private key", i, 32), + s("Object" === c(n), "Expected options to be an Object"), + void 0 !== n.data && f("options.data", n.data), + void 0 !== n.noncefn && + s( + "Function" === c(n.noncefn), + "Expected options.noncefn to be a Function" + ); + const a = { signature: (o = h(o, 64)), recid: null }; + switch (t.ecdsaSign(a, r, i, n.data, n.noncefn)) { + case 0: + return a; + case 1: + throw new Error( + "The nonce generation function failed, or the private key was invalid" + ); + case 2: + throw new Error(e); + } + }, + ecdsaVerify(e, r, i) { + switch ( + (f("signature", e, 64), + f("message", r, 32), + f("public key", i, [33, 65]), + t.ecdsaVerify(e, r, i)) + ) { + case 0: + return !0; + case 3: + return !1; + case 1: + throw new Error(a); + case 2: + throw new Error(n); + } + }, + ecdsaRecover(r, i, n, o = !0, d) { + switch ( + (f("signature", r, 64), + s( + "Number" === c(i) && i >= 0 && i <= 3, + "Expected recovery id to be a Number within interval [0, 3]" + ), + f("message", n, 32), + u(o), + (d = h(d, o ? 33 : 65)), + t.ecdsaRecover(d, r, i, n)) + ) { + case 0: + return d; + case 1: + throw new Error(a); + case 2: + throw new Error("Public key could not be recover"); + case 3: + throw new Error(e); + } + }, + ecdh(e, r, i = {}, o) { + switch ( + (f("public key", e, [33, 65]), + f("private key", r, 32), + s("Object" === c(i), "Expected options to be an Object"), + void 0 !== i.data && f("options.data", i.data), + void 0 !== i.hashfn + ? (s( + "Function" === c(i.hashfn), + "Expected options.hashfn to be a Function" + ), + void 0 !== i.xbuf && f("options.xbuf", i.xbuf, 32), + void 0 !== i.ybuf && f("options.ybuf", i.ybuf, 32), + f("output", o)) + : (o = h(o, 32)), + t.ecdh(o, e, r, i.data, i.hashfn, i.xbuf, i.ybuf)) + ) { + case 0: + return o; + case 1: + throw new Error(n); + case 2: + throw new Error("Scalar was invalid (zero or overflow)"); + } + }, + }); + }, + 4189: (t, e, r) => { + var i = r(9509).Buffer; + function n(t, e) { + (this._block = i.alloc(t)), + (this._finalSize = e), + (this._blockSize = t), + (this._len = 0); + } + (n.prototype.update = function (t, e) { + "string" == typeof t && ((e = e || "utf8"), (t = i.from(t, e))); + for ( + var r = this._block, + n = this._blockSize, + o = t.length, + a = this._len, + s = 0; + s < o; + + ) { + for ( + var f = a % n, u = Math.min(o - s, n - f), h = 0; + h < u; + h++ + ) + r[f + h] = t[s + h]; + (s += u), (a += u) % n == 0 && this._update(r); + } + return (this._len += o), this; + }), + (n.prototype.digest = function (t) { + var e = this._len % this._blockSize; + (this._block[e] = 128), + this._block.fill(0, e + 1), + e >= this._finalSize && + (this._update(this._block), this._block.fill(0)); + var r = 8 * this._len; + if (r <= 4294967295) + this._block.writeUInt32BE(r, this._blockSize - 4); + else { + var i = (4294967295 & r) >>> 0, + n = (r - i) / 4294967296; + this._block.writeUInt32BE(n, this._blockSize - 8), + this._block.writeUInt32BE(i, this._blockSize - 4); + } + this._update(this._block); + var o = this._hash(); + return t ? o.toString(t) : o; + }), + (n.prototype._update = function () { + throw new Error("_update must be implemented by subclass"); + }), + (t.exports = n); + }, + 9072: (t, e, r) => { + var i = (t.exports = function (t) { + t = t.toLowerCase(); + var e = i[t]; + if (!e) + throw new Error( + t + " is not supported (we accept pull requests)" + ); + return new e(); + }); + (i.sha = r(4448)), + (i.sha1 = r(8336)), + (i.sha224 = r(8432)), + (i.sha256 = r(7499)), + (i.sha384 = r(1686)), + (i.sha512 = r(7816)); + }, + 4448: (t, e, r) => { + var i = r(5717), + n = r(4189), + o = r(9509).Buffer, + a = [1518500249, 1859775393, -1894007588, -899497514], + s = new Array(80); + function f() { + this.init(), (this._w = s), n.call(this, 64, 56); + } + function u(t) { + return (t << 30) | (t >>> 2); + } + function h(t, e, r, i) { + return 0 === t + ? (e & r) | (~e & i) + : 2 === t + ? (e & r) | (e & i) | (r & i) + : e ^ r ^ i; + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._a = 1732584193), + (this._b = 4023233417), + (this._c = 2562383102), + (this._d = 271733878), + (this._e = 3285377520), + this + ); + }), + (f.prototype._update = function (t) { + for ( + var e, + r = this._w, + i = 0 | this._a, + n = 0 | this._b, + o = 0 | this._c, + s = 0 | this._d, + f = 0 | this._e, + c = 0; + c < 16; + ++c + ) + r[c] = t.readInt32BE(4 * c); + for (; c < 80; ++c) + r[c] = r[c - 3] ^ r[c - 8] ^ r[c - 14] ^ r[c - 16]; + for (var d = 0; d < 80; ++d) { + var l = ~~(d / 20), + p = + 0 | + ((((e = i) << 5) | (e >>> 27)) + + h(l, n, o, s) + + f + + r[d] + + a[l]); + (f = s), (s = o), (o = u(n)), (n = i), (i = p); + } + (this._a = (i + this._a) | 0), + (this._b = (n + this._b) | 0), + (this._c = (o + this._c) | 0), + (this._d = (s + this._d) | 0), + (this._e = (f + this._e) | 0); + }), + (f.prototype._hash = function () { + var t = o.allocUnsafe(20); + return ( + t.writeInt32BE(0 | this._a, 0), + t.writeInt32BE(0 | this._b, 4), + t.writeInt32BE(0 | this._c, 8), + t.writeInt32BE(0 | this._d, 12), + t.writeInt32BE(0 | this._e, 16), + t + ); + }), + (t.exports = f); + }, + 8336: (t, e, r) => { + var i = r(5717), + n = r(4189), + o = r(9509).Buffer, + a = [1518500249, 1859775393, -1894007588, -899497514], + s = new Array(80); + function f() { + this.init(), (this._w = s), n.call(this, 64, 56); + } + function u(t) { + return (t << 5) | (t >>> 27); + } + function h(t) { + return (t << 30) | (t >>> 2); + } + function c(t, e, r, i) { + return 0 === t + ? (e & r) | (~e & i) + : 2 === t + ? (e & r) | (e & i) | (r & i) + : e ^ r ^ i; + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._a = 1732584193), + (this._b = 4023233417), + (this._c = 2562383102), + (this._d = 271733878), + (this._e = 3285377520), + this + ); + }), + (f.prototype._update = function (t) { + for ( + var e, + r = this._w, + i = 0 | this._a, + n = 0 | this._b, + o = 0 | this._c, + s = 0 | this._d, + f = 0 | this._e, + d = 0; + d < 16; + ++d + ) + r[d] = t.readInt32BE(4 * d); + for (; d < 80; ++d) + r[d] = + ((e = r[d - 3] ^ r[d - 8] ^ r[d - 14] ^ r[d - 16]) << 1) | + (e >>> 31); + for (var l = 0; l < 80; ++l) { + var p = ~~(l / 20), + b = (u(i) + c(p, n, o, s) + f + r[l] + a[p]) | 0; + (f = s), (s = o), (o = h(n)), (n = i), (i = b); + } + (this._a = (i + this._a) | 0), + (this._b = (n + this._b) | 0), + (this._c = (o + this._c) | 0), + (this._d = (s + this._d) | 0), + (this._e = (f + this._e) | 0); + }), + (f.prototype._hash = function () { + var t = o.allocUnsafe(20); + return ( + t.writeInt32BE(0 | this._a, 0), + t.writeInt32BE(0 | this._b, 4), + t.writeInt32BE(0 | this._c, 8), + t.writeInt32BE(0 | this._d, 12), + t.writeInt32BE(0 | this._e, 16), + t + ); + }), + (t.exports = f); + }, + 8432: (t, e, r) => { + var i = r(5717), + n = r(7499), + o = r(4189), + a = r(9509).Buffer, + s = new Array(64); + function f() { + this.init(), (this._w = s), o.call(this, 64, 56); + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._a = 3238371032), + (this._b = 914150663), + (this._c = 812702999), + (this._d = 4144912697), + (this._e = 4290775857), + (this._f = 1750603025), + (this._g = 1694076839), + (this._h = 3204075428), + this + ); + }), + (f.prototype._hash = function () { + var t = a.allocUnsafe(28); + return ( + t.writeInt32BE(this._a, 0), + t.writeInt32BE(this._b, 4), + t.writeInt32BE(this._c, 8), + t.writeInt32BE(this._d, 12), + t.writeInt32BE(this._e, 16), + t.writeInt32BE(this._f, 20), + t.writeInt32BE(this._g, 24), + t + ); + }), + (t.exports = f); + }, + 7499: (t, e, r) => { + var i = r(5717), + n = r(4189), + o = r(9509).Buffer, + a = [ + 1116352408, 1899447441, 3049323471, 3921009573, 961987163, + 1508970993, 2453635748, 2870763221, 3624381080, 310598401, + 607225278, 1426881987, 1925078388, 2162078206, 2614888103, + 3248222580, 3835390401, 4022224774, 264347078, 604807628, + 770255983, 1249150122, 1555081692, 1996064986, 2554220882, + 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, + 113926993, 338241895, 666307205, 773529912, 1294757372, + 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, + 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, + 3600352804, 4094571909, 275423344, 430227734, 506948616, + 659060556, 883997877, 958139571, 1322822218, 1537002063, + 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, + 2428436474, 2756734187, 3204031479, 3329325298, + ], + s = new Array(64); + function f() { + this.init(), (this._w = s), n.call(this, 64, 56); + } + function u(t, e, r) { + return r ^ (t & (e ^ r)); + } + function h(t, e, r) { + return (t & e) | (r & (t | e)); + } + function c(t) { + return ( + ((t >>> 2) | (t << 30)) ^ + ((t >>> 13) | (t << 19)) ^ + ((t >>> 22) | (t << 10)) + ); + } + function d(t) { + return ( + ((t >>> 6) | (t << 26)) ^ + ((t >>> 11) | (t << 21)) ^ + ((t >>> 25) | (t << 7)) + ); + } + function l(t) { + return ( + ((t >>> 7) | (t << 25)) ^ ((t >>> 18) | (t << 14)) ^ (t >>> 3) + ); + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._a = 1779033703), + (this._b = 3144134277), + (this._c = 1013904242), + (this._d = 2773480762), + (this._e = 1359893119), + (this._f = 2600822924), + (this._g = 528734635), + (this._h = 1541459225), + this + ); + }), + (f.prototype._update = function (t) { + for ( + var e, + r = this._w, + i = 0 | this._a, + n = 0 | this._b, + o = 0 | this._c, + s = 0 | this._d, + f = 0 | this._e, + p = 0 | this._f, + b = 0 | this._g, + y = 0 | this._h, + m = 0; + m < 16; + ++m + ) + r[m] = t.readInt32BE(4 * m); + for (; m < 64; ++m) + r[m] = + 0 | + (((((e = r[m - 2]) >>> 17) | (e << 15)) ^ + ((e >>> 19) | (e << 13)) ^ + (e >>> 10)) + + r[m - 7] + + l(r[m - 15]) + + r[m - 16]); + for (var g = 0; g < 64; ++g) { + var v = (y + d(f) + u(f, p, b) + a[g] + r[g]) | 0, + w = (c(i) + h(i, n, o)) | 0; + (y = b), + (b = p), + (p = f), + (f = (s + v) | 0), + (s = o), + (o = n), + (n = i), + (i = (v + w) | 0); + } + (this._a = (i + this._a) | 0), + (this._b = (n + this._b) | 0), + (this._c = (o + this._c) | 0), + (this._d = (s + this._d) | 0), + (this._e = (f + this._e) | 0), + (this._f = (p + this._f) | 0), + (this._g = (b + this._g) | 0), + (this._h = (y + this._h) | 0); + }), + (f.prototype._hash = function () { + var t = o.allocUnsafe(32); + return ( + t.writeInt32BE(this._a, 0), + t.writeInt32BE(this._b, 4), + t.writeInt32BE(this._c, 8), + t.writeInt32BE(this._d, 12), + t.writeInt32BE(this._e, 16), + t.writeInt32BE(this._f, 20), + t.writeInt32BE(this._g, 24), + t.writeInt32BE(this._h, 28), + t + ); + }), + (t.exports = f); + }, + 1686: (t, e, r) => { + var i = r(5717), + n = r(7816), + o = r(4189), + a = r(9509).Buffer, + s = new Array(160); + function f() { + this.init(), (this._w = s), o.call(this, 128, 112); + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._ah = 3418070365), + (this._bh = 1654270250), + (this._ch = 2438529370), + (this._dh = 355462360), + (this._eh = 1731405415), + (this._fh = 2394180231), + (this._gh = 3675008525), + (this._hh = 1203062813), + (this._al = 3238371032), + (this._bl = 914150663), + (this._cl = 812702999), + (this._dl = 4144912697), + (this._el = 4290775857), + (this._fl = 1750603025), + (this._gl = 1694076839), + (this._hl = 3204075428), + this + ); + }), + (f.prototype._hash = function () { + var t = a.allocUnsafe(48); + function e(e, r, i) { + t.writeInt32BE(e, i), t.writeInt32BE(r, i + 4); + } + return ( + e(this._ah, this._al, 0), + e(this._bh, this._bl, 8), + e(this._ch, this._cl, 16), + e(this._dh, this._dl, 24), + e(this._eh, this._el, 32), + e(this._fh, this._fl, 40), + t + ); + }), + (t.exports = f); + }, + 7816: (t, e, r) => { + var i = r(5717), + n = r(4189), + o = r(9509).Buffer, + a = [ + 1116352408, 3609767458, 1899447441, 602891725, 3049323471, + 3964484399, 3921009573, 2173295548, 961987163, 4081628472, + 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, + 3664609560, 3624381080, 2734883394, 310598401, 1164996542, + 607225278, 1323610764, 1426881987, 3590304994, 1925078388, + 4068182383, 2162078206, 991336113, 2614888103, 633803317, + 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, + 944711139, 264347078, 2341262773, 604807628, 2007800933, + 770255983, 1495990901, 1249150122, 1856431235, 1555081692, + 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, + 2821834349, 766784016, 2952996808, 2566594879, 3210313671, + 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, + 113926993, 3758326383, 338241895, 168717936, 666307205, + 1188179964, 773529912, 1546045734, 1294757372, 1522805485, + 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, + 1014477480, 2177026350, 1206759142, 2456956037, 344077627, + 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, + 3505952657, 3345764771, 106217008, 3516065817, 3606008344, + 3600352804, 1432725776, 4094571909, 1467031594, 275423344, + 851169720, 430227734, 3100823752, 506948616, 1363258195, + 659060556, 3750685593, 883997877, 3785050280, 958139571, + 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, + 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, + 1125592928, 2227730452, 2716904306, 2361852424, 442776044, + 2428436474, 593698344, 2756734187, 3733110249, 3204031479, + 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, + 3515267271, 566280711, 3940187606, 3454069534, 4118630271, + 4000239992, 116418474, 1914138554, 174292421, 2731055270, + 289380356, 3203993006, 460393269, 320620315, 685471733, + 587496836, 852142971, 1086792851, 1017036298, 365543100, + 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, + 4234509866, 1607167915, 987167468, 1816402316, 1246189591, + ], + s = new Array(160); + function f() { + this.init(), (this._w = s), n.call(this, 128, 112); + } + function u(t, e, r) { + return r ^ (t & (e ^ r)); + } + function h(t, e, r) { + return (t & e) | (r & (t | e)); + } + function c(t, e) { + return ( + ((t >>> 28) | (e << 4)) ^ + ((e >>> 2) | (t << 30)) ^ + ((e >>> 7) | (t << 25)) + ); + } + function d(t, e) { + return ( + ((t >>> 14) | (e << 18)) ^ + ((t >>> 18) | (e << 14)) ^ + ((e >>> 9) | (t << 23)) + ); + } + function l(t, e) { + return ( + ((t >>> 1) | (e << 31)) ^ ((t >>> 8) | (e << 24)) ^ (t >>> 7) + ); + } + function p(t, e) { + return ( + ((t >>> 1) | (e << 31)) ^ + ((t >>> 8) | (e << 24)) ^ + ((t >>> 7) | (e << 25)) + ); + } + function b(t, e) { + return ( + ((t >>> 19) | (e << 13)) ^ ((e >>> 29) | (t << 3)) ^ (t >>> 6) + ); + } + function y(t, e) { + return ( + ((t >>> 19) | (e << 13)) ^ + ((e >>> 29) | (t << 3)) ^ + ((t >>> 6) | (e << 26)) + ); + } + function m(t, e) { + return t >>> 0 < e >>> 0 ? 1 : 0; + } + i(f, n), + (f.prototype.init = function () { + return ( + (this._ah = 1779033703), + (this._bh = 3144134277), + (this._ch = 1013904242), + (this._dh = 2773480762), + (this._eh = 1359893119), + (this._fh = 2600822924), + (this._gh = 528734635), + (this._hh = 1541459225), + (this._al = 4089235720), + (this._bl = 2227873595), + (this._cl = 4271175723), + (this._dl = 1595750129), + (this._el = 2917565137), + (this._fl = 725511199), + (this._gl = 4215389547), + (this._hl = 327033209), + this + ); + }), + (f.prototype._update = function (t) { + for ( + var e = this._w, + r = 0 | this._ah, + i = 0 | this._bh, + n = 0 | this._ch, + o = 0 | this._dh, + s = 0 | this._eh, + f = 0 | this._fh, + g = 0 | this._gh, + v = 0 | this._hh, + w = 0 | this._al, + _ = 0 | this._bl, + M = 0 | this._cl, + S = 0 | this._dl, + E = 0 | this._el, + A = 0 | this._fl, + k = 0 | this._gl, + x = 0 | this._hl, + I = 0; + I < 32; + I += 2 + ) + (e[I] = t.readInt32BE(4 * I)), + (e[I + 1] = t.readInt32BE(4 * I + 4)); + for (; I < 160; I += 2) { + var B = e[I - 30], + R = e[I - 30 + 1], + O = l(B, R), + j = p(R, B), + P = b((B = e[I - 4]), (R = e[I - 4 + 1])), + T = y(R, B), + L = e[I - 14], + N = e[I - 14 + 1], + C = e[I - 32], + U = e[I - 32 + 1], + D = (j + N) | 0, + q = (O + L + m(D, j)) | 0; + (q = + ((q = (q + P + m((D = (D + T) | 0), T)) | 0) + + C + + m((D = (D + U) | 0), U)) | + 0), + (e[I] = q), + (e[I + 1] = D); + } + for (var z = 0; z < 160; z += 2) { + (q = e[z]), (D = e[z + 1]); + var F = h(r, i, n), + K = h(w, _, M), + H = c(r, w), + V = c(w, r), + G = d(s, E), + W = d(E, s), + Z = a[z], + $ = a[z + 1], + X = u(s, f, g), + Y = u(E, A, k), + J = (x + W) | 0, + Q = (v + G + m(J, x)) | 0; + Q = + ((Q = + ((Q = (Q + X + m((J = (J + Y) | 0), Y)) | 0) + + Z + + m((J = (J + $) | 0), $)) | + 0) + + q + + m((J = (J + D) | 0), D)) | + 0; + var tt = (V + K) | 0, + et = (H + F + m(tt, V)) | 0; + (v = g), + (x = k), + (g = f), + (k = A), + (f = s), + (A = E), + (s = (o + Q + m((E = (S + J) | 0), S)) | 0), + (o = n), + (S = M), + (n = i), + (M = _), + (i = r), + (_ = w), + (r = (Q + et + m((w = (J + tt) | 0), J)) | 0); + } + (this._al = (this._al + w) | 0), + (this._bl = (this._bl + _) | 0), + (this._cl = (this._cl + M) | 0), + (this._dl = (this._dl + S) | 0), + (this._el = (this._el + E) | 0), + (this._fl = (this._fl + A) | 0), + (this._gl = (this._gl + k) | 0), + (this._hl = (this._hl + x) | 0), + (this._ah = (this._ah + r + m(this._al, w)) | 0), + (this._bh = (this._bh + i + m(this._bl, _)) | 0), + (this._ch = (this._ch + n + m(this._cl, M)) | 0), + (this._dh = (this._dh + o + m(this._dl, S)) | 0), + (this._eh = (this._eh + s + m(this._el, E)) | 0), + (this._fh = (this._fh + f + m(this._fl, A)) | 0), + (this._gh = (this._gh + g + m(this._gl, k)) | 0), + (this._hh = (this._hh + v + m(this._hl, x)) | 0); + }), + (f.prototype._hash = function () { + var t = o.allocUnsafe(64); + function e(e, r, i) { + t.writeInt32BE(e, i), t.writeInt32BE(r, i + 4); + } + return ( + e(this._ah, this._al, 0), + e(this._bh, this._bl, 8), + e(this._ch, this._cl, 16), + e(this._dh, this._dl, 24), + e(this._eh, this._el, 32), + e(this._fh, this._fl, 40), + e(this._gh, this._gl, 48), + e(this._hh, this._hl, 56), + t + ); + }), + (t.exports = f); + }, + 2830: (t, e, r) => { + t.exports = n; + var i = r(7187).EventEmitter; + function n() { + i.call(this); + } + r(5717)(n, i), + (n.Readable = r(9481)), + (n.Writable = r(4229)), + (n.Duplex = r(6753)), + (n.Transform = r(4605)), + (n.PassThrough = r(2725)), + (n.finished = r(8610)), + (n.pipeline = r(9946)), + (n.Stream = n), + (n.prototype.pipe = function (t, e) { + var r = this; + function n(e) { + t.writable && !1 === t.write(e) && r.pause && r.pause(); + } + function o() { + r.readable && r.resume && r.resume(); + } + r.on("data", n), + t.on("drain", o), + t._isStdio || + (e && !1 === e.end) || + (r.on("end", s), r.on("close", f)); + var a = !1; + function s() { + a || ((a = !0), t.end()); + } + function f() { + a || + ((a = !0), "function" == typeof t.destroy && t.destroy()); + } + function u(t) { + if ((h(), 0 === i.listenerCount(this, "error"))) throw t; + } + function h() { + r.removeListener("data", n), + t.removeListener("drain", o), + r.removeListener("end", s), + r.removeListener("close", f), + r.removeListener("error", u), + t.removeListener("error", u), + r.removeListener("end", h), + r.removeListener("close", h), + t.removeListener("close", h); + } + return ( + r.on("error", u), + t.on("error", u), + r.on("end", h), + r.on("close", h), + t.on("close", h), + t.emit("pipe", r), + t + ); + }); + }, + 2553: (t, e, r) => { + "use strict"; + var i = r(9509).Buffer, + n = + i.isEncoding || + function (t) { + switch ((t = "" + t) && t.toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + case "raw": + return !0; + default: + return !1; + } + }; + function o(t) { + var e; + switch ( + ((this.encoding = (function (t) { + var e = (function (t) { + if (!t) return "utf8"; + for (var e; ; ) + switch (t) { + case "utf8": + case "utf-8": + return "utf8"; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return "utf16le"; + case "latin1": + case "binary": + return "latin1"; + case "base64": + case "ascii": + case "hex": + return t; + default: + if (e) return; + (t = ("" + t).toLowerCase()), (e = !0); + } + })(t); + if ("string" != typeof e && (i.isEncoding === n || !n(t))) + throw new Error("Unknown encoding: " + t); + return e || t; + })(t)), + this.encoding) + ) { + case "utf16le": + (this.text = f), (this.end = u), (e = 4); + break; + case "utf8": + (this.fillLast = s), (e = 4); + break; + case "base64": + (this.text = h), (this.end = c), (e = 3); + break; + default: + return (this.write = d), void (this.end = l); + } + (this.lastNeed = 0), + (this.lastTotal = 0), + (this.lastChar = i.allocUnsafe(e)); + } + function a(t) { + return t <= 127 + ? 0 + : t >> 5 == 6 + ? 2 + : t >> 4 == 14 + ? 3 + : t >> 3 == 30 + ? 4 + : t >> 6 == 2 + ? -1 + : -2; + } + function s(t) { + var e = this.lastTotal - this.lastNeed, + r = (function (t, e, r) { + if (128 != (192 & e[0])) return (t.lastNeed = 0), "�"; + if (t.lastNeed > 1 && e.length > 1) { + if (128 != (192 & e[1])) return (t.lastNeed = 1), "�"; + if (t.lastNeed > 2 && e.length > 2 && 128 != (192 & e[2])) + return (t.lastNeed = 2), "�"; + } + })(this, t); + return void 0 !== r + ? r + : this.lastNeed <= t.length + ? (t.copy(this.lastChar, e, 0, this.lastNeed), + this.lastChar.toString(this.encoding, 0, this.lastTotal)) + : (t.copy(this.lastChar, e, 0, t.length), + void (this.lastNeed -= t.length)); + } + function f(t, e) { + if ((t.length - e) % 2 == 0) { + var r = t.toString("utf16le", e); + if (r) { + var i = r.charCodeAt(r.length - 1); + if (i >= 55296 && i <= 56319) + return ( + (this.lastNeed = 2), + (this.lastTotal = 4), + (this.lastChar[0] = t[t.length - 2]), + (this.lastChar[1] = t[t.length - 1]), + r.slice(0, -1) + ); + } + return r; + } + return ( + (this.lastNeed = 1), + (this.lastTotal = 2), + (this.lastChar[0] = t[t.length - 1]), + t.toString("utf16le", e, t.length - 1) + ); + } + function u(t) { + var e = t && t.length ? this.write(t) : ""; + if (this.lastNeed) { + var r = this.lastTotal - this.lastNeed; + return e + this.lastChar.toString("utf16le", 0, r); + } + return e; + } + function h(t, e) { + var r = (t.length - e) % 3; + return 0 === r + ? t.toString("base64", e) + : ((this.lastNeed = 3 - r), + (this.lastTotal = 3), + 1 === r + ? (this.lastChar[0] = t[t.length - 1]) + : ((this.lastChar[0] = t[t.length - 2]), + (this.lastChar[1] = t[t.length - 1])), + t.toString("base64", e, t.length - r)); + } + function c(t) { + var e = t && t.length ? this.write(t) : ""; + return this.lastNeed + ? e + this.lastChar.toString("base64", 0, 3 - this.lastNeed) + : e; + } + function d(t) { + return t.toString(this.encoding); + } + function l(t) { + return t && t.length ? this.write(t) : ""; + } + (e.s = o), + (o.prototype.write = function (t) { + if (0 === t.length) return ""; + var e, r; + if (this.lastNeed) { + if (void 0 === (e = this.fillLast(t))) return ""; + (r = this.lastNeed), (this.lastNeed = 0); + } else r = 0; + return r < t.length + ? e + ? e + this.text(t, r) + : this.text(t, r) + : e || ""; + }), + (o.prototype.end = function (t) { + var e = t && t.length ? this.write(t) : ""; + return this.lastNeed ? e + "�" : e; + }), + (o.prototype.text = function (t, e) { + var r = (function (t, e, r) { + var i = e.length - 1; + if (i < r) return 0; + var n = a(e[i]); + return n >= 0 + ? (n > 0 && (t.lastNeed = n - 1), n) + : --i < r || -2 === n + ? 0 + : (n = a(e[i])) >= 0 + ? (n > 0 && (t.lastNeed = n - 2), n) + : --i < r || -2 === n + ? 0 + : (n = a(e[i])) >= 0 + ? (n > 0 && (2 === n ? (n = 0) : (t.lastNeed = n - 3)), n) + : 0; + })(this, t, e); + if (!this.lastNeed) return t.toString("utf8", e); + this.lastTotal = r; + var i = t.length - (r - this.lastNeed); + return t.copy(this.lastChar, 0, i), t.toString("utf8", e, i); + }), + (o.prototype.fillLast = function (t) { + if (this.lastNeed <= t.length) + return ( + t.copy( + this.lastChar, + this.lastTotal - this.lastNeed, + 0, + this.lastNeed + ), + this.lastChar.toString(this.encoding, 0, this.lastTotal) + ); + t.copy( + this.lastChar, + this.lastTotal - this.lastNeed, + 0, + t.length + ), + (this.lastNeed -= t.length); + }); + }, + 4312: (t, e) => { + "use strict"; + Object.defineProperty(e, "__esModule", { value: !0 }), + (e.SECRET_KEY_LENGTH = + e.AES_IV_PLUS_TAG_LENGTH = + e.AES_TAG_LENGTH = + e.AES_IV_LENGTH = + e.UNCOMPRESSED_PUBLIC_KEY_SIZE = + void 0), + (e.UNCOMPRESSED_PUBLIC_KEY_SIZE = 65), + (e.AES_IV_LENGTH = 16), + (e.AES_TAG_LENGTH = 16), + (e.AES_IV_PLUS_TAG_LENGTH = e.AES_IV_LENGTH + e.AES_TAG_LENGTH), + (e.SECRET_KEY_LENGTH = 32); + }, + 6838: function (t, e, r) { + "use strict"; + var i = r(8764).Buffer, + n = + (this && this.__importDefault) || + function (t) { + return t && t.__esModule ? t : { default: t }; + }; + Object.defineProperty(e, "__esModule", { value: !0 }); + var o = n(r(9637)), + a = n(r(7221)), + s = r(8593), + f = n(r(4911)), + u = (function () { + function t(t) { + if ( + ((this.secret = t || (0, s.getValidSecret)()), + !a.default.privateKeyVerify(this.secret)) + ) + throw new Error("Invalid private key"); + this.publicKey = new f.default( + i.from(a.default.publicKeyCreate(this.secret)) + ); + } + return ( + (t.fromHex = function (e) { + return new t((0, s.decodeHex)(e)); + }), + (t.prototype.toHex = function () { + return "0x".concat(this.secret.toString("hex")); + }), + (t.prototype.encapsulate = function (t) { + var e = i.concat([ + this.publicKey.uncompressed, + this.multiply(t), + ]); + return (0, o.default)(e, 32, { hash: "SHA-256" }); + }), + (t.prototype.multiply = function (t) { + return i.from( + a.default.publicKeyTweakMul(t.compressed, this.secret, !1) + ); + }), + (t.prototype.equals = function (t) { + return this.secret.equals(t.secret); + }), + t + ); + })(); + e.default = u; + }, + 4911: function (t, e, r) { + "use strict"; + var i = r(8764).Buffer, + n = + (this && this.__importDefault) || + function (t) { + return t && t.__esModule ? t : { default: t }; + }; + Object.defineProperty(e, "__esModule", { value: !0 }); + var o = n(r(9637)), + a = n(r(7221)), + s = r(8593), + f = r(4312), + u = (function () { + function t(t) { + (this.uncompressed = i.from( + a.default.publicKeyConvert(t, !1) + )), + (this.compressed = i.from( + a.default.publicKeyConvert(t, !0) + )); + } + return ( + (t.fromHex = function (e) { + var r = (0, s.decodeHex)(e); + if (r.length === f.UNCOMPRESSED_PUBLIC_KEY_SIZE - 1) { + var n = i.from([4]); + return new t(i.concat([n, r])); + } + return new t(r); + }), + (t.prototype.toHex = function (t) { + return ( + void 0 === t && (t = !0), + t + ? this.compressed.toString("hex") + : this.uncompressed.toString("hex") + ); + }), + (t.prototype.decapsulate = function (t) { + var e = i.concat([this.uncompressed, t.multiply(this)]); + return (0, o.default)(e, 32, { hash: "SHA-256" }); + }), + (t.prototype.equals = function (t) { + return this.uncompressed.equals(t.uncompressed); + }), + t + ); + })(); + e.default = u; + }, + 6261: function (t, e, r) { + "use strict"; + var i = + (this && this.__importDefault) || + function (t) { + return t && t.__esModule ? t : { default: t }; + }; + Object.defineProperty(e, "__esModule", { value: !0 }), + (e.PublicKey = e.PrivateKey = void 0); + var n = r(6838); + Object.defineProperty(e, "PrivateKey", { + enumerable: !0, + get: function () { + return i(n).default; + }, + }); + var o = r(4911); + Object.defineProperty(e, "PublicKey", { + enumerable: !0, + get: function () { + return i(o).default; + }, + }); + }, + 8593: function (t, e, r) { + "use strict"; + var i = r(8764).Buffer, + n = + (this && this.__importDefault) || + function (t) { + return t && t.__esModule ? t : { default: t }; + }; + Object.defineProperty(e, "__esModule", { value: !0 }), + (e.aesDecrypt = + e.aesEncrypt = + e.getValidSecret = + e.decodeHex = + e.remove0x = + void 0); + var o = r(5835), + a = n(r(7221)), + s = r(4312); + function f(t) { + return t.startsWith("0x") || t.startsWith("0X") ? t.slice(2) : t; + } + (e.remove0x = f), + (e.decodeHex = function (t) { + return i.from(f(t), "hex"); + }), + (e.getValidSecret = function () { + var t; + do { + t = (0, o.randomBytes)(s.SECRET_KEY_LENGTH); + } while (!a.default.privateKeyVerify(t)); + return t; + }), + (e.aesEncrypt = function (t, e) { + var r = (0, o.randomBytes)(s.AES_IV_LENGTH), + n = (0, o.createCipheriv)("aes-256-gcm", t, r), + a = i.concat([n.update(e), n.final()]), + f = n.getAuthTag(); + return i.concat([r, f, a]); + }), + (e.aesDecrypt = function (t, e) { + var r = e.slice(0, s.AES_IV_LENGTH), + n = e.slice(s.AES_IV_LENGTH, s.AES_IV_PLUS_TAG_LENGTH), + a = e.slice(s.AES_IV_PLUS_TAG_LENGTH), + f = (0, o.createDecipheriv)("aes-256-gcm", t, r); + return f.setAuthTag(n), i.concat([f.update(a), f.final()]); + }); + }, + 4927: (t, e, r) => { + var i = r(5108); + function n(t) { + try { + if (!r.g.localStorage) return !1; + } catch (t) { + return !1; + } + var e = r.g.localStorage[t]; + return null != e && "true" === String(e).toLowerCase(); + } + t.exports = function (t, e) { + if (n("noDeprecation")) return t; + var r = !1; + return function () { + if (!r) { + if (n("throwDeprecation")) throw new Error(e); + n("traceDeprecation") ? i.trace(e) : i.warn(e), (r = !0); + } + return t.apply(this, arguments); + }; + }; + }, + 384: (t) => { + t.exports = function (t) { + return ( + t && + "object" == typeof t && + "function" == typeof t.copy && + "function" == typeof t.fill && + "function" == typeof t.readUInt8 + ); + }; + }, + 5955: (t, e, r) => { + "use strict"; + var i = r(2584), + n = r(8662), + o = r(6430), + a = r(5692); + function s(t) { + return t.call.bind(t); + } + var f = "undefined" != typeof BigInt, + u = "undefined" != typeof Symbol, + h = s(Object.prototype.toString), + c = s(Number.prototype.valueOf), + d = s(String.prototype.valueOf), + l = s(Boolean.prototype.valueOf); + if (f) var p = s(BigInt.prototype.valueOf); + if (u) var b = s(Symbol.prototype.valueOf); + function y(t, e) { + if ("object" != typeof t) return !1; + try { + return e(t), !0; + } catch (t) { + return !1; + } + } + function m(t) { + return "[object Map]" === h(t); + } + function g(t) { + return "[object Set]" === h(t); + } + function v(t) { + return "[object WeakMap]" === h(t); + } + function w(t) { + return "[object WeakSet]" === h(t); + } + function _(t) { + return "[object ArrayBuffer]" === h(t); + } + function M(t) { + return ( + "undefined" != typeof ArrayBuffer && + (_.working ? _(t) : t instanceof ArrayBuffer) + ); + } + function S(t) { + return "[object DataView]" === h(t); + } + function E(t) { + return ( + "undefined" != typeof DataView && + (S.working ? S(t) : t instanceof DataView) + ); + } + (e.isArgumentsObject = i), + (e.isGeneratorFunction = n), + (e.isTypedArray = a), + (e.isPromise = function (t) { + return ( + ("undefined" != typeof Promise && t instanceof Promise) || + (null !== t && + "object" == typeof t && + "function" == typeof t.then && + "function" == typeof t.catch) + ); + }), + (e.isArrayBufferView = function (t) { + return "undefined" != typeof ArrayBuffer && ArrayBuffer.isView + ? ArrayBuffer.isView(t) + : a(t) || E(t); + }), + (e.isUint8Array = function (t) { + return "Uint8Array" === o(t); + }), + (e.isUint8ClampedArray = function (t) { + return "Uint8ClampedArray" === o(t); + }), + (e.isUint16Array = function (t) { + return "Uint16Array" === o(t); + }), + (e.isUint32Array = function (t) { + return "Uint32Array" === o(t); + }), + (e.isInt8Array = function (t) { + return "Int8Array" === o(t); + }), + (e.isInt16Array = function (t) { + return "Int16Array" === o(t); + }), + (e.isInt32Array = function (t) { + return "Int32Array" === o(t); + }), + (e.isFloat32Array = function (t) { + return "Float32Array" === o(t); + }), + (e.isFloat64Array = function (t) { + return "Float64Array" === o(t); + }), + (e.isBigInt64Array = function (t) { + return "BigInt64Array" === o(t); + }), + (e.isBigUint64Array = function (t) { + return "BigUint64Array" === o(t); + }), + (m.working = "undefined" != typeof Map && m(new Map())), + (e.isMap = function (t) { + return ( + "undefined" != typeof Map && + (m.working ? m(t) : t instanceof Map) + ); + }), + (g.working = "undefined" != typeof Set && g(new Set())), + (e.isSet = function (t) { + return ( + "undefined" != typeof Set && + (g.working ? g(t) : t instanceof Set) + ); + }), + (v.working = "undefined" != typeof WeakMap && v(new WeakMap())), + (e.isWeakMap = function (t) { + return ( + "undefined" != typeof WeakMap && + (v.working ? v(t) : t instanceof WeakMap) + ); + }), + (w.working = "undefined" != typeof WeakSet && w(new WeakSet())), + (e.isWeakSet = function (t) { + return w(t); + }), + (_.working = + "undefined" != typeof ArrayBuffer && _(new ArrayBuffer())), + (e.isArrayBuffer = M), + (S.working = + "undefined" != typeof ArrayBuffer && + "undefined" != typeof DataView && + S(new DataView(new ArrayBuffer(1), 0, 1))), + (e.isDataView = E); + var A = + "undefined" != typeof SharedArrayBuffer + ? SharedArrayBuffer + : void 0; + function k(t) { + return "[object SharedArrayBuffer]" === h(t); + } + function x(t) { + return ( + void 0 !== A && + (void 0 === k.working && (k.working = k(new A())), + k.working ? k(t) : t instanceof A) + ); + } + function I(t) { + return y(t, c); + } + function B(t) { + return y(t, d); + } + function R(t) { + return y(t, l); + } + function O(t) { + return f && y(t, p); + } + function j(t) { + return u && y(t, b); + } + (e.isSharedArrayBuffer = x), + (e.isAsyncFunction = function (t) { + return "[object AsyncFunction]" === h(t); + }), + (e.isMapIterator = function (t) { + return "[object Map Iterator]" === h(t); + }), + (e.isSetIterator = function (t) { + return "[object Set Iterator]" === h(t); + }), + (e.isGeneratorObject = function (t) { + return "[object Generator]" === h(t); + }), + (e.isWebAssemblyCompiledModule = function (t) { + return "[object WebAssembly.Module]" === h(t); + }), + (e.isNumberObject = I), + (e.isStringObject = B), + (e.isBooleanObject = R), + (e.isBigIntObject = O), + (e.isSymbolObject = j), + (e.isBoxedPrimitive = function (t) { + return I(t) || B(t) || R(t) || O(t) || j(t); + }), + (e.isAnyArrayBuffer = function (t) { + return "undefined" != typeof Uint8Array && (M(t) || x(t)); + }), + ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach( + function (t) { + Object.defineProperty(e, t, { + enumerable: !1, + value: function () { + throw new Error(t + " is not supported in userland"); + }, + }); + } + ); + }, + 9539: (t, e, r) => { + var i = r(4155), + n = r(5108), + o = + Object.getOwnPropertyDescriptors || + function (t) { + for (var e = Object.keys(t), r = {}, i = 0; i < e.length; i++) + r[e[i]] = Object.getOwnPropertyDescriptor(t, e[i]); + return r; + }, + a = /%[sdj%]/g; + (e.format = function (t) { + if (!w(t)) { + for (var e = [], r = 0; r < arguments.length; r++) + e.push(h(arguments[r])); + return e.join(" "); + } + r = 1; + for ( + var i = arguments, + n = i.length, + o = String(t).replace(a, function (t) { + if ("%%" === t) return "%"; + if (r >= n) return t; + switch (t) { + case "%s": + return String(i[r++]); + case "%d": + return Number(i[r++]); + case "%j": + try { + return JSON.stringify(i[r++]); + } catch (t) { + return "[Circular]"; + } + default: + return t; + } + }), + s = i[r]; + r < n; + s = i[++r] + ) + g(s) || !S(s) ? (o += " " + s) : (o += " " + h(s)); + return o; + }), + (e.deprecate = function (t, r) { + if (void 0 !== i && !0 === i.noDeprecation) return t; + if (void 0 === i) + return function () { + return e.deprecate(t, r).apply(this, arguments); + }; + var o = !1; + return function () { + if (!o) { + if (i.throwDeprecation) throw new Error(r); + i.traceDeprecation ? n.trace(r) : n.error(r), (o = !0); + } + return t.apply(this, arguments); + }; + }); + var s = {}, + f = /^$/; + if (i.env.NODE_DEBUG) { + var u = i.env.NODE_DEBUG; + (u = u + .replace(/[|\\{}()[\]^$+?.]/g, "\\$&") + .replace(/\*/g, ".*") + .replace(/,/g, "$|^") + .toUpperCase()), + (f = new RegExp("^" + u + "$", "i")); + } + function h(t, r) { + var i = { seen: [], stylize: d }; + return ( + arguments.length >= 3 && (i.depth = arguments[2]), + arguments.length >= 4 && (i.colors = arguments[3]), + m(r) ? (i.showHidden = r) : r && e._extend(i, r), + _(i.showHidden) && (i.showHidden = !1), + _(i.depth) && (i.depth = 2), + _(i.colors) && (i.colors = !1), + _(i.customInspect) && (i.customInspect = !0), + i.colors && (i.stylize = c), + l(i, t, i.depth) + ); + } + function c(t, e) { + var r = h.styles[e]; + return r + ? "[" + h.colors[r][0] + "m" + t + "[" + h.colors[r][1] + "m" + : t; + } + function d(t, e) { + return t; + } + function l(t, r, i) { + if ( + t.customInspect && + r && + k(r.inspect) && + r.inspect !== e.inspect && + (!r.constructor || r.constructor.prototype !== r) + ) { + var n = r.inspect(i, t); + return w(n) || (n = l(t, n, i)), n; + } + var o = (function (t, e) { + if (_(e)) return t.stylize("undefined", "undefined"); + if (w(e)) { + var r = + "'" + + JSON.stringify(e) + .replace(/^"|"$/g, "") + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + + "'"; + return t.stylize(r, "string"); + } + return v(e) + ? t.stylize("" + e, "number") + : m(e) + ? t.stylize("" + e, "boolean") + : g(e) + ? t.stylize("null", "null") + : void 0; + })(t, r); + if (o) return o; + var a = Object.keys(r), + s = (function (t) { + var e = {}; + return ( + t.forEach(function (t, r) { + e[t] = !0; + }), + e + ); + })(a); + if ( + (t.showHidden && (a = Object.getOwnPropertyNames(r)), + A(r) && + (a.indexOf("message") >= 0 || a.indexOf("description") >= 0)) + ) + return p(r); + if (0 === a.length) { + if (k(r)) { + var f = r.name ? ": " + r.name : ""; + return t.stylize("[Function" + f + "]", "special"); + } + if (M(r)) + return t.stylize(RegExp.prototype.toString.call(r), "regexp"); + if (E(r)) + return t.stylize(Date.prototype.toString.call(r), "date"); + if (A(r)) return p(r); + } + var u, + h = "", + c = !1, + d = ["{", "}"]; + return ( + y(r) && ((c = !0), (d = ["[", "]"])), + k(r) && + (h = " [Function" + (r.name ? ": " + r.name : "") + "]"), + M(r) && (h = " " + RegExp.prototype.toString.call(r)), + E(r) && (h = " " + Date.prototype.toUTCString.call(r)), + A(r) && (h = " " + p(r)), + 0 !== a.length || (c && 0 != r.length) + ? i < 0 + ? M(r) + ? t.stylize(RegExp.prototype.toString.call(r), "regexp") + : t.stylize("[Object]", "special") + : (t.seen.push(r), + (u = c + ? (function (t, e, r, i, n) { + for (var o = [], a = 0, s = e.length; a < s; ++a) + O(e, String(a)) + ? o.push(b(t, e, r, i, String(a), !0)) + : o.push(""); + return ( + n.forEach(function (n) { + n.match(/^\d+$/) || + o.push(b(t, e, r, i, n, !0)); + }), + o + ); + })(t, r, i, s, a) + : a.map(function (e) { + return b(t, r, i, s, e, c); + })), + t.seen.pop(), + (function (t, e, r) { + return t.reduce(function (t, e) { + return ( + e.indexOf("\n"), + t + e.replace(/\u001b\[\d\d?m/g, "").length + 1 + ); + }, 0) > 60 + ? r[0] + + ("" === e ? "" : e + "\n ") + + " " + + t.join(",\n ") + + " " + + r[1] + : r[0] + e + " " + t.join(", ") + " " + r[1]; + })(u, h, d)) + : d[0] + h + d[1] + ); + } + function p(t) { + return "[" + Error.prototype.toString.call(t) + "]"; + } + function b(t, e, r, i, n, o) { + var a, s, f; + if ( + ((f = Object.getOwnPropertyDescriptor(e, n) || { value: e[n] }) + .get + ? (s = f.set + ? t.stylize("[Getter/Setter]", "special") + : t.stylize("[Getter]", "special")) + : f.set && (s = t.stylize("[Setter]", "special")), + O(i, n) || (a = "[" + n + "]"), + s || + (t.seen.indexOf(f.value) < 0 + ? (s = g(r) + ? l(t, f.value, null) + : l(t, f.value, r - 1)).indexOf("\n") > -1 && + (s = o + ? s + .split("\n") + .map(function (t) { + return " " + t; + }) + .join("\n") + .slice(2) + : "\n" + + s + .split("\n") + .map(function (t) { + return " " + t; + }) + .join("\n")) + : (s = t.stylize("[Circular]", "special"))), + _(a)) + ) { + if (o && n.match(/^\d+$/)) return s; + (a = JSON.stringify("" + n)).match( + /^"([a-zA-Z_][a-zA-Z_0-9]*)"$/ + ) + ? ((a = a.slice(1, -1)), (a = t.stylize(a, "name"))) + : ((a = a + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'")), + (a = t.stylize(a, "string"))); + } + return a + ": " + s; + } + function y(t) { + return Array.isArray(t); + } + function m(t) { + return "boolean" == typeof t; + } + function g(t) { + return null === t; + } + function v(t) { + return "number" == typeof t; + } + function w(t) { + return "string" == typeof t; + } + function _(t) { + return void 0 === t; + } + function M(t) { + return S(t) && "[object RegExp]" === x(t); + } + function S(t) { + return "object" == typeof t && null !== t; + } + function E(t) { + return S(t) && "[object Date]" === x(t); + } + function A(t) { + return S(t) && ("[object Error]" === x(t) || t instanceof Error); + } + function k(t) { + return "function" == typeof t; + } + function x(t) { + return Object.prototype.toString.call(t); + } + function I(t) { + return t < 10 ? "0" + t.toString(10) : t.toString(10); + } + (e.debuglog = function (t) { + if (((t = t.toUpperCase()), !s[t])) + if (f.test(t)) { + var r = i.pid; + s[t] = function () { + var i = e.format.apply(e, arguments); + n.error("%s %d: %s", t, r, i); + }; + } else s[t] = function () {}; + return s[t]; + }), + (e.inspect = h), + (h.colors = { + bold: [1, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + white: [37, 39], + grey: [90, 39], + black: [30, 39], + blue: [34, 39], + cyan: [36, 39], + green: [32, 39], + magenta: [35, 39], + red: [31, 39], + yellow: [33, 39], + }), + (h.styles = { + special: "cyan", + number: "yellow", + boolean: "yellow", + undefined: "grey", + null: "bold", + string: "green", + date: "magenta", + regexp: "red", + }), + (e.types = r(5955)), + (e.isArray = y), + (e.isBoolean = m), + (e.isNull = g), + (e.isNullOrUndefined = function (t) { + return null == t; + }), + (e.isNumber = v), + (e.isString = w), + (e.isSymbol = function (t) { + return "symbol" == typeof t; + }), + (e.isUndefined = _), + (e.isRegExp = M), + (e.types.isRegExp = M), + (e.isObject = S), + (e.isDate = E), + (e.types.isDate = E), + (e.isError = A), + (e.types.isNativeError = A), + (e.isFunction = k), + (e.isPrimitive = function (t) { + return ( + null === t || + "boolean" == typeof t || + "number" == typeof t || + "string" == typeof t || + "symbol" == typeof t || + void 0 === t + ); + }), + (e.isBuffer = r(384)); + var B = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ]; + function R() { + var t = new Date(), + e = [ + I(t.getHours()), + I(t.getMinutes()), + I(t.getSeconds()), + ].join(":"); + return [t.getDate(), B[t.getMonth()], e].join(" "); + } + function O(t, e) { + return Object.prototype.hasOwnProperty.call(t, e); + } + (e.log = function () { + n.log("%s - %s", R(), e.format.apply(e, arguments)); + }), + (e.inherits = r(5717)), + (e._extend = function (t, e) { + if (!e || !S(e)) return t; + for (var r = Object.keys(e), i = r.length; i--; ) + t[r[i]] = e[r[i]]; + return t; + }); + var j = + "undefined" != typeof Symbol + ? Symbol("util.promisify.custom") + : void 0; + function P(t, e) { + if (!t) { + var r = new Error("Promise was rejected with a falsy value"); + (r.reason = t), (t = r); + } + return e(t); + } + (e.promisify = function (t) { + if ("function" != typeof t) + throw new TypeError( + 'The "original" argument must be of type Function' + ); + if (j && t[j]) { + var e; + if ("function" != typeof (e = t[j])) + throw new TypeError( + 'The "util.promisify.custom" argument must be of type Function' + ); + return ( + Object.defineProperty(e, j, { + value: e, + enumerable: !1, + writable: !1, + configurable: !0, + }), + e + ); + } + function e() { + for ( + var e, + r, + i = new Promise(function (t, i) { + (e = t), (r = i); + }), + n = [], + o = 0; + o < arguments.length; + o++ + ) + n.push(arguments[o]); + n.push(function (t, i) { + t ? r(t) : e(i); + }); + try { + t.apply(this, n); + } catch (t) { + r(t); + } + return i; + } + return ( + Object.setPrototypeOf(e, Object.getPrototypeOf(t)), + j && + Object.defineProperty(e, j, { + value: e, + enumerable: !1, + writable: !1, + configurable: !0, + }), + Object.defineProperties(e, o(t)) + ); + }), + (e.promisify.custom = j), + (e.callbackify = function (t) { + if ("function" != typeof t) + throw new TypeError( + 'The "original" argument must be of type Function' + ); + function e() { + for (var e = [], r = 0; r < arguments.length; r++) + e.push(arguments[r]); + var n = e.pop(); + if ("function" != typeof n) + throw new TypeError( + "The last argument must be of type Function" + ); + var o = this, + a = function () { + return n.apply(o, arguments); + }; + t.apply(this, e).then( + function (t) { + i.nextTick(a.bind(null, null, t)); + }, + function (t) { + i.nextTick(P.bind(null, t, a)); + } + ); + } + return ( + Object.setPrototypeOf(e, Object.getPrototypeOf(t)), + Object.defineProperties(e, o(t)), + e + ); + }); + }, + 6430: (t, e, r) => { + "use strict"; + var i = r(4029), + n = r(3083), + o = r(1924), + a = r(7296), + s = o("Object.prototype.toString"), + f = r(6410)(), + u = "undefined" == typeof globalThis ? r.g : globalThis, + h = n(), + c = o("String.prototype.slice"), + d = {}, + l = Object.getPrototypeOf; + f && + a && + l && + i(h, function (t) { + if ("function" == typeof u[t]) { + var e = new u[t](); + if (Symbol.toStringTag in e) { + var r = l(e), + i = a(r, Symbol.toStringTag); + if (!i) { + var n = l(r); + i = a(n, Symbol.toStringTag); + } + d[t] = i.get; + } + } + }); + var p = r(5692); + t.exports = function (t) { + return ( + !!p(t) && + (f && Symbol.toStringTag in t + ? (function (t) { + var e = !1; + return ( + i(d, function (r, i) { + if (!e) + try { + var n = r.call(t); + n === i && (e = n); + } catch (t) {} + }), + e + ); + })(t) + : c(s(t), 8, -1)) + ); + }; + }, + 6601: () => {}, + 9214: () => {}, + 1922: () => {}, + 2363: () => {}, + 2361: () => {}, + 4616: () => {}, + 3083: (t, e, r) => { + "use strict"; + var i = [ + "BigInt64Array", + "BigUint64Array", + "Float32Array", + "Float64Array", + "Int16Array", + "Int32Array", + "Int8Array", + "Uint16Array", + "Uint32Array", + "Uint8Array", + "Uint8ClampedArray", + ], + n = "undefined" == typeof globalThis ? r.g : globalThis; + t.exports = function () { + for (var t = [], e = 0; e < i.length; e++) + "function" == typeof n[i[e]] && (t[t.length] = i[e]); + return t; + }; + }, + 4946: (t) => { + "use strict"; + t.exports = JSON.parse( + '{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}' + ); + }, + 5207: (t) => { + "use strict"; + t.exports = JSON.parse( + '{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}' + ); + }, + 1308: (t) => { + "use strict"; + t.exports = JSON.parse( + '{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}' + ); + }, + 9799: (t) => { + "use strict"; + t.exports = JSON.parse( + '{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}' + ); + }, + 8597: (t) => { + "use strict"; + t.exports = { i8: "6.5.4" }; + }, + 2562: (t) => { + "use strict"; + t.exports = JSON.parse( + '{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}' + ); + }, + }, + e = {}; + function r(i) { + var n = e[i]; + if (void 0 !== n) return n.exports; + var o = (e[i] = { id: i, loaded: !1, exports: {} }); + return ( + t[i].call(o.exports, o, o.exports, r), (o.loaded = !0), o.exports + ); + } + (r.g = (function () { + if ("object" == typeof globalThis) return globalThis; + try { + return this || new Function("return this")(); + } catch (t) { + if ("object" == typeof window) return window; + } + })()), + (r.nmd = (t) => ((t.paths = []), t.children || (t.children = []), t)); + var i = {}; + (() => { + "use strict"; + var t = i, + e = r(8764).Buffer; + Object.defineProperty(t, "__esModule", { value: !0 }), + (t.utils = + t.PublicKey = + t.PrivateKey = + t.decrypt = + t.encrypt = + void 0); + var n = r(6261), + o = r(8593), + a = r(4312); + function s(t, r) { + var i = new n.PrivateKey(), + a = t instanceof e ? new n.PublicKey(t) : n.PublicKey.fromHex(t), + s = i.encapsulate(a), + f = (0, o.aesEncrypt)(s, r); + return e.concat([i.publicKey.uncompressed, f]); + } + function f(t, r) { + var i = + t instanceof e ? new n.PrivateKey(t) : n.PrivateKey.fromHex(t), + s = new n.PublicKey(r.slice(0, a.UNCOMPRESSED_PUBLIC_KEY_SIZE)), + f = r.slice(a.UNCOMPRESSED_PUBLIC_KEY_SIZE), + u = s.decapsulate(i); + return (0, o.aesDecrypt)(u, f); + } + (t.encrypt = s), (t.decrypt = f); + var u = r(6261); + Object.defineProperty(t, "PrivateKey", { + enumerable: !0, + get: function () { + return u.PrivateKey; + }, + }), + Object.defineProperty(t, "PublicKey", { + enumerable: !0, + get: function () { + return u.PublicKey; + }, + }), + (t.utils = { + aesDecrypt: o.aesDecrypt, + aesEncrypt: o.aesEncrypt, + decodeHex: o.decodeHex, + getValidSecret: o.getValidSecret, + remove0x: o.remove0x, + }), + (globalThis.ecies = { + PrivateKey: n.PrivateKey, + PublicKey: n.PublicKey, + encrypt: s, + decrypt: f, + }); + })(), + (eciesjs = i); + })(); + window.eciesjs = eciesjs; + }, + EciesGeneratePrivateKey: function () { + console.log(window); + var privateKey = new window.eciesjs.PrivateKey(); + var key = privateKey.toHex(false); + var bufferSize = lengthBytesUTF8(key) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(key, buffer, bufferSize); + return buffer; + }, + EciesGetPublicKey: function (privkey) { + var privateKey = window.eciesjs.PrivateKey.fromHex(UTF8ToString(privkey)); + var publicKey = privateKey.publicKey; + var key = publicKey.toHex(false); + var bufferSize = lengthBytesUTF8(key) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(key, buffer, bufferSize); + return buffer; + }, + EciesEncrypt__deps: ["uint8ArrayToBase64"], + EciesEncrypt: function (pubkey, message) { + // var publicKey = window.eciesjs.PublicKey.fromHex(UTF8ToString(pubkey)); + // var encrypted = dependencies.toBinary( + // window.eciesjs.encrypt(UTF8ToString(pubkey), UTF8ToString(message)) + // ); + var encrypted = window.eciesjs.encrypt( + UTF8ToString(pubkey), + UTF8ToString(message) + ); + var text = core.uint8ArrayToBase64(encrypted); + console.log(text); + var bufferSize = lengthBytesUTF8(text) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(text, buffer, bufferSize); + return buffer; + }, + EciesDecrypt__deps: ["uint8ArrayFromBase64"], + EciesDecrypt: function (privkey, messageB64) { + // var privateKey = window.eciesjs.PrivateKey.fromHex(UTF8ToString(privkey)); + var decrypted = window.eciesjs + .decrypt( + UTF8ToString(privkey), + core.uint8ArrayFromBase64(UTF8ToString(messageB64)) + ) + .toString(); + console.log(UTF8ToString(messageB64)); + console.log(decrypted); + var bufferSize = lengthBytesUTF8(decrypted) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(decrypted, buffer, bufferSize); + return buffer; + }, +}; + +autoAddDeps(eciesLibrary, "$core"); +mergeInto(LibraryManager.library, eciesLibrary); diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib.meta new file mode 100644 index 00000000..2ee50ebe --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/ecies.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f5ce97c2c1333d0418bbde6cfec09a8c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib new file mode 100644 index 00000000..acce9c35 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib @@ -0,0 +1,150 @@ +var SocketPlugin = { + $socketState: { + SocketGameObjectName: "", + sockets: new Map(), + + /* Event listeners */ + onConnected: null, + onDisconnected: null, + + //send to unity stuff + CallUnityEvent: function (id, event, data) { + var JsonData = null; + if (data != null) { + JsonData = data; + } + unityInstance.SendMessage( + socketState.SocketGameObjectName, + "callSocketEvent", + JSON.stringify({ + EventName: event, + SocketId: id, + JsonData: JSON.stringify(JsonData), + }) + ); + }, + }, + + /** + * Set onAvailable callback + * + * @param callback Reference to C# static function + */ + SocketIOSetOnAvailable: function (callback) { + socketState.onAvailable = callback; + }, + + /** + * Set onConnected callback + * + * @param callback Reference to C# static function + */ + SocketIOSetOnConnected: function (callback) { + socketState.onConnected = callback; + }, + + SetupGameObjectName: function (str) { + socketState.SocketGameObjectName = UTF8ToString(str); + socketState.sockets = new Map(); + }, + + GetProtocol: function () { + if (io != undefined) return io.getProtocol; + else { + console.error( + "SocketIO io object not found! Did you forget to include Reference in header?" + ); + throw new Error( + "SocketIO object not found! Did you forget to include Reference in header?" + ); + } + }, + + EstablishSocket: function (url_raw, options_raw) { + if (io != undefined) { + const url = UTF8ToString(url_raw); + const options = UTF8ToString(options_raw); //string of user options selected + + var soc; + if (options.length > 0) soc = io(url, JSON.parse(options)); + else soc = io(url); + + var id = 0; + do { + //generate an id between 1 and 10000 + id = Math.floor(Math.random() * 10000) + 1; + } while (socketState.sockets.has(id)); + + socketState.sockets.set(id, soc); + + var cur = this; + + soc.onAny(function (event, args) { + socketState.CallUnityEvent(id, event, args); + }); + soc.on("connect", (args) => { + socketState.CallUnityEvent(id, "connect", args); + }); + soc.on("disconnect", (args) => { + socketState.CallUnityEvent(id, "disconnect", args); + }); + soc.on("error", function (evData) { + console.error("Connection Error:", evData); + }); + + return id; + } else { + console.error( + "SocketIO io object not found! Did you forget to include Reference in header?" + ); + throw new Error( + "SocketIO object not found! Did you forget to include Reference in header?" + ); + } + }, + + //Socket Object stuff + + Socket_IsConnected: function (id) { + return socketState.sockets.get(id).connected; + }, + + Socket_Connect: function (id) { + socketState.sockets.get(id).connect(); + }, + + Socket_Disconnect: function (id) { + socketState.sockets.get(id).disconnect(); + }, + + // Socket_Send: function(id, data_raw) { + // if(data_raw != null) + // socketState.sockets.get(id).send(JSON.parse(UTF8ToString(data_raw))); + // else + // socketState.sockets.get(id).send(null); + // }, + + Socket_Emit: function (id, event_raw, data_raw) { + if (UTF8ToString(data_raw).length == 0) { + socketState.sockets.get(id).emit(UTF8ToString(event_raw), null); + } else { + socketState.sockets + .get(id) + .emit(UTF8ToString(event_raw), JSON.parse(UTF8ToString(data_raw))); + } + }, + + Socket_Get_Conn_Id: function (id) { + var result = socketState.sockets.get(id).id; + if (result != undefined) { + var buffersize = lengthBytesUTF8(result) + 1; + var buffer = _malloc(buffersize); + stringToUTF8(result, buffer, bufferSize); + return buffer; + } else { + return null; + } + }, +}; +autoAddDeps(SocketPlugin, "$socketState"); +mergeInto(LibraryManager.library, SocketPlugin); diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib.meta new file mode 100644 index 00000000..fa383cb4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/WebGL/webgl-scketio.jslib.meta @@ -0,0 +1,86 @@ +fileFormatVersion: 2 +guid: 2879647f03a879741af23e3cf6fa5950 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 0 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows.meta new file mode 100644 index 00000000..43b958ad --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffd2020bb1bf8044082a725a9e463497 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll new file mode 100644 index 00000000..928673f4 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll.meta new file mode 100644 index 00000000..3ed6c471 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/Windows/ecies.dll.meta @@ -0,0 +1,71 @@ +fileFormatVersion: 2 +guid: 6cfdc77e8f3aafa4693ccdb41fdaa1b1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS.meta new file mode 100644 index 00000000..27ad5809 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2cc095c53f505491f8b5b1d47b1b5232 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a new file mode 100644 index 00000000..80098aa7 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a.meta new file mode 100644 index 00000000..684ddbe4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.a.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: dc63337192efc48e487871768d8c76ee +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h new file mode 100644 index 00000000..3af74c26 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h @@ -0,0 +1,84 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef size_t GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +#ifdef _MSC_VER +#include +typedef _Fcomplex GoComplex64; +typedef _Dcomplex GoComplex128; +#else +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; +#endif + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern char* EciesGeneratePrivateKey(); +extern char* EciesGetPublicKey(char* privkey); +extern char* EciesEncrypt(char* pubkey, char* message); +extern char* EciesDecrypt(char* privkey, char* messageB64); + +#ifdef __cplusplus +} +#endif diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h.meta new file mode 100644 index 00000000..499dd38a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/ECIES/iOS/ecies.h.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 197f258b17d3e441dbdd8fe12eca430f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity.meta new file mode 100644 index 00000000..6f4fddde --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f59459ce262d5c46a44b9b81a2c0d56 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md new file mode 100644 index 00000000..a24bf6bd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md @@ -0,0 +1,153 @@ +# SocketIOUnity + +## Description +A Wrapper for [socket.io-client-csharp](https://github.com/doghappy/socket.io-client-csharp) to work with Unity, +Supports socket.io server v2/v3/v4, and has implemented http polling and websocket. + +## Give a Star! ⭐ +Feel free to request an issue on github if you find bugs or request a new feature. +If you find this useful, please give it a star to show your support for this project. + +## Supported Platforms +💻 PC/Mac, 🍎 iOS, 🤖 Android + +Other platforms (including the Editor) have not been tested and/or may not work! + +## Example +![Example](https://github.com/itisnajim/SocketIOUnity/blob/main/Samples~/example.gif?raw=true) + +## Installation +Copy this url: +```https://github.com/itisnajim/SocketIOUnity.git``` +then in Unity open Window -> Package Manager -> and click (+) add package from git URL... and paste it there. + +## Usage +Check the 'Samples~' folder and [socket.io-client-csharp](https://github.com/doghappy/socket.io-client-csharp) repo for more usage info. + +### Initiation: +You may want to put the script on the Camera Object or using ```DontDestroyOnLoad``` to keep the socket alive between scenes! +```csharp +var uri = new Uri("https://www.example.com"); +socket = new SocketIOUnity(uri, new SocketIOOptions +{ + Query = new Dictionary + { + {"token", "UNITY" } + } + , + Transport = SocketIOClient.Transport.TransportProtocol.WebSocket +}); +``` + +### JsonSerializer: +The library uses System.Text.Json to serialize and deserialize json by default, may [won't work in the current il2cpp](https://forum.unity.com/threads/please-add-system-text-json-support.1000369/). +You can use Newtonsoft Json.Net instead: +```csharp +socket.JsonSerializer = new NewtonsoftJsonSerializer(); +``` + +### Emiting: +```csharp +socket.Emit("eventName"); +socket.Emit("eventName", "Hello World"); +socket.Emit("eventName", someObject); +socket.EmitStringAsJSON("eventName", "{\"foo\": \"bar\"}"); +await client.EmitAsync("hi", "socket.io"); // Here you should make the method async +``` + +### Receiving: +```csharp +socket.On("eventName", (response) => +{ + /* Do Something with data! */ + var obj = response.GetValue(); + ... +}); +``` +if you want to play with unity game objects (eg: rotating an object) or saving data using PlayerPrefs system use this instead: +```csharp +// Set (unityThreadScope) the thread scope function where the code should run. +// Options are: .Update, .LateUpdate or .FixedUpdate, default: UnityThreadScope.Update +socket.unityThreadScope = UnityThreadScope.Update; +// "spin" is an example of an event name. +socket.OnUnityThread("spin", (response) => +{ + objectToSpin.transform.Rotate(0, 45, 0); +}); +``` +or: +```csharp +socket.On("spin", (response) => +{ + UnityThread.executeInUpdate(() => { + objectToSpin.transform.Rotate(0, 45, 0); + }); + /* + or + UnityThread.executeInLateUpdate(() => { ... }); + or + UnityThread.executeInFixedUpdate(() => { ... }); + */ +}); +``` + +### Connecting/Disconnecting: +```csharp +socket.Connect(); +await socket.ConnectAsync(); + +socket.Disconnect(); +await socket.DisconnectAsync(); +``` + +## Server Example +```javascript +const port = 11100; +const io = require('socket.io')(); +io.use((socket, next) => { + if (socket.handshake.query.token === "UNITY") { + next(); + } else { + next(new Error("Authentication error")); + } +}); + +io.on('connection', socket => { + socket.emit('connection', {date: new Date().getTime(), data: "Hello Unity"}) + + socket.on('hello', (data) => { + socket.emit('hello', {date: new Date().getTime(), data: data}); + }); + + socket.on('spin', (data) => { + socket.emit('spin', {date: new Date().getTime()}); + }); + + socket.on('class', (data) => { + socket.emit('class', {date: new Date().getTime(), data: data}); + }); +}); + +io.listen(port); +console.log('listening on *:' + port); +``` + +## Acknowledgement +[socket.io-client-csharp](https://github.com/doghappy/socket.io-client-csharp) + +[Socket.IO](https://github.com/socketio/socket.io) + +[System.Text.Json](https://docs.microsoft.com/en-us/dotnet/api/system.text.json) + +[Newtonsoft Json.NET](https://www.newtonsoft.com/json/help/html/Introduction.htm) + +[Unity Documentation](https://docs.unity.com) + + +## Author + +itisnajim, itisnajim@gmail.com + +## License + +SocketIOUnity is available under the MIT license. See the LICENSE file for more info. diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md.meta new file mode 100644 index 00000000..d61131f8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3607427a1a96ef641b6fe31abae1fd78 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime.meta new file mode 100644 index 00000000..87bcd11b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84dae31936282a84988fa5a9f8c211ea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json.meta new file mode 100644 index 00000000..9f784df6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 50487a3473fb0154f84abd309908993f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs new file mode 100644 index 00000000..3a30a96c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Newtonsoft.Json; + +namespace MetaMask.SocketIOClient.Newtonsoft.Json +{ + internal class ByteArrayConverter : JsonConverter + { + public ByteArrayConverter() + { + Bytes = new List(); + } + + internal List Bytes { get; } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(byte[]); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, global::Newtonsoft.Json.JsonSerializer serializer) + { + byte[] bytes = null; + if (reader.TokenType == JsonToken.StartObject) + { + reader.Read(); + if (reader.TokenType == JsonToken.PropertyName && reader.Value?.ToString() == "_placeholder") + { + reader.Read(); + if (reader.TokenType == JsonToken.Boolean && (bool)reader.Value) + { + reader.Read(); + if (reader.TokenType == JsonToken.PropertyName && reader.Value?.ToString() == "num") + { + reader.Read(); + if (reader.Value != null) + { + if (int.TryParse(reader.Value.ToString(), out int num)) + { + bytes = Bytes[num]; + reader.Read(); + } + } + } + } + } + } + return bytes; + } + + public override void WriteJson(JsonWriter writer, object value, global::Newtonsoft.Json.JsonSerializer serializer) + { + var source = value as byte[]; + Bytes.Add(source.ToArray()); + writer.WriteStartObject(); + writer.WritePropertyName("_placeholder"); + writer.WriteValue(true); + writer.WritePropertyName("num"); + writer.WriteValue(Bytes.Count - 1); + writer.WriteEndObject(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs.meta new file mode 100644 index 00000000..9d7950c1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/ByteArrayConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63bcbf4b73ddce541bbdf2d4fc05b0e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs new file mode 100644 index 00000000..01928cac --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; + +using MetaMask.SocketIOClient.JsonSerializer; + +using Newtonsoft.Json; + +namespace MetaMask.SocketIOClient.Newtonsoft.Json +{ + public class NewtonsoftJsonSerializer : IJsonSerializer + { + public Func JsonSerializerOptions { get; } + + public JsonSerializeResult Serialize(object[] data) + { + var converter = new ByteArrayConverter(); + var settings = GetOptions(); + settings.Converters.Add(converter); + string json = JsonConvert.SerializeObject(data, settings); + return new JsonSerializeResult + { + Json = json, + Bytes = converter.Bytes + }; + } + + public T Deserialize(string json) + { + var settings = GetOptions(); + return JsonConvert.DeserializeObject(json, settings); + } + + public T Deserialize(string json, IList bytes) + { + var converter = new ByteArrayConverter(); + converter.Bytes.AddRange(bytes); + var settings = GetOptions(); + settings.Converters.Add(converter); + return JsonConvert.DeserializeObject(json, settings); + } + + private JsonSerializerSettings GetOptions() + { + JsonSerializerSettings options; + if (OptionsProvider != null) + { + options = OptionsProvider(); + } + else + { + options = new JsonSerializerSettings(); + } + if (options == null) + { + options = new JsonSerializerSettings(); + } + return options; + } + + //[Obsolete("Use Options instead.")] + //public virtual JsonSerializerSettings CreateOptions() + //{ + // return new JsonSerializerSettings(); + //} + + public Func OptionsProvider { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs.meta new file mode 100644 index 00000000..fe04f3c6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0b088d5830c2c6489f7601572a489ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.meta new file mode 100644 index 00000000..3cd9da83 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27e12d830a892e84aba84d74044503f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs new file mode 100644 index 00000000..8dbb18bd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs @@ -0,0 +1,11 @@ +namespace MetaMask.SocketIOClient +{ + public class DisconnectReason + { + public static string IOServerDisconnect = "io server disconnect"; + public static string IOClientDisconnect = "io client disconnect"; + public static string PingTimeout = "ping timeout"; + public static string TransportClose = "transport close"; + public static string TransportError = "transport error"; + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs.meta new file mode 100644 index 00000000..3f66ce72 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/DisconnectReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14f74618ff5a4b749b5690fae5c0feeb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs new file mode 100644 index 00000000..4b6a1734 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.Text.Json; + +namespace MetaMask.SocketIOClient +{ + public delegate void OnAnyHandler(string eventName, SocketIOResponse response); + public delegate void OnOpenedHandler(string sid, int pingInterval, int pingTimeout); + //public delegate void OnDisconnectedHandler(string sid, int pingInterval, int pingTimeout); + public delegate void OnAck(int packetId, List array); + public delegate void OnBinaryAck(int packetId, int totalCount, List array); + public delegate void OnBinaryReceived(int packetId, int totalCount, string eventName, List array); + public delegate void OnDisconnected(); + public delegate void OnError(string error); + public delegate void OnEventReceived(int packetId, string eventName, List array); + public delegate void OnOpened(string sid, int pingInterval, int pingTimeout); + public delegate void OnPing(); + public delegate void OnPong(); +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs.meta new file mode 100644 index 00000000..5da7a0cf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/EventHandlers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac5abe51ec59649419f4dd88539a88f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions.meta new file mode 100644 index 00000000..71ee0b7a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3878488647904346adf9d0c22eaf278 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs new file mode 100644 index 00000000..a1451370 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs @@ -0,0 +1,15 @@ +namespace MetaMask.SocketIOClient.Transport +{ + + [System.Serializable] + public class UnityWebRequestException : System.Exception + { + public UnityWebRequestException() { } + public UnityWebRequestException(string message) : base(message) { } + public UnityWebRequestException(string message, System.Exception inner) : base(message, inner) { } + protected UnityWebRequestException( + System.Runtime.Serialization.SerializationInfo info, + System.Runtime.Serialization.StreamingContext context) : base(info, context) { } + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs.meta new file mode 100644 index 00000000..b20d15d0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Exceptions/UnityWebRequestException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5709a15e21fb0549bd8caacaba9fc9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer.meta new file mode 100644 index 00000000..db9b7c7d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5001680e1a8918646ac213df45355a04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs new file mode 100644 index 00000000..fdd0f30f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace MetaMask.SocketIOClient.JsonSerializer +{ + internal class ByteArrayConverter : JsonConverter + { + public ByteArrayConverter() + { + Bytes = new List(); + } + + + public List Bytes { get; } + + public override byte[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + byte[] bytes = null; + if (reader.TokenType == JsonTokenType.StartObject) + { + reader.Read(); + if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "_placeholder") + { + reader.Read(); + if (reader.TokenType == JsonTokenType.True && reader.GetBoolean()) + { + reader.Read(); + if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "num") + { + reader.Read(); + int num = reader.GetInt32(); + bytes = Bytes[num]; + reader.Read(); + } + } + } + } + return bytes; + } + + public override void Write(Utf8JsonWriter writer, byte[] value, JsonSerializerOptions options) + { + Bytes.Add(value); + writer.WriteStartObject(); + writer.WritePropertyName("_placeholder"); + writer.WriteBooleanValue(true); + writer.WritePropertyName("num"); + writer.WriteNumberValue(Bytes.Count - 1); + writer.WriteEndObject(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs.meta new file mode 100644 index 00000000..30599275 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/ByteArrayConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24603420b4a83ca4a82d9ea24be87771 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs new file mode 100644 index 00000000..96ae30c5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace MetaMask.SocketIOClient.JsonSerializer +{ + public interface IJsonSerializer + { + JsonSerializeResult Serialize(object[] data); + T Deserialize(string json); + T Deserialize(string json, IList incomingBytes); + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs.meta new file mode 100644 index 00000000..aa134ef5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/IJsonSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54b775a3a59686347a59573f5cf6ff73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs new file mode 100644 index 00000000..4d7b8cdf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace MetaMask.SocketIOClient.JsonSerializer +{ + public class JsonSerializeResult + { + public string Json { get; set; } + public IList Bytes { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs.meta new file mode 100644 index 00000000..a3e73603 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/JsonSerializeResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40af1e1fd07d42d4b980d61fa11c2bd7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs new file mode 100644 index 00000000..7ff2616e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; + +namespace MetaMask.SocketIOClient.JsonSerializer +{ + public class SystemTextJsonSerializer : IJsonSerializer + { + public JsonSerializeResult Serialize(object[] data) + { + var converter = new ByteArrayConverter(); + var options = GetOptions(); + options.Converters.Add(converter); + string json = System.Text.Json.JsonSerializer.Serialize(data, options); + return new JsonSerializeResult + { + Json = json, + Bytes = converter.Bytes + }; + } + + public T Deserialize(string json) + { + var options = GetOptions(); + return System.Text.Json.JsonSerializer.Deserialize(json, options); + } + + public T Deserialize(string json, IList bytes) + { + var options = GetOptions(); + var converter = new ByteArrayConverter(); + options.Converters.Add(converter); + converter.Bytes.AddRange(bytes); + return System.Text.Json.JsonSerializer.Deserialize(json, options); + } + + private JsonSerializerOptions GetOptions() + { + JsonSerializerOptions options = null; + if (OptionsProvider != null) + { + options = OptionsProvider(); + } + if (options == null) + { + options = new JsonSerializerOptions(); + } + return options; + } + + public Func OptionsProvider { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs.meta new file mode 100644 index 00000000..ec306867 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9332d1fad82da514789322003d3ccd7b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages.meta new file mode 100644 index 00000000..84081e21 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 547cfb718c036334dbc3d2fc345c25c0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs new file mode 100644 index 00000000..2ec69cdb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class BinaryMessage : IMessage + { + public MessageType Type => MessageType.BinaryMessage; + + public string Namespace { get; set; } + + public string Event { get; set; } + + public int Id { get; set; } + + public List JsonElements { get; set; } + + public string Json { get; set; } + + public int BinaryCount { get; set; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public void Read(string msg) + { + int index1 = msg.IndexOf('-'); + BinaryCount = int.Parse(msg.Substring(0, index1)); + + int index2 = msg.IndexOf('['); + + int index3 = msg.LastIndexOf(',', index2); + if (index3 > -1) + { + Namespace = msg.Substring(index1 + 1, index3 - index1 - 1); + int idLength = index2 - index3 - 1; + if (idLength > 0) + { + Id = int.Parse(msg.Substring(index3 + 1, idLength)); + } + } + else + { + int idLength = index2 - index1 - 1; + if (idLength > 0) + { + Id = int.Parse(msg.Substring(index1 + 1, idLength)); + } + } + + string json = msg.Substring(index2); + + var array = JsonDocument.Parse(json).RootElement.EnumerateArray(); + int i = -1; + foreach (var item in array) + { + i++; + if (i == 0) + { + Event = item.GetString(); + JsonElements = new List(); + } + else + { + JsonElements.Add(item); + } + } + } + + public string Write() + { + var builder = new StringBuilder(); + builder + .Append("45") + .Append(OutgoingBytes.Count) + .Append('-'); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[\"").Append(Event).Append("\"]"); + } + else + { + string data = Json.Insert(1, $"\"{Event}\","); + builder.Append(data); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs.meta new file mode 100644 index 00000000..ef8c846d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/BinaryMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2be9888183648f44e9b465e62ea4e4c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs new file mode 100644 index 00000000..459c6b47 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs @@ -0,0 +1,76 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + /// + /// The server calls the client's callback + /// + public class ClientAckMessage : IMessage + { + public MessageType Type => MessageType.AckMessage; + + public string Namespace { get; set; } + + public string Event { get; set; } + + public List JsonElements { get; set; } + + public string Json { get; set; } + + public int Id { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + int index = msg.IndexOf('['); + int lastIndex = msg.LastIndexOf(',', index); + if (lastIndex > -1) + { + string text = msg.Substring(0, index); + Namespace = text.Substring(0, lastIndex); + Id = int.Parse(text.Substring(lastIndex + 1)); + } + else + { + Id = int.Parse(msg.Substring(0, index)); + } + msg = msg.Substring(index); + JsonElements = JsonDocument.Parse(msg).RootElement.EnumerateArray().ToList(); + } + + public string Write() + { + var builder = new StringBuilder(); + builder.Append("42"); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + builder.Append(Id); + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[\"").Append(Event).Append("\"]"); + } + else + { + string data = Json.Insert(1, $"\"{Event}\","); + builder.Append(data); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs.meta new file mode 100644 index 00000000..1ea784b0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientAckMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2dc7485b6ae28ca4a9e097866306c9ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs new file mode 100644 index 00000000..aad0a591 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + /// + /// The server calls the client's callback with binary + /// + public class ClientBinaryAckMessage : IMessage + { + public MessageType Type => MessageType.BinaryAckMessage; + + public string Namespace { get; set; } + + public string Event { get; set; } + + public List JsonElements { get; set; } + + public string Json { get; set; } + + public int Id { get; set; } + + public int BinaryCount { get; set; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public void Read(string msg) + { + int index1 = msg.IndexOf('-'); + BinaryCount = int.Parse(msg.Substring(0, index1)); + + int index2 = msg.IndexOf('['); + + int index3 = msg.LastIndexOf(',', index2); + if (index3 > -1) + { + Namespace = msg.Substring(index1 + 1, index3 - index1 - 1); + Id = int.Parse(msg.Substring(index3 + 1, index2 - index3 - 1)); + } + else + { + Id = int.Parse(msg.Substring(index1 + 1, index2 - index1 - 1)); + } + + string json = msg.Substring(index2); + JsonElements = JsonDocument.Parse(json).RootElement.EnumerateArray().ToList(); + } + + public string Write() + { + var builder = new StringBuilder(); + builder + .Append("45") + .Append(OutgoingBytes.Count) + .Append('-'); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + builder.Append(Id); + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[\"").Append(Event).Append("\"]"); + } + else + { + string data = Json.Insert(1, $"\"{Event}\","); + builder.Append(data); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs.meta new file mode 100644 index 00000000..796f3d6c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ClientBinaryAckMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef6ed26846d672844a1cc313b32cd644 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs new file mode 100644 index 00000000..0aa3edc9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs @@ -0,0 +1,128 @@ +using System.Collections.Generic; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class ConnectedMessage : IMessage + { + public MessageType Type => MessageType.Connected; + + public string Namespace { get; set; } + + public string Sid { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public IEnumerable> Query { get; set; } + public string AuthJsonStr { get; set; } + + public void Read(string msg) + { + if (Eio == 3) + { + Eio3Read(msg); + } + else + { + Eio4Read(msg); + } + } + + public string Write() + { + if (Eio == 3) + { + return Eio3Write(); + } + return Eio4Write(); + } + + public void Eio4Read(string msg) + { + int index = msg.IndexOf('{'); + if (index > 0) + { + Namespace = msg.Substring(0, index - 1); + msg = msg.Substring(index); + } + else + { + Namespace = string.Empty; + } + Sid = JsonDocument.Parse(msg).RootElement.GetProperty("sid").GetString(); + } + + public string Eio4Write() + { + var builder = new StringBuilder("40"); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + builder.Append(AuthJsonStr); + return builder.ToString(); + } + + public void Eio3Read(string msg) + { + if (msg.Length >= 2) + { + int startIndex = msg.IndexOf('/'); + if (startIndex == -1) + { + return; + } + int endIndex = msg.IndexOf('?', startIndex); + if (endIndex == -1) + { + endIndex = msg.IndexOf(',', startIndex); + } + if (endIndex == -1) + { + endIndex = msg.Length; + } + Namespace = msg.Substring(startIndex, endIndex); + } + } + + public string Eio3Write() + { + if (string.IsNullOrEmpty(Namespace)) + { + return string.Empty; + } + var builder = new StringBuilder("40"); + builder.Append(Namespace); + if (Query != null) + { + int i = -1; + foreach (var item in Query) + { + i++; + if (i == 0) + { + builder.Append('?'); + } + else + { + builder.Append('&'); + } + builder.Append(item.Key).Append('=').Append(item.Value); + } + } + builder.Append(','); + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs.meta new file mode 100644 index 00000000..29535eee --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ConnectedMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2d7520b31db2c5f439fd1094f3fb86e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs new file mode 100644 index 00000000..a6df7bb6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class DisconnectedMessage : IMessage + { + public MessageType Type => MessageType.Disconnected; + + public string Namespace { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + Namespace = msg.TrimEnd(','); + } + + public string Write() + { + if (string.IsNullOrEmpty(Namespace)) + { + return "41"; + } + return "41" + Namespace + ","; + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs.meta new file mode 100644 index 00000000..f1241d24 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/DisconnectedMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49a4390c75b6cbe4e9e6d46ce4bbf371 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs new file mode 100644 index 00000000..9dc827cb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class ErrorMessage : IMessage + { + public MessageType Type => MessageType.ErrorMessage; + + public string Message { get; set; } + + public string Namespace { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + if (Eio == 3) + { + Message = msg.Trim('"'); + } + else + { + int index = msg.IndexOf('{'); + if (index > 0) + { + Namespace = msg.Substring(0, index - 1); + msg = msg.Substring(index); + } + var doc = JsonDocument.Parse(msg); + Message = doc.RootElement.GetProperty("message").GetString(); + } + } + + public string Write() + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs.meta new file mode 100644 index 00000000..996fde38 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ErrorMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 524fb2a9f8d5f7a40b2f1d1b73f59f42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs new file mode 100644 index 00000000..af059368 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs @@ -0,0 +1,98 @@ +using System.Collections.Generic; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class EventMessage : IMessage + { + public MessageType Type => MessageType.EventMessage; + + public string Namespace { get; set; } + + public string Event { get; set; } + + public int Id { get; set; } + + public List JsonElements { get; set; } + + public string Json { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + int index = msg.IndexOf('['); + int lastIndex = msg.LastIndexOf(',', index); + if (lastIndex > -1) + { + string text = msg.Substring(0, index); + Namespace = text.Substring(0, lastIndex); + if (index - lastIndex > 1) + { + Id = int.Parse(text.Substring(lastIndex + 1)); + } + } + else + { + if (index > 0) + { + Id = int.Parse(msg.Substring(0, index)); + } + } + msg = msg.Substring(index); + + //int index = msg.IndexOf('['); + //if (index > 0) + //{ + // Namespace = msg.Substring(0, index - 1); + // msg = msg.Substring(index); + //} + var array = JsonDocument.Parse(msg).RootElement.EnumerateArray(); + int i = -1; + foreach (var item in array) + { + i++; + if (i == 0) + { + Event = item.GetString(); + JsonElements = new List(); + } + else + { + JsonElements.Add(item); + } + } + } + + public string Write() + { + var builder = new StringBuilder(); + builder.Append("42"); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[\"").Append(Event).Append("\"]"); + } + else + { + string data = Json.Insert(1, $"\"{Event}\","); + builder.Append(data); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs.meta new file mode 100644 index 00000000..56764fce --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/EventMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8712475db20e392499fe08eb3f58580c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs new file mode 100644 index 00000000..d61b3d6a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public interface IMessage + { + MessageType Type { get; } + + List OutgoingBytes { get; set; } + + List IncomingBytes { get; set; } + + int BinaryCount { get; } + + int Eio { get; set; } + + TransportProtocol Protocol { get; set; } + + void Read(string msg); + + //void Eio3WsRead(string msg); + + //void Eio3HttpRead(string msg); + + string Write(); + + //string Eio3WsWrite(); + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs.meta new file mode 100644 index 00000000..e39c60f4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/IMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aae356edf6d7e624cae3281fec228257 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs new file mode 100644 index 00000000..449220ee --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs @@ -0,0 +1,72 @@ +using System; + +namespace MetaMask.SocketIOClient.Messages +{ + public static class MessageFactory + { + private static IMessage CreateMessage(MessageType type) + { + switch (type) + { + case MessageType.Opened: + return new OpenedMessage(); + case MessageType.Ping: + return new PingMessage(); + case MessageType.Pong: + return new PongMessage(); + case MessageType.Connected: + return new ConnectedMessage(); + case MessageType.Disconnected: + return new DisconnectedMessage(); + case MessageType.EventMessage: + return new EventMessage(); + case MessageType.AckMessage: + return new ClientAckMessage(); + case MessageType.ErrorMessage: + return new ErrorMessage(); + case MessageType.BinaryMessage: + return new BinaryMessage(); + case MessageType.BinaryAckMessage: + return new ClientBinaryAckMessage(); + } + return null; + } + + public static IMessage CreateMessage(int eio, string msg) + { + var enums = Enum.GetValues(typeof(MessageType)); + foreach (MessageType item in enums) + { + string prefix = ((int)item).ToString(); + if (msg.StartsWith(prefix)) + { + IMessage result = CreateMessage(item); + if (result != null) + { + result.Eio = eio; + result.Read(msg.Substring(prefix.Length)); + return result; + } + } + } + return null; + } + + public static OpenedMessage CreateOpenedMessage(string msg) + { + var openedMessage = new OpenedMessage(); + if (msg[0] == '0') + { + openedMessage.Eio = 4; + openedMessage.Read(msg.Substring(1)); + } + else + { + openedMessage.Eio = 3; + int index = msg.IndexOf(':'); + openedMessage.Read(msg.Substring(index + 2)); + } + return openedMessage; + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs.meta new file mode 100644 index 00000000..f348c65d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 686585cfe097b0d43971fb204dbe21b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs new file mode 100644 index 00000000..a5b9e990 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs @@ -0,0 +1,16 @@ +namespace MetaMask.SocketIOClient.Messages +{ + public enum MessageType + { + Opened, + Ping = 2, + Pong, + Connected = 40, + Disconnected, + EventMessage, + AckMessage, + ErrorMessage, + BinaryMessage, + BinaryAckMessage + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs.meta new file mode 100644 index 00000000..40fff2a3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/MessageType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca6444b15671a5148a091b42a1da1589 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs new file mode 100644 index 00000000..e337e35c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class OpenedMessage : IMessage + { + public MessageType Type => MessageType.Opened; + + public string Sid { get; set; } + + public string Namespace { get; set; } + + public List Upgrades { get; private set; } + + public int PingInterval { get; private set; } + + public int PingTimeout { get; private set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + private int GetInt32FromJsonElement(JsonElement element, string msg, string name) + { + var p = element.GetProperty(name); + int val; + switch (p.ValueKind) + { + case JsonValueKind.String: + val = int.Parse(p.GetString()); + break; + case JsonValueKind.Number: + val = p.GetInt32(); + break; + default: + throw new ArgumentException($"Invalid message: '{msg}'"); + } + + return val; + } + + public void Read(string msg) + { + var doc = JsonDocument.Parse(msg); + var root = doc.RootElement; + Sid = root.GetProperty("sid").GetString(); + PingInterval = GetInt32FromJsonElement(root, msg, "pingInterval"); + PingTimeout = GetInt32FromJsonElement(root, msg, "pingTimeout"); + Upgrades = new List(); + var upgrades = root.GetProperty("upgrades").EnumerateArray(); + foreach (var item in upgrades) + { + Upgrades.Add(item.GetString()); + } + } + + public string Write() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs.meta new file mode 100644 index 00000000..2e4a6a54 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/OpenedMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d30b75c987edbf54087d3e254695a467 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs new file mode 100644 index 00000000..a1042a68 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class PingMessage : IMessage + { + public MessageType Type => MessageType.Ping; + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + } + + public string Write() => "2"; + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs.meta new file mode 100644 index 00000000..2b0d0261 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PingMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc2cfb037cfd97f45b910b5204ba3ea4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs new file mode 100644 index 00000000..ae20ae76 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + public class PongMessage : IMessage + { + public MessageType Type => MessageType.Pong; + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public TimeSpan Duration { get; set; } + + public void Read(string msg) + { + } + + public string Write() => "3"; + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs.meta new file mode 100644 index 00000000..0904d3ab --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/PongMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d122199dd4fc9ae46a00838040747f0a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs new file mode 100644 index 00000000..c9e1a394 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using System.Text; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + /// + /// The client calls the server's callback + /// + public class ServerAckMessage : IMessage + { + public MessageType Type => MessageType.AckMessage; + + public string Namespace { get; set; } + + public string Json { get; set; } + + public int Id { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public void Read(string msg) + { + } + + public string Write() + { + var builder = new StringBuilder(); + builder.Append("43"); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + builder.Append(Id); + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[]"); + } + else + { + builder.Append(Json); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs.meta new file mode 100644 index 00000000..265bd2de --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerAckMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c5d13db9366d3e4b8f2613c6a455c3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs new file mode 100644 index 00000000..36cb545e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.Text; +using System.Text.Json; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient.Messages +{ + /// + /// The client calls the server's callback with binary + /// + public class ServerBinaryAckMessage : IMessage + { + public MessageType Type => MessageType.BinaryAckMessage; + + public string Namespace { get; set; } + + public List JsonElements { get; set; } + + public string Json { get; set; } + + public int Id { get; set; } + + public int BinaryCount { get; } + + public int Eio { get; set; } + + public TransportProtocol Protocol { get; set; } + + public List OutgoingBytes { get; set; } + + public List IncomingBytes { get; set; } + + public void Read(string msg) + { + } + + public string Write() + { + var builder = new StringBuilder(); + builder + .Append("46") + .Append(OutgoingBytes.Count) + .Append('-'); + if (!string.IsNullOrEmpty(Namespace)) + { + builder.Append(Namespace).Append(','); + } + builder.Append(Id); + if (string.IsNullOrEmpty(Json)) + { + builder.Append("[]"); + } + else + { + builder.Append(Json); + } + return builder.ToString(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs.meta new file mode 100644 index 00000000..647c9dde --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Messages/ServerBinaryAckMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22bf5ab04f025de43a2dcab22e926bd9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs new file mode 100644 index 00000000..00fcefd3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs @@ -0,0 +1,779 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.NativeWebSocket; +using MetaMask.SocketIOClient.JsonSerializer; +using MetaMask.SocketIOClient.Messages; +using MetaMask.SocketIOClient.Transport; +using MetaMask.SocketIOClient.UriConverters; +using UnityEngine.Networking; + +namespace MetaMask.SocketIOClient +{ + /// + /// socket.io client class + /// + public class SocketIO : IDisposable + { + /// + /// Create SocketIO object with default options + /// + /// + public SocketIO(string uri) : this(new Uri(uri)) { } + + /// + /// Create SocketIO object with options + /// + /// + public SocketIO(Uri uri) : this(uri, new SocketIOOptions()) { } + + /// + /// Create SocketIO object with options + /// + /// + /// + public SocketIO(string uri, SocketIOOptions options) : this(new Uri(uri), options) { } + + /// + /// Create SocketIO object with options + /// + /// + /// + public SocketIO(Uri uri, SocketIOOptions options) + { + ServerUri = uri ?? throw new ArgumentNullException("uri"); + Options = options ?? throw new ArgumentNullException("options"); + Initialize(); + } + + private Uri _serverUri; + public Uri ServerUri + { + get => this._serverUri; + set + { + if (this._serverUri != value) + { + this._serverUri = value; + if (value != null && value.AbsolutePath != "/") + { + Namespace = value.AbsolutePath; + } + } + } + } + + /// + /// An unique identifier for the socket session. Set after the connect event is triggered, and updated after the reconnect event. + /// + public string Id { get; set; } + + public string Namespace { get; private set; } + + /// + /// Whether or not the socket is connected to the server. + /// + public bool Connected { get; private set; } + + /// + /// Gets current attempt of reconnection. + /// + public int Attempts { get; private set; } + + /// + /// Whether or not the socket is disconnected from the server. + /// + public bool Disconnected => !Connected; + + public SocketIOOptions Options { get; } + + public IJsonSerializer JsonSerializer { get; set; } + + public IUriConverter UriConverter { get; set; } + + public Action UpdateLoop { get; private set; } + + public Action RunUpdateLoop { get; set; } + + //public HttpClient HttpClient { get; set; } + + public Func ClientWebSocketProvider { get; set; } + private IClientWebSocket _clientWebsocket; + + public BaseTransport _transport; + private List _expectedExceptions; + private int _packetId; + private bool _isConnectCoreRunning; + private Uri _realServerUri; + private Exception _connectCoreException; + private Dictionary> _ackHandlers; + private List _onAnyHandlers; + private Dictionary> _eventHandlers; + private CancellationTokenSource _connectionTokenSource; + private double _reconnectionDelay; + + #region Socket.IO event + public event EventHandler OnConnected; + //public event EventHandler OnConnectError; + //public event EventHandler OnConnectTimeout; + public event EventHandler OnError; + public event EventHandler OnDisconnected; + + /// + /// Fired upon a successful reconnection. + /// + public event EventHandler OnReconnected; + + /// + /// Fired upon an attempt to reconnect. + /// + public event EventHandler OnReconnectAttempt; + + /// + /// Fired upon a reconnection attempt error. + /// + public event EventHandler OnReconnectError; + + /// + /// Fired when couldn’t reconnect within reconnectionAttempts + /// + public event EventHandler OnReconnectFailed; + public event EventHandler OnPing; + public event EventHandler OnPong; + + #endregion + + #region Observable Event + //Subject _onConnected; + //public IObservable ConnectedObservable { get; private set; } + #endregion + + private void Initialize() + { + this._packetId = -1; + this._ackHandlers = new Dictionary>(); + this._eventHandlers = new Dictionary>(); + this._onAnyHandlers = new List(); + + //JsonSerializer = new SystemTextJsonSerializer(); + JsonSerializer = new Newtonsoft.Json.NewtonsoftJsonSerializer(); + UriConverter = new UriConverter(); + + //HttpClient = new HttpClient(); + //ClientWebSocketProvider = () => new SystemNetWebSocketsClientWebSocket(Options.EIO); + ClientWebSocketProvider = () => new NativeClientWebSocket(Options.EIO); + this._expectedExceptions = new List + { + typeof(TimeoutException), + typeof(WebSocketException), + typeof(UnityWebRequestException), + typeof(OperationCanceledException), + typeof(TaskCanceledException) + }; + } + + private async Task CreateTransportAsync() + { + Options.Transport = await GetProtocolAsync(); + if (Options.Transport == TransportProtocol.Polling) + { + HttpPollingHandler handler; + if (Options.EIO == 3) + handler = new Eio3HttpPollingHandler(); + else + handler = new Eio4HttpPollingHandler(); + this._transport = new HttpTransport(handler, Options, JsonSerializer); + } + else + { + this._clientWebsocket = ClientWebSocketProvider(); + this._transport = new WebSocketTransport(this._clientWebsocket, Options, JsonSerializer); + } + this._transport.Namespace = Namespace; + SetHeaders(); + } + + private void SetHeaders() + { + if (Options.ExtraHeaders != null) + { + foreach (var item in Options.ExtraHeaders) + { + this._transport.AddHeader(item.Key, item.Value); + } + } + } + + private void SyncExceptionToMain(Exception e) + { + this._connectCoreException = e; + this._isConnectCoreRunning = false; + } + + private void ConnectCore() + { + DisposeForReconnect(); + this._reconnectionDelay = Options.ReconnectionDelay; + this._connectionTokenSource = new CancellationTokenSource(); + var cct = this._connectionTokenSource.Token; + this._isConnectCoreRunning = true; + this._connectCoreException = null; + + UpdateLoop = async () => + { + while (true) + { + this._clientWebsocket?.Dispose(); + this._transport?.Dispose(); + CreateTransportAsync().Wait(); + this._realServerUri = UriConverter.GetServerUri(Options.Transport == TransportProtocol.WebSocket, ServerUri, Options.EIO, Options.Path, Options.Query); + try + { + if (cct.IsCancellationRequested) + break; + if (Attempts > 0) + OnReconnectAttempt?.Invoke(this, Attempts); + var timeoutCts = new CancellationTokenSource(Options.ConnectionTimeout); + this._transport.Subscribe(OnMessageReceived, OnErrorReceived); + await this._transport.ConnectAsync(this._realServerUri, timeoutCts.Token).ConfigureAwait(false); + break; + } + catch (Exception e) + { + if (this._expectedExceptions.Contains(e.GetType())) + { + if (!Options.Reconnection) + { + SyncExceptionToMain(e); + throw; + } + if (Attempts > 0) + { + OnReconnectError?.Invoke(this, e); + } + Attempts++; + if (Attempts <= Options.ReconnectionAttempts) + { + if (this._reconnectionDelay < Options.ReconnectionDelayMax) + { + this._reconnectionDelay += 2 * Options.RandomizationFactor; + } + if (this._reconnectionDelay > Options.ReconnectionDelayMax) + { + this._reconnectionDelay = Options.ReconnectionDelayMax; + } + await Task.Delay((int)this._reconnectionDelay).ConfigureAwait(false); + } + else + { + OnReconnectFailed?.Invoke(this, EventArgs.Empty); + break; + } + } + else + { + SyncExceptionToMain(e); + throw; + } + } + } + this._isConnectCoreRunning = false; + }; + + + //var coroutine = ConnectCoroutine(cct); + //SocketIOCouroutineRunner.Instance.RunCoroutine(coroutine); + if (RunUpdateLoop != null) + { + RunUpdateLoop(); + } + else + { + Task.Factory.StartNew(UpdateLoop); + } + } + + private async Task GetProtocolAsync() + { + if (Options.Transport == TransportProtocol.Polling && Options.AutoUpgrade) + { + Uri uri = UriConverter.GetServerUri(false, ServerUri, Options.EIO, Options.Path, Options.Query); + try + { + var tcs = new TaskCompletionSource(); + UnityThread.executeCoroutine(GetProtocolCoroutine(uri.ToString(), tcs)); + string text = await tcs.Task; + //string text = await HttpClient.GetStringAsync(uri); + if (text.Contains("websocket")) + { + return TransportProtocol.WebSocket; + } + } + catch { } + } + return Options.Transport; + } + + private IEnumerator GetProtocolCoroutine(string uri, TaskCompletionSource tcs) + { + var uwr = UnityWebRequest.Get(uri); + yield return uwr.SendWebRequest(); + tcs.SetResult(uwr.downloadHandler.text); + } + + public async Task ConnectAsync() + { + ConnectCore(); + while (this._isConnectCoreRunning) + { + await Task.Delay(20); + } + if (this._connectCoreException != null) + { + throw this._connectCoreException; + } + } + + private void PingHandler() + { + OnPing?.Invoke(this, EventArgs.Empty); + } + + private void PongHandler(PongMessage msg) + { + OnPong?.Invoke(this, msg.Duration); + } + + private void ConnectedHandler(ConnectedMessage msg) + { + Id = msg.Sid; + Connected = true; + OnConnected?.Invoke(this, EventArgs.Empty); + if (Attempts > 0) + { + OnReconnected?.Invoke(this, Attempts); + } + Attempts = 0; + } + + private void DisconnectedHandler() + { + InvokeDisconnect(DisconnectReason.IOServerDisconnect); + } + + private void EventMessageHandler(EventMessage m) + { + var res = new SocketIOResponse(m.JsonElements, this) + { + PacketId = m.Id + }; + foreach (var item in this._onAnyHandlers) + { + try + { + item(m.Event, res); + } + catch (Exception e) + { + Debug.WriteLine(e); + } + } + if (this._eventHandlers.ContainsKey(m.Event)) + { + try + { + this._eventHandlers[m.Event](res); + } + catch (Exception e) + { + Debug.WriteLine(e); + } + } + } + + private void AckMessageHandler(ClientAckMessage m) + { + if (this._ackHandlers.ContainsKey(m.Id)) + { + var res = new SocketIOResponse(m.JsonElements, this); + try + { + this._ackHandlers[m.Id](res); + } + finally + { + this._ackHandlers.Remove(m.Id); + } + } + } + + private void ErrorMessageHandler(ErrorMessage msg) + { + OnError?.Invoke(this, msg.Message); + } + + private void BinaryMessageHandler(BinaryMessage msg) + { + if (this._eventHandlers.ContainsKey(msg.Event)) + { + try + { + var response = new SocketIOResponse(msg.JsonElements, this) + { + PacketId = msg.Id + }; + response.InComingBytes.AddRange(msg.IncomingBytes); + this._eventHandlers[msg.Event](response); + } + catch (Exception e) + { + Debug.WriteLine(e); + } + } + } + + private void BinaryAckMessageHandler(ClientBinaryAckMessage msg) + { + if (this._ackHandlers.ContainsKey(msg.Id)) + { + try + { + var response = new SocketIOResponse(msg.JsonElements, this) + { + PacketId = msg.Id, + }; + response.InComingBytes.AddRange(msg.IncomingBytes); + this._ackHandlers[msg.Id](response); + } + catch (Exception e) + { + Debug.WriteLine(e); + } + } + } + + private void OnErrorReceived(Exception ex) + { + UnityEngine.Debug.LogException(ex); + InvokeDisconnect(DisconnectReason.TransportClose); + } + + private void OnMessageReceived(IMessage msg) + { + try + { + switch (msg.Type) + { + case MessageType.Ping: + PingHandler(); + break; + case MessageType.Pong: + PongHandler(msg as PongMessage); + break; + case MessageType.Connected: + ConnectedHandler(msg as ConnectedMessage); + break; + case MessageType.Disconnected: + DisconnectedHandler(); + break; + case MessageType.EventMessage: + EventMessageHandler(msg as EventMessage); + break; + case MessageType.AckMessage: + AckMessageHandler(msg as ClientAckMessage); + break; + case MessageType.ErrorMessage: + ErrorMessageHandler(msg as ErrorMessage); + break; + case MessageType.BinaryMessage: + BinaryMessageHandler(msg as BinaryMessage); + break; + case MessageType.BinaryAckMessage: + BinaryAckMessageHandler(msg as ClientBinaryAckMessage); + break; + } + } + catch (Exception e) + { + Debug.WriteLine(e); + } + } + + public async Task DisconnectAsync() + { + if (Connected) + { + var msg = new DisconnectedMessage + { + Namespace = Namespace + }; + try + { + await this._transport.SendAsync(msg, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception e) + { + Debug.WriteLine(e); + } + InvokeDisconnect(DisconnectReason.IOClientDisconnect); + } + } + + /// + /// Register a new handler for the given event. + /// + /// + /// + public void On(string eventName, Action callback) + { + if (this._eventHandlers.ContainsKey(eventName)) + { + this._eventHandlers.Remove(eventName); + } + this._eventHandlers.Add(eventName, callback); + } + + + + /// + /// Unregister a new handler for the given event. + /// + /// + public void Off(string eventName) + { + if (this._eventHandlers.ContainsKey(eventName)) + { + this._eventHandlers.Remove(eventName); + } + } + + public void OnAny(OnAnyHandler handler) + { + if (handler != null) + { + this._onAnyHandlers.Add(handler); + } + } + + public void PrependAny(OnAnyHandler handler) + { + if (handler != null) + { + this._onAnyHandlers.Insert(0, handler); + } + } + + public void OffAny(OnAnyHandler handler) + { + if (handler != null) + { + this._onAnyHandlers.Remove(handler); + } + } + + public OnAnyHandler[] ListenersAny() => this._onAnyHandlers.ToArray(); + + internal async Task ClientAckAsync(int packetId, CancellationToken cancellationToken, params object[] data) + { + IMessage msg; + if (data != null && data.Length > 0) + { + var result = JsonSerializer.Serialize(data); + if (result.Bytes.Count > 0) + { + msg = new ServerBinaryAckMessage + { + Id = packetId, + Namespace = Namespace, + Json = result.Json + }; + msg.OutgoingBytes = new List(result.Bytes); + } + else + { + msg = new ServerAckMessage + { + Namespace = Namespace, + Id = packetId, + Json = result.Json + }; + } + } + else + { + msg = new ServerAckMessage + { + Namespace = Namespace, + Id = packetId + }; + } + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + + /// + /// Emits an event to the socket + /// + /// + /// Any other parameters can be included. All serializable datastructures are supported, including byte[] + /// + public async Task EmitAsync(string eventName, params object[] data) + { + await EmitAsync(eventName, CancellationToken.None, data).ConfigureAwait(false); + } + + public async Task EmitAsync(string eventName, CancellationToken cancellationToken, params object[] data) + { + if (data != null && data.Length > 0) + { + var result = JsonSerializer.Serialize(data); + if (result.Bytes.Count > 0) + { + var msg = new BinaryMessage + { + Namespace = Namespace, + OutgoingBytes = new List(result.Bytes), + Event = eventName, + Json = result.Json + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + else + { + var msg = new EventMessage + { + Namespace = Namespace, + Event = eventName, + Json = result.Json + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + } + else + { + var msg = new EventMessage + { + Namespace = Namespace, + Event = eventName + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + } + + /// + /// Emits an event to the socket + /// + /// + /// will be called with the server answer. + /// Any other parameters can be included. All serializable datastructures are supported, including byte[] + /// + public async Task EmitAsync(string eventName, Action ack, params object[] data) + { + await EmitAsync(eventName, CancellationToken.None, ack, data).ConfigureAwait(false); + } + + public async Task EmitAsync(string eventName, CancellationToken cancellationToken, Action ack, params object[] data) + { + this._ackHandlers.Add(++this._packetId, ack); + if (data != null && data.Length > 0) + { + var result = JsonSerializer.Serialize(data); + if (result.Bytes.Count > 0) + { + var msg = new ClientBinaryAckMessage + { + Event = eventName, + Namespace = Namespace, + Json = result.Json, + Id = _packetId, + OutgoingBytes = new List(result.Bytes) + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + else + { + var msg = new ClientAckMessage + { + Event = eventName, + Namespace = Namespace, + Id = _packetId, + Json = result.Json + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + } + else + { + var msg = new ClientAckMessage + { + Event = eventName, + Namespace = Namespace, + Id = _packetId + }; + await this._transport.SendAsync(msg, cancellationToken).ConfigureAwait(false); + } + } + + private async void InvokeDisconnect(string reason) + { + if (Connected) + { + Connected = false; + OnDisconnected?.Invoke(this, reason); + try + { + await this._transport.DisconnectAsync(CancellationToken.None).ConfigureAwait(false); + } + catch { } + if (reason != DisconnectReason.IOServerDisconnect && reason != DisconnectReason.IOClientDisconnect) + { + //In the this cases (explicit disconnection), the client will not try to reconnect and you need to manually call socket.connect(). + if (Options.Reconnection) + { + ConnectCore(); + } + } + } + } + + public void AddExpectedException(Type type) + { + if (!this._expectedExceptions.Contains(type)) + { + this._expectedExceptions.Add(type); + } + } + + private void DisposeForReconnect() + { + this._packetId = -1; + this._ackHandlers.Clear(); + if (this._connectionTokenSource != null) + { + this._connectionTokenSource.Cancel(); + this._connectionTokenSource.Dispose(); + } + } + + public void Dispose() + { + //HttpClient.Dispose(); + try + { + this._transport.Dispose(); + this._ackHandlers.Clear(); + this._onAnyHandlers.Clear(); + this._eventHandlers.Clear(); + this._connectionTokenSource.Cancel(); + this._connectionTokenSource.Dispose(); + } + catch (Exception e) + { + UnityEngine.Debug.LogException(e); + } + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs.meta new file mode 100644 index 00000000..d5952b0c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0188b2570af454145a5eccaf3667c89f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk new file mode 100644 index 00000000..e558077d Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk.meta new file mode 100644 index 00000000..b7c54478 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOClient.snk.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76e1abbbcc18bbb459bff8649cd1294e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs new file mode 100644 index 00000000..45941bfe --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; + +using MetaMask.SocketIOClient.Transport; + +namespace MetaMask.SocketIOClient +{ + public sealed class SocketIOOptions + { + public SocketIOOptions() + { + RandomizationFactor = 0.5; + ReconnectionDelay = 1000; + ReconnectionDelayMax = 5000; + ReconnectionAttempts = int.MaxValue; + Path = "/socket.io"; + ConnectionTimeout = TimeSpan.FromSeconds(20); + Reconnection = true; + Transport = TransportProtocol.Polling; + EIO = 4; + AutoUpgrade = true; + } + + public string Path { get; set; } + + public TimeSpan ConnectionTimeout { get; set; } + + public IEnumerable> Query { get; set; } + + /// + /// Whether to allow reconnection if accidentally disconnected + /// + public bool Reconnection { get; set; } + + public double ReconnectionDelay { get; set; } + public int ReconnectionDelayMax { get; set; } + public int ReconnectionAttempts { get; set; } + + private double _randomizationFactor; + public double RandomizationFactor + { + get => this._randomizationFactor; + set + { + if (value >= 0 && value <= 1) + { + this._randomizationFactor = value; + } + else + { + throw new ArgumentException($"{nameof(RandomizationFactor)} should be greater than or equal to 0.0, and less than 1.0."); + } + } + } + + public Dictionary ExtraHeaders { get; set; } + + public TransportProtocol Transport { get; set; } + + public int EIO { get; set; } + + public bool AutoUpgrade { get; set; } + + public object Auth { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs.meta new file mode 100644 index 00000000..cebe955e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2f50923c1258c049ba33945c017dc9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs new file mode 100644 index 00000000..51d5527c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using System.Text; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; + +namespace MetaMask.SocketIOClient +{ + public class SocketIOResponse + { + public SocketIOResponse(IList array, SocketIO socket) + { + this._array = array; + InComingBytes = new List(); + SocketIO = socket; + PacketId = -1; + } + + private readonly IList _array; + + public List InComingBytes { get; } + public SocketIO SocketIO { get; } + public int PacketId { get; set; } + + public T GetValue(int index = 0) + { + var element = GetValue(index); + string json = element.GetRawText(); + return SocketIO.JsonSerializer.Deserialize(json, InComingBytes); + } + + public JsonElement GetValue(int index = 0) => this._array[index]; + + public int Count => this._array.Count; + + public override string ToString() + { + var builder = new StringBuilder(); + builder.Append('['); + foreach (var item in this._array) + { + builder.Append(item.GetRawText()); + if (this._array.IndexOf(item) < this._array.Count - 1) + { + builder.Append(','); + } + } + builder.Append(']'); + return builder.ToString(); + } + + public async Task CallbackAsync(params object[] data) + { + await SocketIO.ClientAckAsync(PacketId, CancellationToken.None, data).ConfigureAwait(false); + } + + public async Task CallbackAsync(CancellationToken cancellationToken, params object[] data) + { + await SocketIO.ClientAckAsync(PacketId, cancellationToken, data).ConfigureAwait(false); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs.meta new file mode 100644 index 00000000..83d8e88c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/SocketIOResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5c8a7b5b308a134a992f2729226dc0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport.meta new file mode 100644 index 00000000..57636ccd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 144e9e4b09ad41f4aa6fd74db2fc0cf0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs new file mode 100644 index 00000000..80e601f9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs @@ -0,0 +1,301 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reactive.Subjects; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.SocketIOClient.JsonSerializer; +using MetaMask.SocketIOClient.Messages; +using MetaMask.SocketIOClient.UriConverters; + +namespace MetaMask.SocketIOClient.Transport +{ + public abstract class BaseTransport : IObserver, IObserver, IObservable, IDisposable + { + public BaseTransport(SocketIOOptions options, IJsonSerializer jsonSerializer) + { + Options = options; + MessageSubject = new Subject(); + JsonSerializer = jsonSerializer; + UriConverter = new UriConverter(); + this._messageQueue = new Queue(); + } + + private DateTime _pingTime; + private readonly Queue _messageQueue; + + protected SocketIOOptions Options { get; } + protected Subject MessageSubject { get; } + + protected IJsonSerializer JsonSerializer { get; } + protected CancellationTokenSource PingTokenSource { get; private set; } + protected OpenedMessage OpenedMessage { get; private set; } + + public string Namespace { get; set; } + public IUriConverter UriConverter { get; set; } + + public async Task SendAsync(IMessage msg, CancellationToken cancellationToken) + { + msg.Eio = Options.EIO; + msg.Protocol = Options.Transport; + var payload = new Payload + { + Text = msg.Write() + }; + if (msg.OutgoingBytes != null) + { + payload.Bytes = msg.OutgoingBytes; + } + await SendAsync(payload, cancellationToken).ConfigureAwait(false); + } + + protected virtual async Task OpenAsync(OpenedMessage msg) + { + OpenedMessage = msg; + if (Options.EIO == 3 && string.IsNullOrEmpty(Namespace)) + { + return; + } + var connectMsg = new ConnectedMessage + { + Namespace = Namespace, + Eio = Options.EIO, + Query = Options.Query, + }; + if (Options.EIO == 4) + { + if (Options.Auth != null) + { + connectMsg.AuthJsonStr = JsonSerializer.Serialize(new[] { Options.Auth }).Json.TrimStart('[').TrimEnd(']'); + } + } + + for (int i = 1; i <= 3; i++) + { + try + { + await SendAsync(connectMsg, CancellationToken.None).ConfigureAwait(false); + break; + } + catch (Exception e) + { + if (i == 3) + OnError(e); + else + await Task.Delay(TimeSpan.FromMilliseconds(Math.Pow(2, i) * 100)); + } + } + } + + /// + /// Eio3 ping is sent by the client + /// Eio4 ping is sent by the server + /// + /// + private void StartPing(CancellationToken cancellationToken) + { + Debug.WriteLine($"[Ping] Interval: {OpenedMessage.PingInterval}"); + + //var coroutine = StartPingCoroutine(cancellationToken); + //SocketIOCouroutineRunner.Instance.RunCoroutine(coroutine); + + Task.Factory.StartNew(async () => + { + while (!cancellationToken.IsCancellationRequested) + { + await Task.Delay(OpenedMessage.PingInterval); + if (cancellationToken.IsCancellationRequested) + { + break; + } + try + { + var ping = new PingMessage(); + Debug.WriteLine($"[Ping] Sending"); + await SendAsync(ping, CancellationToken.None).ConfigureAwait(false); + Debug.WriteLine($"[Ping] Has been sent"); + this._pingTime = DateTime.Now; + MessageSubject.OnNext(ping); + } + catch (Exception e) + { + Debug.WriteLine($"[Ping] Failed to send, {e.Message}"); + MessageSubject.OnError(e); + break; + } + } + }, TaskCreationOptions.LongRunning); + } + + private IEnumerator StartPingCoroutine(CancellationToken cancellationToken) + { + while (!cancellationToken.IsCancellationRequested) + { + //await Task.Delay(OpenedMessage.PingInterval); + yield return new UnityEngine.WaitForSecondsRealtime(OpenedMessage.PingInterval); + if (cancellationToken.IsCancellationRequested) + { + break; + } + var ping = new PingMessage(); + Debug.WriteLine($"[Ping] Sending"); + Task task = null; + try + { + task = SendAsync(ping, CancellationToken.None); + task.ConfigureAwait(false); + } + catch (Exception e) + { + Debug.WriteLine($"[Ping] Failed to send, {e.Message}"); + MessageSubject.OnError(e); + break; + } + yield return new UnityEngine.WaitUntil(() => task == null || task.IsCompleted); + Debug.WriteLine($"[Ping] Has been sent"); + this._pingTime = DateTime.Now; + MessageSubject.OnNext(ping); + } + } + + public abstract Task ConnectAsync(Uri uri, CancellationToken cancellationToken); + + public abstract Task DisconnectAsync(CancellationToken cancellationToken); + + public abstract void AddHeader(string key, string val); + + public virtual void Dispose() + { + try + { + MessageSubject.Dispose(); + this._messageQueue.Clear(); + if (PingTokenSource != null) + { + PingTokenSource.Cancel(); + PingTokenSource.Dispose(); + } + } + catch (Exception e) + { + UnityEngine.Debug.LogException(e); + } + } + + public abstract Task SendAsync(Payload payload, CancellationToken cancellationToken); + + public void OnCompleted() + { + throw new NotImplementedException(); + } + + public void OnError(Exception error) + { + try + { + MessageSubject.OnError(error); + } + catch (Exception e) + { + UnityEngine.Debug.LogException(e); + } + } + + public void OnNext(string text) + { + try + { + Debug.WriteLine($"[Receive] {text}"); + var msg = MessageFactory.CreateMessage(Options.EIO, text); + if (msg == null) + { + return; + } + if (msg.BinaryCount > 0) + { + msg.IncomingBytes = new List(msg.BinaryCount); + this._messageQueue.Enqueue(msg); + return; + } + if (msg.Type == MessageType.Opened) + { + OpenAsync(msg as OpenedMessage).ConfigureAwait(false); + } + + if (Options.EIO == 3) + { + if (msg.Type == MessageType.Connected) + { + var connectMsg = msg as ConnectedMessage; + connectMsg.Sid = OpenedMessage.Sid; + if ((string.IsNullOrEmpty(Namespace) && string.IsNullOrEmpty(connectMsg.Namespace)) || connectMsg.Namespace == Namespace) + { + if (PingTokenSource != null) + { + PingTokenSource.Cancel(); + } + PingTokenSource = new CancellationTokenSource(); + StartPing(PingTokenSource.Token); + } + else + { + return; + } + } + else if (msg.Type == MessageType.Pong) + { + var pong = msg as PongMessage; + pong.Duration = DateTime.Now - this._pingTime; + } + } + + MessageSubject.OnNext(msg); + + if (msg.Type == MessageType.Ping) + { + this._pingTime = DateTime.Now; + try + { + SendAsync(new PongMessage(), CancellationToken.None).ConfigureAwait(false); + MessageSubject.OnNext(new PongMessage + { + Eio = Options.EIO, + Protocol = Options.Transport, + Duration = DateTime.Now - this._pingTime + }); + } + catch (Exception e) + { + OnError(e); + } + } + } + catch (Exception e) + { + UnityEngine.Debug.LogException(e); + } + } + + public void OnNext(byte[] bytes) + { + Debug.WriteLine($"[Receive] binary message"); + if (this._messageQueue.Count > 0) + { + var msg = this._messageQueue.Peek(); + msg.IncomingBytes.Add(bytes); + if (msg.IncomingBytes.Count == msg.BinaryCount) + { + MessageSubject.OnNext(msg); + this._messageQueue.Dequeue(); + } + } + } + + public IDisposable Subscribe(IObserver observer) + { + return MessageSubject.Subscribe(observer); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs.meta new file mode 100644 index 00000000..bb22b8f3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/BaseTransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f87d5dc82bcf56441a960a40fa5fed01 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs new file mode 100644 index 00000000..3350344a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs @@ -0,0 +1,94 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using UnityEngine.Networking; + +namespace MetaMask.SocketIOClient.Transport +{ + public class Eio3HttpPollingHandler : HttpPollingHandler + { + public Eio3HttpPollingHandler() : base() { } + + public override Task PostAsync(string uri, IEnumerable bytes, CancellationToken cancellationToken) + { + var list = new List(); + foreach (var item in bytes) + { + list.Add(1); + var length = SplitInt(item.Length + 1).Select(x => (byte)x); + list.AddRange(length); + list.Add(byte.MaxValue); + list.Add(4); + list.AddRange(item); + } + var tcs = new TaskCompletionSource(); + UnityThread.executeCoroutine(PostCoroutine(uri, list, tcs)); + return tcs.Task; + + //var content = new ByteArrayContent(list.ToArray()); + //content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + + //await HttpClient.PostAsync(AppendRandom(uri), content, cancellationToken).ConfigureAwait(false); + } + + private IEnumerator PostCoroutine(string uri, List list, TaskCompletionSource tcs) + { + string requestUri = AppendTimestamp(uri); + var form = new List(); + form.Add(new MultipartFormDataSection(list.ToArray())); + var uwr = UnityWebRequest.Post(requestUri, form); + uwr.SetRequestHeader("Content-Type", "application/octet-stream"); + + yield return uwr.SendWebRequest(); + tcs.SetResult(true); + } + + private List SplitInt(int number) + { + List list = new List(); + while (number > 0) + { + list.Add(number % 10); + number /= 10; + } + list.Reverse(); + return list; + } + + protected override void ProduceText(string text) + { + int p = 0; + while (true) + { + int index = text.IndexOf(':', p); + if (index == -1) + { + break; + } + if (int.TryParse(text.Substring(p, index - p), out int length)) + { + string msg = text.Substring(index + 1, length); + TextSubject.OnNext(msg); + } + else + { + break; + } + p = index + length + 1; + if (p >= text.Length) + { + break; + } + } + } + + public override Task PostAsync(string uri, string content, CancellationToken cancellationToken) + { + content = content.Length + ":" + content; + return base.PostAsync(uri, content, cancellationToken); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs.meta new file mode 100644 index 00000000..37bc3321 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio3HttpPollingHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3be1805094896946b14c223e43626f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs new file mode 100644 index 00000000..8014d71b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MetaMask.SocketIOClient.Transport +{ + public class Eio4HttpPollingHandler : HttpPollingHandler + { + public Eio4HttpPollingHandler() : base() { } + + private const char Separator = '\u001E'; //1E  + + public override async Task PostAsync(string uri, IEnumerable bytes, CancellationToken cancellationToken) + { + var builder = new StringBuilder(); + foreach (var item in bytes) + { + builder.Append('b').Append(Convert.ToBase64String(item)).Append(Separator); + } + if (builder.Length == 0) + { + return; + } + string text = builder.ToString().TrimEnd(Separator); + await PostAsync(uri, text, cancellationToken); + } + + protected override void ProduceText(string text) + { + string[] items = text.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries); + foreach (var item in items) + { + if (item[0] == 'b') + { + byte[] bytes = Convert.FromBase64String(item.Substring(1)); + BytesSubject.OnNext(bytes); + } + else + { + TextSubject.OnNext(item); + } + } + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs.meta new file mode 100644 index 00000000..436718e3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Eio4HttpPollingHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88af8e91fa02e52469205357a0b33e0a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs new file mode 100644 index 00000000..f002cf07 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using UnityEngine.Networking; + +namespace MetaMask.SocketIOClient.Transport +{ + public abstract class HttpPollingHandler : IHttpPollingHandler + { + public HttpPollingHandler() + { + //HttpClient = httpClient; + TextSubject = new Subject(); + BytesSubject = new Subject(); + TextObservable = TextSubject.AsObservable(); + BytesObservable = BytesSubject.AsObservable(); + } + + protected Dictionary defaultHeaders = new Dictionary(); + + //protected HttpClient HttpClient { get; } + protected Subject TextSubject { get; } + protected Subject BytesSubject { get; } + + public IObservable TextObservable { get; } + public IObservable BytesObservable { get; } + + public void SetDefaultHeader(string key, string val) + { + this.defaultHeaders[key] = val; + } + + protected void ApplyDefaultHeaders(UnityWebRequest uwr) + { + foreach (var item in this.defaultHeaders) + { + uwr.SetRequestHeader(item.Key, item.Value); + } + } + + protected void PrepareUnityWebRequest(UnityWebRequest uwr) + { + ApplyDefaultHeaders(uwr); + uwr.disposeDownloadHandlerOnDispose = true; + uwr.disposeUploadHandlerOnDispose = true; + } + + protected string AppendTimestamp(string uri) + { + return uri + "&t=" + DateTimeOffset.Now.ToUnixTimeSeconds(); + } + + public Task GetAsync(string uri, CancellationToken cancellationToken) + { + var tcs = new TaskCompletionSource(); + UnityThread.executeCoroutine(GetCoroutine(uri, tcs)); + //var req = new HttpRequestMessage(HttpMethod.Get, AppendRandom(uri)); + //var resMsg = await HttpClient.SendAsync(req, cancellationToken).ConfigureAwait(false); + //if (!resMsg.IsSuccessStatusCode) + //{ + // throw new HttpRequestException($"Response status code does not indicate success: {resMsg.StatusCode}"); + //} + //ProduceMessageAsync(resMsg); + return tcs.Task; + } + + private IEnumerator GetCoroutine(string uri, TaskCompletionSource tcs) + { + string requestUri = AppendTimestamp(uri); + var uwr = UnityWebRequest.Get(requestUri); + PrepareUnityWebRequest(uwr); + yield return uwr.SendWebRequest(); + + if (uwr.result != UnityWebRequest.Result.Success) + { + string error = $"Response status code does not indicate success: {uwr.responseCode}"; + uwr.Dispose(); + tcs.SetException(new UnityWebRequestException(error)); + throw new UnityWebRequestException(error); + } + ProduceMessageAsync(uwr); + tcs.SetResult(true); + } + + public Task SendAsync(Uri uri, CancellationToken cancellationToken) + { + var tcs = new TaskCompletionSource(); + UnityThread.executeCoroutine(SendCoroutine(uri.ToString(), tcs)); + //var resMsg = await HttpClient.SendAsync(req, cancellationToken).ConfigureAwait(false); + //if (!resMsg.IsSuccessStatusCode) + //{ + // throw new HttpRequestException($"Response status code does not indicate success: {resMsg.StatusCode}"); + //} + //ProduceMessageAsync(resMsg); + return tcs.Task; + } + + private IEnumerator SendCoroutine(string uri, TaskCompletionSource tcs) + { + var uwr = UnityWebRequest.Get(uri); + PrepareUnityWebRequest(uwr); + yield return uwr.SendWebRequest(); + + if (uwr.result != UnityWebRequest.Result.Success) + { + string error = $"Response status code does not indicate success: {uwr.responseCode}"; + uwr.Dispose(); + tcs.SetException(new UnityWebRequestException(error)); + throw new UnityWebRequestException(error); + } + ProduceMessageAsync(uwr); + tcs.SetResult(true); + } + + public virtual Task PostAsync(string uri, string content, CancellationToken cancellationToken) + { + var tcs = new TaskCompletionSource(); + UnityThread.executeCoroutine(PostCoroutine(uri, content, tcs)); + + //var httpContent = new StringContent(content); + //var resMsg = await HttpClient.PostAsync(AppendTimestamp(uri), httpContent, cancellationToken).ConfigureAwait(false); + //ProduceMessageAsync(resMsg); + return tcs.Task; + } + + private IEnumerator PostCoroutine(string uri, string content, TaskCompletionSource tcs) + { + string requestUri = AppendTimestamp(uri); + var downloadHandler = new DownloadHandlerBuffer(); + var uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(content)); + var uwr = new UnityWebRequest(requestUri, UnityWebRequest.kHttpVerbPOST, downloadHandler, uploadHandler); + PrepareUnityWebRequest(uwr); + yield return uwr.SendWebRequest(); + + if (uwr.result != UnityWebRequest.Result.Success) + { + string error = $"Response status code does not indicate success: {uwr.responseCode}"; + uwr.Dispose(); + tcs.SetException(new UnityWebRequestException(error)); + throw new UnityWebRequestException(error); + } + ProduceMessageAsync(uwr); + tcs.SetResult(true); + } + + public abstract Task PostAsync(string uri, IEnumerable bytes, CancellationToken cancellationToken); + + private void ProduceMessageAsync(UnityWebRequest uwr) + { + //if (resMsg.Content.Headers.ContentType.MediaType == "application/octet-stream") + //{ + // byte[] bytes = await resMsg.Content.ReadAsByteArrayAsync().ConfigureAwait(false); + // ProduceBytes(bytes); + //} + //else + //{ + // string text = await resMsg.Content.ReadAsStringAsync().ConfigureAwait(false); + // ProduceText(text); + //} + + if (uwr.GetRequestHeader("Content-Type") == "application/octet-stream") + { + ProduceBytes(uwr.downloadHandler.data); + } + else + { + ProduceText(uwr.downloadHandler.text); + } + uwr.Dispose(); + } + + protected abstract void ProduceText(string text); + + private void ProduceBytes(byte[] bytes) + { + int i = 0; + while (bytes.Length > i + 4) + { + byte type = bytes[i]; + var builder = new StringBuilder(); + i++; + while (bytes[i] != byte.MaxValue) + { + builder.Append(bytes[i]); + i++; + } + i++; + int length = int.Parse(builder.ToString()); + if (type == 0) + { + var buffer = new byte[length]; + Buffer.BlockCopy(bytes, i, buffer, 0, buffer.Length); + TextSubject.OnNext(Encoding.UTF8.GetString(buffer)); + } + else if (type == 1) + { + var buffer = new byte[length - 1]; + Buffer.BlockCopy(bytes, i + 1, buffer, 0, buffer.Length); + BytesSubject.OnNext(buffer); + } + i += length; + } + } + + public void Dispose() + { + TextSubject.Dispose(); + BytesSubject.Dispose(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs.meta new file mode 100644 index 00000000..dfa4eb42 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpPollingHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb8ba34d91fd8c74a95904ef96026115 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs new file mode 100644 index 00000000..07778eda --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.SocketIOClient.JsonSerializer; +using MetaMask.SocketIOClient.Messages; + +namespace MetaMask.SocketIOClient.Transport +{ + public class HttpTransport : BaseTransport + { + public HttpTransport(IHttpPollingHandler pollingHandler, + SocketIOOptions options, + IJsonSerializer jsonSerializer) : base(options, jsonSerializer) + { + //_http = http; + this._httpPollingHandler = pollingHandler; + this._httpPollingHandler.TextObservable.Subscribe(this); + this._httpPollingHandler.BytesObservable.Subscribe(this); + } + + private string _httpUri; + private CancellationTokenSource _pollingTokenSource; + //private Dictionary defaultHeaders = new Dictionary(); + + //readonly HttpClient _http; + private readonly IHttpPollingHandler _httpPollingHandler; + + private void StartPolling(CancellationToken cancellationToken) + { + //var coroutine = StartPollingCoroutine(cancellationToken); + //SocketIOCouroutineRunner.Instance.RunCoroutine(coroutine); + + Task.Factory.StartNew(async () => + { + int retry = 0; + while (!cancellationToken.IsCancellationRequested) + { + if (!this._httpUri.Contains("&sid=")) + { + await Task.Delay(20); + continue; + } + try + { + await this._httpPollingHandler.GetAsync(this._httpUri, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception e) + { + retry++; + if (retry >= 3) + { + MessageSubject.OnError(e); + break; + } + await Task.Delay(100 * (int)Math.Pow(2, retry)); + } + } + }, TaskCreationOptions.LongRunning); + } + + private IEnumerator StartPollingCoroutine(CancellationToken cancellationToken) + { + int retry = 0; + while (!cancellationToken.IsCancellationRequested) + { + if (!this._httpUri.Contains("&sid=")) + { + yield return new UnityEngine.WaitForSecondsRealtime(0.02f); + continue; + } + Task task = null; + try + { + task = this._httpPollingHandler.GetAsync(this._httpUri, CancellationToken.None); + task.ConfigureAwait(false); + } + catch (Exception e) + { + retry++; + if (retry >= 3) + { + MessageSubject.OnError(e); + break; + } + } + yield return new UnityEngine.WaitUntil(() => task == null || task.IsCompleted); + if (task == null || task.IsCompleted) + { + yield return new UnityEngine.WaitForSecondsRealtime((100 * (int)Math.Pow(2, retry)) / 1000); + } + } + } + + public override async Task ConnectAsync(Uri uri, CancellationToken cancellationToken) + { + //var req = new HttpRequestMessage(HttpMethod.Get, uri); + // if (_options.ExtraHeaders != null) + // { + // foreach (var item in _options.ExtraHeaders) + // { + // req.Headers.Add(item.Key, item.Value); + // } + // } + + this._httpUri = uri.ToString(); + await this._httpPollingHandler.SendAsync(uri, new CancellationTokenSource(Options.ConnectionTimeout).Token).ConfigureAwait(false); + if (this._pollingTokenSource != null) + { + this._pollingTokenSource.Cancel(); + } + this._pollingTokenSource = new CancellationTokenSource(); + StartPolling(this._pollingTokenSource.Token); + } + + public override Task DisconnectAsync(CancellationToken cancellationToken) + { + this._pollingTokenSource.Cancel(); + if (PingTokenSource != null) + { + PingTokenSource.Cancel(); + } + return Task.CompletedTask; + } + + public override void AddHeader(string key, string val) + { + //_http.DefaultRequestHeaders.Add(key, val); + this._httpPollingHandler.SetDefaultHeader(key, val); + } + + public override void Dispose() + { + base.Dispose(); + this._httpPollingHandler.Dispose(); + } + + public override async Task SendAsync(Payload payload, CancellationToken cancellationToken) + { + await this._httpPollingHandler.PostAsync(this._httpUri, payload.Text, cancellationToken); + if (payload.Bytes != null && payload.Bytes.Count > 0) + { + await this._httpPollingHandler.PostAsync(this._httpUri, payload.Bytes, cancellationToken); + } + } + + protected override async Task OpenAsync(OpenedMessage msg) + { + //if (!_httpUri.Contains("&sid=")) + //{ + //} + this._httpUri += "&sid=" + msg.Sid; + await base.OpenAsync(msg); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs.meta new file mode 100644 index 00000000..9a690877 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/HttpTransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a2b093ad28622c4c95c24730bfe0857 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs new file mode 100644 index 00000000..8044e5c3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs @@ -0,0 +1,16 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MetaMask.SocketIOClient.Transport +{ + public interface IClientWebSocket : IDisposable + { + IObservable TextObservable { get; } + IObservable BytesObservable { get; } + Task ConnectAsync(Uri uri, CancellationToken cancellationToken); + Task DisconnectAsync(CancellationToken cancellationToken); + Task SendAsync(byte[] bytes, TransportMessageType type, bool endOfMessage, CancellationToken cancellationToken); + void AddHeader(string key, string val); + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs.meta new file mode 100644 index 00000000..902c0ce5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IClientWebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9564dcdc06fde84d8f4278621c73109 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs new file mode 100644 index 00000000..ef9c5bfd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace MetaMask.SocketIOClient.Transport +{ + public interface IHttpPollingHandler : IDisposable + { + IObservable TextObservable { get; } + IObservable BytesObservable { get; } + void SetDefaultHeader(string key, string val); + Task GetAsync(string uri, CancellationToken cancellationToken); + Task SendAsync(Uri uri, CancellationToken cancellationToken); + Task PostAsync(string uri, string content, CancellationToken cancellationToken); + Task PostAsync(string uri, IEnumerable bytes, CancellationToken cancellationToken); + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs.meta new file mode 100644 index 00000000..c0213722 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/IHttpPollingHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1cd39dc763e0f1468fdb29e4821f458 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs new file mode 100644 index 00000000..f8e99a54 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.NativeWebSocket; + +namespace MetaMask.SocketIOClient.Transport +{ + public class NativeClientWebSocket : IClientWebSocket + { + + private const int ReceiveChunkSize = 1024 * 8; + private readonly int _eio; + +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + private BackgroundWebSocket bws; +#else + private WebSocket ws; +#endif + + private bool _disposed; + private readonly Subject _textSubject; + private readonly Subject _bytesSubject; + private readonly CancellationTokenSource _listenCancellation; + private readonly SemaphoreSlim _sendLock; + + private Dictionary defaultHeaders = new Dictionary(); + + public IObservable TextObservable { get; } + public IObservable BytesObservable { get; } + + public NativeClientWebSocket(int eio) + { + _disposed = false; + this._eio = eio; + this._textSubject = new Subject(); + this._bytesSubject = new Subject(); + TextObservable = this._textSubject.AsObservable(); + BytesObservable = this._bytesSubject.AsObservable(); + //this.ws = new WebSocket(); + this._listenCancellation = new CancellationTokenSource(); + this._sendLock = new SemaphoreSlim(1, 1); + } + + private void ListenOnUnityThread() + { +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + IWebSocket ws = this.bws; +#else + IWebSocket ws = this.ws; +#endif + ws.OnMessage += OnWebSocketBinaryMessageReceived; + ws.OnTextMessage += OnWebSocketTextMessageReceived; + ws.OnClose += OnWebSocketClose; + } + + private void Listen() + { + UnityThread.executeInUpdate(ListenOnUnityThread); + } + + private void OnWebSocketClose(WebSocketCloseCode closeCode) + { + if (!_disposed) + { + this._textSubject.OnError(new WebSocketException("Received a Close message: " + closeCode)); + } + } + + private void OnWebSocketTextMessageReceived(string data) + { + if (!_disposed) + { + this._textSubject.OnNext(data); + } + } + + private void OnWebSocketBinaryMessageReceived(byte[] data) + { + if (!_disposed) + { + int count = data.Length; + byte[] bytes; + if (this._eio == 3) + { + bytes = new byte[count - 1]; + Buffer.BlockCopy(data, 1, bytes, 0, bytes.Length); + } + else + { + bytes = new byte[count]; + Buffer.BlockCopy(data, 0, bytes, 0, bytes.Length); + } + this._bytesSubject.OnNext(data); + } + } + + public Task ConnectAsync(Uri uri, CancellationToken cancellationToken) + { + UnityThread.executeInUpdate(() => + { + ConnectOnUnityThread(uri.ToString()); + }); + return Task.CompletedTask; + } + + private void ConnectOnUnityThread(string uri) + { +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + this.bws = new BackgroundWebSocket(uri.ToString()); + _ = this.bws.Connect(); +#else + this.ws = new WebSocket(uri.ToString(), this.defaultHeaders); + WebSocketDispatcher.Instance.AddWebSocket(this.ws); + _ = this.ws.Connect(); +#endif + ListenOnUnityThread(); + } + + public async Task DisconnectAsync(CancellationToken cancellationToken) + { +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + if (this.bws != null && this.bws.IsConnected) { + await this.bws.Close(); + } +#else + await this.ws.Close(); + if (this.ws != null) + { + WebSocketDispatcher.Instance.RemoveWebSocket(this.ws); + } +#endif + } + + public Task SendAsync(byte[] bytes, TransportMessageType type, bool endOfMessage, CancellationToken cancellationToken) + { + var tcs = new TaskCompletionSource(); +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + SendOnUnityTHread(bytes, type, tcs); +#else + UnityThread.executeInUpdate(() => + { + SendOnUnityTHread(bytes, type, tcs); + }); +#endif + return tcs.Task; + } + + private async void SendOnUnityTHread(byte[] bytes, TransportMessageType type, TaskCompletionSource tcs) + { + switch (type) + { + case TransportMessageType.Text: +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + await this.bws.Send(Encoding.UTF8.GetString(bytes)); +#else + await this.ws.SendText(Encoding.UTF8.GetString(bytes)); +#endif + break; + case TransportMessageType.Binary: +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + await this.bws.Send(bytes); +#else + await this.ws.Send(bytes); +#endif + break; + } + tcs.SetResult(true); + } + + public void AddHeader(string key, string val) + { + this.defaultHeaders[key] = val; + } + + public void Dispose() + { + this._textSubject.Dispose(); + this._bytesSubject.Dispose(); + _disposed = true; + +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + if (this.bws != null) + { + this.bws.Close(); + } +#else + if (this.ws != null) + { + WebSocketDispatcher.Instance.RemoveWebSocket(this.ws); + _ = this.ws.Close(); + } +#endif + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs.meta new file mode 100644 index 00000000..f6949c98 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/NativeClientWebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7812eb8a5862d7d40ae516a176531ebe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs new file mode 100644 index 00000000..758d27a0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace MetaMask.SocketIOClient.Transport +{ + public class Payload + { + public string Text { get; set; } + public List Bytes { get; set; } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs.meta new file mode 100644 index 00000000..6025f3e5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/Payload.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8649db9cc355d524f936791adb2c6ebf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs new file mode 100644 index 00000000..e1952a5e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs @@ -0,0 +1,142 @@ +using System; +using System.Net.WebSockets; +using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MetaMask.SocketIOClient.Transport +{ + public class SystemNetWebSocketsClientWebSocket : IClientWebSocket + { + public SystemNetWebSocketsClientWebSocket(int eio) + { + this._eio = eio; + this._textSubject = new Subject(); + this._bytesSubject = new Subject(); + TextObservable = this._textSubject.AsObservable(); + BytesObservable = this._bytesSubject.AsObservable(); + this._ws = new ClientWebSocket(); + this._listenCancellation = new CancellationTokenSource(); + this._sendLock = new SemaphoreSlim(1, 1); + } + + private const int ReceiveChunkSize = 1024 * 8; + private readonly int _eio; + private readonly ClientWebSocket _ws; + private readonly Subject _textSubject; + private readonly Subject _bytesSubject; + private readonly CancellationTokenSource _listenCancellation; + private readonly SemaphoreSlim _sendLock; + + public IObservable TextObservable { get; } + public IObservable BytesObservable { get; } + + private void Listen() + { + Task.Factory.StartNew(async () => + { + while (true) + { + if (this._listenCancellation.IsCancellationRequested) + { + break; + } + var buffer = new byte[ReceiveChunkSize]; + int count = 0; + WebSocketReceiveResult result = null; + + while (this._ws.State == WebSocketState.Open) + { + var subBuffer = new byte[ReceiveChunkSize]; + try + { + result = await this._ws.ReceiveAsync(new ArraySegment(subBuffer), CancellationToken.None).ConfigureAwait(false); + + // resize + if (buffer.Length - count < result.Count) + { + Array.Resize(ref buffer, buffer.Length + result.Count); + } + Buffer.BlockCopy(subBuffer, 0, buffer, count, result.Count); + count += result.Count; + if (result.EndOfMessage) + { + break; + } + } + catch (Exception e) + { + this._textSubject.OnError(e); + break; + } + } + + if (result == null) + { + break; + } + + switch (result.MessageType) + { + case WebSocketMessageType.Text: + string text = Encoding.UTF8.GetString(buffer, 0, count); + this._textSubject.OnNext(text); + break; + case WebSocketMessageType.Binary: + byte[] bytes; + if (this._eio == 3) + { + bytes = new byte[count - 1]; + Buffer.BlockCopy(buffer, 1, bytes, 0, bytes.Length); + } + else + { + bytes = new byte[count]; + Buffer.BlockCopy(buffer, 0, bytes, 0, bytes.Length); + } + this._bytesSubject.OnNext(bytes); + break; + case WebSocketMessageType.Close: + this._textSubject.OnError(new WebSocketException("Received a Close message")); + break; + } + } + }); + } + + public async Task ConnectAsync(Uri uri, CancellationToken cancellationToken) + { + await this._ws.ConnectAsync(uri, cancellationToken); + Listen(); + } + + public async Task DisconnectAsync(CancellationToken cancellationToken) + { + await this._ws.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, cancellationToken); + } + + public async Task SendAsync(byte[] bytes, TransportMessageType type, bool endOfMessage, CancellationToken cancellationToken) + { + var msgType = WebSocketMessageType.Text; + if (type == TransportMessageType.Binary) + { + msgType = WebSocketMessageType.Binary; + } + await this._ws.SendAsync(new ArraySegment(bytes), msgType, endOfMessage, cancellationToken).ConfigureAwait(false); + } + + public void AddHeader(string key, string val) + { + this._ws.Options.SetRequestHeader(key, val); + } + + public void Dispose() + { + this._textSubject.Dispose(); + this._bytesSubject.Dispose(); + this._ws.Dispose(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs.meta new file mode 100644 index 00000000..e08d2aea --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/SystemNetWebSocketsClientWebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d93539ff730fad546965b64b2e2c7c97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs new file mode 100644 index 00000000..aec839e9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs @@ -0,0 +1,8 @@ +namespace MetaMask.SocketIOClient.Transport +{ + public enum TransportMessageType + { + Text = 0, + Binary = 1 + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs.meta new file mode 100644 index 00000000..d08e818e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportMessageType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7ce996cbe0f5f344b84875a7c5237c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs new file mode 100644 index 00000000..59fd2b80 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs @@ -0,0 +1,8 @@ +namespace MetaMask.SocketIOClient.Transport +{ + public enum TransportProtocol + { + Polling, + WebSocket + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs.meta new file mode 100644 index 00000000..eea65f59 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/TransportProtocol.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 889050539a733b64b9f2194cc1494202 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs new file mode 100644 index 00000000..e12a952c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs @@ -0,0 +1,98 @@ +using System; +using System.Reactive.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.SocketIOClient.JsonSerializer; + +namespace MetaMask.SocketIOClient.Transport +{ + public class WebSocketTransport : BaseTransport + { + public WebSocketTransport(IClientWebSocket ws, SocketIOOptions options, IJsonSerializer jsonSerializer) : base(options, jsonSerializer) + { + this._ws = ws; + this._sendLock = new SemaphoreSlim(1, 1); + this._ws.TextObservable.Subscribe(this); + this._ws.BytesObservable.Subscribe(this); + } + + private const int ReceiveChunkSize = 1024 * 8; + private const int SendChunkSize = 1024 * 8; + private readonly IClientWebSocket _ws; + private readonly SemaphoreSlim _sendLock; + + private async Task SendAsync(TransportMessageType type, byte[] bytes, CancellationToken cancellationToken) + { + try + { + await this._sendLock.WaitAsync().ConfigureAwait(false); + if (type == TransportMessageType.Binary && Options.EIO == 3) + { + byte[] buffer = new byte[bytes.Length + 1]; + buffer[0] = 4; + Buffer.BlockCopy(bytes, 0, buffer, 1, bytes.Length); + bytes = buffer; + } + int pages = (int)Math.Ceiling(bytes.Length * 1.0 / SendChunkSize); + for (int i = 0; i < pages; i++) + { + int offset = i * SendChunkSize; + int length = SendChunkSize; + if (offset + length > bytes.Length) + { + length = bytes.Length - offset; + } + byte[] subBuffer = new byte[length]; + Buffer.BlockCopy(bytes, offset, subBuffer, 0, subBuffer.Length); + bool endOfMessage = pages - 1 == i; + await this._ws.SendAsync(subBuffer, type, endOfMessage, cancellationToken).ConfigureAwait(false); + } + } + finally + { + this._sendLock.Release(); + } + } + + public override async Task ConnectAsync(Uri uri, CancellationToken cancellationToken) + { + await this._ws.ConnectAsync(uri, cancellationToken); + } + + public override async Task DisconnectAsync(CancellationToken cancellationToken) + { + try + { + await this._ws.DisconnectAsync(cancellationToken); + } + catch (Exception e) + { + UnityEngine.Debug.LogException(e); + } + } + + public override async Task SendAsync(Payload payload, CancellationToken cancellationToken) + { + byte[] bytes = Encoding.UTF8.GetBytes(payload.Text); + await SendAsync(TransportMessageType.Text, bytes, cancellationToken); + if (payload.Bytes != null) + { + foreach (var item in payload.Bytes) + { + await SendAsync(TransportMessageType.Binary, item, cancellationToken); + } + } + } + + public override void AddHeader(string key, string val) => this._ws.AddHeader(key, val); + + public override void Dispose() + { + this._ws.Dispose(); + base.Dispose(); + this._sendLock.Dispose(); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs.meta new file mode 100644 index 00000000..86bcdbd6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/Transport/WebSocketTransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebf435cd28335fd43b57ad61cde8fd19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters.meta new file mode 100644 index 00000000..0277ddad --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acb001b7bd411e840a962ffb696674e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs new file mode 100644 index 00000000..c3d6b9e9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +namespace MetaMask.SocketIOClient.UriConverters +{ + public interface IUriConverter + { + Uri GetServerUri(bool ws, Uri serverUri, int eio, string path, IEnumerable> queryParams); + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs.meta new file mode 100644 index 00000000..8c9a9cbd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/IUriConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d8b3cb2bfa817c45a72b80447fae319 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs new file mode 100644 index 00000000..4dc52702 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace MetaMask.SocketIOClient.UriConverters +{ + public class UriConverter : IUriConverter + { + public Uri GetServerUri(bool ws, Uri serverUri, int eio, string path, IEnumerable> queryParams) + { + var builder = new StringBuilder(); + if (serverUri.Scheme == "https" || serverUri.Scheme == "wss") + { + builder.Append(ws ? "wss://" : "https://"); + } + else if (serverUri.Scheme == "http" || serverUri.Scheme == "ws") + { + builder.Append(ws ? "ws://" : "http://"); + } + else + { + throw new ArgumentException("Only supports 'http, https, ws, wss' protocol"); + } + builder.Append(serverUri.Host); + if (!serverUri.IsDefaultPort) + { + builder.Append(":").Append(serverUri.Port); + } + if (string.IsNullOrEmpty(path)) + { + builder.Append("/socket.io"); + } + else + { + builder.Append(path); + } + builder + .Append("/?EIO=") + .Append(eio) + .Append("&transport=") + .Append(ws ? "websocket" : "polling"); + + if (queryParams != null) + { + foreach (var item in queryParams) + { + builder.Append('&').Append(item.Key).Append('=').Append(item.Value); + } + } + + return new Uri(builder.ToString()); + } + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs.meta new file mode 100644 index 00000000..2509fd18 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOClient/UriConverters/UriConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31231fd825caca849b0ba2c79563af55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs new file mode 100644 index 00000000..10d1a6cd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs @@ -0,0 +1,35 @@ +using System.Collections; + +using UnityEngine; + +namespace MetaMask.SocketIOClient +{ + public class SocketIOCouroutineRunner : MonoBehaviour + { + private static SocketIOCouroutineRunner instance; + + public static SocketIOCouroutineRunner Instance + { + get + { + if (instance == null) + { + instance = new GameObject("SocketIOCouroutineRunner").AddComponent(); + DontDestroyOnLoad(instance.gameObject); + } + + return instance; + } + } + + public void RunCoroutine(IEnumerator coroutine) + { + StartCoroutine(coroutine); + } + + public void EndCoroutine(IEnumerator coroutine) + { + StopCoroutine(coroutine); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs.meta new file mode 100644 index 00000000..b9033086 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOCouroutineRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6e68d7344c3f6d459685b00aa968f5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs new file mode 100644 index 00000000..bba9f006 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs @@ -0,0 +1,136 @@ +// +// SocketIOUnity.cs +// SocketIOUnity +// +// Created by itisnajim on 10/30/2021. +// Copyright (c) 2021 itisnajim. All rights reserved. +// + +using System; +using System.Threading; +using System.Threading.Tasks; + +using MetaMask.SocketIOClient.Messages; + +namespace MetaMask.SocketIOClient +{ + + public class SocketIOUnity : SocketIO + { + public enum UnityThreadScope + { + Update, + LateUpdate, + FixedUpdate + } + public UnityThreadScope unityThreadScope = UnityThreadScope.Update; + + public SocketIOUnity(string uri, UnityThreadScope unityThreadScope = UnityThreadScope.Update) : base(uri) + { + CommonInit(unityThreadScope); + } + + public SocketIOUnity(Uri uri, UnityThreadScope unityThreadScope = UnityThreadScope.Update) : base(uri) + { + CommonInit(unityThreadScope); + } + + public SocketIOUnity(string uri, SocketIOOptions options, UnityThreadScope unityThreadScope = UnityThreadScope.Update) : base(uri, options) + { + CommonInit(unityThreadScope); + } + + public SocketIOUnity(Uri uri, SocketIOOptions options, UnityThreadScope unityThreadScope = UnityThreadScope.Update) : base(uri, options) + { + CommonInit(unityThreadScope); + } + + private void CommonInit(UnityThreadScope unityThreadScope) + { + UnityThread.initUnityThread(); + this.unityThreadScope = unityThreadScope; + } + + /// + /// Register a new handler for the given event. + /// + /// + /// + public void OnUnityThread(string eventName, Action callback) + { + On(eventName, res => + { + ExecuteInUnityThread(() => callback(res)); + }); + + } + + public void OnAnyInUnityThread(OnAnyHandler handler) + { + OnAny((name, response) => + { + ExecuteInUnityThread(() => handler(name, response)); + }); + } + + /// + /// Emits an event to the socket + /// + /// + /// Any other parameters can be included. All serializable datastructures are supported, including byte[] + /// + public void Emit(string eventName, params object[] data) + { + EmitAsync(eventName, data).ContinueWith(t => { }); + } + + + public async Task EmitStringAsJSONAsync(string eventName, string json) + { + + var msg = new EventMessage + { + Namespace = Namespace, + Event = eventName, + }; + if (!string.IsNullOrEmpty(json)) + { + msg.Json = "[" + json + "]"; + } + await this._transport.SendAsync(msg, CancellationToken.None).ConfigureAwait(false); + } + + public void EmitStringAsJSON(string eventName, string json) + { + EmitStringAsJSONAsync(eventName, json).ContinueWith(t => { }); + } + + public void Connect() + { + ConnectAsync().ContinueWith(t => { }); + } + + public void Disconnect() + { + DisconnectAsync().ContinueWith(t => { }); + } + + private void ExecuteInUnityThread(Action action) + { + switch (this.unityThreadScope) + { + case UnityThreadScope.LateUpdate: + UnityThread.executeInLateUpdate(action); + break; + case UnityThreadScope.FixedUpdate: + UnityThread.executeInFixedUpdate(action); + break; + default: + UnityThread.executeInUpdate(action); + break; + } + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs.meta new file mode 100644 index 00000000..15367acc --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/SocketIOUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 944aa960a8bd9bb4f83b5260a907b6e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs new file mode 100644 index 00000000..abcbbbd8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs @@ -0,0 +1,226 @@ +// https://stackoverflow.com/questions/41330771/use-unity-api-from-another-thread-or-call-a-function-in-the-main-thread + +#define ENABLE_UPDATE_FUNCTION_CALLBACK +#define ENABLE_LATEUPDATE_FUNCTION_CALLBACK +#define ENABLE_FIXEDUPDATE_FUNCTION_CALLBACK + +using System; +using System.Collections; +using System.Collections.Generic; + +using UnityEngine; + +namespace MetaMask.SocketIOClient +{ + public class UnityThread : MonoBehaviour + { + //our (singleton) instance + private static UnityThread instance = null; + + + ////////////////////////////////////////////////UPDATE IMPL//////////////////////////////////////////////////////// + //Holds actions received from another Thread. Will be coped to actionCopiedQueueUpdateFunc then executed from there + private static List actionQueuesUpdateFunc = new List(); + + //holds Actions copied from actionQueuesUpdateFunc to be executed + private List actionCopiedQueueUpdateFunc = new List(); + + // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame + private volatile static bool noActionQueueToExecuteUpdateFunc = true; + + + ////////////////////////////////////////////////LATEUPDATE IMPL//////////////////////////////////////////////////////// + //Holds actions received from another Thread. Will be coped to actionCopiedQueueLateUpdateFunc then executed from there + private static List actionQueuesLateUpdateFunc = new List(); + + //holds Actions copied from actionQueuesLateUpdateFunc to be executed + private List actionCopiedQueueLateUpdateFunc = new List(); + + // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame + private volatile static bool noActionQueueToExecuteLateUpdateFunc = true; + + + + ////////////////////////////////////////////////FIXEDUPDATE IMPL//////////////////////////////////////////////////////// + //Holds actions received from another Thread. Will be coped to actionCopiedQueueFixedUpdateFunc then executed from there + private static List actionQueuesFixedUpdateFunc = new List(); + + //holds Actions copied from actionQueuesFixedUpdateFunc to be executed + private List actionCopiedQueueFixedUpdateFunc = new List(); + + // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame + private volatile static bool noActionQueueToExecuteFixedUpdateFunc = true; + + + //Used to initialize UnityThread. Call once before any function here + public static void initUnityThread(bool visible = false) + { + if (instance != null) + { + return; + } + + if (Application.isPlaying) + { + // add an invisible game object to the scene + GameObject obj = new GameObject("MainThreadExecuter"); + if (!visible) + { + obj.hideFlags = HideFlags.HideAndDontSave; + } + + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } + } + + public void Awake() + { + DontDestroyOnLoad(gameObject); + } + + //////////////////////////////////////////////COROUTINE IMPL////////////////////////////////////////////////////// +#if (ENABLE_UPDATE_FUNCTION_CALLBACK) + public static void executeCoroutine(IEnumerator action) + { + if (instance != null) + { + executeInUpdate(() => instance.StartCoroutine(action)); + } + } + + ////////////////////////////////////////////UPDATE IMPL//////////////////////////////////////////////////// + public static void executeInUpdate(System.Action action) + { + if (action == null) + { + throw new ArgumentNullException("action"); + } + + lock (actionQueuesUpdateFunc) + { + actionQueuesUpdateFunc.Add(action); + noActionQueueToExecuteUpdateFunc = false; + } + } + + public void Update() + { + if (noActionQueueToExecuteUpdateFunc) + { + return; + } + + //Clear the old actions from the actionCopiedQueueUpdateFunc queue + this.actionCopiedQueueUpdateFunc.Clear(); + lock (actionQueuesUpdateFunc) + { + //Copy actionQueuesUpdateFunc to the actionCopiedQueueUpdateFunc variable + this.actionCopiedQueueUpdateFunc.AddRange(actionQueuesUpdateFunc); + //Now clear the actionQueuesUpdateFunc since we've done copying it + actionQueuesUpdateFunc.Clear(); + noActionQueueToExecuteUpdateFunc = true; + } + + // Loop and execute the functions from the actionCopiedQueueUpdateFunc + for (int i = 0; i < this.actionCopiedQueueUpdateFunc.Count; i++) + { + this.actionCopiedQueueUpdateFunc[i].Invoke(); + } + } +#endif + + ////////////////////////////////////////////LATEUPDATE IMPL//////////////////////////////////////////////////// +#if (ENABLE_LATEUPDATE_FUNCTION_CALLBACK) + public static void executeInLateUpdate(System.Action action) + { + if (action == null) + { + throw new ArgumentNullException("action"); + } + + lock (actionQueuesLateUpdateFunc) + { + actionQueuesLateUpdateFunc.Add(action); + noActionQueueToExecuteLateUpdateFunc = false; + } + } + + + public void LateUpdate() + { + if (noActionQueueToExecuteLateUpdateFunc) + { + return; + } + + //Clear the old actions from the actionCopiedQueueLateUpdateFunc queue + this.actionCopiedQueueLateUpdateFunc.Clear(); + lock (actionQueuesLateUpdateFunc) + { + //Copy actionQueuesLateUpdateFunc to the actionCopiedQueueLateUpdateFunc variable + this.actionCopiedQueueLateUpdateFunc.AddRange(actionQueuesLateUpdateFunc); + //Now clear the actionQueuesLateUpdateFunc since we've done copying it + actionQueuesLateUpdateFunc.Clear(); + noActionQueueToExecuteLateUpdateFunc = true; + } + + // Loop and execute the functions from the actionCopiedQueueLateUpdateFunc + for (int i = 0; i < this.actionCopiedQueueLateUpdateFunc.Count; i++) + { + this.actionCopiedQueueLateUpdateFunc[i].Invoke(); + } + } +#endif + + ////////////////////////////////////////////FIXEDUPDATE IMPL////////////////////////////////////////////////// +#if (ENABLE_FIXEDUPDATE_FUNCTION_CALLBACK) + public static void executeInFixedUpdate(System.Action action) + { + if (action == null) + { + throw new ArgumentNullException("action"); + } + + lock (actionQueuesFixedUpdateFunc) + { + actionQueuesFixedUpdateFunc.Add(action); + noActionQueueToExecuteFixedUpdateFunc = false; + } + } + + public void FixedUpdate() + { + if (noActionQueueToExecuteFixedUpdateFunc) + { + return; + } + + //Clear the old actions from the actionCopiedQueueFixedUpdateFunc queue + this.actionCopiedQueueFixedUpdateFunc.Clear(); + lock (actionQueuesFixedUpdateFunc) + { + //Copy actionQueuesFixedUpdateFunc to the actionCopiedQueueFixedUpdateFunc variable + this.actionCopiedQueueFixedUpdateFunc.AddRange(actionQueuesFixedUpdateFunc); + //Now clear the actionQueuesFixedUpdateFunc since we've done copying it + actionQueuesFixedUpdateFunc.Clear(); + noActionQueueToExecuteFixedUpdateFunc = true; + } + + // Loop and execute the functions from the actionCopiedQueueFixedUpdateFunc + for (int i = 0; i < this.actionCopiedQueueFixedUpdateFunc.Count; i++) + { + this.actionCopiedQueueFixedUpdateFunc[i].Invoke(); + } + } +#endif + + public void OnDisable() + { + if (instance == this) + { + instance = null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs.meta new file mode 100644 index 00000000..82ffcbb1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityThread.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de4dc201ccc9be145a94b27ebf360361 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs new file mode 100644 index 00000000..23c7c092 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs @@ -0,0 +1,47 @@ +using System; +using System.Runtime.CompilerServices; + +using UnityEngine; +using UnityEngine.Networking; + +namespace MetaMask.SocketIOClient +{ + + /// + /// A unity web request awaiter to hook them into async/await practice. + /// + public class UnityWebRequestAwaiter : INotifyCompletion + { + private UnityWebRequestAsyncOperation asyncOp; + private Action continuation; + + public UnityWebRequestAwaiter(UnityWebRequestAsyncOperation asyncOp) + { + this.asyncOp = asyncOp; + asyncOp.completed += OnRequestCompleted; + } + + public bool IsCompleted { get { return this.asyncOp.isDone; } } + + public void GetResult() { } + + public void OnCompleted(Action continuation) + { + this.continuation = continuation; + } + + private void OnRequestCompleted(AsyncOperation obj) + { + this.continuation(); + } + } + + public static class UnityWebRequestAwaiterExtensionMethods + { + public static UnityWebRequestAwaiter GetAwaiter(this UnityWebRequestAsyncOperation asyncOp) + { + return new UnityWebRequestAwaiter(asyncOp); + } + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs.meta new file mode 100644 index 00000000..a5f66e74 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/UnityWebRequestAwaiter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49674070c5859514394eccacc5396974 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs new file mode 100644 index 00000000..5856aa50 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs @@ -0,0 +1,65 @@ +using System.Collections.Generic; + +using MetaMask.NativeWebSocket; + +using UnityEngine; + +namespace MetaMask.SocketIOClient +{ + + public class WebSocketDispatcher : MonoBehaviour + { + + private static WebSocketDispatcher instance; + + public static WebSocketDispatcher Instance + { + get + { + return instance; + } + } + + private List webSockets = new List(); + + private void Awake() + { + if (instance != null) + { + Destroy(gameObject); + } + else + { + instance = this; + DontDestroyOnLoad(gameObject); + } + } + +#if !UNITY_WEBGL || UNITY_EDITOR + private void Update() + { + DispatchMessageQueue(); + } + + public void DispatchMessageQueue() + { + for (int i = 0; i < this.webSockets.Count; i++) + { + this.webSockets[i].DispatchMessageQueue(); + } + } +#endif + + public void AddWebSocket(WebSocket webSocket) + { + this.webSockets.Add(webSocket); + } + + public void RemoveWebSocket(WebSocket webSocket) + { + this.webSockets.Remove(webSocket); + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs.meta new file mode 100644 index 00000000..07612a0d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/WebSocketDispatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 340bb01ce83382c49bd159bf86491fcd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs.meta new file mode 100644 index 00000000..d7fb418b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0764ccb9983ac454ea35d2aceb91326d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 00000000..476f1b16 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll.meta new file mode 100644 index 00000000..27bd1f7e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 54993445d60dfec458baab8d2989250a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml new file mode 100644 index 00000000..cb1744f6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml @@ -0,0 +1,223 @@ + + + + Microsoft.Bcl.AsyncInterfaces + + + + Provides the core logic for implementing a manual-reset or . + + + + + The callback to invoke when the operation completes if was called before the operation completed, + or if the operation completed before a callback was supplied, + or null if a callback hasn't yet been provided and the operation hasn't yet completed. + + + + State to pass to . + + + to flow to the callback, or null if no flowing is required. + + + + A "captured" or with which to invoke the callback, + or null if no special context is required. + + + + Whether the current operation has completed. + + + The result with which the operation succeeded, or the default value if it hasn't yet completed or failed. + + + The exception with which the operation failed, or null if it hasn't yet completed or completed successfully. + + + The current version of this value, used to help prevent misuse. + + + Gets or sets whether to force continuations to run asynchronously. + Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true. + + + Resets to prepare for the next operation. + + + Completes with a successful result. + The result. + + + Complets with an error. + + + + Gets the operation version. + + + Gets the status of the operation. + Opaque value that was provided to the 's constructor. + + + Gets the result of the operation. + Opaque value that was provided to the 's constructor. + + + Schedules the continuation action for this operation. + The continuation to invoke when the operation has completed. + The state object to pass to when it's invoked. + Opaque value that was provided to the 's constructor. + The flags describing the behavior of the continuation. + + + Ensures that the specified token matches the current version. + The token supplied by . + + + Signals that the operation has completed. Invoked after the result or error has been set. + + + + Invokes the continuation with the appropriate captured context / scheduler. + This assumes that if is not null we're already + running within that . + + + + Provides a set of static methods for configuring -related behaviors on asynchronous enumerables and disposables. + + + Configures how awaits on the tasks returned from an async disposable will be performed. + The source async disposable. + Whether to capture and marshal back to the current context. + The configured async disposable. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + The type of the objects being iterated. + The source enumerable being iterated. + Whether to capture and marshal back to the current context. + The configured enumerable. + + + Sets the to be passed to when iterating. + The type of the objects being iterated. + The source enumerable being iterated. + The to use. + The configured enumerable. + + + Represents a builder for asynchronous iterators. + + + Creates an instance of the struct. + The initialized instance. + + + Invokes on the state machine while guarding the . + The type of the state machine. + The state machine instance, passed by reference. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Marks iteration as being completed, whether successfully or otherwise. + + + Gets an object that may be used to uniquely identify this builder to the debugger. + + + Indicates whether a method is an asynchronous iterator. + + + Initializes a new instance of the class. + The type object for the underlying state machine type that's used to implement a state machine method. + + + Provides a type that can be used to configure how awaits on an are performed. + + + Provides an awaitable async enumerable that enables cancelable iteration and configured awaits. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + Whether to capture and marshal back to the current context. + The configured enumerable. + This will replace any previous value set by for this iteration. + + + Sets the to be passed to when iterating. + The to use. + The configured enumerable. + This will replace any previous set by for this iteration. + + + Provides an awaitable async enumerator that enables cancelable iteration and configured awaits. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true + if the enumerator was successfully advanced to the next element, or false if the enumerator has + passed the end of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + Exposes an enumerator that provides asynchronous iteration over values of a specified type. + The type of values to enumerate. + + + Returns an enumerator that iterates asynchronously through the collection. + A that may be used to cancel the asynchronous iteration. + An enumerator that can be used to iterate asynchronously through the collection. + + + Supports a simple asynchronous iteration over a generic collection. + The type of objects to enumerate. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true if the enumerator + was successfully advanced to the next element, or false if the enumerator has passed the end + of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + Provides a mechanism for releasing unmanaged resources asynchronously. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml.meta new file mode 100644 index 00000000..388a9b9a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/Microsoft.Bcl.AsyncInterfaces.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 28923bb98776f3b4687ef596db8ad637 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll new file mode 100644 index 00000000..f2d83c51 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll.meta new file mode 100644 index 00000000..3013f2bf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: c459d49a8e3c13947b307ce37278215b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml new file mode 100644 index 00000000..e243dcef --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml @@ -0,0 +1,38 @@ + + + System.Buffers + + + + Provides a resource pool that enables reusing instances of type . + The type of the objects that are in the resource pool. + + + Initializes a new instance of the class. + + + Creates a new instance of the class. + A new instance of the class. + + + Creates a new instance of the class using the specifed configuration. + The maximum length of an array instance that may be stored in the pool. + The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. + A new instance of the class with the specified configuration. + + + Retrieves a buffer that is at least the requested length. + The minimum length of the array. + An array of type that is at least minimumLength in length. + + + Returns an array to the pool that was previously obtained using the method on the same instance. + A buffer to return to the pool that was previously obtained using the method. + Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. + + + Gets a shared instance. + A shared instance. + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml.meta new file mode 100644 index 00000000..f14d084d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Buffers.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cb96c91e36a11984d9ae31a2abbc7946 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll new file mode 100644 index 00000000..46171997 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll.meta new file mode 100644 index 00000000..f750a2e2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: de41620d1a1b77f488ee0dae2ca68cf0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml new file mode 100644 index 00000000..4d12fd71 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml @@ -0,0 +1,355 @@ + + + System.Memory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml.meta new file mode 100644 index 00000000..4260d4e3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Memory.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c2aa8cdec6da47d44b368a47b4e9617c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 00000000..c5ba4e40 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll.meta new file mode 100644 index 00000000..5edc5d62 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: a933021cd19ae0a4c8db33e9506fc82d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml new file mode 100644 index 00000000..9d794922 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml @@ -0,0 +1,291 @@ + + + + System.Runtime.CompilerServices.Unsafe + + + + Contains generic, low-level functionality for manipulating pointers. + + + Adds an element offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of offset to pointer. + + + Adds an element offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of offset to pointer. + + + Adds an element offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of offset to pointer. + + + Adds an element offset to the given void pointer. + The void pointer to add the offset to. + The offset to add. + The type of void pointer. + A new void pointer that reflects the addition of offset to the specified pointer. + + + Adds a byte offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of byte offset to pointer. + + + Adds a byte offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of byte offset to pointer. + + + Determines whether the specified references point to the same location. + The first reference to compare. + The second reference to compare. + The type of reference. + + if and point to the same location; otherwise, . + + + Casts the given object to the specified type. + The object to cast. + The type which the object will be cast to. + The original object, casted to the given type. + + + Reinterprets the given reference as a reference to a value of type . + The reference to reinterpret. + The type of reference to reinterpret. + The desired type of the reference. + A reference to a value of type . + + + Returns a pointer to the given by-ref parameter. + The object whose pointer is obtained. + The type of object. + A pointer to the given value. + + + Reinterprets the given read-only reference as a reference. + The read-only reference to reinterpret. + The type of reference. + A reference to a value of type . + + + Reinterprets the given location as a reference to a value of type . + The location of the value to reference. + The type of the interpreted location. + A reference to a value of type . + + + Determines the byte offset from origin to target from the given references. + The reference to origin. + The reference to target. + The type of reference. + Byte offset from origin to target i.e. - . + + + Copies a value of type to the given location. + The location to copy to. + A pointer to the value to copy. + The type of value to copy. + + + Copies a value of type to the given location. + The location to copy to. + A reference to the value to copy. + The type of value to copy. + + + Copies bytes from the source address to the destination address. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Initializes a block of memory at the given location with a given initial value. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Returns a value that indicates whether a specified reference is greater than another specified reference. + The first value to compare. + The second value to compare. + The type of the reference. + + if is greater than ; otherwise, . + + + Returns a value that indicates whether a specified reference is less than another specified reference. + The first value to compare. + The second value to compare. + The type of the reference. + + if is less than ; otherwise, . + + + Determines if a given reference to a value of type is a null reference. + The reference to check. + The type of the reference. + + if is a null reference; otherwise, . + + + Returns a reference to a value of type that is a null reference. + The type of the reference. + A reference to a value of type that is a null reference. + + + Reads a value of type from the given location. + The location to read from. + The type to read. + An object of type read from the given location. + + + Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. + The location to read from. + The type to read. + An object of type read from the given location. + + + Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. + The location to read from. + The type to read. + An object of type read from the given location. + + + Returns the size of an object of the given type parameter. + The type of object whose size is retrieved. + The size of an object of type . + + + Bypasses definite assignment rules for a given value. + The uninitialized object. + The type of the uninitialized object. + + + Subtracts an element offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of offset from pointer. + + + Subtracts an element offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of offset from pointer. + + + Subtracts an element offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subraction of offset from pointer. + + + Subtracts an element offset from the given void pointer. + The void pointer to subtract the offset from. + The offset to subtract. + The type of the void pointer. + A new void pointer that reflects the subtraction of offset from the specified pointer. + + + Subtracts a byte offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of byte offset from pointer. + + + Subtracts a byte offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subraction of byte offset from pointer. + + + Returns a to a boxed value. + The value to unbox. + The type to be unboxed. + + is , and is a non-nullable value type. + + is not a boxed value type. + +-or- + + is not a boxed . + + cannot be found. + A to the boxed value . + + + Writes a value of type to the given location. + The location to write to. + The value to write. + The type of value to write. + + + Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. + The location to write to. + The value to write. + The type of value to write. + + + Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. + The location to write to. + The value to write. + The type of value to write. + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml.meta new file mode 100644 index 00000000..3e798fce --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Runtime.CompilerServices.Unsafe.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 952f999206aec824b8af7c09a3126b6b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll new file mode 100644 index 00000000..a85aa43c Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll.meta new file mode 100644 index 00000000..15c7ef4a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 279cfe8fe68c3de418f3a1c967eeda21 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml new file mode 100644 index 00000000..6659e6f3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml @@ -0,0 +1,936 @@ + + + + System.Text.Encodings.Web + + + + Represents an HTML character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of the HtmlEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + + is . + A new instance of the class. + + + Creates a new instance of the HtmlEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + + is . + A new instance of the class. + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Represents a JavaScript character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of JavaScriptEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + + is . + A new instance of the class. + + + Creates a new instance of the JavaScriptEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + + is . + A new instance of the class. + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Gets a built-in JavaScript encoder instance that is less strict about what is encoded. + A JavaScript encoder instance. + + + The base class of web encoders. + + + Initializes a new instance of the class. + + + Encodes characters from an array and writes them to a object. + The stream to which to write the encoded text. + The array of characters to encode. + The array index of the first character to encode. + The number of characters in the array to encode. + + is . + The method failed. The encoder does not implement correctly. + + is . + + is out of range. + + is out of range. + + + Encodes the specified string to a object. + The stream to which to write the encoded text. + The string to encode. + + + Encodes a substring and writes it to a object. + The stream to which to write the encoded text. + The string whose substring is to be encoded. + The index where the substring starts. + The number of characters in the substring. + + is . + The method failed. The encoder does not implement correctly. + + is . + + is out of range. + + is out of range. + + + Encodes the supplied characters. + A source buffer containing the characters to encode. + The destination buffer to which the encoded form of will be written. + The number of characters consumed from the buffer. + The number of characters written to the buffer. + + to indicate there is no further source data that needs to be encoded; otherwise, . + An enumeration value that describes the result of the encoding operation. + + + Encodes the supplied string and returns the encoded text as a new string. + The string to encode. + + is . + The method failed. The encoder does not implement correctly. + The encoded string. + + + Encodes the supplied UTF-8 text. + A source buffer containing the UTF-8 text to encode. + The destination buffer to which the encoded form of will be written. + The number of bytes consumed from the buffer. + The number of bytes written to the buffer. + + to indicate there is no further source data that needs to be encoded; otherwise, . + A status code that describes the result of the encoding operation. + + + Finds the index of the first character to encode. + The text buffer to search. + The number of characters in . + The index of the first character to encode. + + + Finds the first element in a UTF-8 text input buffer that would be escaped by the current encoder instance. + The UTF-8 text input buffer to search. + The index of the first element in that would be escaped by the current encoder instance, or -1 if no data in requires escaping. + + + Encodes a Unicode scalar value and writes it to a buffer. + A Unicode scalar value. + A pointer to the buffer to which to write the encoded text. + The length of the destination in characters. + When the method returns, indicates the number of characters written to the . + + if is too small to fit the encoded text; otherwise, returns . + + + Determines if a given Unicode scalar value will be encoded. + A Unicode scalar value. + + if the value will be encoded by this encoder; otherwise, returns . + + + Gets the maximum number of characters that this encoder can generate for each input code point. + The maximum number of characters. + + + Represents a filter that allows only certain Unicode code points. + + + Instantiates an empty filter (allows no code points through by default). + + + Instantiates a filter by cloning the allowed list of another object. + The other object to be cloned. + + + Instantiates a filter where only the character ranges specified by are allowed by the filter. + The allowed character ranges. + + is . + + + Allows the character specified by through the filter. + The allowed character. + + + Allows all characters specified by through the filter. + The allowed characters. + + is . + + + Allows all code points specified by . + The allowed code points. + + is . + + + Allows all characters specified by through the filter. + The range of characters to be allowed. + + is . + + + Allows all characters specified by through the filter. + The ranges of characters to be allowed. + + is . + + + Resets this object by disallowing all characters. + + + Disallows the character through the filter. + The disallowed character. + + + Disallows all characters specified by through the filter. + The disallowed characters. + + is . + + + Disallows all characters specified by through the filter. + The range of characters to be disallowed. + + is . + + + Disallows all characters specified by through the filter. + The ranges of characters to be disallowed. + + is . + + + Gets an enumerator of all allowed code points. + The enumerator of allowed code points. + + + Represents a URL character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of UrlEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + + is . + A new instance of the class. + + + Creates a new instance of the UrlEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + + is . + A new instance of the class. + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Represents a contiguous range of Unicode code points. + + + Creates a new that includes a specified number of characters starting at a specified Unicode code point. + The first code point in the range. + The number of code points in the range. + + is less than zero or greater than 0xFFFF. + +-or- + + is less than zero. + +-or- + + plus is greater than 0xFFFF. + + + Creates a new instance from a span of characters. + The first character in the range. + The last character in the range. + + precedes . + A range that includes all characters between and . + + + Gets the first code point in the range represented by this instance. + The first code point in the range. + + + Gets the number of code points in the range represented by this instance. + The number of code points in the range. + + + Provides static properties that return predefined instances that correspond to blocks from the Unicode specification. + + + Gets a range that consists of the entire Basic Multilingual Plane (BMP), from U+0000 to U+FFFF). + A range that consists of the entire BMP. + + + Gets the Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F). + The Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F). + + + Gets the Arabic Unicode block (U+0600-U+06FF). + The Arabic Unicode block (U+0600-U+06FF). + + + Gets the Arabic Extended-A Unicode block (U+08A0-U+08FF). + The Arabic Extended-A Unicode block (U+08A0-U+08FF). + + + Gets the Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF). + The Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF). + + + Gets the Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF). + The Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF). + + + Gets the Arabic Supplement Unicode block (U+0750-U+077F). + The Arabic Supplement Unicode block (U+0750-U+077F). + + + Gets the Armenian Unicode block (U+0530-U+058F). + The Armenian Unicode block (U+0530-U+058F). + + + Gets the Arrows Unicode block (U+2190-U+21FF). + The Arrows Unicode block (U+2190-U+21FF). + + + Gets the Balinese Unicode block (U+1B00-U+1B7F). + The Balinese Unicode block (U+1B00-U+1B7F). + + + Gets the Bamum Unicode block (U+A6A0-U+A6FF). + The Bamum Unicode block (U+A6A0-U+A6FF). + + + Gets the Basic Latin Unicode block (U+0021-U+007F). + The Basic Latin Unicode block (U+0021-U+007F). + + + Gets the Batak Unicode block (U+1BC0-U+1BFF). + The Batak Unicode block (U+1BC0-U+1BFF). + + + Gets the Bengali Unicode block (U+0980-U+09FF). + The Bengali Unicode block (U+0980-U+09FF). + + + Gets the Block Elements Unicode block (U+2580-U+259F). + The Block Elements Unicode block (U+2580-U+259F). + + + Gets the Bopomofo Unicode block (U+3100-U+312F). + The Bopomofo Unicode block (U+3105-U+312F). + + + Gets the Bopomofo Extended Unicode block (U+31A0-U+31BF). + The Bopomofo Extended Unicode block (U+31A0-U+31BF). + + + Gets the Box Drawing Unicode block (U+2500-U+257F). + The Box Drawing Unicode block (U+2500-U+257F). + + + Gets the Braille Patterns Unicode block (U+2800-U+28FF). + The Braille Patterns Unicode block (U+2800-U+28FF). + + + Gets the Buginese Unicode block (U+1A00-U+1A1F). + The Buginese Unicode block (U+1A00-U+1A1F). + + + Gets the Buhid Unicode block (U+1740-U+175F). + The Buhid Unicode block (U+1740-U+175F). + + + Gets the Cham Unicode block (U+AA00-U+AA5F). + The Cham Unicode block (U+AA00-U+AA5F). + + + Gets the Cherokee Unicode block (U+13A0-U+13FF). + The Cherokee Unicode block (U+13A0-U+13FF). + + + Gets the Cherokee Supplement Unicode block (U+AB70-U+ABBF). + The Cherokee Supplement Unicode block (U+AB70-U+ABBF). + + + Gets the CJK Compatibility Unicode block (U+3300-U+33FF). + The CJK Compatibility Unicode block (U+3300-U+33FF). + + + Gets the CJK Compatibility Forms Unicode block (U+FE30-U+FE4F). + The CJK Compatibility Forms Unicode block (U+FE30-U+FE4F). + + + Gets the CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9). + The CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9). + + + Gets the CJK Radicals Supplement Unicode block (U+2E80-U+2EFF). + The CJK Radicals Supplement Unicode block (U+2E80-U+2EFF). + + + Gets the CJK Strokes Unicode block (U+31C0-U+31EF). + The CJK Strokes Unicode block (U+31C0-U+31EF). + + + Gets the CJK Symbols and Punctuation Unicode block (U+3000-U+303F). + The CJK Symbols and Punctuation Unicode block (U+3000-U+303F). + + + Gets the CJK Unified Ideographs Unicode block (U+4E00-U+9FCC). + The CJK Unified Ideographs Unicode block (U+4E00-U+9FCC). + + + Gets the CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5). + The CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5). + + + Gets the Combining Diacritical Marks Unicode block (U+0300-U+036F). + The Combining Diacritical Marks Unicode block (U+0300-U+036F). + + + Gets the Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF). + The Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF). + + + Gets the Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF). + The Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF). + + + Gets the Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF). + The Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF). + + + Gets the Combining Half Marks Unicode block (U+FE20-U+FE2F). + The Combining Half Marks Unicode block (U+FE20-U+FE2F). + + + Gets the Common Indic Number Forms Unicode block (U+A830-U+A83F). + The Common Indic Number Forms Unicode block (U+A830-U+A83F). + + + Gets the Control Pictures Unicode block (U+2400-U+243F). + The Control Pictures Unicode block (U+2400-U+243F). + + + Gets the Coptic Unicode block (U+2C80-U+2CFF). + The Coptic Unicode block (U+2C80-U+2CFF). + + + Gets the Currency Symbols Unicode block (U+20A0-U+20CF). + The Currency Symbols Unicode block (U+20A0-U+20CF). + + + Gets the Cyrillic Unicode block (U+0400-U+04FF). + The Cyrillic Unicode block (U+0400-U+04FF). + + + Gets the Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF). + The Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF). + + + Gets the Cyrillic Extended-B Unicode block (U+A640-U+A69F). + The Cyrillic Extended-B Unicode block (U+A640-U+A69F). + + + A corresponding to the 'Cyrillic Extended-C' Unicode block (U+1C80..U+1C8F). + + + Gets the Cyrillic Supplement Unicode block (U+0500-U+052F). + The Cyrillic Supplement Unicode block (U+0500-U+052F). + + + Gets the Devangari Unicode block (U+0900-U+097F). + The Devangari Unicode block (U+0900-U+097F). + + + Gets the Devanagari Extended Unicode block (U+A8E0-U+A8FF). + The Devanagari Extended Unicode block (U+A8E0-U+A8FF). + + + Gets the Dingbats Unicode block (U+2700-U+27BF). + The Dingbats Unicode block (U+2700-U+27BF). + + + Gets the Enclosed Alphanumerics Unicode block (U+2460-U+24FF). + The Enclosed Alphanumerics Unicode block (U+2460-U+24FF). + + + Gets the Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF). + The Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF). + + + Gets the Ethiopic Unicode block (U+1200-U+137C). + The Ethiopic Unicode block (U+1200-U+137C). + + + Gets the Ethipic Extended Unicode block (U+2D80-U+2DDF). + The Ethipic Extended Unicode block (U+2D80-U+2DDF). + + + Gets the Ethiopic Extended-A Unicode block (U+AB00-U+AB2F). + The Ethiopic Extended-A Unicode block (U+AB00-U+AB2F). + + + Gets the Ethiopic Supplement Unicode block (U+1380-U+1399). + The Ethiopic Supplement Unicode block (U+1380-U+1399). + + + Gets the General Punctuation Unicode block (U+2000-U+206F). + The General Punctuation Unicode block (U+2000-U+206F). + + + Gets the Geometric Shapes Unicode block (U+25A0-U+25FF). + The Geometric Shapes Unicode block (U+25A0-U+25FF). + + + Gets the Georgian Unicode block (U+10A0-U+10FF). + The Georgian Unicode block (U+10A0-U+10FF). + + + A corresponding to the 'Georgian Extended' Unicode block (U+1C90..U+1CBF). + + + Gets the Georgian Supplement Unicode block (U+2D00-U+2D2F). + The Georgian Supplement Unicode block (U+2D00-U+2D2F). + + + Gets the Glagolitic Unicode block (U+2C00-U+2C5F). + The Glagolitic Unicode block (U+2C00-U+2C5F). + + + Gets the Greek and Coptic Unicode block (U+0370-U+03FF). + The Greek and Coptic Unicode block (U+0370-U+03FF). + + + Gets the Greek Extended Unicode block (U+1F00-U+1FFF). + The Greek Extended Unicode block (U+1F00-U+1FFF). + + + Gets the Gujarti Unicode block (U+0A81-U+0AFF). + The Gujarti Unicode block (U+0A81-U+0AFF). + + + Gets the Gurmukhi Unicode block (U+0A01-U+0A7F). + The Gurmukhi Unicode block (U+0A01-U+0A7F). + + + Gets the Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE). + The Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE). + + + Gets the Hangul Compatibility Jamo Unicode block (U+3131-U+318F). + The Hangul Compatibility Jamo Unicode block (U+3131-U+318F). + + + Gets the Hangul Jamo Unicode block (U+1100-U+11FF). + The Hangul Jamo Unicode block (U+1100-U+11FF). + + + Gets the Hangul Jamo Extended-A Unicode block (U+A960-U+A9F). + The Hangul Jamo Extended-A Unicode block (U+A960-U+A97F). + + + Gets the Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF). + The Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF). + + + Gets the Hangul Syllables Unicode block (U+AC00-U+D7AF). + The Hangul Syllables Unicode block (U+AC00-U+D7AF). + + + Gets the Hanunoo Unicode block (U+1720-U+173F). + The Hanunoo Unicode block (U+1720-U+173F). + + + Gets the Hebrew Unicode block (U+0590-U+05FF). + The Hebrew Unicode block (U+0590-U+05FF). + + + Gets the Hiragana Unicode block (U+3040-U+309F). + The Hiragana Unicode block (U+3040-U+309F). + + + Gets the Ideographic Description Characters Unicode block (U+2FF0-U+2FFF). + The Ideographic Description Characters Unicode block (U+2FF0-U+2FFF). + + + Gets the IPA Extensions Unicode block (U+0250-U+02AF). + The IPA Extensions Unicode block (U+0250-U+02AF). + + + Gets the Javanese Unicode block (U+A980-U+A9DF). + The Javanese Unicode block (U+A980-U+A9DF). + + + Gets the Kanbun Unicode block (U+3190-U+319F). + The Kanbun Unicode block (U+3190-U+319F). + + + Gets the Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF). + The Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF). + + + Gets the Kannada Unicode block (U+0C81-U+0CFF). + The Kannada Unicode block (U+0C81-U+0CFF). + + + Gets the Katakana Unicode block (U+30A0-U+30FF). + The Katakana Unicode block (U+30A0-U+30FF). + + + Gets the Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF). + The Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF). + + + Gets the Kayah Li Unicode block (U+A900-U+A92F). + The Kayah Li Unicode block (U+A900-U+A92F). + + + Gets the Khmer Unicode block (U+1780-U+17FF). + The Khmer Unicode block (U+1780-U+17FF). + + + Gets the Khmer Symbols Unicode block (U+19E0-U+19FF). + The Khmer Symbols Unicode block (U+19E0-U+19FF). + + + Gets the Lao Unicode block (U+0E80-U+0EDF). + The Lao Unicode block (U+0E80-U+0EDF). + + + Gets the Latin-1 Supplement Unicode block (U+00A1-U+00FF). + The Latin-1 Supplement Unicode block (U+00A1-U+00FF). + + + Gets the Latin Extended-A Unicode block (U+0100-U+017F). + The Latin Extended-A Unicode block (U+0100-U+017F). + + + Gets the Latin Extended Additional Unicode block (U+1E00-U+1EFF). + The Latin Extended Additional Unicode block (U+1E00-U+1EFF). + + + Gets the Latin Extended-B Unicode block (U+0180-U+024F). + The Latin Extended-B Unicode block (U+0180-U+024F). + + + Gets the Latin Extended-C Unicode block (U+2C60-U+2C7F). + The Latin Extended-C Unicode block (U+2C60-U+2C7F). + + + Gets the Latin Extended-D Unicode block (U+A720-U+A7FF). + The Latin Extended-D Unicode block (U+A720-U+A7FF). + + + Gets the Latin Extended-E Unicode block (U+AB30-U+AB6F). + The Latin Extended-E Unicode block (U+AB30-U+AB6F). + + + Gets the Lepcha Unicode block (U+1C00-U+1C4F). + The Lepcha Unicode block (U+1C00-U+1C4F). + + + Gets the Letterlike Symbols Unicode block (U+2100-U+214F). + The Letterlike Symbols Unicode block (U+2100-U+214F). + + + Gets the Limbu Unicode block (U+1900-U+194F). + The Limbu Unicode block (U+1900-U+194F). + + + Gets the Lisu Unicode block (U+A4D0-U+A4FF). + The Lisu Unicode block (U+A4D0-U+A4FF). + + + Gets the Malayalam Unicode block (U+0D00-U+0D7F). + The Malayalam Unicode block (U+0D00-U+0D7F). + + + Gets the Mandaic Unicode block (U+0840-U+085F). + The Mandaic Unicode block (U+0840-U+085F). + + + Gets the Mathematical Operators Unicode block (U+2200-U+22FF). + The Mathematical Operators Unicode block (U+2200-U+22FF). + + + Gets the Meetei Mayek Unicode block (U+ABC0-U+ABFF). + The Meetei Mayek Unicode block (U+ABC0-U+ABFF). + + + Gets the Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF). + The Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF). + + + Gets the Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF). + The Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF). + + + Gets the Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF). + The Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF). + + + Gets the Miscellaneous Symbols Unicode block (U+2600-U+26FF). + The Miscellaneous Symbols Unicode block (U+2600-U+26FF). + + + Gets the Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF). + The Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF). + + + Gets the Miscellaneous Technical Unicode block (U+2300-U+23FF). + The Miscellaneous Technical Unicode block (U+2300-U+23FF). + + + Gets the Modifier Tone Letters Unicode block (U+A700-U+A71F). + The Modifier Tone Letters Unicode block (U+A700-U+A71F). + + + Gets the Mongolian Unicode block (U+1800-U+18AF). + The Mongolian Unicode block (U+1800-U+18AF). + + + Gets the Myanmar Unicode block (U+1000-U+109F). + The Myanmar Unicode block (U+1000-U+109F). + + + Gets the Myanmar Extended-A Unicode block (U+AA60-U+AA7F). + The Myanmar Extended-A Unicode block (U+AA60-U+AA7F). + + + Gets the Myanmar Extended-B Unicode block (U+A9E0-U+A9FF). + The Myanmar Extended-B Unicode block (U+A9E0-U+A9FF). + + + Gets the New Tai Lue Unicode block (U+1980-U+19DF). + The New Tai Lue Unicode block (U+1980-U+19DF). + + + Gets the NKo Unicode block (U+07C0-U+07FF). + The NKo Unicode block (U+07C0-U+07FF). + + + Gets an empty Unicode range. + A Unicode range with no elements. + + + Gets the Number Forms Unicode block (U+2150-U+218F). + The Number Forms Unicode block (U+2150-U+218F). + + + Gets the Ogham Unicode block (U+1680-U+169F). + The Ogham Unicode block (U+1680-U+169F). + + + Gets the Ol Chiki Unicode block (U+1C50-U+1C7F). + The Ol Chiki Unicode block (U+1C50-U+1C7F). + + + Gets the Optical Character Recognition Unicode block (U+2440-U+245F). + The Optical Character Recognition Unicode block (U+2440-U+245F). + + + Gets the Oriya Unicode block (U+0B00-U+0B7F). + The Oriya Unicode block (U+0B00-U+0B7F). + + + Gets the Phags-pa Unicode block (U+A840-U+A87F). + The Phags-pa Unicode block (U+A840-U+A87F). + + + Gets the Phonetic Extensions Unicode block (U+1D00-U+1D7F). + The Phonetic Extensions Unicode block (U+1D00-U+1D7F). + + + Gets the Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF). + The Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF). + + + Gets the Rejang Unicode block (U+A930-U+A95F). + The Rejang Unicode block (U+A930-U+A95F). + + + Gets the Runic Unicode block (U+16A0-U+16FF). + The Runic Unicode block (U+16A0-U+16FF). + + + Gets the Samaritan Unicode block (U+0800-U+083F). + The Samaritan Unicode block (U+0800-U+083F). + + + Gets the Saurashtra Unicode block (U+A880-U+A8DF). + The Saurashtra Unicode block (U+A880-U+A8DF). + + + Gets the Sinhala Unicode block (U+0D80-U+0DFF). + The Sinhala Unicode block (U+0D80-U+0DFF). + + + Gets the Small Form Variants Unicode block (U+FE50-U+FE6F). + The Small Form Variants Unicode block (U+FE50-U+FE6F). + + + Gets the Spacing Modifier Letters Unicode block (U+02B0-U+02FF). + The Spacing Modifier Letters Unicode block (U+02B0-U+02FF). + + + Gets the Specials Unicode block (U+FFF0-U+FFFF). + The Specials Unicode block (U+FFF0-U+FFFF). + + + Gets the Sundanese Unicode block (U+1B80-U+1BBF). + The Sundanese Unicode block (U+1B80-U+1BBF). + + + Gets the Sundanese Supplement Unicode block (U+1CC0-U+1CCF). + The Sundanese Supplement Unicode block (U+1CC0-U+1CCF). + + + Gets the Superscripts and Subscripts Unicode block (U+2070-U+209F). + The Superscripts and Subscripts Unicode block (U+2070-U+209F). + + + Gets the Supplemental Arrows-A Unicode block (U+27F0-U+27FF). + The Supplemental Arrows-A Unicode block (U+27F0-U+27FF). + + + Gets the Supplemental Arrows-B Unicode block (U+2900-U+297F). + The Supplemental Arrows-B Unicode block (U+2900-U+297F). + + + Gets the Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF). + The Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF). + + + Gets the Supplemental Punctuation Unicode block (U+2E00-U+2E7F). + The Supplemental Punctuation Unicode block (U+2E00-U+2E7F). + + + Gets the Syloti Nagri Unicode block (U+A800-U+A82F). + The Syloti Nagri Unicode block (U+A800-U+A82F). + + + Gets the Syriac Unicode block (U+0700-U+074F). + The Syriac Unicode block (U+0700-U+074F). + + + A corresponding to the 'Syriac Supplement' Unicode block (U+0860..U+086F). + + + Gets the Tagalog Unicode block (U+1700-U+171F). + The Tagalog Unicode block (U+1700-U+171F). + + + Gets the Tagbanwa Unicode block (U+1760-U+177F). + The Tagbanwa Unicode block (U+1760-U+177F). + + + Gets the Tai Le Unicode block (U+1950-U+197F). + The Tai Le Unicode block (U+1950-U+197F). + + + Gets the Tai Tham Unicode block (U+1A20-U+1AAF). + The Tai Tham Unicode block (U+1A20-U+1AAF). + + + Gets the Tai Viet Unicode block (U+AA80-U+AADF). + The Tai Viet Unicode block (U+AA80-U+AADF). + + + Gets the Tamil Unicode block (U+0B80-U+0BFF). + The Tamil Unicode block (U+0B82-U+0BFA). + + + Gets the Telugu Unicode block (U+0C00-U+0C7F). + The Telugu Unicode block (U+0C00-U+0C7F). + + + Gets the Thaana Unicode block (U+0780-U+07BF). + The Thaana Unicode block (U+0780-U+07BF). + + + Gets the Thai Unicode block (U+0E00-U+0E7F). + The Thai Unicode block (U+0E00-U+0E7F). + + + Gets the Tibetan Unicode block (U+0F00-U+0FFF). + The Tibetan Unicode block (U+0F00-U+0FFF). + + + Gets the Tifinagh Unicode block (U+2D30-U+2D7F). + The Tifinagh Unicode block (U+2D30-U+2D7F). + + + Gets the Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F). + The Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F). + + + Gets the Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF). + The Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF). + + + Gets the Vai Unicode block (U+A500-U+A63F). + The Vai Unicode block (U+A500-U+A63F). + + + Gets the Variation Selectors Unicode block (U+FE00-U+FE0F). + The Variation Selectors Unicode block (U+FE00-U+FE0F). + + + Gets the Vedic Extensions Unicode block (U+1CD0-U+1CFF). + The Vedic Extensions Unicode block (U+1CD0-U+1CFF). + + + Gets the Vertical Forms Unicode block (U+FE10-U+FE1F). + The Vertical Forms Unicode block (U+FE10-U+FE1F). + + + Gets the Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF). + The Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF). + + + Gets the Yi Radicals Unicode block (U+A490-U+A4CF). + The Yi Radicals Unicode block (U+A490-U+A4CF). + + + Gets the Yi Syllables Unicode block (U+A000-U+A48F). + The Yi Syllables Unicode block (U+A000-U+A48F). + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml.meta new file mode 100644 index 00000000..9976d231 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Encodings.Web.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ce46a2f9d6d860945b9ff9fc5abb4b7a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll new file mode 100644 index 00000000..f499c461 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll.meta new file mode 100644 index 00000000..beca3b9c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 1cbf689e9c0648a43acca6a4deea19b0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml new file mode 100644 index 00000000..47c5f6dc --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml @@ -0,0 +1,4830 @@ + + + + System.Text.Json + + + + Defines how the struct handles comments. + + + Allows comments within the JSON input and treats them as valid tokens. While reading, the caller can access the comment values. + + + Doesn't allow comments within the JSON input. Comments are treated as invalid JSON if found, and a is thrown. This is the default value. + + + Allows comments within the JSON input and ignores them. The behaves as if no comments are present. + + + Provides a mechanism for examining the structural content of a JSON value without automatically instantiating data values. + + + Releases the resources used by this instance. + + + Parses a sequence as UTF-8-encoded text representing a single JSON byte value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + + does not represent a valid single JSON value. + + contains unsupported options. + A JsonDocument representation of the JSON value. + + + Parses a as UTF-8-encoded data representing a single JSON value into a JsonDocument. The stream is read to completion. + The JSON data to parse. + Options to control the reader behavior during parsing. + + does not represent a valid single JSON value. + + contains unsupported options. + A JsonDocument representation of the JSON value. + + + Parses memory as UTF-8-encoded text representing a single JSON byte value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + + does not represent a valid single JSON value. + + contains unsupported options. + A JsonDocument representation of the JSON value. + + + Parses text representing a single JSON value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + + does not represent a valid single JSON value. + + contains unsupported options. + A JsonDocument representation of the JSON value. + + + Parses text representing a single JSON string value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + + does not represent a valid single JSON value. + + contains unsupported options. + A JsonDocument representation of the JSON value. + + + Parses a as UTF-8-encoded data representing a single JSON value into a JsonDocument. The stream is read to completion. + The JSON data to parse. + Options to control the reader behavior during parsing. + The token to monitor for cancellation requests. + + does not represent a valid single JSON value. + + contains unsupported options. + A task to produce a JsonDocument representation of the JSON value. + + + Parses one JSON value (including objects or arrays) from the provided reader. + The reader to read. + + contains unsupported options. + +-or- + +The current token does not start or represent a value. + A value could not be read from the reader. + A JsonDocument representing the value (and nested values) read from the reader. + + + Attempts to parse one JSON value (including objects or arrays) from the provided reader. + The reader to read. + When the method returns, contains the parsed document. + + contains unsupported options. + +-or- + +The current token does not start or represent a value. + A value could not be read from the reader. + + if a value was read and parsed into a JsonDocument; if the reader ran out of data while parsing. All other situations result in an exception being thrown. + + + Writes the document to the provided writer as a JSON value. + The writer to which to write the document. + The parameter is . + The of this would result in invalid JSON. + The parent has been disposed. + + + Gets the root element of this JSON document. + A representing the value of the document. + + + Provides the ability for the user to define custom behavior when parsing JSON to create a . + + + Gets or sets a value that indicates whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being read. + + if an extra comma at the end of a list of JSON values in an object or array is allowed; otherwise, . Default is + + + Gets or sets a value that determines how the handles comments when reading through the JSON data. + The comment handling enum is set to a value that is not supported (or not within the enum range). + One of the enumeration values that indicates how comments are handled. + + + Gets or sets the maximum depth allowed when parsing JSON data, with the default (that is, 0) indicating a maximum depth of 64. + The max depth is set to a negative value. + The maximum depth allowed when parsing JSON data. + + + Represents a specific JSON value within a . + + + Gets a JsonElement that can be safely stored beyond the lifetime of the original . + A JsonElement that can be safely stored beyond the lifetime of the original . + + + Gets an enumerator to enumerate the values in the JSON array represented by this JsonElement. + This value's is not . + The parent has been disposed. + An enumerator to enumerate the values in the JSON array represented by this JsonElement. + + + Gets an enumerator to enumerate the properties in the JSON object represented by this JsonElement. + This value's is not . + The parent has been disposed. + An enumerator to enumerate the properties in the JSON object represented by this JsonElement. + + + Gets the number of values contained within the current array value. + This value's is not . + The parent has been disposed. + The number of values contained within the current array value. + + + Gets the value of the element as a . + This value's is neither nor . + The parent has been disposed. + The value of the element as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the value of the element as a byte array. + This value's is not . + The value is not encoded as Base64 text and hence cannot be decoded to bytes. + The parent has been disposed. + The value decoded as a byte array. + + + Gets the value of the element as a . + This value's is not . + The value cannot be read as a . + The parent has been disposed. + The value of the element as a . + + + Gets the value of the element as a . + This value's is not . + The value cannot be read as a . + The parent has been disposed. + The value of the element as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the value of the element as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The value of the element as a . + + + Gets the current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + The current JSON number as an . + + + Gets the current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + The current JSON number as an . + + + Gets the current JSON number as an . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as an . + + + Gets a representing the value of a required property identified by . + The UTF-8 representation (with no Byte-Order-Mark (BOM)) of the name of the property to return. + This value's is not . + No property was found with the requested name. + The parent has been disposed. + A representing the value of the requested property. + + + Gets a representing the value of a required property identified by . + The name of the property whose value is to be returned. + This value's is not . + No property was found with the requested name. + The parent has been disposed. + A representing the value of the requested property. + + + Gets a representing the value of a required property identified by . + The name of the property whose value is to be returned. + This value's is not . + No property was found with the requested name. + + is . + The parent has been disposed. + A representing the value of the requested property. + + + Gets a string that represents the original input data backing this value. + The parent has been disposed. + The original input data backing this value. + + + Gets the current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + The current JSON number as an . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the value of the element as a . + This value's is neither nor . + The parent has been disposed. + The value of the element as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Gets the current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + The current JSON number as a . + + + Parses one JSON value (including objects or arrays) from the provided reader. + The reader to read. + + is using unsupported options. + The current token does not start or represent a value. + A value could not be read from the reader. + A JsonElement representing the value (and nested values) read from the reader. + + + Gets a string representation for the current value appropriate to the value type. + The parent has been disposed. + A string representation for the current value appropriate to the value type. + + + Attempts to represent the current JSON number as a . + When the method returns, contains the byte equivalent of the current JSON number if the conversion succeeded. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON string as a byte array, assuming that it is Base64 encoded. + If the method succeeds, contains the decoded binary representation of the Base64 text. + This value's is not . + The parent has been disposed. + + if the entire token value is encoded as valid Base64 text and can be successfully decoded to bytes; otherwise, . + + + Attempts to represent the current JSON string as a . + When this method returns, contains the date and time value equivalent to the current JSON string. + This value's is not . + The parent has been disposed. + + if the string can be represented as a ; otherwise, . + + + Attempts to represent the current JSON string as a . + When this method returns, contains the date and time equivalent to the current JSON string. + This value's is not . + The parent has been disposed. + + if the string can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains the decimal equivalent of the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains a double-precision floating point value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON string as a . + When this method returns, contains the GUID equivalent to the current JSON string. + This value's is not . + The parent has been disposed. + + if the string can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as an . + When the method returns, contains the 16-bit integer equivalent of the current JSON number if the conversion succeeded. + This value's is not . + The parent has been disposed. + + if the number can be represented as an ; otherwise, . + + + Attempts to represent the current JSON number as an . + When this method returns, contains the 32-bit integer value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as an ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains the 64-bit integer value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, the method assigns its value to the argument. + The UTF-8 (with no Byte-Order-Mark (BOM)) representation of the name of the property to return. + Receives the value of the located property. + This value's is not . + The parent has been disposed. + + if the property was found; otherwise, . + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, the method assigns its value to the argument. + The name of the property to find. + When this method returns, contains the value of the specified property. + This value's is not . + The parent has been disposed. + + if the property was found; otherwise, . + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, its value is assigned to the argument. + The name of the property to find. + When this method returns, contains the value of the specified property. + This value's is not . + + is . + The parent has been disposed. + + if the property was found; otherwise, . + + + Attempts to represent the current JSON number as an . + When the method returns, contains the signed byte equivalent of the current JSON number if the conversion succeeded. + This value's is not . + The parent has been disposed. + + if the number can be represented as an ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains the single-precision floating point value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as a . + When the method returns, contains the unsigned 16-bit integer equivalent of the current JSON number if the conversion succeeded. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains unsigned 32-bit integer value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to represent the current JSON number as a . + When this method returns, contains unsigned 64-bit integer value equivalent to the current JSON number. + This value's is not . + The parent has been disposed. + + if the number can be represented as a ; otherwise, . + + + Attempts to parse one JSON value (including objects or arrays) from the provided reader. + The reader to read. + Receives the parsed element. + + is using unsupported options. + The current token does not start or represent a value. + A value could not be read from the reader. + + if a value was read and parsed into a JsonElement; if the reader ran out of data while parsing. + All other situations result in an exception being thrown. + + + Compares the text represented by a UTF8-encoded byte span to the string value of this element. + The UTF-8 encoded text to compare against. + This value's is not . + + if the string value of this element has the same UTF-8 encoding as + ; otherwise, . + + + Compares a specified read-only character span to the string value of this element. + The text to compare against. + This value's is not . + + if the string value of this element matches ; otherwise, . + + + Compares a specified string to the string value of this element. + The text to compare against. + This value's is not . + + if the string value of this element matches ; otherwise, . + + + Writes the element to the specified writer as a JSON value. + The writer to which to write the element. + The parameter is . + The of this value is . + The parent has been disposed. + + + Gets the value at the specified index if the current value is an . + The item index. + This value's is not . + + is not in the range [0, ()). + The parent has been disposed. + The value at the specified index. + + + Gets the type of the current JSON value. + The parent has been disposed. + The type of the current JSON value. + + + Represents an enumerator for the contents of a JSON array. + + + Releases the resources used by this instance. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the array. + + + Advances the enumerator to the next element of the collection. + + if the enumerator was successfully advanced to the next element; if the enumerator has passed the end of the collection. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator for an array of that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Represents an enumerator for the properties of a JSON object. + + + Releases the resources used by this instance. + + + Returns an enumerator that iterates the properties of an object. + An enumerator that can be used to iterate through the object. + + + Advances the enumerator to the next element of the collection. + + if the enumerator was successfully advanced to the next element; if the enumerator has passed the end of the collection. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator for objects that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Provides methods to transform UTF-8 or UTF-16 encoded text into a form that is suitable for JSON. + + + Encodes a UTF-8 text value as a JSON string. + The UTF-8 encoded text to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + + is too large. + +-or- + + contains invalid UTF-8 bytes. + The encoded JSON text. + + + Encodes a specified text value as a JSON string. + The value to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + + is too large. + +-or- + + contains invalid UTF-16 characters. + The encoded JSON text. + + + Encodes the string text value as a JSON string. + The value to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + + is . + + is too large. + +-or- + + contains invalid UTF-16 characters. + The encoded JSON text. + + + Determines whether this instance and a specified object, which must also be a instance, have the same value. + The object to compare to this instance. + + if the current instance and are equal; otherwise, . + + + Determines whether this instance and another specified instance have the same value. + The object to compare to this instance. + + if this instance and have the same value; otherwise, . + + + Returns the hash code for this . + The hash code for this instance. + + + Converts the value of this instance to a . + The underlying UTF-16 encoded string. + + + Gets the UTF-8 encoded representation of the pre-encoded JSON text. + The UTF-8 encoded representation of the pre-encoded JSON text. + + + Defines a custom exception object that is thrown when invalid JSON text is encountered, when the defined maximum depth is passed, or the JSON text is not compatible with the type of a property on an object. + + + Initializes a new instance of the class. + + + Creates a new exception object with serialized data. + The serialized object data about the exception being thrown. + An object that contains contextual information about the source or destination. + + is . + + + Initializes a new instance of the class with a specified error message. + The context-specific error message. + + + Initializes a new instance of the class, with a specified error message and a reference to the inner exception that is the cause of this exception. + The context-specific error message. + The exception that caused the current exception. + + + Creates a new exception object to relay error information to the user. + The context-specific error message. + The path where the invalid JSON was encountered. + The line number (starting at 0) at which the invalid JSON was encountered when deserializing. + The byte count within the current line (starting at 0) where the invalid JSON was encountered. + + + Creates a new exception object to relay error information to the user that includes a specified inner exception. + The context-specific error message. + The path where the invalid JSON was encountered. + The line number (starting at 0) at which the invalid JSON was encountered when deserializing. + The byte count (starting at 0) within the current line where the invalid JSON was encountered. + The exception that caused the current exception. + + + Sets the with information about the exception. + The serialized object data about the exception being thrown. + An object that contains contextual information about the source or destination. + + + Gets the zero-based number of bytes read within the current line before the exception. + The zero-based number of bytes read within the current line before the exception. + + + Gets the zero-based number of lines read before the exception. + The zero-based number of lines read before the exception. + + + Gets a message that describes the current exception. + The error message that describes the current exception. + + + Gets The path within the JSON where the exception was encountered. + The path within the JSON where the exception was encountered. + + + Determines the naming policy used to convert a string-based name to another format, such as a camel-casing format. + + + Initializes a new instance of . + + + When overridden in a derived class, converts the specified name according to the policy. + The name to convert. + The converted name. + + + Gets the naming policy for camel-casing. + The naming policy for camel-casing. + + + Represents a single property for a JSON object. + + + Compares the specified UTF-8 encoded text to the name of this property. + The UTF-8 encoded text to compare against. + This value's is not . + + if the name of this property has the same UTF-8 encoding as ; otherwise, . + + + Compares the specified text as a character span to the name of this property. + The text to compare against. + This value's is not . + + if the name of this property matches ; otherwise, . + + + Compares the specified string to the name of this property. + The text to compare against. + This value's is not . + + if the name of this property matches ; otherwise . + + + Provides a string representation of the property for debugging purposes. + A string containing the uninterpreted value of the property, beginning at the declaring open-quote and ending at the last character that is part of the value. + + + Writes the property to the provided writer as a named JSON object property. + The writer to which to write the property. + + is . + + is too large to be a JSON object property. + The of this JSON property's would result in invalid JSON. + The parent has been disposed. + + + Gets the name of this property. + The name of this property. + + + Gets the value of this property. + The value of this property. + + + Provides the ability for the user to define custom behavior when reading JSON. + + + Gets or sets a value that defines whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being read. + + if an extra comma is allowed; otherwise, . + + + Gets or sets a value that determines how the handles comments when reading through the JSON data. + The property is being set to a value that is not a member of the enumeration. + One of the enumeration values that indicates how comments are handled. + + + Gets or sets the maximum depth allowed when reading JSON, with the default (that is, 0) indicating a maximum depth of 64. + The maximum depth is being set to a negative value. + The maximum depth allowed when reading JSON. + + + Defines an opaque type that holds and saves all the relevant state information, which must be provided to the to continue reading after processing incomplete data. + + + Constructs a new instance. + Defines the customized behavior of the that is different from the JSON RFC (for example how to handle comments, or the maximum depth allowed when reading). By default, the follows the JSON RFC strictly (comments within the JSON are invalid) and reads up to a maximum depth of 64. + The maximum depth is set to a non-positive value (< 0). + + + Gets the custom behavior to use when reading JSON data using the struct that may deviate from strict adherence to the JSON specification, which is the default behavior. + The custom behavior to use when reading JSON data. + + + Provides functionality to serialize objects or value types to JSON and to deserialize JSON into objects or value types. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + The type of the object to convert to and return. + Options to control the behavior during reading. + + or is . + The JSON is invalid, the is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + The type of the object to convert to and return. + A metadata provider for serializable types. + + , , or is . + The JSON is invalid, the is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + The method on the provided did not return a compatible for . + A representation of the JSON value. + + + Parses the UTF-8 encoded text representing a single JSON value into an instance of a specified type. + The JSON text to parse. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the span beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the UTF-8 encoded text representing a single JSON value into a . + JSON text to parse. + The type of the object to convert to and return. + A metadata provider for serializable types. + + is . + The JSON is invalid, is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + The method on the provided did not return a compatible for . + A representation of the JSON value. + + + Parses the text representing a single JSON value into an instance of a specified type. + The JSON text to parse. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the span beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into a . + JSON text to parse. + The type of the object to convert to and return. + A metadata provider for serializable types. + + or is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A representation of the JSON value. + + + Parses the text representing a single JSON value into an instance of a specified type. + The JSON text to parse. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + or is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into a . + JSON text to parse. + The type of the object to convert to and return. + A metadata provider for serializable types. + + or is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + or is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + A metadata provider for serializable types. + + is . + +-or- + + is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + A metadata provider for serializable types. + + is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + Options to control the behavior during parsing. + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + The type of the object to convert to and return. + A metadata provider for serializable types. + + is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A representation of the JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader and converts it into an instance of a specified type. + The reader to read the JSON from. + The type of the object to convert to and return. + Options to control the serializer behavior during reading. + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +A value could not be read from the reader. + + is using unsupported options. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader into a . + The reader to read. + The type of the object to convert to and return. + A metadata provider for serializable types. + + or is . + The JSON is invalid, is not compatible with the JSON, or a value could not be read from the reader. + + is using unsupported options. + There is no compatible for or its serializable members. + The method on the provided did not return a compatible for . + A representation of the JSON value. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + Options to control the behavior during reading. + The type to deserialize the JSON value into. + + is . + The JSON is invalid, is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + or is . + The JSON is invalid, is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the UTF-8 encoded text representing a single JSON value into an instance of the type specified by a generic type parameter. + The JSON text to parse. + Options to control the behavior during parsing. + The target type of the UTF-8 encoded text. + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the span beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the UTF-8 encoded text representing a single JSON value into a . + JSON text to parse. + Metadata about the type to convert. + The type to deserialize the JSON value into. + The JSON is invalid, is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into an instance of the type specified by a generic type parameter. + The JSON text to parse. + Options to control the behavior during parsing. + The type to deserialize the JSON value into. + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the span beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into a . + JSON text to parse. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into an instance of the type specified by a generic type parameter. + The JSON text to parse. + Options to control the behavior during parsing. + The target type of the JSON value. + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Parses the text representing a single JSON value into a . + JSON text to parse. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + is . + +-or- + + is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the string beyond a single JSON value. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Options to control the behavior during parsing. + The type to deserialize the JSON value into. + + is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + is . + +-or- + + is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Options to control the behavior during parsing. + The type to deserialize the JSON value into. + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Options to control the behavior during parsing. + The type to deserialize the JSON value into. + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the representing a single JSON value into a . + The to convert. + Metadata about the type to convert. + The type to deserialize the JSON value into. + + is . + + is not compatible with the JSON. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader into an instance of the type specified by a generic type parameter. + The reader to read the JSON from. + Options to control serializer behavior during reading. + The target type of the JSON value. + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +A value could not be read from the reader. + + uses unsupported options. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader into a . + The reader to read. + Metadata about the type to convert. + The type to deserialize the JSON value into. + The JSON is invalid, is not compatible with the JSON, or a value could not be read from the reader. + + is using unsupported options. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Asynchronously reads the UTF-8 encoded text representing a single JSON value into an instance of a specified type. The stream will be read to completion. + The JSON data to parse. + The type of the object to convert to and return. + Options to control the behavior during reading. + A cancellation token that may be used to cancel the read operation. + + or is . + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + The type of the object to convert to and return. + A metadata provider for serializable types. + The that can be used to cancel the read operation. + + , , or is . + The JSON is invalid, the is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + The method on the provided did not return a compatible for . + A representation of the JSON value. + + + Asynchronously reads the UTF-8 encoded text representing a single JSON value into an instance of a type specified by a generic type parameter. The stream will be read to completion. + The JSON data to parse. + Options to control the behavior during reading. + A token that may be used to cancel the read operation. + The target type of the JSON value. + The JSON is invalid. + +-or- + + is not compatible with the JSON. + +-or- + +There is remaining data in the stream. + There is no compatible for or its serializable members. + + is . + A representation of the JSON value. + + + Reads the UTF-8 encoded text representing a single JSON value into a . + The Stream will be read to completion. + JSON data to parse. + Metadata about the type to convert. + The which may be used to cancel the read operation. + The type to deserialize the JSON value into. + + or is . + The JSON is invalid, is not compatible with the JSON, or there is remaining data in the Stream. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Wraps the UTF-8 encoded text into an that can be used to deserialize root-level JSON arrays in a streaming manner. + JSON data to parse. + Options to control the behavior during reading. + The which may be used to cancel the read operation. + The element type to deserialize asynchronously. + + is . + An representation of the provided JSON array. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + or is . + There is no compatible for or its serializable members. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + + is not compatible with . + + , , or is . + There is no compatible for or its serializable members. + + + Converts the value of a specified type into a JSON string. + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + The JSON string representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + + or is . + A representation of the value. + + + Writes the JSON representation of the specified type to the provided writer. + The JSON writer to write to. + The value to convert and write. + The type of the to convert. + Options to control serialization behavior. + + is not compatible with + + or is . + There is no compatible for or its serializable members. + + + Writes one JSON value (including objects or arrays) to the provided writer. + A JSON writer to write to. + The value to convert and write. + The type of the to convert. + A metadata provider for serializable types. + + is not compatible with . + + or is . + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + + + Converts the value of a type specified by a generic type parameter into a JSON string. + The value to convert. + Options to control serialization behavior. + The type of the value to serialize. + There is no compatible for or its serializable members. + A JSON string representation of the value. + + + Converts the provided value into a . + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + There is no compatible for or its serializable members. + + is . + A representation of the value. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + Options to control the conversion behavior. + The type of the value to serialize. + + is . + There is no compatible for or its serializable members. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + + is . + There is no compatible for or its serializable members. + + + Writes the JSON representation of a type specified by a generic type parameter to the provided writer. + A JSON writer to write to. + The value to convert and write. + Options to control serialization behavior. + The type of the value to serialize. + + is . + There is no compatible for or its serializable members. + + + Writes one JSON value (including objects or arrays) to the provided writer. + The writer to write. + The value to convert and write. + Metadata about the type to convert. + The type of the value to serialize. + + or is . + There is no compatible for or its serializable members. + + + Asynchronously converts the value of a specified type to UTF-8 encoded JSON text and writes it to the specified stream. + The UTF-8 stream to write to. + The value to convert. + The type of the to convert. + Options to control serialization behavior. + A token that may be used to cancel the write operation. + + is not compatible with . + + or is . + There is no compatible for or its serializable members. + A task that represents the asynchronous write operation. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + The that can be used to cancel the write operation. + + is not compatible with . + + , , or is . + There is no compatible for or its serializable members. + A task that represents the asynchronous write operation. + + + Asynchronously converts a value of a type specified by a generic type parameter to UTF-8 encoded JSON text and writes it to a stream. + The UTF-8 stream to write to. + The value to convert. + Options to control serialization behavior. + A token that may be used to cancel the write operation. + The type of the value to serialize. + + is . + There is no compatible for or its serializable members. + A task that represents the asynchronous write operation. + + + Converts the provided value to UTF-8 encoded JSON text and write it to the . + The UTF-8 to write to. + The value to convert. + Metadata about the type to convert. + The that can be used to cancel the write operation. + The type of the value to serialize. + + is . + There is no compatible for or its serializable members. + A task that represents the asynchronous write operation. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + A representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + + or is . + A representation of the value. + + + Converts the provided value into a . + The value to convert. + Options to control the conversion behavior. + The type of the value to serialize. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the provided value into a . + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + There is no compatible for or its serializable members. + + is . + A representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + A representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + + or is . + A representation of the value. + + + Converts the provided value into a . + The value to convert. + Options to control the conversion behavior. + The type of the value to serialize. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the provided value into a . + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + There is no compatible for or its serializable members. + + is . + A representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + A representation of the value. + + + Converts the provided value into a . + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + + or is . + A representation of the value. + + + Converts the provided value into a . + The value to convert. + Options to control the conversion behavior. + The type of the value to serialize. + There is no compatible for or its serializable members. + A representation of the JSON value. + + + Converts the provided value into a . + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + There is no compatible for or its serializable members. + + is . + A representation of the value. + + + Converts a value of the specified type into a JSON string, encoded as UTF-8 bytes. + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + A JSON string representation of the value, encoded as UTF-8 bytes. + + + Converts the provided value into a array. + The value to convert. + The type of the to convert. + A metadata provider for serializable types. + + is not compatible with . + + is . + There is no compatible for or its serializable members. + The method of the provided returns for the type to convert. + A UTF-8 representation of the value. + + + Converts the value of a type specified by a generic type parameter into a JSON string, encoded as UTF-8 bytes. + The value to convert. + Options to control the conversion behavior. + The type of the value. + There is no compatible for or its serializable members. + A JSON string representation of the value, encoded as UTF-8 bytes. + + + Converts the provided value into a array. + The value to convert. + Metadata about the type to convert. + The type of the value to serialize. + There is no compatible for or its serializable members. + + is . + A UTF-8 representation of the value. + + + Specifies scenario-based default serialization options that can be used to construct a instance. + + + + General-purpose option values. These are the same settings that are applied if a member isn't specified. + For information about the default property values that are applied, see JsonSerializerOptions properties. + + + + + Option values appropriate to Web-based scenarios. + This member implies that: + - Property names are treated as case-insensitive. + - "camelCase" name formatting should be employed. + - Quoted numbers (JSON strings for number properties) are allowed. + + + + Provides options to be used with . + + + Initializes a new instance of the class. + + + Constructs a new instance with a predefined set of options determined by the specified . + The to reason about. + + + Copies the options from a instance to a new instance. + The options instance to copy options from. + + is . + + + Binds current instance with a new instance of the specified type. + The generic definition of the specified context type. + + + Returns the converter for the specified type. + The type to return a converter for. + The configured for returned an invalid converter. + There is no compatible for or its serializable members. + The first converter that supports the given type, or if there is no converter. + + + Get or sets a value that indicates whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being deserialized. + This property was set after serialization or deserialization has occurred. + + if an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored); otherwise. + + + Gets the list of user-defined converters that were registered. + The list of custom converters. + + + Gets or sets the default buffer size, in bytes, to use when creating temporary buffers. + The buffer size is less than 1. + This property was set after serialization or deserialization has occurred. + The default buffer size in bytes. + + + Specifies a condition to determine when properties with default values are ignored during serialization or deserialization. + The default value is . + This property is set to . + This property is set after serialization or deserialization has occurred. + +-or- + + has been set to . These properties cannot be used together. + + + Gets or sets the policy used to convert a key's name to another format, such as camel-casing. + The policy used to convert a key's name to another format. + + + Gets or sets the encoder to use when escaping strings, or to use the default encoder. + The JavaScript character encoding. + + + Gets or sets a value that determines whether values are ignored during serialization and deserialization. The default value is . + This property was set after serialization or deserialization has occurred. + +-or- + + has been set to a non-default value. These properties cannot be used together. + + to ignore null values during serialization and deserialization; otherwise, . + + + Determines whether read-only fields are ignored during serialization. A field is read-only if it is marked with the keyword. The default value is . + This property is set after serialization or deserialization has occurred. + + if read-only fields should be ignored during serialization; otherwise. + + + Gets a value that determines whether read-only properties are ignored during serialization. The default value is . + This property was set after serialization or deserialization has occurred. + + to ignore read-only properties during serialization; otherwise, . + + + Determines whether fields are handled during serialization and deserialization. + The default value is . + This property is set after serialization or deserialization has occurred. + + + Gets or sets the maximum depth allowed when serializing or deserializing JSON, with the default value of 0 indicating a maximum depth of 64. + This property was set after serialization or deserialization has occurred. + The max depth is set to a negative value. + The maximum depth allowed when serializing or deserializing JSON. + + + Specifies how number types should be handled when serializing or deserializing. + This property is set after serialization or deserialization has occurred. + + + Gets or sets a value that determines whether a property's name uses a case-insensitive comparison during deserialization. The default value is . + + to compare property names using case-insensitive comparison; otherwise, . + + + Gets or sets a value that specifies the policy used to convert a property's name on an object to another format, such as camel-casing, or to leave property names unchanged. + A property naming policy, or to leave property names unchanged. + + + Gets or sets a value that defines how comments are handled during deserialization. + This property was set after serialization or deserialization has occurred. + The comment handling enum is set to a value that is not supported (or not within the enum range). + A value that indicates whether comments are allowed, disallowed, or skipped. + + + Configures how object references are handled when reading and writing JSON. + + + Defines how deserializing a type declared as an is handled during deserialization. + + + Gets or sets a value that defines whether JSON should use pretty printing. By default, JSON is serialized without any extra white space. + This property was set after serialization or deserialization has occurred. + + if JSON should pretty print on serialization; otherwise, . The default is . + + + Defines the various JSON tokens that make up a JSON text. + + + The token type is a comment string. + + + The token type is the end of a JSON array. + + + The token type is the end of a JSON object. + + + The token type is the JSON literal false. + + + There is no value (as distinct from ). This is the default token type if no data has been read by the . + + + The token type is the JSON literal null. + + + The token type is a JSON number. + + + The token type is a JSON property name. + + + The token type is the start of a JSON array. + + + The token type is the start of a JSON object. + + + The token type is a JSON string. + + + The token type is the JSON literal true. + + + Specifies the data type of a JSON value. + + + A JSON array. + + + The JSON value false. + + + The JSON value null. + + + A JSON number. + + + A JSON object. + + + A JSON string. + + + The JSON value true. + + + There is no value (as distinct from ). + + + Allows the user to define custom behavior when writing JSON using the . + + + Gets or sets the encoder to use when escaping strings, or to use the default encoder. + The JavaScript character encoder used to override the escaping behavior. + + + Gets or sets a value that indicates whether the should format the JSON output, which includes indenting nested JSON tokens, adding new lines, and adding white space between property names and values. + + to format the JSON output; to write without any extra white space. The default is . + + + Gets or sets a value that indicates whether the should skip structural validation and allow the user to write invalid JSON. + + to skip structural validation and allow invalid JSON; to throw an on any attempt to write invalid JSON. + + + Represents a mutable JSON array. + + + Initializes a new instance of the class that is empty. + Options to control the behavior. + + + Initializes a new instance of the class that contains items from the specified array. + The items to add to the new . + + + Initializes a new instance of the class that contains items from the specified params array. + Options to control the behavior. + The items to add to the new . + + + Adds a to the end of the . + The to be added to the end of the . + + + Adds an object to the end of the . + The object to be added to the end of the . + The type of object to be added. + + + Removes all elements from the . + + + Determines whether an element is in the . + The object to locate in the . + + if is found in the ; otherwise, . + + + Initializes a new instance of the class that contains items from the specified . + The . + Options to control the behavior. + The is not a . + The new instance of the class that contains items from the specified . + + + Returns an enumerator that iterates through the . + A for the . + + + The object to locate in the . + The to locate in the . + The index of item if found in the list; otherwise, -1. + + + Inserts an element into the at the specified index. + The zero-based index at which should be inserted. + The to insert. + + is less than 0 or is greater than . + + + Removes the first occurrence of a specific from the . + The to remove from the . + + if is successfully removed; otherwise, . + + + Removes the element at the specified index of the . + The zero-based index of the element to remove. + + is less than 0 or is greater than . + + + Copies the entire to a compatible one-dimensional array, starting at the specified index of the target array. + The one-dimensional that is the destination of the elements copied from . The Array must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than 0. + The number of elements in the source ICollection is greater than the available space from to the end of the destination . + + + Returns an enumerator that iterates through the . + A for the . + + + Writes the into the provided as JSON. + The . + Options to control the serialization behavior. + The parameter is . + + + Gets the number of elements contained in the . + + + Returns . + + + The base class that represents a single node within a mutable JSON document. + + + Casts to the derived type. + The node is not a . + A . + + + Casts to the derived type. + The node is not a . + A . + + + Casts to the derived type. + The node is not a . + A . + + + Gets the JSON path. + The JSON Path value. + + + Gets the value for the current . + The type of the value to obtain from the . + The current cannot be represented as a {TValue}. + The current is not a or is not compatible with {TValue}. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an explicit conversion of a given to a . + A to implicitly convert. + A value converted from the instance. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Defines an implicit conversion of a given to a . + A to implicitly convert. + A instance converted from the parameter. + + + Parse a as UTF-8-encoded data representing a single JSON value into a . The Stream will be read to completion. + JSON text to parse. + Options to control the node behavior after parsing. + Options to control the document behavior during parsing. + + does not represent a valid single JSON value. + A representation of the JSON value. + + + Parses text representing a single JSON value. + JSON text to parse. + Options to control the node behavior after parsing. + Options to control the document behavior during parsing. + + does not represent a valid single JSON value. + A representation of the JSON value. + + + Parses text representing a single JSON value. + JSON text to parse. + Options to control the node behavior after parsing. + Options to control the document behavior during parsing. + + is . + + does not represent a valid single JSON value. + A representation of the JSON value. + + + Parses one JSON value (including objects or arrays) from the provided reader. + The reader to read. + Options to control the behavior. + + is using unsupported options. + The current token does not start or represent a value. + A value could not be read from the reader. + The from the reader. + + + Converts the current instance to string in JSON format. + Options to control the serialization behavior. + JSON representation of current instance. + + + Gets a string representation for the current value appropriate to the node type. + A string representation for the current value appropriate to the node type. + + + Write the into the provided as JSON. + The . + Options to control the serialization behavior. + The parameter is . + + + Gets or sets the element at the specified index. + The zero-based index of the element to get or set. + + is less than 0 or is greater than the number of properties. + The current is not a . + + + Gets or sets the element with the specified property name. + If the property is not found, is returned. + The name of the property to return. + + is . + The current is not a . + + + Options to control the behavior. + + + Gets the parent . + If there is no parent, is returned. + A parent can either be a or a . + + + Gets the root . + If the current is a root, is returned. + + + Options to control behavior. + + + Specifies whether property names on are case insensitive. + + + Represents a mutable JSON object. + + + Initializes a new instance of the class that contains the specified . + The properties to be added. + Options to control the behavior. + + + Initializes a new instance of the class that is empty. + Options to control the behavior. + + + Adds the specified property to the . + The KeyValuePair structure representing the property name and value to add to the . + An element with the same property name already exists in the . + The property name of is . + + + Adds an element with the provided property name and value to the . + The property name of the element to add. + The value of the element to add. + + is . + An element with the same property name already exists in the . + + + Removes all elements from the . + + + Determines whether the contains an element with the specified property name. + The property name to locate in the . + + is . + + if the contains an element with the specified property name; otherwise, . + + + Initializes a new instance of the class that contains properties from the specified . + The . + Options to control the behavior. + The new instance of the class that contains properties from the specified . + + + Returns an enumerator that iterates through the . + An enumerator that iterates through the . + + + Removes the element with the specified property name from the . + The property name of the element to remove. + + is . + + if the element is successfully removed; otherwise, . + + + Determines whether the contains a specific property name and reference. + The element to locate in the . + + if the contains an element with the property name; otherwise, . + + + Copies the elements of the to an array of type KeyValuePair starting at the specified array index. + The one-dimensional Array that is the destination of the elements copied from . + The zero-based index in at which copying begins. + + is . + + is less than 0. + The number of elements in the source ICollection is greater than the available space from to the end of the destination . + + + Removes a key and value from the . + The KeyValuePair structure representing the property name and value to remove from the . + + if the element is successfully removed; otherwise, . + + + Gets the value associated with the specified property name. + The property name of the value to get. + When this method returns, contains the value associated with the specified property name, if the property name is found; otherwise, . + + is . + + if the contains an element with the specified property name; otherwise, . + + + Returns an enumerator that iterates through the . + An enumerator that iterates through the . + + + Returns the value of a property with the specified name. + The name of the property to return. + The JSON value of the property with the specified name. + + if a property with the specified name was found; otherwise, . + + + Write the into the provided as JSON. + The . + Options to control the serialization behavior. + The parameter is . + + + Gets the number of elements contained in . + + + Returns . + + + Gets a collection containing the property names in the . + + + Gets a collection containing the property values in the . + + + Represents a mutable JSON value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The underlying value of the new instance. + Options to control the behavior. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The value to create. + Options to control the behavior. + The type of value to create. + The new instance of the class that contains the specified value. + + + Initializes a new instance of the class that contains the specified value. + The value to create. + The that will be used to serialize the value. + Options to control the behavior. + The type of value to create. + The new instance of the class that contains the specified value. + + + Tries to obtain the current JSON value and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The type of value to obtain. + + if the value can be successfully obtained; otherwise, . + + + Specifies that the JSON type should have its method called after deserialization occurs. + + + The method that is called after deserialization. + + + Specifies that the type should have its method called before deserialization occurs. + + + The method that is called before deserialization. + + + Specifies that the type should have its method called after serialization occurs. + + + The method that is called after serialization. + + + Specifies that the type should have its method called before serialization occurs. + + + The method that is called before serialization. + + + Provides the base class for serialization attributes. + + + Creates a new instance of the . + + + When placed on a constructor, indicates that the constructor should be used to create instances of the type on deserialization. + + + Initializes a new instance of . + + + Converts an object or value to or from JSON. + + + When overridden in a derived class, determines whether the converter instance can convert the specified object type. + The type of the object to check whether it can be converted by this converter instance. + + if the instance can convert the specified object type; otherwise, . + + + Converts an object or value to or from JSON. + The type of object or value handled by the converter. + + + Initializes a new instance. + + + Determines whether the specified type can be converted. + The type to compare against. + + if the type can be converted; otherwise, . + + + Reads and converts the JSON to type . + The reader. + The type to convert. + An object that specifies serialization options to use. + The converted value. + + + Reads a dictionary key from a JSON property name. + The to read from. + The type to convert. + The options to use when reading the value. + The value that was converted. + + + Writes a specified value as JSON. + The writer to write to. + The value to convert to JSON. + An object that specifies serialization options to use. + + + Writes a dictionary key as a JSON property name. + The to write to. + The value to convert. The value of determines if the converter handles values. + The options to use when writing the value. + + + Indicates whether should be passed to the converter on serialization, and whether should be passed on deserialization. + + + When placed on a property or type, specifies the converter type to use. + + + Initializes a new instance of . + + + Initializes a new instance of with the specified converter type. + The type of the converter. + + + When overridden in a derived class and is , allows the derived class to create a in order to pass additional state. + The type of the converter. + The custom converter. + + + Gets the type of the , or if it was created without a type. + The type of the , or if it was created without a type. + + + Supports converting several types by using a factory pattern. + + + When overidden in a derived class, initializes a new instance of the class. + + + Creates a converter for a specified type. + The type handled by the converter. + The serialization options to use. + A converter for which is compatible with . + + + When placed on a property of type , any properties that do not have a matching member are added to that dictionary during deserialization and written during serialization. + + + Instantiates a new instance of the class. + + + Prevents a property from being serialized or deserialized. + + + Initializes a new instance of . + + + Specifies the condition that must be met before a property will be ignored. + + + Controls how the ignores properties on serialization and deserialization. + + + Property will always be ignored. + + + Property will always be serialized and deserialized, regardless of configuration. + + + Property will only be ignored if it is . + + + If the value is , the property is ignored during serialization. This is applied only to reference-type properties and fields. + + + Indicates that the member should be included for serialization and deserialization. + The attribute is applied to a non-public property. + + + Initializes a new instance of . + + + The to be used at run time. + + + Specifies that the built-in be used to convert JSON property names. + + + Specifies that JSON property names should not be converted. + + + Determines how handles numbers when serializing and deserializing. + + + The "NaN", "Infinity", and "-Infinity" tokens can be read as floating-point constants, and the and values for these constants will be written as their corresponding JSON string representations. + + + Numbers can be read from tokens. Does not prevent numbers from being read from token. + + + Numbers will only be read from tokens and will only be written as JSON numbers (without quotes). + + + Numbers will be written as JSON strings (with quotes), not as JSON numbers. + + + When placed on a type, property, or field, indicates what settings should be used when serializing or deserializing numbers. + + + Initializes a new instance of . + A bitwise combination of the enumeration values that specify how number types should be handled when serializing or deserializing. + + + Indicates what settings should be used when serializing or deserializing numbers. + An object that determines the number serialization and deserialization settings. + + + Specifies the property name that is present in the JSON when serializing and deserializing. This overrides any naming policy specified by . + + + Initializes a new instance of with the specified property name. + The name of the property. + + + Gets the name of the property. + The name of the property. + + + Specifies the property order that is present in the JSON when serializing. Lower values are serialized first. + If the attribute is not specified, the default value is 0. + + + Initializes a new instance of with the specified order. + The order of the property. + + + Gets the serialization order of the property. + + + Instructs the System.Text.Json source generator to generate source code to help optimize performance when serializing and deserializing instances of the specified type and types in its object graph. + + + Initializes a new instance of with the specified type. + The type to generate source code for. + + + Determines what the source generator should generate for the type. If the value is , then the setting specified on will be used. + + + The name of the property for the generated for the type on the generated, derived type. + + + Provides metadata about a set of types that is relevant to JSON serialization. + + + Creates an instance of and binds it with the indicated . + The run-time provided options for the context instance. + The default run-time options for the context. Its values are defined at design time via . + + + Returns a instance representing the given type. + The type to fetch metadata about. + The metadata for the specified type, or if the context has no metadata for the type. + + + Gets the run-time specified options of the context. If no options were passed when instanciating the context, then a new instance is bound and returned. + + + The generation mode for the System.Text.Json source generator. + + + When specified on , indicates that both type-metadata initialization logic and optimized serialization logic should be generated for all types. When specified on , indicates that the setting on should be used. + + + Instructs the JSON source generator to generate type-metadata initialization logic. + + + Instructs the JSON source generator to generate optimized serialization logic. + + + Instructs the System.Text.Json source generator to assume the specified options will be used at run time via . + + + Instructs the System.Text.Json source generator to assume the specified options will be used at run time via . + + + Gets or sets the default ignore condition. + + + Gets or sets the source generation mode for types that don't explicitly set the mode with . + + + Gets or sets a value that indicates whether to ignore read-only fields. + + + Gets or sets a value that indicates whether to ignore read-only properties. + + + Gets or sets a value that indicates whether to ignore custom converters provided at run time. + + + Gets or sets a value that indicates whether to include fields for serialization and deserialization. + + + Gets or sets a built-in naming policy to convert JSON property names with. + + + Gets or sets a value that indicates whether JSON output should be pretty-printed. + + + Converts enumeration values to and from strings. + + + Initializes an instance of the class with the default naming policy that allows integer values. + + + Initializes an instance of the class with a specified naming policy and a value that indicates whether undefined enumeration values are allowed. + The optional naming policy for writing enum values. + + to allow undefined enum values; otherwise, . When , if an enum value isn't defined, it will output as a number rather than a string. + + + Determines whether the specified type can be converted to an enum. + The type to be checked. + + if the type can be converted; otherwise, . + + + Creates a converter for the specified type. + The type handled by the converter. + The serialization options to use. + A converter for which is compatible with . + + + Defines how deserializing a type declared as an is handled during deserialization. + + + A type declared as is deserialized as a . + + + A type declared as is deserialized as a . + + + Provides helpers to create and initialize metadata for JSON-serializable types. + + + Creates metadata for an array. + The to use. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The type of the collection. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the key type. + A instance representing the value type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the key type. + The generic definition of the value type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing instances. + A instance representing instances. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the key type. + A instance representing the value type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the key type. + The generic definition of the value type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for and types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the key type. + A instance representing the value type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + A method to create an immutable dictionary instance. + The generic definition of the type. + The generic definition of the key type. + The generic definition of the value type. + + + Creates metadata for non-dictionary immutable collection types. + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + A method to create an immutable dictionary instance. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the key type. + A instance representing the value type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the key type. + The generic definition of the value type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for a complex class or struct. + The to initialize the metadata with. + Provides serialization metadata about an object type with constructors, properties, and fields. + The type of the class or struct. + + or is . + A instance representing the class or struct. + + + Creates metadata for a property or field. + The to initialize the metadata with. + Whether the CLR member is a property or field. + Whether the CLR member is public. + Whether the CLR member is a virtual property. + The declaring type of the property or field. + The info for the property or field's type. + A for the property or field, specified by . + Provides a mechanism to get the property or field's value. + Provides a mechanism to set the property or field's value. + Specifies a condition for the property to be ignored. + Whether the property was annotated with . + If the property or field is a number, specifies how it should processed when serializing and deserializing. + The CLR name of the property or field. + The name to be used when processing the property or field, specified by . + The type that the converter for the property returns or accepts when converting JSON data. + A instance intialized with the provided metadata. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + The generic definition of the type. + The generic definition of the element type. + + + Creates metadata for types assignable to . + + A to create an instance of the list when deserializing. + A instance representing the element type. + The option to apply to number collection elements. + An optimized serialization implementation assuming pre-determined defaults. + A method for adding elements to the collection when using the serializer's code-paths. + The generic definition of the type. + + + Creates metadata for a primitive or a type with a custom converter. + + + The generic type definition. + A instance representing the type. + + + Creates a instance that converts values. + The to use for serialization and deserialization. + The generic definition for the enum type. + + + Creates a instance that converts values. + Serialization metadata for the underlying nullable type. + The generic definition for the underlying nullable type. + + + Returns a instance that converts values. + + + Returns a instance that converts byte array values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Gets a JSON converter that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Gets a JSON converter that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Returns a instance that converts values. + + + Provides serialization metadata about an object type with constructors, properties, and fields. + The object type to serialize or deserialize. + + + + Provides a mechanism to initialize metadata for a parameterized constructor of the class or struct to be used when deserializing. + + + Gets or sets an object that specifies how number properties and fields should be processed when serializing and deserializing. + + + Gets or sets a mechanism to create an instance of the class or struct using a parameterless constructor during deserialization. + + + Gets or sets a mechanism to create an instance of the class or struct using a parameterized constructor during deserialization. + + + Gets or sets a mechanism to initialize metadata for properties and fields of the class or struct. + + + Gets or sets a serialization implementation for instances of the class or struct that assumes options specified by . + + + Provides information about a constructor parameter required for JSON deserialization. + + + + Gets or sets the default value of the parameter. + + + Gets or sets a value that specifies whether a default value was specified for the parameter. + + + Gets or sets the name of the parameter. + + + Gets or sets the type of the parameter. + + + Gets or sets the zero-based position of the parameter in the formal parameter list. + + + Provides JSON serialization-related metadata about a property or field. + + + Provides JSON serialization-related metadata about a type. + + + Provides JSON serialization-related metadata about a type. + The generic definition of the type. + + + A method that serializes an instance of using values specified at design time. + + + This class defines how the deals with references on serialization and deserialization. + + + Initializes a new instance of the class. + + + Returns the used for each serialization call. + The resolver to use for serialization and deserialization. + + + Ignores an object when a reference cycle is detected during serialization. + + + Metadata properties will be honored when deserializing JSON objects and arrays into reference types and written when serializing reference types. This is necessary to create round-trippable JSON from objects that contain cycles or duplicate references. + + + This class defines how the deals with references on serialization and deserialization. + The type of the to create on each serialization or deserialization call. + + + Initializes a new instance of the generic class that can create a instance of the specified type. + + + Creates a new of type used for each serialization call. + The new resolver to use for serialization and deserialization. + + + This class defines how the deals with references on serialization and deserialization. + Defines the core behavior of preserving references on serialization and deserialization. + + + Initializes a new instance of the class. + + + Adds an entry to the bag of references using the specified id and value. + This method gets called when an $id metadata property from a JSON object is read. + The identifier of the JSON object or array. + The value of the CLR reference type object that results from parsing the JSON object. + + + Gets the reference identifier of the specified value if exists; otherwise a new id is assigned. + This method gets called before a CLR object is written so we can decide whether to write $id and enumerate the rest of its properties or $ref and step into the next object. + The value of the CLR reference type object to get an id for. + When this method returns, if a reference to value already exists; otherwise, . + The reference id for the specified object. + + + Returns the CLR reference type object related to the specified reference id. + This method gets called when $ref metadata property is read. + The reference id related to the returned object. + The reference type object related to the specified reference id. + + + Provides a high-performance API for forward-only, read-only access to UTF-8 encoded JSON text. + + + Initializes a new instance of the structure that processes a read-only sequence of UTF-8 encoded text and indicates whether the input contains all the text to process. + The UTF-8 encoded JSON text to process. + + to indicate that the input sequence contains the entire data to process; to indicate that the input span contains partial data with more data to follow. + An object that contains the reader state. If this is the first call to the constructor, pass the default state; otherwise, pass the value of the property from the previous instance of the . + + + Initializes a new instance of the structure that processes a read-only sequence of UTF-8 encoded text using the specified options. + The UTF-8 encoded JSON text to process. + Defines customized behavior of the that differs from the JSON RFC (for example how to handle comments or maximum depth allowed when reading). By default, the follows the JSON RFC strictly; comments within the JSON are invalid, and the maximum depth is 64. + + + Initializes a new instance of the structure that processes a read-only span of UTF-8 encoded text and indicates whether the input contains all the text to process. + The UTF-8 encoded JSON text to process. + + to indicate that the input sequence contains the entire data to process; to indicate that the input span contains partial data with more data to follow. + An object that contains the reader state. If this is the first call to the constructor, pass the default state; otherwise, pass the value of the property from the previous instance of the . + + + Initializes a new instance of the structure that processes a read-only span of UTF-8 encoded text using the specified options. + The UTF-8 encoded JSON text to process. + Defines customized behavior of the that differs from the JSON RFC (for example how to handle comments or maximum depth allowed when reading). By default, the follows the JSON RFC strictly; comments within the JSON are invalid, and the maximum depth is 64. + + + Reads the next JSON token value from the source as a . + The value of the JSON token isn't a boolean value (that is, or ). + + if the is ; if the is . + + + Parses the current JSON token value from the source as a . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). + +-or- + +The JSON token value represents a number less than or greater than . + The value of the UTF-8 encoded token. + + + Parses the current JSON token value from the source and decodes the Base64 encoded JSON string as a byte array. + The type of the JSON token is not a . + The value is not encoded as Base64 text, so it can't be decoded to bytes. + +-or- + +The value contains invalid or more than two padding characters. + +-or- + +The value is incomplete. That is, the JSON string length is not a multiple of 4. + The byte array that represents the current JSON token value. + + + Parses the current JSON token value from the source as a comment, transcoded it as a . + The JSON token is not a comment. + The comment that represents the current JSON token value. + + + Reads the next JSON token value from the source and parses it to a . + The value of the JSON token isn't a . + The JSON token value cannot be read as a . + +-or- + +The entire UTF-8 encoded token value cannot be parsed to a value. + +-or- + +The JSON token value is of an unsupported format. + The date and time value, if the entire UTF-8 encoded token value can be successfully parsed. + + + Reads the next JSON token value from the source and parses it to a . + The value of the JSON token isn't a . + The JSON token value cannot be read as a . + +-or- + +The entire UTF-8 encoded token value cannot be parsed to a value. + +-or- + +The JSON token value is of an unsupported format. + The date and time offset, if the entire UTF-8 encoded token value can be successfully parsed. + + + Reads the next JSON token value from the source and parses it to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token value from the source and parses it to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token value from the source and parses it to a . + The value of the JSON token isn't a . + The JSON token value is in an unsupported format for a Guid. + +-or- + +The entire UTF-8 encoded token value cannot be parsed to a value. + The GUID value, if the entire UTF-8 encoded token value can be successfully parsed. + + + Parses the current JSON token value from the source as a . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to an . + + + Reads the next JSON token value from the source and parses it to an . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to an . + + + Reads the next JSON token value from the source and parses it to an . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to an . + + + Parses the current JSON token value from the source as an . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to an . + + + Reads the next JSON token value from the source and parses it to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token value from the source, unescaped, and transcoded as a string. + The JSON token value isn't a string (that is, not a , , or ). + +-or- + +The JSON string contains invalid UTF-8 bytes or invalid UTF-16 surrogates. + The token value parsed to a string, or if is . + + + Parses the current JSON token value from the source as a . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token value from the source and parses it to a . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token value from the source and parses it to a . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. + +-or- + +The JSON token value represents a number less than or greater than . + The UTF-8 encoded token value parsed to a . + + + Reads the next JSON token from the input source. + An invalid JSON token according to the JSON RFC is encountered. + +-or- + +The current depth exceeds the recursive limit set by the maximum depth. + + if the token was read successfully; otherwise, . + + + Skips the children of the current JSON token. + The reader was given partial data with more data to follow (that is, is ). + An invalid JSON token was encountered while skipping, according to the JSON RFC. + +-or- + +The current depth exceeds the recursive limit set by the maximum depth. + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source and decodes the Base64 encoded JSON string as a byte array and returns a value that indicates whether the operation succeeded. + When this method returns, contains the decoded binary representation of the Base64 text. + The JSON token is not a . + + if the entire token value is encoded as valid Base64 text and can be successfully decoded to bytes; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The value of the JSON token isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The value of the JSON token isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The value of the JSON token isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + The JSON token value isn't a . + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + + + Tries to skip the children of the current JSON token. + An invalid JSON token was encountered while skipping, according to the JSON RFC. + +-or - + +The current depth exceeds the recursive limit set by the maximum depth. + + if there was enough data for the children to be skipped successfully; otherwise, . + + + Compares the UTF-8 encoded text in a read-only byte span to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The UTF-8 encoded text to compare against. + The JSON token is not a JSON string (that is, it is not or ). + + if the JSON token value in the source matches the UTF-8 encoded lookup text; otherwise, . + + + Compares the text in a read-only character span to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The text to compare against. + The JSON token is not a JSON string (that is, it is not or ). + + if the JSON token value in the source matches the lookup text; otherwise, . + + + Compares the string text to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The text to compare against. + The JSON token is not a JSON string (that is, it is not or ). + + if the JSON token value in the source matches the lookup text; otherwise, . + + + Gets the total number of bytes consumed so far by this instance of the . + The total number of bytes consumed so far. + + + Gets the depth of the current token. + The depth of the current token. + + + Gets the current state to pass to a constructor with more data. + The current reader state. + + + Gets a value that indicates which Value property to use to get the token value. + + if should be used to get the token value; if should be used instead. + + + Gets the mode of this instance of the which indicates whether all the JSON data was provided or there is more data to come. + + if the reader was constructed with the input span or sequence containing the entire JSON data to process; if the reader was constructed with an input span or sequence that may contain partial JSON data with more data to follow. + + + Gets the current within the provided UTF-8 encoded input ReadOnlySequence<byte> or a default if the struct was constructed with a ReadOnlySpan<byte>. + The current within the provided UTF-8 encoded input ReadOnlySequence<byte> or a default if the struct was constructed with a ReadOnlySpan<byte>. + + + Gets the index that the last processed JSON token starts at (within the given UTF-8 encoded input text), skipping any white space. + The starting index of the last processed JSON token within the given UTF-8 encoded input text. + + + Gets the type of the last processed JSON token in the UTF-8 encoded JSON text. + The type of the last processed JSON token. + + + Gets the raw value of the last processed token as a ReadOnlySequence<byte> slice of the input payload, only if the token is contained within multiple segments. + A byte read-only sequence. + + + Gets the raw value of the last processed token as a ReadOnlySpan<byte> slice of the input payload, if the token fits in a single segment or if the reader was constructed with a JSON payload contained in a ReadOnlySpan<byte>. + A read-only span of bytes. + + + Provides a high-performance API for forward-only, non-cached writing of UTF-8 encoded JSON text. + + + Initializes a new instance of the class using the specified to write the output to and customization options. + The destination for writing JSON text. + Defines the customized behavior of the . By default, it writes minimized JSON (with no extra white space) and validates that the JSON being written is structurally valid according to the JSON RFC. + + is . + + + Initializes a new instance of the class using the specified stream to write the output to and customization options. + The destination for writing JSON text. + Defines the customized behavior of the . By default, it writes minimized JSON (with no extra white space) and validates that the JSON being written is structurally valid according to the JSON RFC. + + is . + + + Commits any leftover JSON text that has not yet been flushed and releases all resources used by the current instance. + + + Asynchronously commits any leftover JSON text that has not yet been flushed and releases all resources used by the current instance. + A task representing the asynchronous dispose operation. + + + Commits the JSON text written so far, which makes it visible to the output destination. + This instance has been disposed. + + + Asynchronously commits the JSON text written so far, which makes it visible to the output destination. + The token to monitor for cancellation requests. The default value is . + This instance has been disposed. + A task representing the asynchronous flush operation. + + + Resets the internal state of this instance so that it can be reused. + This instance has been disposed. + + + Resets the internal state of this instance so that it can be reused with a new instance of . + The destination for writing JSON text. + + is . + This instance has been disposed. + + + Resets the internal state of this instance so that it can be reused with a new instance of . + The destination for writing JSON text. + + is . + This instance has been disposed. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded name of the property to write. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The JSON-encoded name of the property to write. + The binary data to write as Base64 encoded text. + The specified value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the raw bytes value as a Base64 encoded JSON string as an element of a JSON array. + The binary data to be written as a Base64 encoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a value (as a JSON literal true or false) as an element of a JSON array. + The value to be written as a JSON literal true or false as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a UTF-8 text value as a JSON comment. + The UTF-8 encoded value to be written as a JSON comment within /*..*/. + The specified value is too large. + +-or- + + contains a comment delimiter (that is, */). + + + Writes a UTF-16 text value as a JSON comment. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON comment within /*..*/. + The specified value is too large. + +-or- + + contains a comment delimiter (that is, */). + + + Writes a string text value as a JSON comment. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON comment within /*..*/. + The specified value is too large. + +-or- + + contains a comment delimiter (that is, */). + The parameter is . + + + Writes the end of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the end of a JSON object. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and the JSON literal null as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the JSON literal null as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes an value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes an value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the UTF-8 property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + is . + + + Writes the pre-encoded property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the input as JSON content. It is expected that the input content is a single complete JSON value. + The raw JSON content to write. + + to validate if the input is an RFC 8259-compliant JSON payload; otherwise. + The length of the input is zero or equal to . + + is , and the input is not a valid, complete, single JSON value according to the JSON RFC, or the input JSON exceeds a recursive depth of 64. + + + Writes the input as JSON content. It is expected that the input content is a single complete JSON value. + The raw JSON content to write. + + to validate if the input is an RFC 8259-compliant JSON payload; otherwise. + The length of the input is zero or greater than 715,827,882 ( / 3). + + is , and the input is not a valid, complete, single JSON value according to the JSON RFC, or the input JSON exceeds a recursive depth of 64. + + + Writes the input as JSON content. It is expected that the input content is a single complete JSON value. + The raw JSON content to write. + + to validate if the input is an RFC 8259-compliant JSON payload; otherwise. + + is . + The length of the input is zero or greater than 715,827,882 ( / 3). + + is , and the input is not a valid, complete, single JSON value according to the JSON RFC, or the input JSON exceeds a recursive depth of 64. + + + Writes the beginning of a JSON array. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a read-only span of bytes as the key. + The UTF-8 encoded property name of the JSON array to be written. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a read-only character span as the key. + The UTF-16 encoded property name of the JSON array to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a string as the key. + The UTF-16 encoded property name of the JSON array to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + The parameter is . + + + Writes the beginning of a JSON array with a pre-encoded property name as the key. + The JSON encoded property name of the JSON array to be transcoded and written as UTF-8. + The depth of the JSON has exceeded the maximum depth of 1,000. + +-or- + +Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the beginning of a JSON object. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the beginning of a JSON object with a property name specified as a read-only span of bytes as the key. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON object with a property name specififed as a read-only character span as the key. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON object with a property name specified as a string as the key. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. + +-or- + +Validation is enabled, and this write operation would produce invalid JSON. + The parameter is . + + + Writes the beginning of a JSON object with a pre-encoded property name as the key. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The depth of the JSON has exceeded the maximum depth of 1,000. + +-or- + +Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the UTF-8 property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a UTF-8 text value (as a JSON string) as an element of a JSON array. + The UTF-8 encoded value to be written as a JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 text value (as a JSON string) as an element of a JSON array. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a string text value (as a JSON string) as an element of a JSON array. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded text value (as a JSON string) as an element of a JSON array. + The JSON encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + Validation is enabled, and the write operation would produce invalid JSON. + + + Gets the total number of bytes committed to the output by the current instance so far. + The total number of bytes committed to the output by the so far. + + + Gets the number of bytes written by the so far that have not yet been flushed to the output and committed. + The number of bytes written so far by the that have not yet been flushed to the output and committed. + + + Gets the depth of the current token. + The depth of the current token. + + + Gets the custom behavior when writing JSON using this instance, which indicates whether to format the output while writing, whether to skip structural JSON validation, and which characters to escape. + The custom behavior of this instance of the writer for formatting, validating, and escaping. + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml.meta new file mode 100644 index 00000000..677e1beb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Text.Json.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3122f01d0f9bb9349b3ab7e7b10f6eb4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll new file mode 100644 index 00000000..eeec9285 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll.meta new file mode 100644 index 00000000..3a02c13c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 49de52f6bbd69a949a07dd6c0645db22 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml new file mode 100644 index 00000000..5e02a99d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml @@ -0,0 +1,166 @@ + + + System.Threading.Tasks.Extensions + + + + + + + + + + + + + + + + + + + Provides a value type that wraps a and a TResult, only one of which is used. + The result. + + + Initializes a new instance of the class using the supplied task that represents the operation. + The task. + The task argument is null. + + + Initializes a new instance of the class using the supplied result of a successful operation. + The result. + + + Retrieves a object that represents this . + The object that is wrapped in this if one exists, or a new object that represents the result. + + + Configures an awaiter for this value. + true to attempt to marshal the continuation back to the captured context; otherwise, false. + The configured awaiter. + + + Creates a method builder for use with an async method. + The created builder. + + + Determines whether the specified object is equal to the current object. + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + Determines whether the specified object is equal to the current object. + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + Creates an awaiter for this value. + The awaiter. + + + Returns the hash code for this instance. + The hash code for the current object. + + + Gets a value that indicates whether this object represents a canceled operation. + true if this object represents a canceled operation; otherwise, false. + + + Gets a value that indicates whether this object represents a completed operation. + true if this object represents a completed operation; otherwise, false. + + + Gets a value that indicates whether this object represents a successfully completed operation. + true if this object represents a successfully completed operation; otherwise, false. + + + Gets a value that indicates whether this object represents a failed operation. + true if this object represents a failed operation; otherwise, false. + + + Compares two values for equality. + The first value to compare. + The second value to compare. + true if the two values are equal; otherwise, false. + + + Determines whether two values are unequal. + The first value to compare. + The seconed value to compare. + true if the two values are not equal; otherwise, false. + + + Gets the result. + The result. + + + Returns a string that represents the current object. + A string that represents the current object. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml.meta new file mode 100644 index 00000000..c9af223f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/SocketIOUnity/Runtime/libs/System.Threading.Tasks.Extensions.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ae25c4de4e4f56446af4950fe4aee631 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket.meta new file mode 100644 index 00000000..36ea2201 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b671a997ca6157d4d9fb8506846dc06f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs new file mode 100644 index 00000000..828f28d2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs @@ -0,0 +1,148 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +using UnityEngine; + +namespace MetaMask.NativeWebSocket +{ + + public class AndroidWebSocket : AndroidJavaProxy, IWebSocket + { + + #region Events + + public event WebSocketCloseEventHandler OnClose; + public event WebSocketErrorEventHandler OnError; + public event WebSocketOpenEventHandler OnOpen; + public event WebSocketMessageEventHandler OnMessage; + public event WebSocketTextMessageEventHandler OnTextMessage; + + #endregion + + #region Constants + + private const string Namespace = "io.metamask.unity.websocket"; + private const string WebSocketListenerName = Namespace + ".IUnityWebSocketListener"; + private const string HandlerClassName = Namespace + ".UnityWebSocketHandler"; + + #endregion + + #region Fields + + private string url; + private AndroidJavaObject webSocketHandler; + private AndroidJavaObject unityActivity; + + #endregion + + #region Properties + + public bool IsConnected { get; private set; } + + public WebSocketState State { get; private set; } + + #endregion + + #region Constructors + + public AndroidWebSocket(string url, Dictionary headers = null) : this(url, string.Empty, headers) + { + } + + public AndroidWebSocket(string url, string subprotocol, Dictionary headers = null) : this(url, new List(), headers) + { + } + + public AndroidWebSocket(string url, List subprotocols, Dictionary headers = null) : base(WebSocketListenerName) + { + this.url = url; + + BuildAndroidObjects(); + } + + #endregion + + #region Public Methods + + public Task Connect() + { + State = WebSocketState.Connecting; + webSocketHandler.Call("open"); + return Task.CompletedTask; + } + + public Task Close() + { + State = WebSocketState.Closing; + webSocketHandler.Call("close"); + return Task.CompletedTask; + } + + public Task Send(string text) + { + webSocketHandler.Call("send", text); + return Task.CompletedTask; + } + + public Task Send(byte[] bytes) + { + webSocketHandler.Call("send", bytes); + return Task.CompletedTask; + } + + #endregion + + #region IUnityWebSocketListener + + public void OnSocketOpen(AndroidJavaObject webSocket, AndroidJavaObject response) + { + State = WebSocketState.Open; + IsConnected = true; + OnOpen?.Invoke(); + } + + public void OnSocketClosing(AndroidJavaObject webSocket, int code, string reason) + { + State = WebSocketState.Closing; + IsConnected = false; + Close(); + } + + public void OnSocketClosed(AndroidJavaObject webSocket, int code, string reason) + { + State = WebSocketState.Closed; + IsConnected = false; + OnClose?.Invoke((WebSocketCloseCode)code); + } + + public void OnSocketFailure(AndroidJavaObject webSocket, AndroidJavaObject t, AndroidJavaObject response) + { + OnError?.Invoke(t.Call("toString")); + } + + public void OnSocketMessage(AndroidJavaObject webSocket, string text) + { + OnTextMessage?.Invoke(text); + } + + public void OnSocketMessage(AndroidJavaObject webSocket, byte[] bytes) + { + OnMessage?.Invoke(bytes); + } + + #endregion + + #region Private Methods + + private void BuildAndroidObjects() + { + var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + unityActivity = unityPlayer.GetStatic("currentActivity"); + webSocketHandler = new AndroidJavaObject(HandlerClassName, unityActivity, this, this.url); + } + + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs.meta new file mode 100644 index 00000000..c96eee49 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/AndroidWebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f13d16ca6e62b1449be06792db6191f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs new file mode 100644 index 00000000..a22d1ff4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs @@ -0,0 +1,231 @@ +#if UNITY_IOS +using AOT; + +using System; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using System.Collections.Generic; +#endif + +namespace MetaMask.NativeWebSocket +{ + +#if UNITY_IOS + public class IosWebSocket : IWebSocket + { + + #region Delegates + + delegate void TextMessageReceivedCallback(int instanceId, string message); + delegate void BinaryMessageReceivedCallback(int instanceId, byte[] message); + delegate void OpenedCallback(int instanceId); + delegate void ClosedCallback(int instanceId, int code); + delegate void ErrorCallback(int instanceId, string error); + + #endregion + + #region Events + + public event WebSocketOpenEventHandler OnOpen; + public event WebSocketMessageEventHandler OnMessage; + public event WebSocketTextMessageEventHandler OnTextMessage; + public event WebSocketErrorEventHandler OnError; + public event WebSocketCloseEventHandler OnClose; + + #endregion + + #region Fields + + private static Dictionary instances = new Dictionary(); + + protected int instanceId; + + #endregion + + #region Properties + + public bool IsConnected { get; private set; } + + public WebSocketState State { get; private set; } + + #endregion + + #region Native API + + [DllImport("__Internal")] + static extern int UnityWebSocket_Create(string url); + + [DllImport("__Internal")] + static extern void UnityWebSocket_Connect(int instanceId); + + [DllImport("__Internal")] + static extern void UnityWebSocket_Disconnect(int instanceId); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SendText(int instanceId, string text); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SendBytes(int instanceId, byte[] bytes, int size); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SetTextMessageReceivedCallback(int instanceId, TextMessageReceivedCallback callback); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SetBinaryMessageReceivedCallback(int instanceId, BinaryMessageReceivedCallback callback); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SetOpenCallback(int instanceId, OpenedCallback callback); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SetCloseCallback(int instanceId, ClosedCallback callback); + + [DllImport("__Internal")] + static extern void UnityWebSocket_SetErrorCallback(int instanceId, ErrorCallback callback); + + #endregion + + #region Constructors + + public IosWebSocket(string url, Dictionary headers = null) : this(url, string.Empty, headers) + { + } + + public IosWebSocket(string url, string subprotocol, Dictionary headers = null) : this(url, new List(), headers) + { + } + + public IosWebSocket(string url, List subprotocols, Dictionary headers = null) + { + this.instanceId = UnityWebSocket_Create(url); + instances[instanceId] = this; + } + + #endregion + + #region Public Methods + + public Task Connect() + { + UnityWebSocket_SetTextMessageReceivedCallback(this.instanceId, OnTextMessageReceivedCallback); + UnityWebSocket_SetBinaryMessageReceivedCallback(this.instanceId, OnBinaryMessageReceivedCallback); + UnityWebSocket_SetOpenCallback(this.instanceId, OnOpenedCallback); + UnityWebSocket_SetCloseCallback(this.instanceId, OnClosedCallback); + UnityWebSocket_SetErrorCallback(this.instanceId, OnErrorCallback); + + State = WebSocketState.Connecting; + UnityWebSocket_Connect(this.instanceId); + + return Task.CompletedTask; + } + + public Task Close() + { + State = WebSocketState.Closing; + UnityWebSocket_Disconnect(this.instanceId); + + return Task.CompletedTask; + } + + public Task Send(string text) + { + UnityWebSocket_SendText(this.instanceId, text); + + return Task.CompletedTask; + } + + public Task Send(byte[] bytes) + { + UnityWebSocket_SendBytes(this.instanceId, bytes, bytes.Length); + + return Task.CompletedTask; + } + + #endregion + + #region Callbacks + + [MonoPInvokeCallback(typeof(TextMessageReceivedCallback))] + static void OnTextMessageReceivedCallback(int instanceId, string message) + { + if (instances[instanceId] != null) { + instances[instanceId].OnInstanceTextMessageReceived(message); + } + } + + void OnInstanceTextMessageReceived(string message) + { + OnTextMessage?.Invoke(message); + } + + [MonoPInvokeCallback(typeof(BinaryMessageReceivedCallback))] + static void OnBinaryMessageReceivedCallback(int instanceId, byte[] message) + { + if (instances[instanceId] != null) + { + instances[instanceId].OnInstanceBinaryMessageReceived(message); + } + } + + void OnInstanceBinaryMessageReceived(byte[] message) + { + OnMessage?.Invoke(message); + } + + [MonoPInvokeCallback(typeof(OpenedCallback))] + static void OnOpenedCallback(int instanceId) + { + if (instances[instanceId] != null) + { + instances[instanceId].OnInstanceOpened(); + } + } + + void OnInstanceOpened() + { + IsConnected = true; + State = WebSocketState.Open; + OnOpen?.Invoke(); + } + + [MonoPInvokeCallback(typeof(ClosedCallback))] + static void OnClosedCallback(int instanceId, int code) + { + if (instances[instanceId] != null) + { + instances[instanceId].OnInstanceClosed(code); + } + } + + void OnInstanceClosed(int code) + { + UnityWebSocket_SetTextMessageReceivedCallback(this.instanceId, null); + UnityWebSocket_SetBinaryMessageReceivedCallback(this.instanceId, null); + UnityWebSocket_SetOpenCallback(this.instanceId, null); + UnityWebSocket_SetErrorCallback(this.instanceId, null); + UnityWebSocket_SetCloseCallback(this.instanceId, null); + + IsConnected = false; + State = WebSocketState.Closed; + OnClose?.Invoke((WebSocketCloseCode)code); + } + + [MonoPInvokeCallback(typeof(ErrorCallback))] + static void OnErrorCallback(int instanceId, string error) + { + if (instances[instanceId] != null) + { + instances[instanceId].OnInstanceError(error); + } + } + + void OnInstanceError(string error) + { + OnError?.Invoke(error); + } + + #endregion + + } +#endif + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs.meta new file mode 100644 index 00000000..0192dc81 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/IosWebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ca8ad9e5a980490d9de7de21a44461e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs new file mode 100644 index 00000000..199fe43e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs @@ -0,0 +1,1006 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Net.WebSockets; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using UnityEngine; + +#if UNITY_WEBGL && !UNITY_EDITOR +using AOT; +using System.Runtime.InteropServices; +#endif + +namespace MetaMask.NativeWebSocket +{ + + public class MainThreadUtil : MonoBehaviour + { + public static MainThreadUtil Instance { get; private set; } + public static SynchronizationContext synchronizationContext { get; private set; } + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + public static void Setup() + { + Instance = new GameObject("MainThreadUtil") + .AddComponent(); + synchronizationContext = SynchronizationContext.Current; + } + + public static void Run(IEnumerator waitForUpdate) + { + synchronizationContext.Post(_ => Instance.StartCoroutine( + waitForUpdate), null); + } + + private void Awake() + { + gameObject.hideFlags = HideFlags.HideAndDontSave; + DontDestroyOnLoad(gameObject); + } + } + + public class WaitForUpdate : CustomYieldInstruction + { + public override bool keepWaiting + { + get { return false; } + } + + public MainThreadAwaiter GetAwaiter() + { + var awaiter = new MainThreadAwaiter(); + MainThreadUtil.Run(CoroutineWrapper(this, awaiter)); + return awaiter; + } + + public class MainThreadAwaiter : INotifyCompletion + { + private Action continuation; + + public bool IsCompleted { get; set; } + + public void GetResult() { } + + public void Complete() + { + IsCompleted = true; + this.continuation?.Invoke(); + } + + void INotifyCompletion.OnCompleted(Action continuation) + { + this.continuation = continuation; + } + } + + public static IEnumerator CoroutineWrapper(IEnumerator theWorker, MainThreadAwaiter awaiter) + { + yield return theWorker; + awaiter.Complete(); + } + } + + public delegate void WebSocketOpenEventHandler(); + public delegate void WebSocketMessageEventHandler(byte[] data); + public delegate void WebSocketTextMessageEventHandler(string data); + public delegate void WebSocketErrorEventHandler(string errorMsg); + public delegate void WebSocketCloseEventHandler(WebSocketCloseCode closeCode); + + public enum WebSocketCloseCode + { + /* Do NOT use NotSet - it's only purpose is to indicate that the close code cannot be parsed. */ + NotSet = 0, + Normal = 1000, + Away = 1001, + ProtocolError = 1002, + UnsupportedData = 1003, + Undefined = 1004, + NoStatus = 1005, + Abnormal = 1006, + InvalidData = 1007, + PolicyViolation = 1008, + TooBig = 1009, + MandatoryExtension = 1010, + ServerError = 1011, + TlsHandshakeFailure = 1015 + } + + public enum WebSocketState + { + Connecting, + Open, + Closing, + Closed + } + + public interface IWebSocket + { + event WebSocketOpenEventHandler OnOpen; + event WebSocketMessageEventHandler OnMessage; + event WebSocketTextMessageEventHandler OnTextMessage; + event WebSocketErrorEventHandler OnError; + event WebSocketCloseEventHandler OnClose; + + WebSocketState State { get; } + } + + public static class WebSocketHelpers + { + public static WebSocketCloseCode ParseCloseCodeEnum(int closeCode) + { + + if (WebSocketCloseCode.IsDefined(typeof(WebSocketCloseCode), closeCode)) + { + return (WebSocketCloseCode)closeCode; + } + else + { + return WebSocketCloseCode.Undefined; + } + + } + + public static WebSocketException GetErrorMessageFromCode(int errorCode, Exception inner) + { + switch (errorCode) + { + case -1: + return new WebSocketUnexpectedException("WebSocket instance not found.", inner); + case -2: + return new WebSocketInvalidStateException("WebSocket is already connected or in connecting state.", inner); + case -3: + return new WebSocketInvalidStateException("WebSocket is not connected.", inner); + case -4: + return new WebSocketInvalidStateException("WebSocket is already closing.", inner); + case -5: + return new WebSocketInvalidStateException("WebSocket is already closed.", inner); + case -6: + return new WebSocketInvalidStateException("WebSocket is not in open state.", inner); + case -7: + return new WebSocketInvalidArgumentException("Cannot close WebSocket. An invalid code was specified or reason is too long.", inner); + default: + return new WebSocketUnexpectedException("Unknown error.", inner); + } + } + } + + public class WebSocketException : Exception + { + public WebSocketException() { } + public WebSocketException(string message) : base(message) { } + public WebSocketException(string message, Exception inner) : base(message, inner) { } + } + + public class WebSocketUnexpectedException : WebSocketException + { + public WebSocketUnexpectedException() { } + public WebSocketUnexpectedException(string message) : base(message) { } + public WebSocketUnexpectedException(string message, Exception inner) : base(message, inner) { } + } + + public class WebSocketInvalidArgumentException : WebSocketException + { + public WebSocketInvalidArgumentException() { } + public WebSocketInvalidArgumentException(string message) : base(message) { } + public WebSocketInvalidArgumentException(string message, Exception inner) : base(message, inner) { } + } + + public class WebSocketInvalidStateException : WebSocketException + { + public WebSocketInvalidStateException() { } + public WebSocketInvalidStateException(string message) : base(message) { } + public WebSocketInvalidStateException(string message, Exception inner) : base(message, inner) { } + } + + public class WaitForBackgroundThread + { + public ConfiguredTaskAwaitable.ConfiguredTaskAwaiter GetAwaiter() + { + return Task.Run(() => { }).ConfigureAwait(false).GetAwaiter(); + } + } + +#if UNITY_WEBGL && !UNITY_EDITOR + + /// + /// WebSocket class bound to JSLIB. + /// + public class WebSocket : IWebSocket + { + + /* WebSocket JSLIB functions */ + [DllImport("__Internal")] + public static extern int WebSocketConnect(int instanceId); + + [DllImport("__Internal")] + public static extern int WebSocketClose(int instanceId, int code, string reason); + + [DllImport("__Internal")] + public static extern int WebSocketSend(int instanceId, byte[] dataPtr, int dataLength); + + [DllImport("__Internal")] + public static extern int WebSocketSendText(int instanceId, string message); + + [DllImport("__Internal")] + public static extern int WebSocketGetState(int instanceId); + + protected int instanceId; + + public event WebSocketOpenEventHandler OnOpen; + public event WebSocketMessageEventHandler OnMessage; + public event WebSocketTextMessageEventHandler OnTextMessage; + public event WebSocketErrorEventHandler OnError; + public event WebSocketCloseEventHandler OnClose; + + public WebSocket(string url, Dictionary headers = null) + { + if (!WebSocketFactory.isInitialized) + { + WebSocketFactory.Initialize(); + } + + int instanceId = WebSocketFactory.WebSocketAllocate(url); + WebSocketFactory.instances.Add(instanceId, this); + + this.instanceId = instanceId; + } + + public WebSocket(string url, string subprotocol, Dictionary headers = null) + { + if (!WebSocketFactory.isInitialized) + { + WebSocketFactory.Initialize(); + } + + int instanceId = WebSocketFactory.WebSocketAllocate(url); + WebSocketFactory.instances.Add(instanceId, this); + + WebSocketFactory.WebSocketAddSubProtocol(instanceId, subprotocol); + + this.instanceId = instanceId; + } + + public WebSocket(string url, List subprotocols, Dictionary headers = null) + { + if (!WebSocketFactory.isInitialized) + { + WebSocketFactory.Initialize(); + } + + int instanceId = WebSocketFactory.WebSocketAllocate(url); + WebSocketFactory.instances.Add(instanceId, this); + + foreach (string subprotocol in subprotocols) + { + WebSocketFactory.WebSocketAddSubProtocol(instanceId, subprotocol); + } + + this.instanceId = instanceId; + } + + ~WebSocket() + { + WebSocketFactory.HandleInstanceDestroy(this.instanceId); + } + + public int GetInstanceId() + { + return this.instanceId; + } + + public Task Connect() + { + int ret = WebSocketConnect(this.instanceId); + + if (ret < 0) + throw WebSocketHelpers.GetErrorMessageFromCode(ret, null); + + return Task.CompletedTask; + } + + public void CancelConnection() + { + if (State == WebSocketState.Open) + Close(WebSocketCloseCode.Abnormal); + } + + public Task Close(WebSocketCloseCode code = WebSocketCloseCode.Normal, string reason = null) + { + int ret = WebSocketClose(this.instanceId, (int)code, reason); + + if (ret < 0) + throw WebSocketHelpers.GetErrorMessageFromCode(ret, null); + + return Task.CompletedTask; + } + + public Task Send(byte[] data) + { + int ret = WebSocketSend(this.instanceId, data, data.Length); + + if (ret < 0) + throw WebSocketHelpers.GetErrorMessageFromCode(ret, null); + + return Task.CompletedTask; + } + + public Task SendText(string message) + { + int ret = WebSocketSendText(this.instanceId, message); + + if (ret < 0) + throw WebSocketHelpers.GetErrorMessageFromCode(ret, null); + + return Task.CompletedTask; + } + + public WebSocketState State + { + get + { + int state = WebSocketGetState(this.instanceId); + + if (state < 0) + throw WebSocketHelpers.GetErrorMessageFromCode(state, null); + + switch (state) + { + case 0: + return WebSocketState.Connecting; + + case 1: + return WebSocketState.Open; + + case 2: + return WebSocketState.Closing; + + case 3: + return WebSocketState.Closed; + + default: + return WebSocketState.Closed; + } + } + } + + public void DelegateOnOpenEvent() + { + OnOpen?.Invoke(); + } + + public void DelegateOnMessageEvent(byte[] data) + { + OnMessage?.Invoke(data); + } + + public void DelegateOnTextMessageEvent(string data) + { + OnTextMessage?.Invoke(data); + } + + public void DelegateOnErrorEvent(string errorMsg) + { + OnError?.Invoke(errorMsg); + } + + public void DelegateOnCloseEvent(int closeCode) + { + OnClose?.Invoke(WebSocketHelpers.ParseCloseCodeEnum(closeCode)); + } + + } + +//#elif UNITY_ANDROID + +// public class WebSocket : AndroidWebSocket +// { + +// public WebSocket(string url, Dictionary headers = null) : base(url, headers) +// { + +// } + +// public WebSocket(string url, string subprotocol, Dictionary headers = null) : base(url, subprotocol, headers) +// { +// } + +// public WebSocket(string url, List subprotocols, Dictionary headers = null) : base(url, subprotocols, headers) +// { +// } + +// } + +#else + +#if UNITY_ANDROID + + public class BackgroundWebSocket : AndroidWebSocket + { + + public BackgroundWebSocket(string url, Dictionary headers = null) : base(url, headers) + { + + } + + public BackgroundWebSocket(string url, string subprotocol, Dictionary headers = null) : base(url, subprotocol, headers) + { + } + + public BackgroundWebSocket(string url, List subprotocols, Dictionary headers = null) : base(url, subprotocols, headers) + { + } + + } + +#elif UNITY_IOS + + public class BackgroundWebSocket : IosWebSocket + { + + public BackgroundWebSocket(string url, Dictionary headers = null) : base(url, headers) + { + + } + + public BackgroundWebSocket(string url, string subprotocol, Dictionary headers = null) : base(url, subprotocol, headers) + { + } + + public BackgroundWebSocket(string url, List subprotocols, Dictionary headers = null) : base(url, subprotocols, headers) + { + } + + } + +#endif + + public class WebSocket : IWebSocket + { + public event WebSocketOpenEventHandler OnOpen; + public event WebSocketMessageEventHandler OnMessage; + public event WebSocketTextMessageEventHandler OnTextMessage; + public event WebSocketErrorEventHandler OnError; + public event WebSocketCloseEventHandler OnClose; + + private Uri uri; + private Dictionary headers; + private List subprotocols; + private ClientWebSocket m_Socket = new ClientWebSocket(); + + private CancellationTokenSource m_TokenSource; + private CancellationToken m_CancellationToken; + + private readonly object OutgoingMessageLock = new object(); + private readonly object IncomingMessageLock = new object(); + + private bool isSending = false; + private List> sendBytesQueue = new List>(); + private List> sendTextQueue = new List>(); + + public WebSocket(string url, Dictionary headers = null) + { + this.uri = new Uri(url); + + if (headers == null) + { + this.headers = new Dictionary(); + } + else + { + this.headers = headers; + } + + this.subprotocols = new List(); + + string protocol = this.uri.Scheme; + if (!protocol.Equals("ws") && !protocol.Equals("wss")) + throw new ArgumentException("Unsupported protocol: " + protocol); + } + + public WebSocket(string url, string subprotocol, Dictionary headers = null) + { + this.uri = new Uri(url); + + if (headers == null) + { + this.headers = new Dictionary(); + } + else + { + this.headers = headers; + } + + this.subprotocols = new List { subprotocol }; + + string protocol = this.uri.Scheme; + if (!protocol.Equals("ws") && !protocol.Equals("wss")) + throw new ArgumentException("Unsupported protocol: " + protocol); + } + + public WebSocket(string url, List subprotocols, Dictionary headers = null) + { + this.uri = new Uri(url); + + if (headers == null) + { + this.headers = new Dictionary(); + } + else + { + this.headers = headers; + } + + this.subprotocols = subprotocols; + + string protocol = this.uri.Scheme; + if (!protocol.Equals("ws") && !protocol.Equals("wss")) + throw new ArgumentException("Unsupported protocol: " + protocol); + } + + public void CancelConnection() + { + this.m_TokenSource?.Cancel(); + } + + public async Task Connect() + { + try + { + this.m_TokenSource = new CancellationTokenSource(); + this.m_CancellationToken = this.m_TokenSource.Token; + + this.m_Socket = new ClientWebSocket(); + + foreach (var header in this.headers) + { + this.m_Socket.Options.SetRequestHeader(header.Key, header.Value); + } + + foreach (string subprotocol in this.subprotocols) + { + this.m_Socket.Options.AddSubProtocol(subprotocol); + } + + await this.m_Socket.ConnectAsync(this.uri, this.m_CancellationToken); + OnOpen?.Invoke(); + + await Receive(); + } + catch (Exception ex) + { + OnError?.Invoke(ex.Message); + OnClose?.Invoke(WebSocketCloseCode.Abnormal); + } + finally + { + if (this.m_Socket != null) + { + this.m_TokenSource.Cancel(); + this.m_Socket.Dispose(); + } + } + } + + public WebSocketState State + { + get + { + switch (this.m_Socket.State) + { + case System.Net.WebSockets.WebSocketState.Connecting: + return WebSocketState.Connecting; + + case System.Net.WebSockets.WebSocketState.Open: + return WebSocketState.Open; + + case System.Net.WebSockets.WebSocketState.CloseSent: + case System.Net.WebSockets.WebSocketState.CloseReceived: + return WebSocketState.Closing; + + case System.Net.WebSockets.WebSocketState.Closed: + return WebSocketState.Closed; + + default: + return WebSocketState.Closed; + } + } + } + + public Task Send(byte[] bytes) + { + // return m_Socket.SendAsync(buffer, WebSocketMessageType.Binary, true, CancellationToken.None); + return SendMessage(this.sendBytesQueue, WebSocketMessageType.Binary, new ArraySegment(bytes)); + } + + public Task SendText(string message) + { + var encoded = Encoding.UTF8.GetBytes(message); + + // m_Socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None); + return SendMessage(this.sendTextQueue, WebSocketMessageType.Text, new ArraySegment(encoded, 0, encoded.Length)); + } + + private async Task SendMessage(List> queue, WebSocketMessageType messageType, ArraySegment buffer) + { + // Return control to the calling method immediately. + // await Task.Yield (); + + // Make sure we have data. + if (buffer.Count == 0) + { + return; + } + + // The state of the connection is contained in the context Items dictionary. + bool sending; + + lock (this.OutgoingMessageLock) + { + sending = this.isSending; + + // If not, we are now. + if (!this.isSending) + { + this.isSending = true; + } + } + + if (!sending) + { + // Lock with a timeout, just in case. + if (!Monitor.TryEnter(this.m_Socket, 1000)) + { + // If we couldn't obtain exclusive access to the socket in one second, something is wrong. + await this.m_Socket.CloseAsync(WebSocketCloseStatus.InternalServerError, string.Empty, this.m_CancellationToken); + return; + } + + try + { + // Send the message synchronously. + var t = this.m_Socket.SendAsync(buffer, messageType, true, this.m_CancellationToken); + t.Wait(this.m_CancellationToken); + } + finally + { + Monitor.Exit(this.m_Socket); + } + + // Note that we've finished sending. + lock (this.OutgoingMessageLock) + { + this.isSending = false; + } + + // Handle any queued messages. + await HandleQueue(queue, messageType); + } + else + { + // Add the message to the queue. + lock (this.OutgoingMessageLock) + { + queue.Add(buffer); + } + } + } + + private async Task HandleQueue(List> queue, WebSocketMessageType messageType) + { + var buffer = new ArraySegment(); + lock (this.OutgoingMessageLock) + { + // Check for an item in the queue. + if (queue.Count > 0) + { + // Pull it off the top. + buffer = queue[0]; + queue.RemoveAt(0); + } + } + + // Send that message. + if (buffer.Count > 0) + { + await SendMessage(queue, messageType, buffer); + } + } + + private List m_MessageList = new List(); + private List m_TextMessageList = new List(); + + // simple dispatcher for queued messages. + public void DispatchMessageQueue() + { + if (this.m_MessageList.Count == 0 && this.m_TextMessageList.Count == 0) + { + return; + } + + // Binary messages + List messageListCopy = null; + + // Text messages + List textMessageListCopy = null; + + lock (this.IncomingMessageLock) + { + + // Copy binary messages + if (this.m_MessageList.Count != 0) + { + messageListCopy = new List(this.m_MessageList); + this.m_MessageList.Clear(); + } + + // Copy text messages + if (this.m_TextMessageList.Count != 0) + { + textMessageListCopy = new List(this.m_TextMessageList); + this.m_TextMessageList.Clear(); + } + } + + // Broadcast binary messages + if (messageListCopy != null) + { + var len = messageListCopy.Count; + for (int i = 0; i < len; i++) + { + OnMessage?.Invoke(messageListCopy[i]); + } + } + + // Broadcast text messages + if (textMessageListCopy != null) + { + var len = textMessageListCopy.Count; + for (int i = 0; i < len; i++) + { + OnTextMessage?.Invoke(textMessageListCopy[i]); + } + } + } + + public async Task Receive() + { + WebSocketCloseCode closeCode = WebSocketCloseCode.Abnormal; + await new WaitForBackgroundThread(); + + ArraySegment buffer = new ArraySegment(new byte[8192]); + try + { + while (this.m_Socket.State == System.Net.WebSockets.WebSocketState.Open) + { + WebSocketReceiveResult result = null; + + using (var ms = new MemoryStream()) + { + do + { + result = await this.m_Socket.ReceiveAsync(buffer, this.m_CancellationToken); + ms.Write(buffer.Array, buffer.Offset, result.Count); + } + while (!result.EndOfMessage); + + ms.Seek(0, SeekOrigin.Begin); + + if (result.MessageType == WebSocketMessageType.Text) + { + lock (this.IncomingMessageLock) + { + this.m_TextMessageList.Add(Encoding.UTF8.GetString(ms.ToArray())); + } + + //using (var reader = new StreamReader(ms, Encoding.UTF8)) + //{ + // string message = reader.ReadToEnd(); + // OnMessage?.Invoke(this, new MessageEventArgs(message)); + //} + } + else if (result.MessageType == WebSocketMessageType.Binary) + { + lock (this.IncomingMessageLock) + { + this.m_MessageList.Add(ms.ToArray()); + } + } + else if (result.MessageType == WebSocketMessageType.Close) + { + await Close(); + closeCode = WebSocketHelpers.ParseCloseCodeEnum((int)result.CloseStatus); + break; + } + } + } + } + catch (Exception) + { + this.m_TokenSource.Cancel(); + } + finally + { + await new WaitForUpdate(); + OnClose?.Invoke(closeCode); + } + } + + public async Task Close() + { + if (State == WebSocketState.Open) + { + await this.m_Socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, this.m_CancellationToken); + } + } + } +#endif + + /// + /// Factory + /// + + /// + /// Class providing static access methods to work with JSLIB WebSocket or WebSocketSharp interface + /// + public static class WebSocketFactory + { + +#if UNITY_WEBGL && !UNITY_EDITOR + /* Map of websocket instances */ + public static Dictionary instances = new Dictionary(); + + /* Delegates */ + public delegate void OnOpenCallback(int instanceId); + public delegate void OnMessageCallback(int instanceId, System.IntPtr msgPtr, int msgSize); + public delegate void OnTextMessageCallback(int instanceId, System.IntPtr msgPtr); + public delegate void OnErrorCallback(int instanceId, System.IntPtr errorPtr); + public delegate void OnCloseCallback(int instanceId, int closeCode); + + /* WebSocket JSLIB callback setters and other functions */ + [DllImport("__Internal")] + public static extern int WebSocketAllocate(string url); + + [DllImport("__Internal")] + public static extern int WebSocketAddSubProtocol(int instanceId, string subprotocol); + + [DllImport("__Internal")] + public static extern void WebSocketFree(int instanceId); + + [DllImport("__Internal")] + public static extern void WebSocketSetOnOpen(OnOpenCallback callback); + + [DllImport("__Internal")] + public static extern void WebSocketSetOnMessage(OnMessageCallback callback); + + [DllImport("__Internal")] + public static extern void WebSocketSetOnTextMessage(OnTextMessageCallback callback); + + [DllImport("__Internal")] + public static extern void WebSocketSetOnError(OnErrorCallback callback); + + [DllImport("__Internal")] + public static extern void WebSocketSetOnClose(OnCloseCallback callback); + + /* If callbacks was initialized and set */ + public static bool isInitialized = false; + + /* + * Initialize WebSocket callbacks to JSLIB + */ + public static void Initialize() + { + + WebSocketSetOnOpen(DelegateOnOpenEvent); + WebSocketSetOnMessage(DelegateOnMessageEvent); + WebSocketSetOnTextMessage(DelegateOnTextMessageEvent); + WebSocketSetOnError(DelegateOnErrorEvent); + WebSocketSetOnClose(DelegateOnCloseEvent); + + isInitialized = true; + + } + + /// + /// Called when instance is destroyed (by destructor) + /// Method removes instance from map and free it in JSLIB implementation + /// + /// Instance identifier. + public static void HandleInstanceDestroy(int instanceId) + { + + instances.Remove(instanceId); + WebSocketFree(instanceId); + + } + + [MonoPInvokeCallback(typeof(OnOpenCallback))] + public static void DelegateOnOpenEvent(int instanceId) + { + + WebSocket instanceRef; + + if (instances.TryGetValue(instanceId, out instanceRef)) + { + instanceRef.DelegateOnOpenEvent(); + } + + } + + [MonoPInvokeCallback(typeof(OnMessageCallback))] + public static void DelegateOnMessageEvent(int instanceId, System.IntPtr msgPtr, int msgSize) + { + + WebSocket instanceRef; + + if (instances.TryGetValue(instanceId, out instanceRef)) + { + byte[] msg = new byte[msgSize]; + Marshal.Copy(msgPtr, msg, 0, msgSize); + + instanceRef.DelegateOnMessageEvent(msg); + } + + } + + [MonoPInvokeCallback(typeof(OnTextMessageCallback))] + public static void DelegateOnTextMessageEvent(int instanceId, System.IntPtr msgPtr) + { + + WebSocket instanceRef; + + if (instances.TryGetValue(instanceId, out instanceRef)) + { + var msg = Marshal.PtrToStringUTF8(msgPtr); + instanceRef.DelegateOnTextMessageEvent(msg); + } + + } + + [MonoPInvokeCallback(typeof(OnErrorCallback))] + public static void DelegateOnErrorEvent(int instanceId, System.IntPtr errorPtr) + { + + WebSocket instanceRef; + + if (instances.TryGetValue(instanceId, out instanceRef)) + { + + string errorMsg = Marshal.PtrToStringAuto(errorPtr); + instanceRef.DelegateOnErrorEvent(errorMsg); + + } + + } + + [MonoPInvokeCallback(typeof(OnCloseCallback))] + public static void DelegateOnCloseEvent(int instanceId, int closeCode) + { + + WebSocket instanceRef; + + if (instances.TryGetValue(instanceId, out instanceRef)) + { + instanceRef.DelegateOnCloseEvent(closeCode); + } + + } +#endif + + /// + /// Create WebSocket client instance + /// + /// The WebSocket instance. + /// WebSocket valid URL. + public static WebSocket CreateInstance(string url) + { + return new WebSocket(url); + } + + } + +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs.meta new file mode 100644 index 00000000..44996cc1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc4105bf52b400f478431ccc5efe46b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib new file mode 100644 index 00000000..cd71e512 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib @@ -0,0 +1,304 @@ + +var LibraryWebSocket = { + $webSocketState: { + /* + * Map of instances + * + * Instance structure: + * { + * url: string, + * ws: WebSocket + * } + */ + instances: {}, + + /* Last instance ID */ + lastId: 0, + + /* Event listeners */ + onOpen: null, + onMessage: null, + onTextMesssage: null, + onError: null, + onClose: null, + + /* Debug mode */ + debug: false, + }, + + /** + * Set onOpen callback + * + * @param callback Reference to C# static function + */ + WebSocketSetOnOpen: function (callback) { + webSocketState.onOpen = callback; + }, + + /** + * Set onMessage callback + * + * @param callback Reference to C# static function + */ + WebSocketSetOnMessage: function (callback) { + webSocketState.onMessage = callback; + }, + + /** + * Set onTextMessage callback + * + * @param callback Reference to C# static function + */ + WebSocketSetOnTextMessage: function (callback) { + webSocketState.onTextMessage = callback; + }, + + /** + * Set onError callback + * + * @param callback Reference to C# static function + */ + WebSocketSetOnError: function (callback) { + webSocketState.onError = callback; + }, + + /** + * Set onClose callback + * + * @param callback Reference to C# static function + */ + WebSocketSetOnClose: function (callback) { + webSocketState.onClose = callback; + }, + + /** + * Allocate new WebSocket instance struct + * + * @param url Server URL + */ + WebSocketAllocate: function (url) { + var urlStr = UTF8ToString(url); + var id = webSocketState.lastId++; + + webSocketState.instances[id] = { + subprotocols: [], + url: urlStr, + ws: null, + }; + + return id; + }, + + /** + * Add subprotocol to instance + * + * @param instanceId Instance ID + * @param subprotocol Subprotocol name to add to instance + */ + WebSocketAddSubProtocol: function (instanceId, subprotocol) { + var subprotocolStr = UTF8ToString(subprotocol); + webSocketState.instances[instanceId].subprotocols.push(subprotocolStr); + }, + + /** + * Remove reference to WebSocket instance + * + * If socket is not closed function will close it but onClose event will not be emitted because + * this function should be invoked by C# WebSocket destructor. + * + * @param instanceId Instance ID + */ + WebSocketFree: function (instanceId) { + var instance = webSocketState.instances[instanceId]; + + if (!instance) return 0; + + // Close if not closed + if (instance.ws && instance.ws.readyState < 2) instance.ws.close(); + + // Remove reference + delete webSocketState.instances[instanceId]; + + return 0; + }, + + /** + * Connect WebSocket to the server + * + * @param instanceId Instance ID + */ + WebSocketConnect: function (instanceId) { + var instance = webSocketState.instances[instanceId]; + if (!instance) return -1; + + if (instance.ws !== null) return -2; + + instance.ws = new WebSocket(instance.url, instance.subprotocols); + + instance.ws.binaryType = "arraybuffer"; + + instance.ws.onopen = function () { + if (webSocketState.debug) console.log("[JSLIB WebSocket] Connected."); + + if (webSocketState.onOpen) + Module.dynCall_vi(webSocketState.onOpen, instanceId); + }; + + instance.ws.onmessage = function (ev) { + if (webSocketState.debug) + console.log("[JSLIB WebSocket] Received message:", ev.data); + + if (webSocketState.onMessage === null) return; + + if (ev.data instanceof ArrayBuffer) { + var dataBuffer = new Uint8Array(ev.data); + + var buffer = _malloc(dataBuffer.length); + HEAPU8.set(dataBuffer, buffer); + + try { + Module.dynCall_viii( + webSocketState.onMessage, + instanceId, + buffer, + dataBuffer.length + ); + } finally { + _free(buffer); + } + } else { + // var dataBuffer = new TextEncoder().encode(ev.data); + + // var buffer = _malloc(dataBuffer.length); + // HEAPU8.set(dataBuffer, buffer); + + var msg = ev.data; + var length = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(length); + stringToUTF8(msg, buffer, length); + + try { + Module.dynCall_vii( + webSocketState.onMessage, + instanceId, + buffer + ); + } finally { + _free(buffer); + } + } + }; + + instance.ws.onerror = function (ev) { + if (webSocketState.debug) console.log("[JSLIB WebSocket] Error occured."); + + if (webSocketState.onError) { + var msg = "WebSocket error."; + var length = lengthBytesUTF8(msg) + 1; + var buffer = _malloc(length); + stringToUTF8(msg, buffer, length); + + try { + Module.dynCall_vii(webSocketState.onError, instanceId, buffer); + } finally { + _free(buffer); + } + } + }; + + instance.ws.onclose = function (ev) { + if (webSocketState.debug) console.log("[JSLIB WebSocket] Closed."); + + if (webSocketState.onClose) + Module.dynCall_vii(webSocketState.onClose, instanceId, ev.code); + + delete instance.ws; + }; + + return 0; + }, + + /** + * Close WebSocket connection + * + * @param instanceId Instance ID + * @param code Close status code + * @param reasonPtr Pointer to reason string + */ + WebSocketClose: function (instanceId, code, reasonPtr) { + var instance = webSocketState.instances[instanceId]; + if (!instance) return -1; + + if (!instance.ws) return -3; + + if (instance.ws.readyState === 2) return -4; + + if (instance.ws.readyState === 3) return -5; + + var reason = reasonPtr ? UTF8ToString(reasonPtr) : undefined; + + try { + instance.ws.close(code, reason); + } catch (err) { + return -7; + } + + return 0; + }, + + /** + * Send message over WebSocket + * + * @param instanceId Instance ID + * @param bufferPtr Pointer to the message buffer + * @param length Length of the message in the buffer + */ + WebSocketSend: function (instanceId, bufferPtr, length) { + var instance = webSocketState.instances[instanceId]; + if (!instance) return -1; + + if (!instance.ws) return -3; + + if (instance.ws.readyState !== 1) return -6; + + instance.ws.send(HEAPU8.buffer.slice(bufferPtr, bufferPtr + length)); + + return 0; + }, + + /** + * Send text message over WebSocket + * + * @param instanceId Instance ID + * @param bufferPtr Pointer to the message buffer + * @param length Length of the message in the buffer + */ + WebSocketSendText: function (instanceId, message) { + var instance = webSocketState.instances[instanceId]; + if (!instance) return -1; + + if (!instance.ws) return -3; + + if (instance.ws.readyState !== 1) return -6; + + instance.ws.send(UTF8ToString(message)); + + return 0; + }, + + /** + * Return WebSocket readyState + * + * @param instanceId Instance ID + */ + WebSocketGetState: function (instanceId) { + var instance = webSocketState.instances[instanceId]; + if (!instance) return -1; + + if (instance.ws) return instance.ws.readyState; + else return 3; + }, +}; + +autoAddDeps(LibraryWebSocket, '$webSocketState'); +mergeInto(LibraryManager.library, LibraryWebSocket); diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib.meta new file mode 100644 index 00000000..6e2f7af7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/WebSocket/WebSocket.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d08c36e650b2e1a478934d3dc4452314 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net.meta new file mode 100644 index 00000000..ef18e991 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 283869ac218c2d54fa764984622bce35 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins.meta new file mode 100644 index 00000000..e9ac1953 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e0b8a4f809bedc43873c115e6aa7051 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0.meta new file mode 100644 index 00000000..79abeac5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e40f5a49640c94c45a376c5b8cae2fd7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll new file mode 100644 index 00000000..9d948da7 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll.meta new file mode 100644 index 00000000..844d5ca3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/Dynamitey.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 082d8a3285a0bc54ebf74e743c01b335 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - '!NET_STANDARD_2_1' + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll new file mode 100644 index 00000000..db5e9292 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll.meta new file mode 100644 index 00000000..175eff26 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/EventEmitter.NET.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: fe12caa12cfcc7c4f8d861773e6048cd +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - '!NET_STANDARD_2_1' + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll new file mode 100644 index 00000000..f550cbe8 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll.meta new file mode 100644 index 00000000..e87482bf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.0/ImpromptuInterface.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: e2bf99599c8db414a8a226d136c0d7c4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - '!NET_STANDARD_2_1' + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1.meta new file mode 100644 index 00000000..c475ee88 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfe7fe39df6ef0648a000de01c325fc4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll new file mode 100644 index 00000000..9d948da7 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll.meta new file mode 100644 index 00000000..211bfb3a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/Dynamitey.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 3604f61efdc11a9479d87134088fea83 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - NET_STANDARD_2_1 + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll new file mode 100644 index 00000000..57271f2a Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll.meta new file mode 100644 index 00000000..08f5e34f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/EventEmitter.NET.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 053a9a24ec782874fbcb8bafb34b10ee +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - NET_STANDARD_2_1 + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll new file mode 100644 index 00000000..f550cbe8 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll.meta new file mode 100644 index 00000000..38520a0f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Plugins/netstandard2.1/ImpromptuInterface.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 1c96f0784194a98439e4de70827aa6bf +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - NET_STANDARD_2_1 + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime.meta new file mode 100644 index 00000000..8d83abeb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c99f155a68105554680869166809c28f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml new file mode 100644 index 00000000..e7c1c0dc --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml.meta new file mode 100644 index 00000000..baffd570 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/link.xml.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d19fcf576d0147a79e2b96ab68fafb8b +timeCreated: 1702970483 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0.meta new file mode 100644 index 00000000..8e9bac6b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f51cc742eabf83489db333e7946b547 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll new file mode 100644 index 00000000..cb964f5c Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll.meta new file mode 100644 index 00000000..2ecf0ecd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.0/evm.net.dll.meta @@ -0,0 +1,83 @@ +fileFormatVersion: 2 +guid: 7983383118e4f1d4094719daf26dc625 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - '!NET_STANDARD_2_1' + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1.meta new file mode 100644 index 00000000..b8b47ed6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d33630501be4aad49838b7c3fee75230 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll new file mode 100644 index 00000000..c282002f Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll.meta new file mode 100644 index 00000000..ea13b43c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/Libraries/evm.net/Runtime/netstandard2.1/evm.net.dll.meta @@ -0,0 +1,83 @@ +fileFormatVersion: 2 +guid: f28c901bdb05eab4c8c9285602916ed7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - NET_STANDARD_2_1 + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib new file mode 100644 index 00000000..29f2c594 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib @@ -0,0 +1,242 @@ +var LibraryMetaMaskDeeplink = { + +OpenMetaMaskDeeplink: function (url) { + var urlStr = UTF8ToString(url); + + // JS lib should handle this, do nothing and just log + //window.open(urlStr, "_blank"); + console.log("MetaMask deeplink URL mobile: " + urlStr); +}, + +WebGLIsMobile: function () { + return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) +}, + +LSExists: function (key) { + return localStorage.getItem(UTF8ToString(key)) !== null +}, + +LSWrite: function(key, data) { + localStorage.setItem(UTF8ToString(key), UTF8ToString(data)) +}, + +LSRead: function(key) { + var data = localStorage.getItem(UTF8ToString(key)) + + // required to return string data + var bufferSize = lengthBytesUTF8(data) + 1; + var buffer = _malloc(bufferSize) + stringToUTF8(data, buffer, bufferSize); + return buffer; +}, + +LSDelete: function(key) { + localStorage.removeItem(UTF8ToString(key)) +}, + +_SendRequestFetch: function(idUtf8, objectNameUtf8, methodUtf8, urlUtf8, parUtf8, isGet, authHeaderKeyUtf8, authHeaderValueUtf8) { + const id = UTF8ToString(idUtf8) + const objectName = UTF8ToString(objectNameUtf8) + const method = UTF8ToString(methodUtf8) + const url = UTF8ToString(urlUtf8) + const par = UTF8ToString(parUtf8) + const authHeaderKey = UTF8ToString(authHeaderKeyUtf8) + const authHeaderValue = UTF8ToString(authHeaderValueUtf8) + + let headers = {} + if (authHeaderKey) { + headers = { + [authHeaderKey]: authHeaderValue + } + } + + const data = { + method, + body: par, + headers + } + + fetch(url, data).then(function (resp) { + return resp.json() + }).then(function (result) { + const resultData = { + responseJson: JSON.stringify(result), + errorMessage: null, + id, + } + + window.unityInstance.SendMessage(objectName, "OnFetchResponseCallback", JSON.stringify(resultData)) + }).catch(function(e) { + const resultData = { + responseJson: null, + errorMessage: e.toString(), + id, + } + + window.unityInstance.SendMessage(objectName, "OnFetchResponseCallback", JSON.stringify(resultData)) + }) +}, + +_InitMetaMaskJS: function(dappName, dappUrl, dappIcon, infuraAPIKey, readonlyRPCMapJson, walletConnectedCallback, providerReadyCallback, providerErrorCallback, providerEventCallback, doJsConnect, isDebug) { + var walletConnected = UTF8ToString(walletConnectedCallback) + var providerReady = UTF8ToString(providerReadyCallback) + var errorCallback = UTF8ToString(providerErrorCallback) + var eventCallback = UTF8ToString(providerEventCallback) + var readonlyRPCMap = JSON.parse(UTF8ToString(readonlyRPCMapJson)) + + if (!window.MMSDK) { + window.MMSDK = new MetaMaskSDK.MetaMaskSDK({ + dappMetadata: { + name: UTF8ToString(dappName), + url: UTF8ToString(dappUrl), + base64Icon: UTF8ToString(dappIcon), + }, + infuraAPIKey: UTF8ToString(infuraAPIKey), + readonlyRPCMap, + logging: { + developerMode: Boolean(isDebug), + } + }) + } + + var DoUnityCallback = (data, parmData) => { + var parms = data.split(":") + var objName = parms[0]; + var functionName = parms[1]; + var guid = parms[2]; + var allParms = [guid] + if (parmData) { + var json = JSON.stringify(parmData); + allParms.push(json) + } + + console.log("Doing Unity callback " + functionName + " with arguments " + JSON.stringify(allParms)) + window.unityInstance.SendMessage(objName, functionName, JSON.stringify(allParms)); + } + + var notReadyDelay = 1 + var PostSDKInit = () => { + try { + var ethereum = window.MMSDK.getProvider() + ethereum.on("accountsChanged", (accounts) => { + if (typeof accounts === "string") { + accounts = [accounts] + } + + var accountChangeEvent = { + method: "metamask_accountsChanged", + params: accounts + } + DoUnityCallback(eventCallback, accountChangeEvent) + }) + + ethereum.on("chainChanged", (chainId) => { + if (typeof chainId === "string") { + chainId = { + chainId, + networkVersion: null, + } + } + var chainChangeEvent = { + method: "metamask_chainChanged", + params: chainId, + } + DoUnityCallback(eventCallback, chainChangeEvent) + }) + + DoUnityCallback(walletConnected) + } catch (e) { + console.warn("MetaMask SDK provider not yet ready..") + notReadyDelay *= 2 + setTimeout(PostSDKInit, notReadyDelay) + } + }; + + var DoSDKInit = undefined; + DoSDKInit = () => { + if (!window.MMSDK.isInitialized) { + setTimeout(OnSDKInit, 0); + return; + } + + if (doJsConnect) { + window.MMSDK.connect().then(function () { + PostSDKInit() + }).catch(function (e) { + DoUnityCallback(errorCallback) + }) + } else { + PostSDKInit() + } + + DoUnityCallback(providerReady) + }; + + setTimeout(DoSDKInit, 0) +}, + +_SendMetaMaskJS: function(idData, methodData, jsonData, responseCallback, errorCallback) { + var ethereum = window.MMSDK.getProvider() + if (!ethereum) { + ethereum = window.ethereum + } + + var DoUnityCallback = (data, parmData) => { + var parms = data.split(":") + var objName = parms[0]; + var functionName = parms[1]; + var guid = parms[2]; + var allParms = [guid] + if (parmData) { + var json = JSON.stringify(parmData); + allParms.push(json) + } + window.unityInstance.SendMessage(objName, functionName, JSON.stringify(allParms)); + } + + const onResponse = UTF8ToString(responseCallback) + const onError = UTF8ToString(errorCallback) + const request = UTF8ToString(jsonData) + const m = UTF8ToString(methodData) + const i = UTF8ToString(idData) + + ethereum.request(JSON.parse(request)) + .then((result) => DoUnityCallback(onResponse, { + method: m, + id: i, + jsonrpc: "2.0", + result, + })) + .catch((e) => DoUnityCallback(onError, e)) +}, + +_TerminateMetaMaskJS: function() { + if (window.MMSDK) { + console.log("Running MMSDK.terminate()") + window.MMSDK.terminate() + } else { + console.log("Did not run MMSDK.terminate()") + } +}, + +_DisconnectMetaMaskJS: function() { + if (window.MMSDK) { + console.log("Checking if we can disconnect") + var connection = window.MMSDK._getRemoteConnection() + if (connection) { + console.log("Running window.MMSDK._getRemoteConnection().disconnect()") + connection.disconnect() + } else { + console.log("No remote connection to disconnect") + } + } else { + console.log("Did not disconnect MMSDK") + } +}, + +_HasMetaMaskJSSession: function() { + return window.MMSDK && window.MMSDK.isAuthorized(); +} +}; + +mergeInto(LibraryManager.library, LibraryMetaMaskDeeplink); diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib.meta new file mode 100644 index 00000000..5d2d4be2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/MetaMaskDeeplink.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 5197522091efa134ba069102c6031fe8 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS.meta new file mode 100644 index 00000000..fd71f2e7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1d31d777178347d7be6817e2417f132 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket.meta new file mode 100644 index 00000000..1a7d7241 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f6b3743758634b66aae1e0b8025728a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm new file mode 100644 index 00000000..b0e374f6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm @@ -0,0 +1,41 @@ +// +// UnityWebSocket.m +// MetaMask.iOS +// +// Created by Hasan Bayat on 2/20/23. +// + +#import + +#import +#import + +#import "UnityAppController.h" + +extern bool _unityAppReady; + +@interface MetaMaskAppController : UnityAppController +{ +} + +- (BOOL)application:(UIApplication *)application +willFinishLaunchingWithOptions:(NSDictionary *)launchOptions; +@end + +@implementation MetaMaskAppController +static MetaMaskAppController* instance; + ++(MetaMaskAppController*)getInstance { + return instance; +} + +- (BOOL)application:(UIApplication *)application +willFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + return [super application: application willFinishLaunchingWithOptions: launchOptions]; +} + +@end + + +IMPL_APP_CONTROLLER_SUBCLASS(MetaMaskAppController) diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm.meta new file mode 100644 index 00000000..1c359486 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/UnityWebSocket/MetaMaskAppController.mm.meta @@ -0,0 +1,48 @@ +fileFormatVersion: 2 +guid: 9bc3211d59ab847629520df1b5ba9b55 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos.meta new file mode 100644 index 00000000..0c66eda6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f9a6e4aa19c348e4a88f042d2e714a6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework.meta new file mode 100644 index 00000000..07a061f6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 3c47536d0986c4b19aa845866529847f +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: true + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: Network; + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Frameworks.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Frameworks.meta new file mode 100644 index 00000000..ddc330b0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Frameworks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd476a1967828470e9690f918cd2be1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers.meta new file mode 100644 index 00000000..0b26cbe5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 188fd78f7679145a4a6467e83c7ea461 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h new file mode 100644 index 00000000..0b75d9c3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h @@ -0,0 +1,22 @@ +// +// MetaMaskAppController.h +// MetaMask.iOS +// +// Created by Hasan Bayat on 2/20/23. +// + +#ifndef MetaMaskAppController_h +#define MetaMaskAppController_h + +#import "WebSocketProvider.h" + +@class MetaMaskAppController; + +//@interface MetaMaskAppController +// +//+(MetaMaskAppController*)getInstance; +//-(void)scheduleProcessingTask:(WebSocketClient*)socket; +// +//@end + +#endif /* MetaMaskAppController_h */ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h.meta new file mode 100644 index 00000000..cca6a600 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMaskAppController.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2c5d81581a197485fbe3bab577ac62d1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h new file mode 100644 index 00000000..0188a3ff --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h @@ -0,0 +1,377 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +#ifndef METAMASK_IOS_SWIFT_H +#define METAMASK_IOS_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +#endif + +#import + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="MetaMask_iOS",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) + +@class NSString; +@class NSData; + +SWIFT_CLASS("_TtC12MetaMask_iOS14UnityWebSocket") +@interface UnityWebSocket : NSObject ++ (id _Nonnull)createWebSocket:(NSString * _Nonnull)url SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic) int32_t instanceId; +@property (nonatomic) WebSocketTextMessageReceivedCallback _Nullable textMessageReceived; +@property (nonatomic) WebSocketBinaryMessageReceivedCallback _Nullable binaryMessageReceived; +@property (nonatomic) WebSocketOpenedCallback _Nullable opened; +@property (nonatomic) WebSocketClosedCallback _Nullable closed; +@property (nonatomic) WebSocketErrorCallback _Nullable errorOccured; +@property (nonatomic, copy) NSString * _Nonnull url; +- (nonnull instancetype)initWithUrl:(NSString * _Nonnull)url OBJC_DESIGNATED_INITIALIZER; +- (void)connect; +- (void)disconnect; +- (void)sendText:(NSString * _Nonnull)text; +- (void)sendBytes:(NSData * _Nonnull)bytes; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_CLASS("_TtC12MetaMask_iOS15WebSocketClient") +@interface WebSocketClient : UnityWebSocket +- (nonnull instancetype)initWithUrl:(NSString * _Nonnull)url OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_EXTERN void unityWebSocket_connect(int32_t instanceId); + + +SWIFT_EXTERN int32_t unityWebSocket_create(char const * _Nullable urlPtr) SWIFT_WARN_UNUSED_RESULT; + + +SWIFT_EXTERN void unityWebSocket_destroy(int32_t instanceId); + + +SWIFT_EXTERN void unityWebSocket_disconnect(int32_t instanceId); + + +SWIFT_EXTERN void unityWebSocket_sendBytes(int32_t instanceId, NSData * _Nonnull bytes); + + +SWIFT_EXTERN void unityWebSocket_sendText(int32_t instanceId, char const * _Nullable stringPtr); + + +SWIFT_EXTERN void unityWebSocket_setBinaryMessageReceivedCallback(int32_t instanceId, void * _Nullable callbackPtr); + + +SWIFT_EXTERN void unityWebSocket_setConnectedCallback(int32_t instanceId, void * _Nullable callbackPtr); + + +SWIFT_EXTERN void unityWebSocket_setDisconnectedCallback(int32_t instanceId, void * _Nullable callbackPtr); + + +SWIFT_EXTERN void unityWebSocket_setErrorCallback(int32_t instanceId, void * _Nullable callbackPtr); + + +SWIFT_EXTERN void unityWebSocket_setTextMessageReceivedCallback(int32_t instanceId, void * _Nullable callbackPtr); + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h.meta new file mode 100644 index 00000000..147c6b11 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS-Swift.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a0f4655cf502b7c47b67fcf2c23f350b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h new file mode 100644 index 00000000..572494e1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h @@ -0,0 +1,19 @@ +// +// MetaMask_iOS.h +// MetaMask.iOS +// +// Created by Hasan Bayat on 2/11/23. +// + +#import + +//! Project version number for MetaMask_iOS. +FOUNDATION_EXPORT double MetaMask_iOSVersionNumber; + +//! Project version string for MetaMask_iOS. +FOUNDATION_EXPORT const unsigned char MetaMask_iOSVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h.meta new file mode 100644 index 00000000..cda99641 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/MetaMask_iOS.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef9bb720a7e264467a864884cfa06488 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h new file mode 100644 index 00000000..3856dfe8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h @@ -0,0 +1,48 @@ +// +// WebSocketProvider.h +// MetaMask.iOS +// +// Created by Hasan Bayat on 2/23/23. +// + +#ifndef WebSocketProvider_h +#define WebSocketProvider_h + +#import "WebSocketProvider.h" + +@class WebSocketClient; + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*WebSocketTextMessageReceivedCallback)(int instanceId, const char* _Nonnull message); +typedef void (*WebSocketBinaryMessageReceivedCallback)(int instanceId, uint8_t* _Nonnull message); +typedef void (*WebSocketOpenedCallback)(int instanceId); +typedef void (*WebSocketClosedCallback)(int instanceId, int code); +typedef void (*WebSocketErrorCallback)(int instanceId, const char* _Nonnull error); +#ifdef __cplusplus +} +#endif + +@protocol WebSocketProvider + ++(id _Nonnull)createWebSocket:(NSString*_Nonnull) url; + +@required +@property(nonatomic, readwrite)int instanceId; +@property(nonatomic, strong, nonnull)NSString *url; +@property(nonatomic, readwrite, nullable)WebSocketTextMessageReceivedCallback textMessageReceived; +@property(nonatomic, readwrite, nullable)WebSocketBinaryMessageReceivedCallback binaryMessageReceived; +@property(nonatomic, readwrite, nullable)WebSocketOpenedCallback opened; +@property(nonatomic, readwrite, nullable)WebSocketClosedCallback closed; +@property(nonatomic, readwrite, nullable)WebSocketErrorCallback errorOccured; + +-(id _Nonnull)initWithUrl:(nonnull NSString*)url; +-(void)connect; +-(void)disconnect; +-(void)sendText:(nonnull NSString*) text; +-(void)sendBytes:(nonnull NSData*) bytes; + +@end + +#endif /* WebSocketProvider_h */ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h.meta new file mode 100644 index 00000000..82919226 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Headers/WebSocketProvider.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 79c072e4142fe4ed0b87007a9f95b03a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist new file mode 100644 index 00000000..6d8357e5 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist.meta new file mode 100644 index 00000000..9f64ae47 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 38d2be644bf65447a9dea153f5a0c3f6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS new file mode 100644 index 00000000..8055a268 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS.meta new file mode 100644 index 00000000..e3e5678f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/MetaMask_iOS.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a5906b6843b999740ba888682ef3de5b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules.meta new file mode 100644 index 00000000..edad5f13 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ece85ae858eb94e2b8d2152b97920dcd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule.meta new file mode 100644 index 00000000..b4ca3ede --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 386045794aefbba4098cd9adfaae5725 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project.meta new file mode 100644 index 00000000..af34713b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0aab2f224a308840a73d713ac7e5ba2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 00000000..a4a8fc5c Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta new file mode 100644 index 00000000..f57201ce --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2b04439dc1ce9e441a68cfd75455ae3f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 00000000..dc109fc0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json.meta new file mode 100644 index 00000000..d3ba75a2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: efa8f2dfe9b458548bd67c0295522555 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 00000000..3347f317 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc.meta new file mode 100644 index 00000000..abf79b70 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba21ce0626a98e540a6646f0d19a27af +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 00000000..122491df Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule.meta new file mode 100644 index 00000000..97ffef8a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fc18f28cbc9ded64b9fb7fd7e69bea3a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap new file mode 100644 index 00000000..8d9042a3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module MetaMask_iOS { + umbrella header "MetaMask_iOS.h" + export * + + module * { export * } +} + +module MetaMask_iOS.Swift { + header "MetaMask_iOS-Swift.h" + requires objc +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap.meta new file mode 100644 index 00000000..edb48742 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Modules/module.modulemap.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6a2adbe87cde54169835a72e5b040d70 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile new file mode 100644 index 00000000..28db9a39 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile @@ -0,0 +1,15 @@ +# Uncomment the next line to define a global platform for your project +platform :ios, '12.0' + +target 'MetaMask.iOS' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for MetaMask.iOS + pod 'Starscream', '~> 4.0.6' + + target 'MetaMask.iOSTests' do + # Pods for testing + end + +end diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile.meta new file mode 100644 index 00000000..3e3fd047 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/Podfile.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4517c92fff3484b09bf3e4321d193b98 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature.meta new file mode 100644 index 00000000..9102d9f9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 770c44d01a7bc47dbb807d602f54dd9d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..5af89422 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources @@ -0,0 +1,267 @@ + + + + + files + + Frameworks/Pods_MetaMask_iOS.framework/Frameworks/Starscream.framework/Info.plist + + JV70riwJIDI8utYXIaQVQ/rfF5Q= + + Frameworks/Pods_MetaMask_iOS.framework/Frameworks/Starscream.framework/Starscream + + iox82jaZwCKQdXV9q8bKIKIJlME= + + Frameworks/Pods_MetaMask_iOS.framework/Info.plist + + vWA+UD6BGm2lVUn6GVBzcUBgbQA= + + Frameworks/Pods_MetaMask_iOS.framework/Pods_MetaMask_iOS + + vQZjoDLB0wQlQHNggQs3yAfnXyU= + + Frameworks/Pods_MetaMask_iOS.framework/_CodeSignature/CodeResources + + WIOsTzM1UsUZteyDMaxop/e/nhs= + + Headers/MetaMaskAppController.h + + /j+PQLS2oPmmwemS9pdNGOYTc/g= + + Headers/MetaMask_iOS-Swift.h + + r+6+23k7lfqKEoinADJN3AW1fSU= + + Headers/MetaMask_iOS.h + + YH9KJx/weev/4HkN/lMvYr9Ji3U= + + Headers/WebSocketProvider.h + + dDclkR6x2N/apeQpkzjb/1PTeFQ= + + Info.plist + + OnpNcih4Qp4sHhH79BzoTCSuAbY= + + Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + 2qB+JE1RGO+YOB8OAr8E6aRhxFg= + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json + + FSPnLbho3G+LL9smI3XgVOqBIQ4= + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc + + oqPzskf5C/CCWrcpTj9giERtu+4= + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule + + 3px6k/XLwhdL9pbXOkkXbSqA24w= + + Modules/module.modulemap + + ElT7VOmCbjMGMNs7LBZTPlSjr/0= + + Podfile + + rLiiP1jjyOYXRS/fiH6rRX3oal4= + + + files2 + + Frameworks/Pods_MetaMask_iOS.framework/Frameworks/Starscream.framework/Info.plist + + hash2 + + t6Jj5wlNctkKvZF4aHIj8bWAuqPKYaezEkUP+4kAsKs= + + + Frameworks/Pods_MetaMask_iOS.framework/Frameworks/Starscream.framework/Starscream + + hash2 + + iln2fm3yCarz0Mg6EvEkVD/OIQ1qIgPCL+v2tZY+37M= + + + Frameworks/Pods_MetaMask_iOS.framework/Info.plist + + hash2 + + Zc6e+txJdAAjXATS/HtNwZzjkyaDRAmouH/NCpRCqhs= + + + Frameworks/Pods_MetaMask_iOS.framework/Pods_MetaMask_iOS + + hash2 + + wu1mCsudih2EByx88Q7ZKeo9yfOHEb5osE++F8vxeHo= + + + Frameworks/Pods_MetaMask_iOS.framework/_CodeSignature/CodeResources + + hash2 + + NxSZc8a+sz8hAM2PS8YZzriMmClAkqyMZXNi0/4rmN8= + + + Headers/MetaMaskAppController.h + + hash2 + + Q9bG/09jnBIzrTlaNBuRTQyVOX1BQmUNlE/ADciMj0M= + + + Headers/MetaMask_iOS-Swift.h + + hash2 + + +9nzQHIGbmQMFiCJTfBj5iD7pBf11F3wEr30ww+0baA= + + + Headers/MetaMask_iOS.h + + hash2 + + dEf+okRErpZk1vuYx4DO8TqeYyvu2nwZ5HGkJbQhtHs= + + + Headers/WebSocketProvider.h + + hash2 + + 7brVGGYKkfAMHS/V8je/u+HleU5DgPDSn0rn9dgTZB8= + + + Modules/MetaMask_iOS.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + hash2 + + seNUm+6bWMCTgCtZkj5fN9Q4XkYQT8xcI0nzBNFl55g= + + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.abi.json + + hash2 + + KnRdWE4y6t4QM5zi5JDptPdHFgJy1Tku+7GLkZS2aNM= + + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftdoc + + hash2 + + OPu+71nM3a7eGnLexjvHrBOA8jJDXiVufhRubly7ADg= + + + Modules/MetaMask_iOS.swiftmodule/arm64-apple-ios.swiftmodule + + hash2 + + IMi1FYL1gNz8EVLYnYeV2gDiW1p+diTWkMf8vEz95pA= + + + Modules/module.modulemap + + hash2 + + diFBrlUKk/7kKdc2YPMfBydNt8hr8ZQrXJfoNGHsti8= + + + Podfile + + hash2 + + V6rg/EIpVNSL6s8p5gwBtncdxW0SjSdlDlLr5wA0RuI= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources.meta new file mode 100644 index 00000000..2698defd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/MetaMask_iOS.framework/_CodeSignature/CodeResources.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 078c1b455824d400fa9b913494dc331d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework.meta new file mode 100644 index 00000000..9d50d648 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 04cadc2cb9ee349e9921acdf993038cc +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: true + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: Network; + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers.meta new file mode 100644 index 00000000..0228fe06 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b5ebd6e98bba534da9dee2c1506c96d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h new file mode 100644 index 00000000..5ffbdd8d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h @@ -0,0 +1,336 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +#ifndef STARSCREAM_SWIFT_H +#define STARSCREAM_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="Starscream",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +@class NSStream; + +SWIFT_CLASS("_TtC10Starscream19FoundationTransport") +@interface FoundationTransport : NSObject +- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(NSStreamEvent)eventCode; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@class NSURLSession; +@class NSURLSessionWebSocketTask; +@class NSString; +@class NSData; +@class NSURLSessionTask; + +SWIFT_CLASS("_TtC10Starscream12NativeEngine") SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(ios,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) +@interface NativeEngine : NSObject +- (void)URLSession:(NSURLSession * _Nonnull)session webSocketTask:(NSURLSessionWebSocketTask * _Nonnull)webSocketTask didOpenWithProtocol:(NSString * _Nullable)protocol; +- (void)URLSession:(NSURLSession * _Nonnull)session webSocketTask:(NSURLSessionWebSocketTask * _Nonnull)webSocketTask didCloseWithCode:(NSURLSessionWebSocketCloseCode)closeCode reason:(NSData * _Nullable)reason; +- (void)URLSession:(NSURLSession * _Nonnull)session task:(NSURLSessionTask * _Nonnull)task didCompleteWithError:(NSError * _Nullable)error; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h.meta new file mode 100644 index 00000000..adc9bb7d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-Swift.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b093fd32204a4a4087db5e6bf3e0fc4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h new file mode 100644 index 00000000..7bffee0b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double StarscreamVersionNumber; +FOUNDATION_EXPORT const unsigned char StarscreamVersionString[]; + diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h.meta new file mode 100644 index 00000000..57d01893 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Headers/Starscream-umbrella.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fee0f7a282ec105489ae5d600aaa7b4c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist new file mode 100644 index 00000000..46b1a351 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist.meta new file mode 100644 index 00000000..389960c3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3917a3aeb4571784e8900a40e85fd8e7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules.meta new file mode 100644 index 00000000..c0ab741a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbe3e43cf9e26cc45931c8ce80d51d2a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule.meta new file mode 100644 index 00000000..81314bdf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 200026eef8e155845b5c2b77756a4afa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project.meta new file mode 100644 index 00000000..409e3bff --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1021fc012aef8d34eb42f87e472856e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 00000000..0e99e5a8 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta new file mode 100644 index 00000000..9faf6078 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 47a744bb62385ad439d6d58317688dbd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 00000000..dc109fc0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json.meta new file mode 100644 index 00000000..0c0cd2ae --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.abi.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 162436dfe0f120c48aae7cc3d95fcd03 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 00000000..691e8e40 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc.meta new file mode 100644 index 00000000..d8838ad6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftdoc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0638618dbb77f114a8d079b8ca916ac5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 00000000..6d1e8ed2 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule.meta new file mode 100644 index 00000000..f896ba4d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/Starscream.swiftmodule/arm64-apple-ios.swiftmodule.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 63274895637ab2143b1474118953b601 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap new file mode 100644 index 00000000..f1e7d85f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module Starscream { + umbrella header "Starscream-umbrella.h" + + export * + module * { export * } +} + +module Starscream.Swift { + header "Starscream-Swift.h" + requires objc +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap.meta new file mode 100644 index 00000000..c374f9f0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Modules/module.modulemap.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 67acb40014f2f2a42b9a88ab36f7938c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream new file mode 100644 index 00000000..4c29308d Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream.meta new file mode 100644 index 00000000..423eece9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Plugins/iOS/iphoneos/Starscream.framework/Starscream.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5498b6b5e8bc0e04b89407dde63ad47c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources.meta new file mode 100644 index 00000000..deb3b904 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a0f22139a534bc4dbb29857a64e535d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask.meta new file mode 100644 index 00000000..ab0480e6 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7df368dcdf20d7c4c90df849ba4d3a08 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config.meta new file mode 100644 index 00000000..fcc3e801 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d60a2a35815acf148b7c1d7540f9e759 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset new file mode 100644 index 00000000..3d99d706 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77f59ac8818a0fe45a3283d7576eead3, type: 3} + m_Name: Default + m_EditorClassIdentifier: + log: 0 + appName: thirdweb + appUrl: https://thirdweb.com + appIcon: iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAG90lEQVR4AeVbS48UVRS+/RgYQwySCKIREwPu0Dik0TABEVeo4Te4cKELIltNWBEJJj6ixsWExCVbXEwcUBMegQx2aMVHlIAgyYDOMGhmUDoU09Xdft+tPtW3qqumHlNNd49ncvq+vnPuPeee+6jqnpzqPq1HF7vAm8AbwE+DWfcQeBhsgUm3wTPgn8FT4Kvgk+Bp8MARjf0Y/Bu4uUSmDuqizr6nfRhhFkaHOY262UffEQcVNuhu1TMqek40nGu0W0ZG6b2JvnsSEVyPx3pouN8xHMt92yN295HhfkdwbF2lg9Du77Tfyu93ywPcdPrN2LDxcElkSv203sOM9tdn5oRBmvnMnTAIa95vtL/8Qdq10M+7vd/IqHLi04FnapTSQWtPdE8YxE0vakJib4q9uNdHDT6r9o5rcy5gg/gTdY8G1C+HqlswYp1pSN4sIE8PLVfjaepasOcp0h8BfN5OtFlQ6wCSa7cZAZz9/4PxnC93L3A9gcquzP4wuzNIXgAaVZ5sUrxHOH7hCqBPES4O4MzTAZG0Z6ikDq9608XNqQfcPDPTtlKn7bI6YH2q62nQ4VVvqT1Dz+uy/w3nPPAngN+fEq+Vpvt4GWLHZQnsjatjz4pSJHRn0TGWQBouxocJvgQ8OQ0+TGeM+t3EiANejSGgIeMLlVhQccJ4rRwLLw5Iio+lPBikbaYDHgHH3vzGaxV1F2EvrNdsE2rAVn0IL/mHNY8Wt+tuueaP1M6oOUiQiRcZ4udQIo8Ud+LLgvX6S4IjcNoccOQoPCBpiTY/TgfsSqphImBWrUZBWc2Cq2p7cVRtL27T5Qlf1Fh0WABtLW5p4b1RE4UPUBW36kWOJPbsi9a9VWeDk3JYugNOIE0gavzkdxjbS8URDYvjYBOvhdJ9bKQDnkgjK4Pk7NCYIGIUCIkTwmaTuBIi4JXWaWHqFx3+lPgR/C2BNnDkb4P5nV0ispp19Vz+WTVcKKp7OEybuaZev7XWvlrFcphvFNWsuq5uNKZ0FLxQfEM9WGgqO4du83nILagccPfATcjdAd7KrVQ/2OfV17Xv1Jbia2pNBP5ublhdaJxNNHYDrBdjqrv/Cdsb1lUjCmi80Ghxh2TVpN0eaLW54NYzU204+8JWI2rO25MuJgw/UnA2WxeYLLOOvepNOZmcg6YTqsaGZhouBvE02NY6ESbtMx3deGRajiu1nFCxz8XCvz70TgcuZsVqOsB7lYspSdh+awwzV9AcJCbGSRScQwRcs+fgtODZFx2l1ulRQQTEwYtcinSlE3cpJEXkGxyJNFSM5blPLuQbqpCrq4u46q5RDFPnRK/YF9U/9RUu14CpAasZ+WvAP6xG1aZCCXosFYWfh+YnsQw2p1wKdMBdcGo6Z6xTU4ksAanbXHBOhEPWh1LlSTvweWfvSIr3KI0u3KMDOGGpadK3TiUSqNDMb847lyLWnzWcZmLMvDmjSfHsIybdpgP8D2gxZduwScMg1vpns410cme6jPf3t0h5lg74ZRFAZBPD5yDCeh5rnLyA+/0Q9oQFMtrkTl9VDZScYDuLqJm2Lc1h+HK9fWRqPGSnwXHwkYNuA36kA6ba5fS5snnGB6gZrx3y1Fbq7ft+1dPiFC41vEdmBe8MhOLgBRuRTtEBVyJAsZrLvjOeg5SBXjZmU5SN1bzPE4KVdr/MWOuFibRH4QUXkf5OB5yMAMVqZgSQ/QOjsH82RaEZBawTWb/xLt6Igjh4kVskPUUH3ARnEgU37Fnc/ZVmMWbenlZhBpVr5/UPA/+FDHcI50Y2rPzLBU2aylYyvMiFpLT5Oh1A+tJJlvZ51P68Q8G1pveZwQRcUJ1X3cv10ybEk0+K9wh3FrTN4oDPOtvT1czUvcF0oj62qKJfjc2QwEuNcAewPSmeMiF0nPXiAI7aO/IQqajq72tfuZALRt6t9GWOGpshjVssAiiaFO/rToq0VTug/dzqOGO3INKmM3i7fqf5t+aJenRg2TjbZ4Enf1v/Ahshbw7hlBQfoukA6vW5ilcZHurKlyOeHvqj4NotS0CGFT1lghzc9BNz6K4njEo+G6w3yssp+xeMWWsa5I8Atr1nApZZ/t249hwDMKtfZfSLHtoUmzYB2S8Dz2octCkR8UjMqvNe69mXyHIDzGfYXg9+qf1/ZNiTKjvI+0Gidb+YdwbRCZkZL44ZJCdkbrw4gXeEpa7JbssHv3cXCzJI+/l0SL3bJ/ULz9R+WhIcS+JzPqnRQXh6fAbc7bAO0883cPdt1oMcIHW9+K8Sz09eZSC9TjkbfKcQNmNLrafuvpjxKEdzPXKGsnAGdVAXN9/MKeh9QNadPAaFu8AbwfwpzjNgvm9YDV4J5hgsMP99nq/ofwJPga+CT4H/AHeN/gPUFQ3/3IjFOgAAAABJRU5ErkJggg== + userAgent: UnityUGUITransport/1.0.0 + encrypt: 1 + encryptionPassword: UnityUGUITransport/1.0.0 + sessionIdentifier: metamask.session.data + socketUrl: https://metamask-sdk-socket.metafi.codefi.network/ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset.meta new file mode 100644 index 00000000..4d9e520b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Config/Default.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cbb8289bcfbdba43817188b3b4f15e0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages.meta new file mode 100644 index 00000000..bc5f4340 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71f71c1e5213d400687c03512ff0cac9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd new file mode 100644 index 00000000..e13d2918 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd.meta new file mode 100644 index 00000000..b1ff92a3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Button.psd.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: ba702c802fd794e19a1c73e06f4f24a8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd new file mode 100644 index 00000000..e5cd25ad Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta new file mode 100644 index 00000000..cd8e7375 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_EditorWindow_BG.psd.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: a1859c32e58fe4a31a846841612beeb5 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png new file mode 100644 index 00000000..d211c608 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta new file mode 100644 index 00000000..9765afac --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/MetaMask_Header_Logo.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: c4c4ee17b816143f6b15467a5b756cf8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png new file mode 100644 index 00000000..f9fe7ec6 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png.meta new file mode 100644 index 00000000..5827ab22 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Logo.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: ec349c7000ed34f23959c1e4521c27d3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png new file mode 100644 index 00000000..778664e1 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta new file mode 100644 index 00000000..06d6cb82 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/EditorImages/Metamask_Stacked_Logo.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 3f68bfdda61a64ab2844eed5722e882d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts.meta new file mode 100644 index 00000000..8b69c587 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c9f9bc62d39e9a42a36d7ad1cc69b69 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset new file mode 100644 index 00000000..7577fb86 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset @@ -0,0 +1,2815 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: Euclid Circular B Bold SDF + m_EditorClassIdentifier: + hashCode: 1443423765 + material: {fileID: 6533919911057610552} + materialHashCode: -942182763 + m_Version: 1.1.0 + m_SourceFontFileGUID: 43444f92e50d29a4493df8ff6863aa09 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 43444f92e50d29a4493df8ff6863aa09, type: 3} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Euclid Circular B + m_StyleName: Bold + m_PointSize: 96 + m_Scale: 1 + m_UnitsPerEM: 1000 + m_LineHeight: 121.728 + m_AscentLine: 96 + m_CapLine: 69 + m_MeanLine: 48 + m_Baseline: 0 + m_DescentLine: -25.727999 + m_SuperscriptOffset: 96 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -25.727999 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -36.864 + m_UnderlineThickness: 9.599999 + m_StrikethroughOffset: 19.2 + m_StrikethroughThickness: 9.599999 + m_TabWidth: 22 + m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 21.59375 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 4 + m_Metrics: + m_Width: 20.53125 + m_Height: 68.921875 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 28.03125 + m_GlyphRect: + m_X: 258 + m_Y: 538 + m_Width: 22 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 5 + m_Metrics: + m_Width: 31.484375 + m_Height: 28.609375 + m_HorizontalBearingX: 5.375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 42.234375 + m_GlyphRect: + m_X: 260 + m_Y: 973 + m_Width: 32 + m_Height: 30 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 6 + m_Metrics: + m_Width: 63.46875 + m_Height: 68.15625 + m_HorizontalBearingX: 2.96875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.40625 + m_GlyphRect: + m_X: 295 + m_Y: 287 + m_Width: 65 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 7 + m_Metrics: + m_Width: 45.03125 + m_Height: 85.0625 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 76.609375 + m_HorizontalAdvance: 51.84375 + m_GlyphRect: + m_X: 11 + m_Y: 697 + m_Width: 46 + m_Height: 86 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 8 + m_Metrics: + m_Width: 88.609375 + m_Height: 69.6875 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 68.921875 + m_HorizontalAdvance: 93.796875 + m_GlyphRect: + m_X: 306 + m_Y: 774 + m_Width: 90 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 9 + m_Metrics: + m_Width: 69.5 + m_Height: 70.375 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 74.59375 + m_GlyphRect: + m_X: 133 + m_Y: 106 + m_Width: 71 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 10 + m_Metrics: + m_Width: 12.09375 + m_Height: 28.609375 + m_HorizontalBearingX: 5.375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 22.84375 + m_GlyphRect: + m_X: 187 + m_Y: 641 + m_Width: 13 + m_Height: 30 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 11 + m_Metrics: + m_Width: 23.71875 + m_Height: 92.15625 + m_HorizontalBearingX: 3.546875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 29.28125 + m_GlyphRect: + m_X: 11 + m_Y: 241 + m_Width: 25 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 12 + m_Metrics: + m_Width: 23.71875 + m_Height: 92.15625 + m_HorizontalBearingX: 2.015625 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 29.28125 + m_GlyphRect: + m_X: 11 + m_Y: 355 + m_Width: 24 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 13 + m_Metrics: + m_Width: 43.109375 + m_Height: 40.890625 + m_HorizontalBearingX: 2.78125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 48.578125 + m_GlyphRect: + m_X: 313 + m_Y: 968 + m_Width: 44 + m_Height: 42 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 14 + m_Metrics: + m_Width: 40.328125 + m_Height: 40.421875 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 47.046875 + m_GlyphRect: + m_X: 450 + m_Y: 701 + m_Width: 41 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 15 + m_Metrics: + m_Width: 21.5 + m_Height: 34.65625 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 19.78125 + m_HorizontalAdvance: 27.75 + m_GlyphRect: + m_X: 154 + m_Y: 975 + m_Width: 23 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 16 + m_Metrics: + m_Width: 28.21875 + m_Height: 13.828125 + m_HorizontalBearingX: 5.28125 + m_HorizontalBearingY: 33.796875 + m_HorizontalAdvance: 38.78125 + m_GlyphRect: + m_X: 140 + m_Y: 313 + m_Width: 29 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 17 + m_Metrics: + m_Width: 20.546875 + m_Height: 20.546875 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 19.78125 + m_HorizontalAdvance: 27.453125 + m_GlyphRect: + m_X: 221 + m_Y: 641 + m_Width: 21 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 18 + m_Metrics: + m_Width: 50.125 + m_Height: 78.71875 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 53.375 + m_GlyphRect: + m_X: 55 + m_Y: 469 + m_Width: 51 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 19 + m_Metrics: + m_Width: 51.546875 + m_Height: 70.375 + m_HorizontalBearingX: 4.609375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 60.765625 + m_GlyphRect: + m_X: 78 + m_Y: 697 + m_Width: 53 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 20 + m_Metrics: + m_Width: 29.28125 + m_Height: 68.15625 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 36.484375 + m_GlyphRect: + m_X: 483 + m_Y: 191 + m_Width: 30 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 21 + m_Metrics: + m_Width: 47.03125 + m_Height: 69.3125 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 55.390625 + m_GlyphRect: + m_X: 368 + m_Y: 865 + m_Width: 48 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 22 + m_Metrics: + m_Width: 49.625 + m_Height: 70.375 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 56.640625 + m_GlyphRect: + m_X: 11 + m_Y: 897 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 23 + m_Metrics: + m_Width: 56.53125 + m_Height: 68.15625 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 61.734375 + m_GlyphRect: + m_X: 371 + m_Y: 673 + m_Width: 58 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 24 + m_Metrics: + m_Width: 48.671875 + m_Height: 69.21875 + m_HorizontalBearingX: 2.875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 55.296875 + m_GlyphRect: + m_X: 231 + m_Y: 881 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 25 + m_Metrics: + m_Width: 48 + m_Height: 69.21875 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.90625 + m_GlyphRect: + m_X: 189 + m_Y: 692 + m_Width: 49 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 26 + m_Metrics: + m_Width: 48.28125 + m_Height: 68.15625 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.984375 + m_GlyphRect: + m_X: 381 + m_Y: 284 + m_Width: 49 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 27 + m_Metrics: + m_Width: 49.140625 + m_Height: 70.375 + m_HorizontalBearingX: 3.84375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 56.828125 + m_GlyphRect: + m_X: 82 + m_Y: 897 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 28 + m_Metrics: + m_Width: 48 + m_Height: 69.3125 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 54.90625 + m_GlyphRect: + m_X: 199 + m_Y: 447 + m_Width: 49 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 29 + m_Metrics: + m_Width: 20.53125 + m_Height: 49.921875 + m_HorizontalBearingX: 4.421875 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 29.375 + m_GlyphRect: + m_X: 534 + m_Y: 187 + m_Width: 21 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 30 + m_Metrics: + m_Width: 21.5 + m_Height: 64.03125 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 29.375 + m_GlyphRect: + m_X: 528 + m_Y: 101 + m_Width: 22 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 31 + m_Metrics: + m_Width: 42.34375 + m_Height: 48.578125 + m_HorizontalBearingX: 2.296875 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 47.046875 + m_GlyphRect: + m_X: 450 + m_Y: 630 + m_Width: 43 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 32 + m_Metrics: + m_Width: 40.328125 + m_Height: 32.546875 + m_HorizontalBearingX: 5.5625 + m_HorizontalBearingY: 44.0625 + m_HorizontalAdvance: 51.453125 + m_GlyphRect: + m_X: 198 + m_Y: 975 + m_Width: 41 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 33 + m_Metrics: + m_Width: 42.328125 + m_Height: 48.578125 + m_HorizontalBearingX: 2.40625 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 47.046875 + m_GlyphRect: + m_X: 494 + m_Y: 763 + m_Width: 43 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 34 + m_Metrics: + m_Width: 43.875 + m_Height: 70.078125 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 50.203125 + m_GlyphRect: + m_X: 302 + m_Y: 876 + m_Width: 45 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 35 + m_Metrics: + m_Width: 70.1875 + m_Height: 70.375 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 76.796875 + m_GlyphRect: + m_X: 181 + m_Y: 11 + m_Width: 71 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 36 + m_Metrics: + m_Width: 72.1875 + m_Height: 68.15625 + m_HorizontalBearingX: -0.09375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 72 + m_GlyphRect: + m_X: 200 + m_Y: 313 + m_Width: 74 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 37 + m_Metrics: + m_Width: 50.6875 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 60.953125 + m_GlyphRect: + m_X: 451 + m_Y: 943 + m_Width: 51 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 38 + m_Metrics: + m_Width: 67.109375 + m_Height: 70.46875 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 72.1875 + m_GlyphRect: + m_X: 273 + m_Y: 11 + m_Width: 68 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 39 + m_Metrics: + m_Width: 57.984375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 68.640625 + m_GlyphRect: + m_X: 453 + m_Y: 11 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 40 + m_Metrics: + m_Width: 43.203125 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.8125 + m_GlyphRect: + m_X: 381 + m_Y: 467 + m_Width: 44 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 41 + m_Metrics: + m_Width: 41.953125 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.3125 + m_GlyphRect: + m_X: 451 + m_Y: 281 + m_Width: 43 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 42 + m_Metrics: + m_Width: 65 + m_Height: 70.46875 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 73.25 + m_GlyphRect: + m_X: 11 + m_Y: 804 + m_Width: 66 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 43 + m_Metrics: + m_Width: 57.984375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 72.390625 + m_GlyphRect: + m_X: 301 + m_Y: 493 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 44 + m_Metrics: + m_Width: 15.265625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 29.65625 + m_GlyphRect: + m_X: 491 + m_Y: 101 + m_Width: 16 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 45 + m_Metrics: + m_Width: 44.34375 + m_Height: 69.3125 + m_HorizontalBearingX: 1.921875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.984375 + m_GlyphRect: + m_X: 239 + m_Y: 784 + m_Width: 46 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 46 + m_Metrics: + m_Width: 62.5 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 67.203125 + m_GlyphRect: + m_X: 330 + m_Y: 194 + m_Width: 63 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 47 + m_Metrics: + m_Width: 43.484375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.984375 + m_GlyphRect: + m_X: 428 + m_Y: 374 + m_Width: 44 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 48 + m_Metrics: + m_Width: 70.453125 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 84.859375 + m_GlyphRect: + m_X: 238 + m_Y: 197 + m_Width: 71 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 49 + m_Metrics: + m_Width: 61.625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 76.03125 + m_GlyphRect: + m_X: 408 + m_Y: 101 + m_Width: 62 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 50 + m_Metrics: + m_Width: 70.46875 + m_Height: 70.46875 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 77.1875 + m_GlyphRect: + m_X: 225 + m_Y: 104 + m_Width: 71 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 51 + m_Metrics: + m_Width: 47.140625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 56.921875 + m_GlyphRect: + m_X: 414 + m_Y: 191 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 52 + m_Metrics: + m_Width: 85.15625 + m_Height: 70.46875 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 80.640625 + m_GlyphRect: + m_X: 131 + m_Y: 220 + m_Width: 86 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 53 + m_Metrics: + m_Width: 58.75 + m_Height: 68.15625 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 63.546875 + m_GlyphRect: + m_X: 301 + m_Y: 583 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 54 + m_Metrics: + m_Width: 49.734375 + m_Height: 70.46875 + m_HorizontalBearingX: 2.296875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 55.296875 + m_GlyphRect: + m_X: 115 + m_Y: 570 + m_Width: 51 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 55 + m_Metrics: + m_Width: 50.3125 + m_Height: 68.15625 + m_HorizontalBearingX: 2.109375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.53125 + m_GlyphRect: + m_X: 356 + m_Y: 377 + m_Width: 51 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 56 + m_Metrics: + m_Width: 56.0625 + m_Height: 69.3125 + m_HorizontalBearingX: 6.4375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 68.921875 + m_GlyphRect: + m_X: 153 + m_Y: 883 + m_Width: 57 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 57 + m_Metrics: + m_Width: 69.609375 + m_Height: 68.15625 + m_HorizontalBearingX: 0.09375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.796875 + m_GlyphRect: + m_X: 317 + m_Y: 104 + m_Width: 70 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 58 + m_Metrics: + m_Width: 89.578125 + m_Height: 69.3125 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 92.640625 + m_GlyphRect: + m_X: 259 + m_Y: 683 + m_Width: 91 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 59 + m_Metrics: + m_Width: 69.3125 + m_Height: 68.15625 + m_HorizontalBearingX: -0.859375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 67.578125 + m_GlyphRect: + m_X: 362 + m_Y: 11 + m_Width: 70 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 60 + m_Metrics: + m_Width: 65.09375 + m_Height: 68.15625 + m_HorizontalBearingX: 0.765625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 66.625 + m_GlyphRect: + m_X: 269 + m_Y: 403 + m_Width: 66 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 61 + m_Metrics: + m_Width: 52.609375 + m_Height: 68.15625 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 60.09375 + m_GlyphRect: + m_X: 437 + m_Y: 853 + m_Width: 54 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 62 + m_Metrics: + m_Width: 22.078125 + m_Height: 92.15625 + m_HorizontalBearingX: 6.90625 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 31.78125 + m_GlyphRect: + m_X: 11 + m_Y: 469 + m_Width: 23 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 63 + m_Metrics: + m_Width: 50.125 + m_Height: 78.71875 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 53.375 + m_GlyphRect: + m_X: 56 + m_Y: 355 + m_Width: 51 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 64 + m_Metrics: + m_Width: 22.078125 + m_Height: 92.15625 + m_HorizontalBearingX: 2.78125 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 31.78125 + m_GlyphRect: + m_X: 11 + m_Y: 583 + m_Width: 23 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 65 + m_Metrics: + m_Width: 24.484375 + m_Height: 20.15625 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 31.78125 + m_GlyphRect: + m_X: 107 + m_Y: 990 + m_Width: 26 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 66 + m_Metrics: + m_Width: 41.765625 + m_Height: 10.9375 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 49.0625 + m_GlyphRect: + m_X: 98 + m_Y: 664 + m_Width: 43 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 67 + m_Metrics: + m_Width: 27.0625 + m_Height: 18.234375 + m_HorizontalBearingX: -13.4375 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 91 + m_Y: 314 + m_Width: 28 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 68 + m_Metrics: + m_Width: 49.8125 + m_Height: 50.125 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 58.84375 + m_GlyphRect: + m_X: 381 + m_Y: 557 + m_Width: 50 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 69 + m_Metrics: + m_Width: 49.828125 + m_Height: 73.0625 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 58.84375 + m_GlyphRect: + m_X: 61 + m_Y: 125 + m_Width: 51 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 70 + m_Metrics: + m_Width: 48.46875 + m_Height: 50.125 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 53.375 + m_GlyphRect: + m_X: 493 + m_Y: 371 + m_Width: 49 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 71 + m_Metrics: + m_Width: 49.8125 + m_Height: 73.0625 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 58.84375 + m_GlyphRect: + m_X: 110 + m_Y: 11 + m_Width: 50 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 72 + m_Metrics: + m_Width: 49.140625 + m_Height: 50.125 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 55.390625 + m_GlyphRect: + m_X: 446 + m_Y: 464 + m_Width: 50 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 73 + m_Metrics: + m_Width: 37.53125 + m_Height: 72.578125 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 40.703125 + m_GlyphRect: + m_X: 55 + m_Y: 570 + m_Width: 39 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 74 + m_Metrics: + m_Width: 50.015625 + m_Height: 70.09375 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 58.9375 + m_GlyphRect: + m_X: 127 + m_Y: 456 + m_Width: 51 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 75 + m_Metrics: + m_Width: 46.46875 + m_Height: 72 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 57.796875 + m_GlyphRect: + m_X: 98 + m_Y: 790 + m_Width: 48 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 76 + m_Metrics: + m_Width: 18.140625 + m_Height: 72.578125 + m_HorizontalBearingX: 4.125 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 26.40625 + m_GlyphRect: + m_X: 91 + m_Y: 220 + m_Width: 19 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 77 + m_Metrics: + m_Width: 26.40625 + m_Height: 93.609375 + m_HorizontalBearingX: -3.359375 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 27.171875 + m_GlyphRect: + m_X: 11 + m_Y: 11 + m_Width: 28 + m_Height: 95 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 78 + m_Metrics: + m_Width: 49.921875 + m_Height: 72 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 53.765625 + m_GlyphRect: + m_X: 128 + m_Y: 354 + m_Width: 51 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 79 + m_Metrics: + m_Width: 14.5 + m_Height: 72 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 26.40625 + m_GlyphRect: + m_X: 152 + m_Y: 696 + m_Width: 16 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 80 + m_Metrics: + m_Width: 74.59375 + m_Height: 49.0625 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 85.921875 + m_GlyphRect: + m_X: 571 + m_Y: 95 + m_Width: 76 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 81 + m_Metrics: + m_Width: 46.46875 + m_Height: 49.0625 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 57.796875 + m_GlyphRect: + m_X: 593 + m_Y: 11 + m_Width: 48 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 82 + m_Metrics: + m_Width: 50.5 + m_Height: 50.125 + m_HorizontalBearingX: 2.96875 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 56.453125 + m_GlyphRect: + m_X: 378 + m_Y: 956 + m_Width: 52 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 83 + m_Metrics: + m_Width: 49.828125 + m_Height: 69.125 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 58.84375 + m_GlyphRect: + m_X: 167 + m_Y: 789 + m_Width: 51 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 84 + m_Metrics: + m_Width: 49.8125 + m_Height: 69.125 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 58.84375 + m_GlyphRect: + m_X: 187 + m_Y: 549 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 85 + m_Metrics: + m_Width: 30.625 + m_Height: 48.578125 + m_HorizontalBearingX: 5.953125 + m_HorizontalBearingY: 48.578125 + m_HorizontalAdvance: 38.6875 + m_GlyphRect: + m_X: 452 + m_Y: 537 + m_Width: 32 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 86 + m_Metrics: + m_Width: 38.6875 + m_Height: 50.125 + m_HorizontalBearingX: 2.5 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 44.25 + m_GlyphRect: + m_X: 515 + m_Y: 281 + m_Width: 40 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 87 + m_Metrics: + m_Width: 37.546875 + m_Height: 61.921875 + m_HorizontalBearingX: 1.53125 + m_HorizontalBearingY: 61.34375 + m_HorizontalAdvance: 42.234375 + m_GlyphRect: + m_X: 533 + m_Y: 11 + m_Width: 39 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 88 + m_Metrics: + m_Width: 45.40625 + m_Height: 49.0625 + m_HorizontalBearingX: 5.375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 56.734375 + m_GlyphRect: + m_X: 662 + m_Y: 11 + m_Width: 46 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 89 + m_Metrics: + m_Width: 55.484375 + m_Height: 48 + m_HorizontalBearingX: -0.09375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 55.296875 + m_GlyphRect: + m_X: 517 + m_Y: 444 + m_Width: 57 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 90 + m_Metrics: + m_Width: 77.1875 + m_Height: 48 + m_HorizontalBearingX: 0.28125 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 77.765625 + m_GlyphRect: + m_X: 505 + m_Y: 537 + m_Width: 78 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 91 + m_Metrics: + m_Width: 55.015625 + m_Height: 48 + m_HorizontalBearingX: 0.1875 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 55.390625 + m_GlyphRect: + m_X: 563 + m_Y: 354 + m_Width: 56 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 92 + m_Metrics: + m_Width: 55.484375 + m_Height: 68.0625 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 55.296875 + m_GlyphRect: + m_X: 417 + m_Y: 763 + m_Width: 56 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 93 + m_Metrics: + m_Width: 40.609375 + m_Height: 48 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 48.1875 + m_GlyphRect: + m_X: 512 + m_Y: 834 + m_Width: 42 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 94 + m_Metrics: + m_Width: 28.03125 + m_Height: 92.15625 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 33.3125 + m_GlyphRect: + m_X: 11 + m_Y: 127 + m_Width: 29 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 95 + m_Metrics: + m_Width: 12.09375 + m_Height: 78.71875 + m_HorizontalBearingX: 6.8125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 25.734375 + m_GlyphRect: + m_X: 57 + m_Y: 241 + m_Width: 13 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 96 + m_Metrics: + m_Width: 28.03125 + m_Height: 92.15625 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 33.3125 + m_GlyphRect: + m_X: 60 + m_Y: 11 + m_Width: 29 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 97 + m_Metrics: + m_Width: 21.125 + m_Height: 11.421875 + m_HorizontalBearingX: 5.375 + m_HorizontalBearingY: 33.5 + m_HorizontalAdvance: 31.484375 + m_GlyphRect: + m_X: 55 + m_Y: 664 + m_Width: 22 + m_Height: 12 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 98 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 21.59375 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 489 + m_Metrics: + m_Width: 73.0625 + m_Height: 20.546875 + m_HorizontalBearingX: 2.96875 + m_HorizontalBearingY: 19.78125 + m_HorizontalAdvance: 78.90625 + m_GlyphRect: + m_X: 11 + m_Y: 990 + m_Width: 75 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 7 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 8 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 11 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 12 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 18 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 19 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 27 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 53 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 54 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 55 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 56 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 58 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 60 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 62 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 63 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 65 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 67 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 71 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 76 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 77 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 79 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 80 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 81 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 82 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 83 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 86 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 87 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 88 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 89 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 90 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 91 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 92 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 94 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 95 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 97 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 98 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 489 + m_Scale: 1 + m_AtlasTextures: + - {fileID: 4049196533093406344} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 42 + m_Height: 116 + - m_X: 0 + m_Y: 116 + m_Width: 47 + m_Height: 114 + - m_X: 42 + m_Y: 0 + m_Width: 47 + m_Height: 114 + - m_X: 0 + m_Y: 230 + m_Width: 41 + m_Height: 114 + - m_X: 0 + m_Y: 344 + m_Width: 41 + m_Height: 114 + - m_X: 0 + m_Y: 458 + m_Width: 40 + m_Height: 114 + - m_X: 0 + m_Y: 572 + m_Width: 40 + m_Height: 114 + - m_X: 0 + m_Y: 686 + m_Width: 63 + m_Height: 107 + - m_X: 40 + m_Y: 458 + m_Width: 66 + m_Height: 101 + - m_X: 40 + m_Y: 559 + m_Width: 66 + m_Height: 101 + - m_X: 41 + m_Y: 230 + m_Width: 30 + m_Height: 101 + - m_X: 47 + m_Y: 114 + m_Width: 71 + m_Height: 94 + - m_X: 89 + m_Y: 0 + m_Width: 70 + m_Height: 94 + - m_X: 41 + m_Y: 331 + m_Width: 54 + m_Height: 94 + - m_X: 41 + m_Y: 425 + m_Width: 49 + m_Height: 33 + - m_X: 90 + m_Y: 425 + m_Width: 46 + m_Height: 31 + - m_X: 71 + m_Y: 208 + m_Width: 33 + m_Height: 94 + - m_X: 71 + m_Y: 302 + m_Width: 62 + m_Height: 29 + - m_X: 104 + m_Y: 208 + m_Width: 97 + m_Height: 93 + - m_X: 95 + m_Y: 331 + m_Width: 92 + m_Height: 93 + - m_X: 118 + m_Y: 94 + m_Width: 87 + m_Height: 93 + - m_X: 159 + m_Y: 0 + m_Width: 85 + m_Height: 93 + - m_X: 0 + m_Y: 793 + m_Width: 68 + m_Height: 93 + - m_X: 63 + m_Y: 660 + m_Width: 68 + m_Height: 93 + - m_X: 63 + m_Y: 753 + m_Width: 41 + m_Height: 40 + - m_X: 0 + m_Y: 886 + m_Width: 64 + m_Height: 93 + - m_X: 0 + m_Y: 979 + m_Width: 52 + m_Height: 42 + - m_X: 52 + m_Y: 979 + m_Width: 82 + m_Height: 36 + - m_X: 64 + m_Y: 886 + m_Width: 31 + m_Height: 93 + - m_X: 68 + m_Y: 793 + m_Width: 92 + m_Height: 92 + - m_X: 95 + m_Y: 885 + m_Width: 87 + m_Height: 92 + - m_X: 134 + m_Y: 977 + m_Width: 49 + m_Height: 46 + - m_X: 104 + m_Y: 753 + m_Width: 37 + m_Height: 36 + - m_X: 106 + m_Y: 456 + m_Width: 75 + m_Height: 92 + - m_X: 106 + m_Y: 548 + m_Width: 71 + m_Height: 92 + - m_X: 131 + m_Y: 640 + m_Width: 70 + m_Height: 92 + - m_X: 177 + m_Y: 548 + m_Width: 68 + m_Height: 92 + - m_X: 141 + m_Y: 732 + m_Width: 57 + m_Height: 55 + - m_X: 160 + m_Y: 787 + m_Width: 68 + m_Height: 92 + - m_X: 198 + m_Y: 732 + m_Width: 63 + m_Height: 50 + - m_X: 201 + m_Y: 640 + m_Width: 63 + m_Height: 92 + - m_X: 182 + m_Y: 879 + m_Width: 62 + m_Height: 92 + - m_X: 183 + m_Y: 971 + m_Width: 39 + m_Height: 49 + - m_X: 228 + m_Y: 782 + m_Width: 111 + m_Height: 91 + - m_X: 261 + m_Y: 732 + m_Width: 29 + m_Height: 46 + - m_X: 181 + m_Y: 424 + m_Width: 108 + m_Height: 91 + - m_X: 187 + m_Y: 301 + m_Width: 71 + m_Height: 91 + - m_X: 201 + m_Y: 187 + m_Width: 70 + m_Height: 91 + - m_X: 205 + m_Y: 93 + m_Width: 68 + m_Height: 91 + - m_X: 244 + m_Y: 0 + m_Width: 68 + m_Height: 91 + - m_X: 245 + m_Y: 515 + m_Width: 68 + m_Height: 91 + - m_X: 264 + m_Y: 606 + m_Width: 66 + m_Height: 91 + - m_X: 290 + m_Y: 697 + m_Width: 38 + m_Height: 85 + - m_X: 328 + m_Y: 697 + m_Width: 54 + m_Height: 84 + - m_X: 258 + m_Y: 278 + m_Width: 37 + m_Height: 91 + - m_X: 271 + m_Y: 184 + m_Width: 90 + m_Height: 90 + - m_X: 273 + m_Y: 91 + m_Width: 88 + m_Height: 90 + - m_X: 312 + m_Y: 0 + m_Width: 88 + m_Height: 90 + - m_X: 289 + m_Y: 369 + m_Width: 86 + m_Height: 90 + - m_X: 295 + m_Y: 274 + m_Width: 85 + m_Height: 90 + - m_X: 313 + m_Y: 459 + m_Width: 84 + m_Height: 90 + - m_X: 375 + m_Y: 364 + m_Width: 80 + m_Height: 90 + - m_X: 330 + m_Y: 549 + m_Width: 79 + m_Height: 90 + - m_X: 397 + m_Y: 454 + m_Width: 77 + m_Height: 90 + - m_X: 244 + m_Y: 873 + m_Width: 77 + m_Height: 90 + - m_X: 321 + m_Y: 873 + m_Width: 76 + m_Height: 90 + - m_X: 339 + m_Y: 781 + m_Width: 75 + m_Height: 90 + - m_X: 382 + m_Y: 639 + m_Width: 74 + m_Height: 90 + - m_X: 409 + m_Y: 544 + m_Width: 73 + m_Height: 90 + - m_X: 397 + m_Y: 871 + m_Width: 71 + m_Height: 90 + - m_X: 397 + m_Y: 961 + m_Width: 63 + m_Height: 62 + - m_X: 414 + m_Y: 729 + m_Width: 69 + m_Height: 90 + - m_X: 456 + m_Y: 634 + m_Width: 67 + m_Height: 90 + - m_X: 361 + m_Y: 90 + m_Width: 66 + m_Height: 90 + - m_X: 400 + m_Y: 0 + m_Width: 63 + m_Height: 90 + - m_X: 361 + m_Y: 180 + m_Width: 61 + m_Height: 90 + - m_X: 380 + m_Y: 270 + m_Width: 61 + m_Height: 90 + - m_X: 422 + m_Y: 180 + m_Width: 44 + m_Height: 90 + - m_X: 427 + m_Y: 90 + m_Width: 30 + m_Height: 90 + - m_X: 457 + m_Y: 90 + m_Width: 36 + m_Height: 72 + - m_X: 463 + m_Y: 0 + m_Width: 73 + m_Height: 71 + - m_X: 441 + m_Y: 270 + m_Width: 70 + m_Height: 71 + - m_X: 466 + m_Y: 162 + m_Width: 69 + m_Height: 71 + - m_X: 493 + m_Y: 71 + m_Width: 69 + m_Height: 71 + - m_X: 536 + m_Y: 0 + m_Width: 57 + m_Height: 71 + - m_X: 455 + m_Y: 341 + m_Width: 56 + m_Height: 71 + - m_X: 474 + m_Y: 412 + m_Width: 56 + m_Height: 71 + - m_X: 482 + m_Y: 483 + m_Width: 92 + m_Height: 70 + - m_X: 482 + m_Y: 553 + m_Width: 64 + m_Height: 70 + - m_X: 511 + m_Y: 233 + m_Width: 62 + m_Height: 70 + - m_X: 535 + m_Y: 142 + m_Width: 48 + m_Height: 70 + - m_X: 562 + m_Y: 71 + m_Width: 93 + m_Height: 69 + - m_X: 593 + m_Y: 0 + m_Width: 73 + m_Height: 69 + - m_X: 511 + m_Y: 303 + m_Width: 72 + m_Height: 69 + - m_X: 573 + m_Y: 212 + m_Width: 61 + m_Height: 69 + m_FreeGlyphRects: + - m_X: 42 + m_Y: 114 + m_Width: 5 + m_Height: 2 + - m_X: 47 + m_Y: 208 + m_Width: 24 + m_Height: 22 + - m_X: 89 + m_Y: 94 + m_Width: 29 + m_Height: 20 + - m_X: 40 + m_Y: 660 + m_Width: 23 + m_Height: 26 + - m_X: 68 + m_Y: 885 + m_Width: 27 + m_Height: 1 + - m_X: 0 + m_Y: 1021 + m_Width: 134 + m_Height: 2 + - m_X: 52 + m_Y: 1015 + m_Width: 82 + m_Height: 8 + - m_X: 95 + m_Y: 977 + m_Width: 39 + m_Height: 2 + - m_X: 90 + m_Y: 456 + m_Width: 16 + m_Height: 2 + - m_X: 106 + m_Y: 640 + m_Width: 25 + m_Height: 20 + - m_X: 131 + m_Y: 732 + m_Width: 10 + m_Height: 21 + - m_X: 104 + m_Y: 789 + m_Width: 56 + m_Height: 4 + - m_X: 141 + m_Y: 787 + m_Width: 19 + m_Height: 6 + - m_X: 160 + m_Y: 879 + m_Width: 22 + m_Height: 6 + - m_X: 182 + m_Y: 971 + m_Width: 1 + m_Height: 6 + - m_X: 198 + m_Y: 782 + m_Width: 30 + m_Height: 5 + - m_X: 95 + m_Y: 424 + m_Width: 86 + m_Height: 1 + - m_X: 136 + m_Y: 424 + m_Width: 45 + m_Height: 32 + - m_X: 104 + m_Y: 301 + m_Width: 83 + m_Height: 1 + - m_X: 133 + m_Y: 301 + m_Width: 54 + m_Height: 30 + - m_X: 118 + m_Y: 187 + m_Width: 83 + m_Height: 21 + - m_X: 159 + m_Y: 93 + m_Width: 46 + m_Height: 1 + - m_X: 181 + m_Y: 515 + m_Width: 64 + m_Height: 33 + - m_X: 245 + m_Y: 606 + m_Width: 19 + m_Height: 34 + - m_X: 261 + m_Y: 778 + m_Width: 29 + m_Height: 4 + - m_X: 264 + m_Y: 697 + m_Width: 26 + m_Height: 35 + - m_X: 201 + m_Y: 278 + m_Width: 57 + m_Height: 23 + - m_X: 205 + m_Y: 184 + m_Width: 66 + m_Height: 3 + - m_X: 244 + m_Y: 91 + m_Width: 29 + m_Height: 2 + - m_X: 187 + m_Y: 392 + m_Width: 102 + m_Height: 32 + - m_X: 258 + m_Y: 369 + m_Width: 31 + m_Height: 55 + - m_X: 271 + m_Y: 274 + m_Width: 24 + m_Height: 4 + - m_X: 289 + m_Y: 459 + m_Width: 24 + m_Height: 56 + - m_X: 295 + m_Y: 364 + m_Width: 80 + m_Height: 5 + - m_X: 313 + m_Y: 549 + m_Width: 17 + m_Height: 57 + - m_X: 375 + m_Y: 454 + m_Width: 22 + m_Height: 5 + - m_X: 228 + m_Y: 873 + m_Width: 16 + m_Height: 6 + - m_X: 328 + m_Y: 781 + m_Width: 11 + m_Height: 1 + - m_X: 330 + m_Y: 639 + m_Width: 52 + m_Height: 58 + - m_X: 397 + m_Y: 544 + m_Width: 12 + m_Height: 5 + - m_X: 339 + m_Y: 871 + m_Width: 58 + m_Height: 2 + - m_X: 183 + m_Y: 1020 + m_Width: 214 + m_Height: 3 + - m_X: 222 + m_Y: 971 + m_Width: 175 + m_Height: 52 + - m_X: 244 + m_Y: 963 + m_Width: 153 + m_Height: 60 + - m_X: 460 + m_Y: 961 + m_Width: 563 + m_Height: 62 + - m_X: 382 + m_Y: 729 + m_Width: 32 + m_Height: 52 + - m_X: 414 + m_Y: 819 + m_Width: 609 + m_Height: 52 + - m_X: 468 + m_Y: 819 + m_Width: 555 + m_Height: 204 + - m_X: 409 + m_Y: 634 + m_Width: 47 + m_Height: 5 + - m_X: 483 + m_Y: 724 + m_Width: 540 + m_Height: 299 + - m_X: 456 + m_Y: 724 + m_Width: 567 + m_Height: 5 + - m_X: 312 + m_Y: 90 + m_Width: 49 + m_Height: 1 + - m_X: 273 + m_Y: 181 + m_Width: 88 + m_Height: 3 + - m_X: 361 + m_Y: 270 + m_Width: 19 + m_Height: 4 + - m_X: 457 + m_Y: 162 + m_Width: 9 + m_Height: 18 + - m_X: 463 + m_Y: 71 + m_Width: 30 + m_Height: 19 + - m_X: 380 + m_Y: 360 + m_Width: 75 + m_Height: 4 + - m_X: 441 + m_Y: 341 + m_Width: 14 + m_Height: 23 + - m_X: 455 + m_Y: 412 + m_Width: 19 + m_Height: 42 + - m_X: 474 + m_Y: 483 + m_Width: 8 + m_Height: 61 + - m_X: 523 + m_Y: 623 + m_Width: 500 + m_Height: 400 + - m_X: 546 + m_Y: 553 + m_Width: 477 + m_Height: 470 + - m_X: 482 + m_Y: 623 + m_Width: 541 + m_Height: 11 + - m_X: 466 + m_Y: 233 + m_Width: 45 + m_Height: 37 + - m_X: 493 + m_Y: 142 + m_Width: 42 + m_Height: 20 + - m_X: 562 + m_Y: 140 + m_Width: 461 + m_Height: 2 + - m_X: 593 + m_Y: 69 + m_Width: 430 + m_Height: 2 + - m_X: 655 + m_Y: 69 + m_Width: 368 + m_Height: 954 + - m_X: 666 + m_Y: 0 + m_Width: 357 + m_Height: 1023 + - m_X: 511 + m_Y: 372 + m_Width: 512 + m_Height: 40 + - m_X: 530 + m_Y: 372 + m_Width: 493 + m_Height: 111 + - m_X: 574 + m_Y: 372 + m_Width: 449 + m_Height: 651 + - m_X: 535 + m_Y: 212 + m_Width: 38 + m_Height: 21 + - m_X: 583 + m_Y: 140 + m_Width: 440 + m_Height: 72 + - m_X: 583 + m_Y: 281 + m_Width: 440 + m_Height: 742 + - m_X: 634 + m_Y: 140 + m_Width: 389 + m_Height: 883 + - m_X: 573 + m_Y: 281 + m_Width: 450 + m_Height: 22 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 10 + m_AtlasRenderMode: 4165 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 43444f92e50d29a4493df8ff6863aa09 + pointSizeSamplingMode: 1 + pointSize: 96 + padding: 10 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 6 + characterSequence: 20-7E,A0,2026 + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &4049196533093406344 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B Bold SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_MipsStripped: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMasterTextureLimit: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + m_PlatformBlob: + image data: 1048576 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606050401000000000000000000000000000000000000000000000000000000000000000000000000020507070a0a0a0a0a0a0a0a0a0908060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606060503000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090b0b11111111111111111111111111111111110a0908050100000000000000000000000000000000000000000000000005090b0d0e1111111111111111111111111111111111070705020000000000000000000000000001060a0d0e0f11111111111111111111111111111111111111111111111110100f0d0c0a0707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707090b0c0c0c0c0c0b0a09080605040100000000000000000000000000000000000104061111111111111111111111111111110b0a0906020000000000000000000204060711111111111111111111111111110b0a080602000000000000000000000000000000000000000000000000000000000000000003050606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040608060b0e10111212110f0c070c090605030000000000000000000000000000000000000000000000000000000004090d101213161616161616161615141312110f0c080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f11121212110f0b070706050200000101060606060606060606060606060504020000000000000000000000000000000000000000000000000000000000000000000000000000000000030507070a0c060b0e1011121212110f0b070e0c0b0907060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070b0f1112121313131312110f0c080a07070502000000000000000000000000000000000000000000000000000000000000000000000002080d111516171d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161513100c07010000000000000000000000000000000000000000040a0f141719191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1312110e090400000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1b1a1917151312100d0905030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090d101213151617181818181716151312110f0c07020000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000003080d1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d161614110d070100000000000000000000000000000000000000000000000003060808070b0f11121212110f0b070807050300000203060606060606060606060606060303010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12141116191c1d1d1d1c1a1612171412110f0b0702000000000000000000000000000000000000000000000000070e13181c1e1e212121212121212121201f1e1d1b1712100d090400000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121412161a1c1d1e1d1c1a16111212100d090a0c0d1111111111111111111111111110100e0b070200000000000000000000000000000000000000000000000000000000000000000000010406090e11121316181116191c1d1d1e1d1c1a1611191817151212100d090705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080c0f11121411161a1c1d1e1e1f1e1e1e1d1b1712161312100d09050300000000000000000000000000000000000000000000000000000000000000040c12181c202223292929292929292929292929292929292921201e1b16110a03000000000000000000000000000000000000060d141a1e22242529292929292929292929292929292929281f1e1c18140e080000000000000000070f151b202326262929292929292929292929292929292929292929292929282827262423211e1e1c1813110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1114181c1e1e202223232423232322211f1d1c1a16120c080300000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000000070d13181b1d1e292929292929292929292929292922211f1c17110b04000000000000000000000000000000000000000001040a0e11131412161a1c1d1e1d1c1a16121313110e0a0c0e0e111111111111111111111111110f0e0d0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f202024272929292825212523201d1c1a16110c0a050000000000000000000000000000000000000000000810171e2327292a2d2d2d2d2d2d2d2d2c2c2b292826221e1c18140e0904000000000000000000000000000000000000000000000000000000000000000000000004090b11161a1c1d2023212528292929282521211e1d1b18131618181d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d070000000000000000000000000000000000000000000000000000000000000003080c0f1114191c1e1f2123252024272929292928252126252422201e1d1b181312110e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012171a1d1d202321252829292a2a2a2a2928262223211e1e1c1814110f0b0702000000000000000000000000000000000000000000000000000000040d151c22272b2d2e34343434343434343434343434343434342d2c2a26211a130b0300000000000000000000000000000000060e161e24292d303134343434343434343434343434343434342a2927231e1811090000000000000710181f252a2e3132343434343434343434343434343434343434343434343434333332302e2d2a2927231d1c1a16120c0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c12161a1c1d2327292a2c2d2e2f2f2f2f2e2d2c2a292825211c17120d060000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c04000810171d2226292934343434343434343434343434342d2d2a26211b140c04000000000000000000000000000000000002080c0f15191d1f1f23212528292929282521221f1e1c191417191a1d1d1d1d1d1d1d1d1d1d1d1d1d1a1a1815100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282b2b2b2f3334343433302c312e2c292825211b19140f090400000000000000000000000000000000000007101921282d32353538383838383838383837363534312c2927231e18130e07000000000000000000000000000000000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2a2926231d21232429292929292929292929292929272724211c17100901000000000000000000000000000000000000000000000000000001050a0d12171b1d1e2327292a2d2f302b2f333435353433302b32312f2e2c2a2926221f1e1c18140f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e13181b1d212628292c2e2b30333435353636353534312c2f2d2a2927231d1c1a16120c0904000000000000000000000000000000000000000000000000020c151d252c3236393a4040404040404040404040404040404040383735302b241c1309010000000000000000000000000000040c161f272e34383b3c404040404040404040404040404040403f3635322e282119110800000000050f1820282f35393c3d40404040404040404040404040404040404040404040403f3f3e3d3c3a383535322d292825211c19140f0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171c212528292e32353638393a3b3b3b3a3a3938363433302c26221c160f07000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b07101820272d3134354040404040404040404040404040393835312b241c140b01000000000000000000000000000000060c12171a1f24282a2b2e2b303334353433302b2e2a2a27241e22252529292929292929292929292929262523201b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292f333637353a3e4040403f3b363c3a373433302b25241f18130e0700000000000000000000000000000000040e17212931383d40414444444444444444444342403f3c3635322e28231d171008020000000000000000000000000000000000000000000000000000000000060d13171e23252b303334373a353b3f4040403e3b35393534312d272c2f2f343434343434343434343434343332302c262019110900000000000000000000000000000000000000000000000000060b0f151a1c222628292e323536383a3c353a3e404040403e3b353d3c3b39383534312d2a2927231e1a16110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b1116191e2327292c313435373a353b3e404041414141403f3c363b383635322e292825211c18140e0a050000000000000000000000000000000000000000000008121c252d353c4144454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403a342c2419110700000000000000000000000000010a141d272f373e4347484b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312a21180e040000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4a4947464441403d383433302b25241f1a150f09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080f161d22252b303334383d40414345464646464645444342403f3b36312c261f170f0600000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120d17202930373c404b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544403b352d241b11070000000000000000000000000002070f161c2126282f3336373a353b3f4040403f3b35393635322e282e30313434343434343434343434343432312e2a251f17100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b33393e41434945494b4c4c4a4549484643403e3b35332e28231e17100701000000000000000000000000000009131e28313a41474b4d50505050505050504f4e4d4c4a4641403d38322d272019120a02000000000000000000000000000000000000000000000000000001060f171d22282d32353b3e40424648454a4c4c4b4a45474441403c3733373a3b404040404040404040404040403f3e3b3630292219100700000000000000000000000000000000000000000000040a10161a1f24262c313435383d40414446484945494b4c4c4b4a454a494846454341403c373635322e2825211b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161b2024272d3234363b3f40434547454a4c4c4d4d4d4d4c4a4648464441403d383433302b25231e19140f090400000000000000000000000000000000000000030d18222c353e454c505157575757575757575757575757575757574f4e4a443d342a21170f0500000000000000000000000007121a242d3740474e525357575757575757575757575757575757564d4c48423a31281e1409000006111b252f3841494f535557575757575757575757575757575757575757575757575656555453514f4d4b4743403f3b35332e28241f18140e070100000000000000000000000000000000000000000000000000000000000000000000000000000000060c12181f262c31353b3f4043474b4d4f50515252525251504f4d4c4a453f3c3630281f160d0300000008121c26303840464a575757575757575757575757575757514f4b453e352b2217131d27303941474b575757575757575757575757575757504f4b453d352b21170d020000000000000000000000050c11171f262c3134393e41424548454a4c4c4c4a45484542413d3834393c3d404040404040404040404040403d3c39352f2820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333b43494d4e544e54575757554f5553514e4c4a453f3d38322d282119110b05000000000000000000000000020d18232d38414a5156585b5b5b5b5b5b5b5b5b5a595755504d4b47413d373129221a130b02000000000000000000000000000000000000000000000000040b111820272d31383d3f454a4b4e51544f55575857544f53504c4b47413e4245474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d020000000000000000000000000000000000000001070e14192025292f33363c3f4044484c4d505253554e5457575757544f56555352514f4c4b474541403d3833302b251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e151b21252b2f33373d4041464a4c4e51534f555758585958585755505452504d4c4843403f3b35322e28241f18130e0700000000000000000000000000000000000006111c27323c454e565b5d63636363636363636363636363636363635b59544d443a32271f160c0200000000000000000000060f18222b353d4750585d5f63636363636363636363636363636363625957524a42382e23180e02000a15202a353f4951595e606363636363636363636363636363636363636363636362626261605e5d5b5856514f4c4a453f3e38332f29231e16110b040000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222830363c3f454a4c4f5157585a5c5d5d5e5d5d5d5c5a5957554f4a46403830261c12080000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c18222d37414951566263636363636363636363636363635c5a554e453b31261c110600000000000000000000060e151b21282f363b3f43494d4e51544f55575857554f53514d4c48423f4347484b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3830281f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242f39434c53585a60615e6363635f62615f5d5a57554f4c48423d383129211b150e06000000000000000000000005101c27323d47515a616467676767676767676666656360595857514b474139332b231b13090100000000000000000000000000000000000000000000050d141b202830373c41474b4f54575a5d5f585f6363635f585e5b5856514c494d5152575757575757575757575757575654504a423a30261c1207000000000000000000000000000000000000040b11161e232a3034393e40464a4c4f5257595b5d5f60615e636363635f6261605f5e5c5a585651504d4c48423e3b352f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000060d12161e252b30353a3e41474b4c5055575a5d5e585f6363646464646360595f5d5b5857524f4c4a453f3d38332e29231e17100803000000000000000000000000000000000915202b36414c565f65686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645d544b42382f261c1207000000000000000000030d172028323b454e5860686a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d64625b52483d32271c1105000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c6a686664615a5a57554f4c48423e39322d28201b150d060000000000000000000000000000000000000000000000000000000000000000000000000810171f262c313840464a4f55575b5a61646667686969696968676664635f5855504940362c22170c0100040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1b26313c47515a616d6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f1408000000000000000000060e161e252b303840464a4c5358595d5f585f6363635f585f5c5957524e4a4e52545757575757575757575757575754534f4841382f251b10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656b6d686e6e6e696e6c6b6865635f5857524b47413a302b251e160e060000000000000000000007121e2935404b56616b6f72727272727272727271706f696864615a56514a433b332c231a1106000000000000000000000000000000000000000000060e161e252b2f3940474b5156585f6365686b6d696e6f6e686c6a6764615a5853575c5e63636363636363636363636363615f5a534a40362c21160b0000000000000000000000000000000000060d151b20282e323a3f43494d5055575b5b626467696a6c6d686e6f6f6e686d6d6c6a69686663615a5c5957524c4a453f372f251b1107000000000000000000000000000000000000000000000000000000000000000000000000000001070f161d22272e353b3e45494b51565859606365686a6c686e6f6f70706f6f696c6b696764625b5a57554f4c48423e39322d272019130d070000000000000000000000000000000b16222d3944505b656f747a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a726e645b52483f362c21191106000000000000000008131d273039434b555e6871767a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79706b62574c4035291e1207000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797978777674726f6b6a66635f5857524d49433d38302b251e16100802000000000000000000000000000000000000000000000000000000000000000000071018202830363c44495056585f63666a6b6f72737474757574747372706e6963605950463c31261b0f040006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d221d2934404b56616a777a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f44382d21160a0000000000000000050e171f272f353b44485055575c6365686b6c696e6f6e696c6b6864625b5954585d5f63636363636363636363636363605e5951483f352a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36414d58636d717778797a7a7a7a79787674716e6864625b56514a443b352e271e160e0500000000000000000007131e2a35414d58646f7b7e7e7e7e7e7e7e7e7e7d7c7a77746f6b64615a534c443c332a21160d0400000000000000000000000000000000000000060e161e262e353a434951565a6164686e71747678797a7a7a797875736f6a65625c6067696e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e000000000000000000000000000000010810161e252b30383d444a4d5358596063676a6b707274767779797a7a7a7a79797977767573716f6a6a6864625b57554f483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000030a11181f262c31373f454a4e54575a616468696f71747677797a7a7b7b7b7b7a7978767572706b6966635f5857524c48423d373129221d17100802000000000000000000000000000b17232e3a45515d68747f85858585858585858585858585858585857e726b625950463b302a21170e0500000000000007121a222d374049535c656f768185858585858585858585858585858585857c7064594d41362a1f1307000f1b26323d4955606c778385858585858585858585858585858585858585858585858584848381807e7b7875726e6964625b58534b47413a352e262019120b0300000000000000000000000000000000000000000000000000000000000000060f172029303840464a54596063696e7275797b7d7f80808080807f7e7d7c7a776f6960554a3f34281d11060006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e221e2935414c58636f7b85858585858585858585858585857f73675c5045392d22160b00000000000000020c151f272f373f454a54596063686c71747678797a7a7a79787673706c66645d61686b6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d828485858686858583827f7d7975706c64615a554a453f372f271e150c0200000000000000000915212c38434f5b66727d89898989898989898988878583807b756f6a635c544c443a32261e150b010000000000000000000000000000000000040d161e272f363e4549545a60636b6f74797c808284858686858583817e7b76706c636770757a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b1000000000000000000000000000000109111820262e353a42484c54595c6365696f7276797b7e8081838485858686858585848382807f7d7b787673706b69635f584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000107141a222830363c43474f54575e63666b6f73777a7d7f81838485868787878686858482807e7b7875716e6964625b57524b474139312d272018130b0300000000000000000000000006111d2934404b57636e78828e959191919191919191919191919190857c706960554a443a31271f150c0200000000060f18222b313c465059636c737f8a929191919191919191919191919191897e726b62574c4035291e1207000f1b26323d4955606c77838f9191919191919191919191919191919191919191979190908f8e8d8b898784817d7a75706c65635c575149453e373129231b130c040000000000000000000000000000000000000000000000000000000000030d161f283039414950555d646a6f74797d818487898a8b8c8c8c8b8b8a898785827a6f63574c4035291e12060006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e221e2935414c58636f7b869191919191919191919191918a7f73675c5045392d22160b0000000000000007121c262f383f484f555d64696f73787c7f8284858686868583827f7c77726d646871767a7a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89909091979791908f8d8b8884807c766f6b645e544f473f372f251b110700000000000000000915212c38434f5b66727d8995959595959595959497918e8b86817b716c635d544b42372e251b110700000000000000000000000000000000010b151e262f373f474e545d636a6f757b8084888b8d8f91969195908f8d8a86817c766f6a75808585858585858585858585858584786d61564a3f33271c1000000000000000000000000000020a121a222930373e454952575d64666c71767a7e8184878a8c8d8f9090919791969190908f8d8c8a898684827f7b78746e685f554a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000040b111c242a323840464a53585f63686e72777b7f8385888b8d8e9095929293929296908f8e8c898784817d7974706b65625b56514a443c373029231b140c04000000000000000000000005111c28333e49545f686f7b849097a19c9c9c9c9c9c9c9c9c9c9f968f83796e635d544a42382f261c1207000000030d162028323b434b56606a717d86919ca29c9c9c9c9c9c9c9c9c9c9d938c81756e645b52483d32271c1105000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca19c9c9b9b9a989795948f8d8984817c76716c64615a544f474139332b241c140c040000000000000000000000000000000000000000000000000000000008121c2630384149515960636e727a7f84898d9095949697979897979696949691867b6f63584c4135291e12070006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e221e2935414c58636f7b86929c9c9c9c9c9c9c9c9c9c968a7f73675c5045392d22160b000000000000081119212c363f484f585f636e727a7f83888b8d8f91969196918f8d8b87837e776f6b76828585858585858585858585858582776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89959c9ca1a19c9c9b999795908c86817b736e635f584f483f352b21170f06000000000000000915212c38434f5b66727d8995a0a1a1a1a1a1a0a7a09c9a96918c847d726d635b52473e352b20160b0000000000000000000000000000000007111b252e373f484f575e636d717a80858b909597999b9c9fa69f9c9a9897918d88817a7075818c91919191919191919191919084786d61564a3f33271c10000000000000000000000000020a121a222a323941474f545b62646d72777d8185898d90959597999a9b9c9ca19da09c9c9b9a9997969494908d8a878380796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000060d151b202d343b424950565c63686e72797d82868a8e919697989a9c9ea59e9e9ea69f9c9b99979594908c8984807c76706c64615a544b474139332b241c140d0500000000000000000000030e1a25303a454f58616a717d87919ca3aca8a8a8a8a8a8a8afa69d938c80756e645b52483f362c21191106000008131d273039434b555e636f7a848f96a0aaa8a8a8a8a8a8a8a8aa9f968f837a6f635d544a42382e23180e02000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b1aba8a8a7a7a5a4a2a49e9b9895908c86827d766f6b635f58514a433c342c251d140d040000000000000000000000000000000000000000000000000000050e17222c364049515a61696f767e848b9095989b9ea5a1a2a3a3a3a3a2a1a69f92867b6f63584c4135291e12070006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e221e2935414c58636f7b86929da8a8a8a8a8a8a8a8a1968a7f73675c5045392d22160b0000000000040e18212a303b454f585f686e757e848a8f9496999b9c9fa79f9c9b9996938e89827b7176828e91919191919191919191918e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a8ababa8a7a6a5a59f9c97918d857e756e685f584f453b30281f160d030000000000000915212c38434f5b66727d8995a0acacacacacacb0aaa8a7a09c9490867e726c62584f453a30251a0e03000000000000000000000000000006111a202b353e474f585f686e747d848c91969b9ea5a5a7a8aaafa9a7a6a7a09c99918d847c75818c989c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c1000000000000000000000000109121a222b323b424951585f636b70767d82888d9196999c9ea5a3a4a6a7a8a8abb0aaa8a7a7a6a4a3a2a59e9b9996938f867a6f63574c4035291e12060000000000000000000000000000000000000000000000000000000000000000050d161e252b303d454b525960636c71797e83898e91979a9ca0a7a4a6a7a9aea9aaaaafaaa8a6a5a3a59e9b9895908c86817c756f6b645e565149433c342c251d150d05000000000000000000000b16202b353e47515a636d74808b939ca5aeb8b4b4b4b4b4b6ada49a91897e726b62584f453b302921170e0507121a222c374049535c656f76818d949da7b0bab4b4b4b4b4b5aba29c90857c706960554d443a31281e140900000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bab6b4b3b3b2b1afaeada8a7a59e9c97918d88817b746e68615a534c443d352d251d140c04000000000000000000000000000000000000000000000000020c151e27313c465059616a6f7a818990959b9ea5a7a9aeadaeaeafafaeaeadaf9d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b4b4b4b4b4b4ada1968a7f73675c5045392d22160b00000000000a141e28323a424a555f696e79808990959b9da4a5a6a8aaafaaa8a6a4a39c9a928e857d76828e999c9c9c9c9c9c9c9c9c9a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb6b6b4b3b2b0aea9a7a09c95908a80796e685f554a443830261c12080000000000000915212c38434f5b66727d8995a0acb7b8b8b8b8bab5b3b0aaa59e9690857c70685f54493e33281e140a00000000000000000000000000050e16222a303a454f585f686e78808990949c9fa7a9aeb0b2b3b5b9b5b3b1b0aaa8a29b9490857d808c98a3a8a8a8a8a8a8a8a79b9084786d61564a3f33271c100000000000000000000000081119222b333b434b525a61686e747c82898e93999c9fa6a7a9aeadafa9a7a6a6a5a5a6a6a7a7a8abb0adaea8a7a4a49d91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000000040d161e262e353a464d555b626a6f757d83898f93999ca0a7a8aab0b0b1b3b4b8b5b5b5b9b5b3b2b0aeaea9a7a59e9b97918d86817b726e63615a544c443d352d261e150d0400000000000000000007111b252e37414a545d636e79828e959ea9b4bac4bfbfc7bdb4aaa19c90857c70695f554a443a31271e150c0f18222b313c465059626c737f8a929ba4adb7c0c9bfc9c0b7ada49b918a7e736c625950463d342a21180e0400000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfcac5c1bfbfbebebdbbb9b7b4b2aea9a8a19c99918d857f786f6b635d544d453e352d251c140b03000000000000000000000000000000000000000000000007121c252f373f4a5560696f7a838d919b9ea5a9aeb3b4b8b8bababababab9b5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5bfbfbfbfb9ada1968a7f73675c5045392d22160b00000000030e19232e38424b555e636e79818c919b9ea5a8adb0b2b3b5b9b5b3b2b0aca7a39c9590857c828e99a5a8a8a8a8a8a8a8a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c1bfbfbdbcb8b4b0aba69f9c918c81796e635d544940362c22170b0100000000000915212c38434f5b66727d8995a0acb4b5b7bbbfc1c1bfbab5aea79f958f83796e63574b42382e23190e030000000000000000000000020c151e27323b4249545f686e79818b909b9ea5aaafb4b8bcbebfc0c3c0bfbdbab5b3aba59e969085828e9aa5b1b4b4b4b4b4b2a79b9084786d61564a3f33271c1000000000000000000000051018212a333b434b535b626a6f787f868e929a9ca3a8aaaea9a7a4a1a69f9c9a9a9a999a9a9b9c9ca0a7a2a4a7a9aead9d91867a6f63574c4035291e1206000000000000000000000000000000000000000000000000000000000000010b141e262e373e4549565e646c707a80868f939b9da4a8abb0b3b5babbbdbec0c3c8c1c9c3c0bfbebcbab8b4b2aea9a7a09c97918d857e766f6a635d554d453e362e261d150b030000000000000000010b151e263139434a555f686f7b85909ca1aab4bcc7cfcdc4bab4a99f958f83796e635d544a41372f251c12162028323b434b56606a707c86919ca2abb5bdc7d0cfc4bab0a79d948d81766e645b524840362c241911080000000f1b26323d4955606c77838f9aa6b1bdc9cbcbcbcbcbcbcbcbcbcbcbcbcbd4d0cccbcacac9c8c7c7c2bfbeb8b4b1aba8a29b96908b827b716d645e554e453e352d241c130901000000000000000000000000000000000000000000000b16212b353f48545d636f7a838f939ba2a9aeb4b8bebfc3c8c5c6c6c6c5c0b5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0cbcbc4b9ada1968a7f73675c5045392d22160b0000000005111c27323d48525b656f76818d929aa1a9aeb3b7bcbebfc0c4c0bfbdbcb6b2aca59e959084838f9aa6b1b4b4b4b4b4b1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3cbcac9c8c3c1bab6afa9a19a918c80756d645950463c31251b110700000000000915212c38434f5b66727d8995a0a8a8a9abafb4b5bac0c4beb7afa69d93897e72675b52483d32271c1105000000000000000000000007111b252f37424b555e636e78818d919aa0a9aeb5b9c0c2c8c9cbcccecbcacac4c1bbb5aea69f95908e939ca7b2bebfbfbfbeb2a79b9084786d61564a3f33271c10000000000000000000040d162029323a434c535c636c707b828b91969ca2a7acaaa8a59e9c98969395908f8e8e8e8e8f8f9091979596989b9ea5a59d91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000006111b252e363e474f545f666e737c838c91979da3a8adb4b6babfc0c4c9c8cacbced2cdd3cecbcac9c8c7c2bfbeb8b4b0aba7a09c95908a817b716d645e554e463e362e251c130a010000000000000000040d162029303b454f58616b727e89909aa3acb6bfc8d3cec3b9afa69d938c80756d645b52483f352b21191d273039434b555e636f7a848f96a0aab2bbc5cecec5beb5aaa0968f837a6f635e554b42382f261c1309000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6d6d6d6d8d4d1d0cbcbcbcbcbcbcbcbcccccecfd2d1cdcac8c3c1bab6b4aba69f9c928e847d726e655e564e453d352c231a1107000000000000000000000000000000000000000000030f1a25303b454f58646e76818d939da3abb4b8bec3c8cbcdcfcccbc8c6c5c0b5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0000000007121e2a35404c57626b737f8a919ba2aab4b8bec2c7c9cbcccfcccbc9c6c1bcb6aea69e94908f939da7b3bebfbfbfbdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8bfc0c3c8cececac5bfb9b4aaa29a90897e726960554a3e352b20160b00000000000915212c38434f5b66727d89959d9d9d9d9fa3a8abb0b8c0c7bfb6ada49b8f83786b62574c40352a1e120700000000000000000000000b16212b353f48525b656e75808c919ba2a9b4b8bec4c9cdd1cdcac9c5c3c1c1c1c2c5beb6afa69f9c9a9ca3acb6c1cccbcabeb2a79b9084786d61564a3f33271c100000000000000000010b141e263039424b535c636c717c848e929ca0a7abaaa7a09c9895908d8a88868583838282838384848587898b8d909496999c91867a6f63574c4035291e120d090300000000000000000000000000000000000000000000000000000008131b202b353e474f585f636f747e868f949ca0a7acb3b7bdc1c5cacccfd3d4d6d5d3d3d2d3d3d4d6d5d3d2cdcac8c3c1bab6b0aba69f9c928d847d736e655e564f463e352c231a1208000000000000000000061019212b353f48515a646d75808c939da6afb9c3ced3c8bfb6aca39a91897e726b61584f453b302921222c374049535c656e76818d949da7b0bac3cbd1c8beb5aba29c91867c706a60564d453a32281f160b03000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e2dad3cdc9c6c5bfbfbfbfbfbfbfbfc0c1c2c4c6cacacdd2cecac5c1bbb7afaaa39c9590867e746f655f564e453c342a21170f06000000000000000000000000000000000000000005111c28333f4a555f69727e89919ba4acb4bbc3c8ced2d1cac4c1bfbdbab9b8b5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b00000006111d28333e49535c64707c86919ca2abb3bac2c8cdd1d3cfcccbc6c3c1c1c2c6beb6aea59e9b9a9da3acb6c1cccbc8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb0b3b4b9bfc3c9cfcfc8c3bab2aaa19b90847a6f63584f453a30251a0e03000000000915212c38434f5b66727d89919191919294989ca0a7b0bac4c7bdb3a89d93877c7064594d41362a1f130800000000000000000000030f1a25303b454f58626c737f8a919aa2abb2bac2c8cfd1cdc7c2bebdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c10000000000000000006111b252e364149525b636c717d8590949ca2aaaca7a09c97918d8884817f7c7a7978777777777878797a7c7d7f8184878a8e9197867a6f63574c4035291e1b18130d0b06000000000000000000000000000000000000000000000000051019232b2f3a454e575f686e75808a91969da4abb0b8bdc1c7cccfd4d6d4cfcccbc9c8c7c7c7c8c9cacbced3d6d6d2cecac5c1bab6afa9a29b9590867e746f665f564e463c342b2218100600000000000000000007111b252f37414a545d636e79838f959fa9b4bac4cdcfc7bcb4aaa19c90857b70695f554a443a31272a313c465059626c737f8a929ba4adb7c0c9d4cac0b8aea59b928a7f736c625950463d342a22170f0600000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dad1cac3bebab9b4b4b4b4b4b4b4b4b4b5b6b8bbbebfc2c7cccfd0ccc7bfb9b5aca59e9691877f746f655e554d443a32281f160d030000000000000000000000000000000000000006121d2934404c57636e7984909ba2abb4bcc4ced2d2cbc8c0bab5b4b1afadadada99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b00000008131f2a36414c58636c76828d969faab2bbc3cdd2d8d0c9c4c0bfbbb7b6b5b6b8bbbeb5aea9a7a6a7acb4bcc6d0d4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a3a5a7a9afb5b9bfc7cfd3cec3bab4a99e948b7f73685f54493e33281c1105000000000915212c38434f5b66727e858585858686888c9197a0abb5bcc6c2b7ada4968a7e73675c5045392d22160b0000000000000000000005111c28333e4a555f68707c86919ca1aab2bbc2cdd2cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c1000000000000000000b16202b353e47515a626b717d8590959ea5acaba39c97918c86817d797673716f6a6c6c6b6b6c6c6d696e70727375787c7f82868c867a6f63574c40352a2926231d1a15100904000000000000000000000000000000000000000000040d162129333c4349545e686e78808b909c9fa6adb6bac1c8ccd1d7d2cecbcac5c1bfbebcbbbbbcbcbdbfc0c4c9cbcccfd3d4cfcac5bfb9b4aba59e97918a7f7570665f564d443b322820170d030000000000000000020c151e27313a444a555f69707c85909ca1aab4bdc7d0cdc4bab4a99f958e82796e635d544a41372f323b424b56606a707c86919ca2abb5bdc7d0cfc4bab0a79e948d81766f655c534940372d241a11070000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d3cac1b9b3afaea8a8a8a8a8a8a8a8a9a9abadafb2b4b8bec1c4cad1d0c9c4bcb6aea7a097918b7f746e655d544b423830261c120800000000000000000000000000000000000005101b26313c47515a67727e8a949ea8b2bbc4cdd4d1c9c2bab8b0aba8a6a3a2a1a1a29d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000004101b26313c47515a65717c88929ca7afb9c2cbd3d5cdc7c0b9b5b3afacaaa9aaacb0b3b5b8b4b2b1b3b6bcc4cdd6d4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89959697999c9fa6a9afb6bfc6cfd3cdc2b8aea59b9084796e63574b4034291d11060000000006111d2934404b57636e78797a7a7a7a7b7d8086919ca3acb6c1c7bbafa4988d81756a5e53473b3024190d020000000000000000040f1b26313c465059636e79838f96a0aab1bac2cbd3ccc5bdb7b3ada8a6a3a09f9e9e9fa2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c1000000000000000050e19242f3a454e57616a707c8590969ea5aea7a09c928e86807b76716e68676563605960605f60605860636466686a6c7073777b80847a6f63574c40383534322d27252018140e0700000000000000000000000000000000000000010b141e26313a434c555e636e78818c919aa0aaafb7bdc5cad1d9d1cdc8c3bfbebab6b4b2b1b0afb0b1b1b3b5b9bcbfc0c4c9ced2d4cfc8c3bbb5aea7a09c908b80756f665d544b433930271d1308000000000000000000050e162129303b454f58626b727e89919aa4adb7bfc9d3cec3b9afa69c938c80756d645a51483f3538424b555e636f7a838f96a0aab2bbc5cecfc6beb5aba09790847a6f635e554b433830261c1409010000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc3b9b0a9a4a29d9d9d9d9d9d9d9d9d9e9fa1a4a7a8aeb4b5bac0c8ced3cec6beb7b0a8a19c908a7f736e645b524940362c22170e05000000000000000000000000000000000006121d2934404b56616a77828e9aa5aeb8c3cbd5d3c9c0b9b2aaa7a09c9a97969696969892867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000006121d29343f4b56606a76818d99a2abb7c0c9d3d6cdc5bdb7afaaa8a4a09e9e9fa0a4a8aaafb6bbbdbec1c6cdd4ddd4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e898b8b8c8e90959c9fa6afb6bfc8d2d2c7beb4a99e94887d71655a4e43372b2013080000000005101c27333e49545e686e6e6e6e6e6e6f71757e89939ca7b2bec8bcb0a5998e82766b5f54483d31251a0e03000000000000000006111d28343f4b56606a737f8a939da7b0bac2cad3cbc3bbb4ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c10000000000000040d16232c333e49545e686f7b838f959ea6aea69f97918b827c756f6b66635f58595856505454545455505557595b5c5b6264676b70747a786e63574b474441403c37332f2a231e18100902000000000000000000000000000000000006111b252e36414a545d656f75808c919aa1a9b5b9c0c7cfd4d3cec7c2beb8b4b3b0aba8a7a5a4a4a4a5a6a8aaafb0b3b5bac0c3c8cfd4d3cec6beb8b0aba099908b7f746e645c534940372d22170e05000000000000000000061019212c363f48525b646e75818c939da6afb9c4ced2c8bfb6aca39a90897e726b61584f453b4049535c656e76818d949da7b0bac3cbd1c9beb5aca39c91867d716a61564e453b322820160c03000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c9beb3a9a09996919191919191919192929495989b9ea5a8abb0b8bbc4c9d0cfc8c0b8b1aba09c91877e726c625950463c31271f150c020000000000000000000000000000000007121e2a35414c58646f7b86919ca8b4bec7d6d5cbc3b9b0a8a19a97918e8c8b8a8a8b8c8e867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000007121e2935414c58636f7b85919ca8b3bbc7d0d8cec6bdb4ada79f9c989493929395989c9fa6abb3bbc2ccd0d6dde0d4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d807f7f8082858a90959fa6afb9c3ced7cdc2b8aea5978c8074695d5246372d22170d01000000030e19242f3a454e575e63636363636364656e77838e9aa6b1bdc8bdb1a69a8f83776c6055493d32261b0f0300000000000000030f1a25303b454f58636f7a84909ca3acb7c0c9d2cbc3bbb3aba49d9b938f8b89878787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c100000000000010b141e26333e48525b636e78828e949da5aea69f9691878078706c64615a57554f525354545352514e4c4a4a4c4d4f515257595b6264696e6e685e545452504c4b47413e39322e282119130b03000000000000000000000000000000000b16202b353e47515a636d747f8b909aa1aab2bac4c9d0d7cfc9c3bdb7b3aea9a7a7a09c9b99999899999a9c9fa6a5a8aab0b4b8bfc5cad1d6cec8c0bab5a9a19c91877e726c625a51473c31271f150c0200000000000000000007121c262f38424a545d636f7a838f969faab5bbc5cdcfc6bcb4aaa19c90857b6f685f554a43465059626c737f8a919ba4adb7c0c9d4cac1b8aea59c928b7f746d635a51473d352b22180f0600000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d1c6baafa499908b85858585858585868687888a8d9094989ca0a7abb5b9bfc7ced0c9c1bab6aba19790857c706960554a43382f261c1207000000000000000000000000000000000a15212c38434f5b66727d8997a0abb6c1ccd7cfc5bbb2a8a099918c8683807f7e7e7f8083867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b00000a16212d3944505b67737e8a96a0aab5c0ccd8d2c8beb5ada49d96918c89878788898d90969ca2abb2bbc4cdd6e0e0d4c8bdb1a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c7174747474767a7f8590959fa9b4bec7d2d2c7bdb1a59a8e83776b5a51473c31261b1004000000000b16202b353e474e54575757575757585d6974808b97a2aebac5beb2a69b8f84786c61554a3e33271b10040000000000000005111c28333e4a555f68747f8b959ea9b4bdc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c10000000000006111b252e363e4c57626c737f8a929ca4ada79f9690867e746e68625b575156585b5d5f5f5f5f5e5c5a5755504d494345484c4d5358586063635e6161605e5b5856514d49433d383129231b140c030000000000000000000000000000030e19242f3a454e57616b717d87919ca1aab2bac2cfd3d5cdc7bfb9b5ada8a59e9b9797918f8e8d8d8d8e8f909695999ca0a7a9aeb6bac1c8ced6d1cac4b9b6aba19790867d706a61564b43382f261c1207000000000000000000020c151f27313a444a556069707c85909ca2abb4bdc7d0cdc4bab4a99e958e82796e635d544a4b56606a707c86919ca2abb5bdc7d0d0c5bab1a89e958e82786e635c534941372d241a12070000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f797a7a7a7a7a7a7a7a7b7c7e8184888d91979ca2aaafb7bec6ced1cac5bab1a89f968f837a6f635c53483f362c21160c020000000000000000000000000000000c18232f3a46515d6974808b97a7b0bac5cfd6cbc0b5aba2998f8a807b77757373737375777b796e63574c4034291d12060006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0005101b27323d47515a6a76818d99a7b0bac4cfd9cdc3b8aea59d938f86817d7c7b7c7e81858d929ba2abb4bdc6d1dbe0d4c8bdb1a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c636569686869696e737c85909ca5aeb8c2cdd6cabfb3a79c9085796a60564b3f34291d12060000000006111b252e363e45494b4c4c4c4c4c505b67737e8a95a1adb8c4beb2a69b8f84786d61554a3e33271b10040000000000000006121d2934404c57636e7984909ba5aeb8c4cdd1c7bdb5aba29b928d837e787471706f707174777c828b9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c1000000000000b16202b353e47545d65707c86919ca2acaaa09790857d726d635f5854575a616467696a6b6b6a69686563605958534c474f54575c6365686b6c6d6d6c6b696764615a58534b47413a332c241c140b03000000000000000000000000040e172129333e49545e686f7b849097a1abb1bac2cbd2d4ccc5bdb6afaaa49d9b95908c89868482828182828385878a8d91969c9ea5abb0b8bec5cdd5d4cfc5bab1a89f9690847a6f635c53483f362c21160c01000000000000000000050e17212a313b465059626c737e8a919ba4adb7c0c9d3cec3b8aea59c938b80746d635a51555e636f7a838f969faab2bbc5cecfc6bfb6aba19790847b6f685f544c433930271d140a010000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746e6e6e6e6e6e6e6f6f717375797d81868e929c9fa6aeb5bec5ced4cac1b8afa69d938c81756d63584f453b30261c12070000000000000000000000000000020e1925303c47535f6a76818d99a4b0bbcad4d4c8bdb1a69b928a7f756f6b6968676768696a6f6e685f554a3e33281c11050006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121d2934404b56616a7984909ba7b3bec9d3d6cbbfb4a99e958f837c757270707172767b818d919ba4adb7c1ccd7e0d4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c5358595d5c5d5960636c727e8a949ea9b4bfcbd6cbc0b4a99f95867a6f63584c4135291e120700000000010b141e262e353a3e4040404040444f5b66727e8995a0acb8c3beb2a69b8f84786d61554a3e33271b1004000000000000030f1a25303b454f5866727d89949ea9b6bec8d5cdc2b7ada49b918d817a726d696665646466686c7077808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c1000000000030e19242f3a454e57646d77828e96a0aaaba29c91867d716d645d54585f63676b6f7274767676767573716f6966635c5753585f63676c717476787979787775726f6a65635c57514a443c342d241c130a01000000000000000000000009131e28313c47515a636e78828e959ea8b1bac2cad3d3ccc3bcb4ada69f9c938f8984807d7a787776767677777a7c7e82858b90959ca0a7adb5bdc4ccd4d4cac1b8afa69e948c81756d63584f453b30251a0f0400000000000000000000061119212c364048525b646e76818d949da7afb9c4cfd2c8bfb6aca39c91877d716b61585c656e76818d949da7afb9c3cbd2c8bfb6aca39c91877d716b61584f453b332920170c04000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746863636363636363646567686e71767c828a90969ea5aeb5bec7cfd1c9bfb6ada49b91887d71695f554a3f362c21160c0100000000000000000000000000030f1a26323d4954606c77838e9aa5b1bdc8d4cec3b9afa6998d81766e64615a5c5c5c5c5a6163635f584f453b30251a0f030006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0007121e2a35414c58646f7b86959ea9b4bfcbd9cdc2b8aea59b90847b706c66646465676b6f78818d939da8b3bdc7d1dbd4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e52515150555b636e7984909ba7b2becad5cec3b9afa693877b7064594d41362a1f13080000000000040d161e252b2f333434343438444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000005111c28333e4a545f6876818d98a5aeb8c6cfd6cabfb3a89d948d81796f69645d5a5958595a5c62656f747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c100000000005101c27333e49545e68727d89929ca7aea59b918a7f736d635c545b62686e72777b7e8081828282817f7d7a76716d65625c62686e72787c7f828384848482817e7b76716d64615a544d453d342c241a120700000000000000000000020d18232d38404b56616a737e8a929ca5aeb8c1cad2d4ccc3bbb3aba49d96908a837e7975716f696b6a6a6a6b686e7072767a7f858b91979ea4acb4bcc4ccd0ccc8bfb7aea59c91877d71695f554a3f33281c1105000000000000000000000008121c262f38424b555e636f7a838f969faab5bbc5cecfc6bcb6aba19790847b6f685f626c737f8a919ba4adb7c0c9d3cec3b9afa69c938c80746d635a51473e352b2218100700000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c575757575758585a575e63656b70767e8590949ea5aeb6bfc8d3cfc7bdb4aaa19b8f83796e63584f453b30251a0f0400000000000000000000000000040f1b27323e4955606c78838f9aa6b2bdc9d4cbc0b5aa9f96887d71655e57515150505151565857554f483f352b21160b000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000914202c37434e5a66717d8894a5aeb8c2cdd6cabfb4a99e948a7e736b625b5958595a61686e79838f9aa4adb7c1ccd8d4c8bdb1a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e4142464545464a555f6875818d98a4afbbc6d2d3c8b6aa9f93887c7065594e42362b1f1408000000000000050d141b2024272929292c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000006121d2934404b57636e7a85909ca7b3bec7d6ccc1b6aca39b8f837a6f686059544f4e4d4d4e53585f636e78828d969faab5c0cbd5cabeb2a79b9084786d61564a3f33271c100000000006111d2934404b57636e78838f9ba3aca99e958d81766e655d555d646c70797e8387898c8d8e8e8d8c8b8885817d77706c656b70797e83888b8d8f90908f8e8c8a86827d766f6b645d554d453d342b22170f0600000000000000000005101c27323d47515a636f7b85909ca3acb6bec9d1d6ccc4bbb2aba29c938f857f79726e68666360595f5e5f585f6364676a6f747a80878f949da3acb3bcc5c6c1bbb8b0aba69f978f83796e63574c4034291d12060000000000000000000000020c161f28323a444a556069707c86919ca2abb5bec8d0d0c5bab1a89e958e82796e636a707c86919ca2abb5bdc7d0cdc4bdb4a99f958e82796e635d544a41372e251b12080000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514c4c4c4c4c4d4e4e54575b62646e727c8490949ea6afb9c3ced6cdc5bbb3a89d938a7f73695f554a3f33281f140a0000000000000000000000000004101b27323e4a55616c78848f9ba6b2bec9d5cabfb3a89c9085796e63574b4745444545474b4c4c4a453f372f251b1107000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000a16222d3944505b67737e8a95a1adb8c8d2d5cabeb2a79b9084796e635a524d4d4e51575f69717d88939da8b3becad5d4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f3336373a3a363b454f5867737f8a96a1adb9c4d0cdc2b6ab9f93887c7165594e42372b1f140800000000000000040b1116191c1d1d212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243494c545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c1000000005111c27323d48525b66727d89939da8ada49b90847b6f635e555e646e727c83898e93959799999999989696908d88827c736f717c838a8f9397999b9b9b9b9a9897918d88827b726d655e554d443b32281f160c03000000000000000007121e2935404b56616b75818c959ea9b3bcc6cfd9cec5bcb3aba29b928e837c736e68635f585755505353534f5457595a60636a6f747d848f939ca3acb5bdbcb6b3aba7a09c96918c857c7165594e42372b1f1408000000000000000000000000060f17212a313c465059626c737f8a919ba4adb7c0cad4cac1b8aea59c928b80746d6f7a838f969faab2bbc5cecfc7bdb4aaa19c90857b70685f554c433931261e150a020000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514540404040414345494b52575e646c707c8490959fa9b4bac6cfd5cdc2b7ada49b9084796e63574c42392e24190e0300000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d4c8bdb1a59a8e8377685f54493e383939373c3f41403e3b352f271e150c02000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000b17232e3a45515d68747f8b97a2aeb9c5d1d2c6baafa3988c8075685f544a424142474f58636d78838f9ba6b2bdc9d4d4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b2f2e2c35444f5b67727e8995a0acb8c3cfcdc2b6ab9f93887c7165594e42372b201408000000000000000001060b0e101115212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000a16222d3944505c67737f8a96a6afb9c3ced4c8bdb1a59a8e82776d635950484038363536393e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c1000000007131e2a35404c57626b77828e9aa4ada89d948a7f736a61565c646e737e868f939a9ca3a3a4a5a5a4a3a69f9c99928e867f757d858e939b9da4a5a6a7a7a6a5a7a09c99928e857e736e655d544b433830261c12080000000000000004101b26313c47515a646f7b86919ca5aeb8c4ccd6d1c8beb5aca39b928d827a706b635f58554f4c4a4648474845494b4d51565960636d717b838e939ca4adb6b3aca7a29c97918d85807a716c63584c41362a1f13080000000000000000000000000007111a222c364049525b656e76818d949ea7b0bac4cfd1c9beb6aca39c91877d7176818d949da7afb9c3cbd3c9bfb6ada49a91897e726b61584f453c332920160d04000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a34343535353a3e42484c545b626b707c85909ca1aab6bec8d2d1c7bdb4a99e948a7e73675b52483e33281c110600000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d3c7bcb0a4998d82766a584f453a302d2d2d3134353433302b251e160e0500000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000c18232f3b46525d6975808c97a3afbac6d1cfc5bab0a794897d7266584f453a36363f48535d6874808b97a2aebac8d2d4c8bdb1a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f2023222c38434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000003050a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2f353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c1000000008131f2a36424d5964707c87929ca7afa69b8f83796e635a5a636d737e8791969da3a7acaeb0b0b0b0afafaaa8a39c96918a818490959ca3a8adb0b2b2b1afafb0aba8a29c9590877f736e645c534940362c22170d0300000000000006121d29343f4b56606a75808c96a0aab6bfc8d4d4cac1b8aea59c938d81796f69625b544f4a45403f3c363c353a3e4042474b50565c636a6f7a828e949da6ada8a39c9a928e86817b746f6a635c53493e33281d1106000000000000000000000000000108121c263038424b555e636f7a848f96a0aab5bbc5cecfc6bcb6aba09790847b7f8a919ba4adb7c0c9d3cec3b9afa69d938c80756d645b52483f352b2319100600000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e29292a2b2f33383d444b525b626c727e89919aa5aeb8c3ced7cdc2b8aea59a8f83786c62574c41352a1e130900000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e5347352b202222262929292825211b150e060000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000d18242f3b47525e6975818c98a3afbbc6d2ccc1b6aba097877b7064594d41352a2f37434e5a65717c8894a5aeb8c2cdd4c8bdb1a69a8e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131418202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1f252e36414c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c10000005101c27323d47515a68747f8b97a3aca99f958a7e73685f56616a717d8691979fa7acb2b6bab8b4b3b1b0b1b3b3aca7a09c918d90959ea5acb3b8b1aba8a5a3a3a5a8aaaba69f9791877e726c625950463c31271d130900000000000007121e2935414c58636f7a85909ca7b0bac6cfd8cfc5bab0a79e948e82796e696059524a453f3b3534312c302b303334373c40464a535a616a6f7a838f969fa49d9b938e88827c756f6b636059534b43392f24190e030000000000000000000000000000030d161f28323b454b56606a717d86919ca2abb5bec8d1cfc5bab0a79e958f8386919ca2abb5bdc7d0cdc5bdb5aa9f968f83796e635d544a41372f251b13080000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221e1e2024272e323b424a525b646d75808c959ea9b4bfc8d2d2c7beb3a89d93877c7065594d42382d23180d02000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b302413181b1d1e1d1c1a16110c05000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818c98a4afbbc6d2cbbfb4a89c91857a6e63574c4034292935404c58636f7a86959ea9b4bfcbd4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4033281f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c10000007121e2935404b57616b78838f9aa6b2a79c90857a6f63585b636f7b849097a0a8afb7bdb7b3aea9a7a5a5a5a7a9aeb0aaa19b989c9ea5aeb6b7b0a8a19c999798999ca0a7aba7a09791867d706960554a41372d23180b010000000005101c27323d47515a67737e8a969faab7c0cad7d7ccc1b6aba09790847b6f6960585049423b35302b28262224202528292d31363c43495159616a707c85909c9c948f89837d76706c64615a565049433b32291f150a00000000000000000000000000000000060f17222a313c465059636c737f8b929ca5aeb8c0cad4cac1b8aea59d938f91969faab2bbc5ced0c7bdb4aba19c90857c706960554d443a31271e150b020000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22171116191e232a323a424b545d636f7a84909ca5aeb8c3ced7ccc1b7ada4978c8074695a51473d32271b1005000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3024190d10121212110f0b070200000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f74685c51453a2e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818d98a4afbbc7d2cabfb3a79c908579685f554a3e332829343f4b56606a7984909ba7b3becad4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b1004000000000000101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d3223180f060d16242e3846525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c10000007131e2a35414d58646f7b87939da8b0a7988d8175696057626c75818d959ea7b0b8bcb5ada8a59e9b9a999a9c9ea5a8abaaa6a4a7a9aeb6bab0a7a097918e8c8c8e91979ba2aaa8a0968f837a6f635a51473c31251b11070000000007121e2935404b56616b77828e9aa6afb9c8d0dacec3b9afa69c91877d716a615950484038302b25211d1b1712161a1c1d22262c31394149515a626c737e8a92908a837e78716d65625b57514b464039322b22190f05000000000000000000000000000000000007111a222c374049535c636e78828e949ea7b0bac4cfd1c8beb5aca39d9a9c9fa7afb9c2cbd3c9c0b7ada49b918a7e726b625950463c342921160e05000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2217060b0e141a222a323b444b56606a737f8a959fa9b4c0cbd6d1c6bdb2a69b8f84786b61564b4034291e1206000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3024190d04060706050300000000000000000006121e2935404c57636f7a86919da9b4c0cbd1c5baaea2978b8074695d51463a2f231e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818d98a4afbbc7d2cabeb3a79b9084796d584f453b302526313c4650596c78838f9aa6b2bdc9d4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b1004000000000000101c28333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d231309000a14232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c1000000a15212d38444f5b66727e8995a4adaaa097897d7266595964707c86919ca5aeb8bcb4aca49d9b95908e8d8e9095999ca1a8afafb3b4b8beb5aaa097918782808182868d919aa1aaa79d948b80746a61564b3e352b20160b0000000007131e2a35414d58646f7b86919ca8b4bfc9d6d7cbc0b4a99f958c81756d635a51483f383028211b16110f0c080b0e1113171d222930394049525b636e78828b847f79726e68635c57524b47413c373028221a12090000000000000000000000000000000000000108131d2730394349545e686f7b849097a0abb5bcc6cfcec6bcb4aca7a6a8aaafb7c0c9d3cfc4b9afa79d948d81756e645b52483f362c2319110600000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0003091119222a313c465059636f7a85909ca7b3bec8d3d6cabfb3a89d94877b6f64584d41352a1e1307000000000000000000000004101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3024190d01010100000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd2c6baafa3988c8075695e5246372d221e2a35414c58646f7b86929ea9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a352b21222d374954606c77838e9aa6b1bdc8d4c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b1004000000000000101c27333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d23180d020517232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c1000010c18242f3b46525e6975808c97a3afa89c91857a6f6357606975818c97a0abb5beb6aca39c948f898483828384888d91979fa6afb7c0c3bfb3a89c91867d777575777b818c909aa3aca49c90857b6f64584f453a30251a0e030000000a16212d3944505b67737e8a97a1abb6c1ccd8d0c5bab1a89c90857b6f635c534941382f271f17110b07040100000305080d1218202830394249545e68707c807a736e69635e57534c48423d38312d272018120a0100000000000000000000000000000000000000030d1620282f3a454e57616a717d86919ca3acb5bec9d1cdc4bcb6b3b1b3b5b9c0c7d0cec5beb5aa9f968f837a6f635e544b42382f261c13090000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000109111a222c37404a55606975808c97a6afb9c3ced8cdc2b7ada495897e72675b4f44382d211107000000000000000000040708101b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3024190d0d0d0d06060401000000000000000006121e2935404c57636f7a86919da9b4c0cbd3c7bbb0a4998d82766a5a51473c31261f2a36414d5964707b87939eaab5c1ccd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b77828e99a5b1bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b1004000000000000101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d32271b10060d161e2f3b46525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c1000040f1b26313c4650596c77838e9aa6b1a69a8f8377696057636f7a85909ca7b0bab8aea59c938e847d79777677797c818790959fa7afb9c4bbafa3988c81756d69696b7078808c939ca7aa9f968b7f74685f54493e33281c1105000004101b26313c4650596a75818d98a8b1bac5d0d8ccc1b6aba1978c80746a61564c433930271f170f070100000000000000000308101820282f3a454e57626c70746f6a635f58544e47433e39322d28221d170f0701000000000000000000000000000000000000000000060f18202b353e47515a636d747f8b929ca5aeb8c1cad4cdc6c1bebdbfc0c4c9d0d0c8beb5aba29c91867c706960554d443a32271f160b030000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000108131d27313b46505965717c88959fa9b4c0cbd7d1c7baafa3988c8075695e5246352b21160b00000000000000060b0f1214151b27333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3024191818181812110f0c080300000000000006121e2935404c57636f7a86919da9b4c0cbd5c9beb2a79b8f84786a61564b3f3429202b36424e5965707c88939faab6c2cdd0c4b9ada1968a7f73675c5045392d22160b000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4034291f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c100006111d28343f4a5560697984909ca7afa3988c817569595a66727d89969faab8c1b4a99f958e827a726e686b686e71767e8590969faab5bcb7aca094897d72665d5b61686e79828e9aa3aca69b9084796e63574b4034291d1208000006111d28343f4b56606a78848f9ba7b2becad4d6cbbfb4a89c91867b6f645a51473b332920170f06000000000000000000000000071018202b353e47525b626468636059554f49453e36332e29231e17130d0600000000000000000000000000000000000000000000000006111b252e364149535c636e78828e959ea8b1bac5d0d7d0ccc9c8cbcccfd3d4cac0b7ada49b928a7f736c625950463d342a21170f05000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000030d17222c36404b57636e7985909ca7b3bfcad6d3c8bcb0a5998e82776b584f453b30251a0f0300000000020910151a1d1f202427333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b302424242424241d1d1b17120c06000000000006121e2935404c57636f7a86919da9b4c0cbd6cabfb3a89d94867b6f63584c4439312a2c38444f5b66727e8995a0acb7c3cfcfc4b8ada1958a7e73675c5044392d22160a000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1e252e363e4c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c100006121d2935404c57636f7a86959ea9ada2968a7f73685c5d6974808c97a6afb9bab1a89c90857b6f6a635f585f63656d727d86919ca3acb6b6aa9f93877c70655952575f68707c88939ca7a99e94887d71655a4e43362c22170c010006121e2935404c58636f7a86949da8b3bfcadad4c8bcb1a59a8e82776b61574941372b23181007000000000000000000000000000006111b252e36424b5257595d5856504a453f3a352e26241f18140e080300000000000000000000000000000000000000000000000000010b141e2630394349545f686f7b849097a1abb6bcc6cfd8d7d5d4d6d7dadacfc4bab0a79e948d81766e655b524940362c2419110700000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000008121c27333e49545e6877828e99a5b0bcc8d3d5c9beb2a79b8f8478685f554a3e33281c1105000000020b121a2025292b2c2f2f333e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b302f2f2f2f2f2f292826221c160f070000000006121e2935404c57636f7a86919da9b4c0cbd8cdc2b7ada4958a7e73675d544a413936363d47515a68747f8b97a2aeb9c5d1cfc3b8aca195897e72675b5044382d21160a000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2e353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c100008131f2b36424d5965707c8793a5aeaca095897d72665b5f6b77828e99a5b1bcb6aba1978b7f746b6159544f54575d646d737f8a939da7b3b6aa9f93887c7065594e4f58626c77838e9aa6aea5978c8075695950463c31261b0f040008141f2b37424e5965707c8893a4adb7c2cdd8cfc5bab0a7968b7f73685a51473930271b1208000000000000000000000000000000010b141e26323a42484c4d514c4a46403b352f2b251e16140f090400000000000000000000000000000000000000000000000000000000040d162029303a454f58616a717d87919ca3acb6bfc8d2dde0e0e2e2e3d7ccc1b5aaa0978f847a6f635e554b423830261c13090100000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000030e19242f3a454e576974808c97a3aebac6d1d6cbbfb4a89c9185796e63574c4034291d120600000009121b232a2f3436373b3b3b3e4a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53473b3b3b3b3b3b3b3b3534312c261f170f0600000006121e2935404c57636f7a86919da9b4c0cbdcd1c7bdb1a69a8e83776d645a514a444241444b56616b77828e9aa5b1bdc8d4cec3b7aca094897d72665a4f43382c201509000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b10040000000000000a16222d3944505c67737f8a96a5aeb8c3ced1c7bdb1a59a8e83776d635950484038363636363e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c10000914202b37434e5a65717d88949fabab9f93887c716559616c78848f9ba6b2beb4a89c91867b6f635a514a45494b545c636e79838f9aa5aeb8aba094887d71665a4f47535c67737e8a96a5aea69a8f83776a60564a3f34281d1106000a15212d38444f5b67727e8995a0acb8c7d1d7ccc1b6aba097887c7165594e42382b20170a0200000000000000000000000000000000040d16212a32383d414246403f3c36302b25201b140d0a0500000000000000000000000000000000000000000000000000000000000000051018202b353e47515a636d74808b939ca5aeb8c3ced9e4ebede2d6cbc0b6aba29c91867d716a60564e453b32281f160c030000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000b16202b3545505c67737f8a96a1adb9c4d0d7ccc1b5aba097867b6f63584c4135291e1207000006101a232b333a3f4243464646464a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e53474646464646464646403f3c3630281f160c03000006121e2935404c57636f7a86919da9b4c0cbd7d5c9beb3a79c93897e726a615a544e4d4d4e545d646f7b86919ca8b4bfcbd6cdc2b8aea593887c7065594e42362b1f1408000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b0c0701000000000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243474e545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c10000915202c37434f5a66717d8994a0abaa9e93877c706459626d7985909ca7b3bdb2a69b8f83786a61564a413b3e4449545f68727e89959ea9b4ada1968a7f73685c50454d5964707b87959ea9a89c91857a6f63584c4035291e1206000b17222e3a45515c68747f8b96a2aeb9c5d0d6cbbfb4a89c91857a6e63574c4034291d120700000000000000000000000000000000000005111a21282e3235363a3534312c26211c16110b040000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d636e79828e959ea9b4c0cbd6e2edebdfd4c9bdb2a79c928b7f746c635950463d352a22170f06000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000611212c38444f5b66727e8995a0acb8c3cfdacfc4bab0a792877b6f64584d41352a1e130700000b15202a333c43494d4e525252525255616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e535252525252525252524c4a46403830261c1208000006121e2935404c57636f7a86919da9b4c0cbd7d7ccc1b6aca39b90847b6f6b645d5a5958595d646d75818c97a1abb6c1ccd6cabfb4a99e94867b6f63584c4135291e1207000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b16110a030000000006121d2934404b57636e7a84909ca7b3bec7d2ccc1b6aca39b8f837a6f686059544f4e4d4d4e53575e636e78828e969faab5c0ced5cabeb2a79b9084786d61564a3f33271c10000a15212c38444f5b66727e8995a0acaa9e92877b706458626e7985919ca8b3bcb0a4998d82766a5a51473a30333a454f58636e7984909ca7b3afa4988c81756a5950464c57626b7984909ba7aba097887c71655a4e42372b201408000c18232f3a46515d6974808b97a3aebac5d1d5c9beb2a79b9084786960554a3f33281d1106000000000000000000000000000000000000010911181e24272a2a2e292826221d16120c06010000000000000000000000000000000000000000000000000000000000000000000000010b151e263139434a555f686f7b85909ca7b3becad6e1edeadfd3c8bcb0a5998e82786e635c534940372d241a110700000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000915202c38434f5a66717d8994a0abb7c3ceded4cab6aa9e93877c7064594d42362a1f130800040f1a252f3a434c53585a5e5e5e5e5e5e616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e5e5e5e5e5e5e5e5e5e5e5755504940362c22170c010006121e2935404c57636f7a86919da9b4c0cbd7dbd0c6bcb4a99e958f837b726e6865646465686e727e87919ca8b1bac5d0d5cabeb2a79b9084786a61564b3f34291d1206000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a352b2925201a130b0300000005111c28333e4a545f6876818d98a5aeb8c2cdd0c6bcb3a89d948d81796f69645d5a5958595a5c62686e747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c10000a15212d38444f5b67727e8995a1aca99e92867b6f6458626e7985909ca8b3bbb0a4988d81766a5f5347372d2b353e4a545f6876818d98a4b0b2a69a8f83786960554a48525b6b76828e99a5b0a7958a7e72675b5044392d21160a000c18242f3b46525e6975808c98a3afbac6d1d4c8bdb1a69a8e83776c5850463b30251a0f040000000000000000000000000000000000000001080f14191c1e1f231e1d1b17120d07020000000000000000000000000000000000000000000000000000000000000000000000000000040d162029303b454f58616b74808b97a2aebac5d1dce8e4d9cdc2b6aa9f93887c70685e5449433930271c12080100000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000915202c37434f5a66717d8994a0abb7c3ced8cdc1b6aa9e93877c7064594d42362a1f13080007121d29343f49535d6366696969696969696d78848f9ba6b2bec9d2c7bbafa4988d81756a696969696969696969696963605950463c31261b0f040006121e2935404c57636f7a86919da9b4c0cbd7e0d6cdc3b8aea59d938f847e78747170707173777e869097a0abb8c1cad4d3c7bcb0a5998d82766b5a51473c31261b1004000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d614e453a3734302a231c130a010000030f1a25303b454f5866727d89949ea9b4bec8d2cdc2b7ada49b918d817a726d696665646566686c7078808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c10000915212c38434f5b66727d8994a0acaa9e92877b706459626d7984909ca7b3bcb0a5998e82766b5a51473c3125303b454f5868737f8a96a2adb4a89c91867a6f63574c47525e6975818c98a3aea2978b8074695d51463a2f23170c000d1924303b47535e6a75818c98a4afbbc6d2d3c8bcb1a59a8e82776b605448362c21170c01000000000000000000000000000000000000000000050a0e1113131712110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000008121d263038404a545f68707b85909ca7b3bfcad6e1edebdfd3c8bcb1a5998e82786e635c534840362c2118100700000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000a15212c38444f5b66727d8995a0acb7c3cfd8ccc1b5a99e92877b7064584d41362a1e13070008141f2b36424d58636d71757575757575757578848f9ba6b2bec9d2c7bbafa4988d81757575757575757575757575756f6960554a3f34281d11060006121e2935404c57636f7a86919da9b4c0cbd7e7dcd2c8beb5ada49d949089837f7d7c7b7c7f838990969fa7b0bac9d1daccc1b6aca3968a7f73675c5045372d22180d02000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a79b8f8478685e544944433f3a342c231a11070000000b16212b35404c57636e7984909ba5aeb8c3ced1c7bdb5aba29b928d837e787472706f707174777c828c9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c10000915202c37434e5a66717d8894a0abaa9f93877c706559616c78838f9aa6b2bdb2a79b8f84786a61564b4034292b35444f5b66727e8995a0acb6aba097887d71655a4e45515c68747f8b96a2aea4988c81756a5e52473b3024180d000d1924303b47535e6a75818d98a4afbbc6d2d3c8bcb1a5998e82776b5f5448352b21160b0000000000000000000000000000000000000000000004090d1012131511100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000061019222c364049535c636e79828e959fa9b4c0cbd7e2eeebe0d4c9bdb2a79c928b7f736c625950463b312920170d03000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000a16222d3944505c67737e8a95a1adb8c4cfd8ccc1b6aba197867b6f63584c4135291e1207000915202c37434e5a66717d80808080808080808085909ca7b3bfcad5c9bdb2a69b8f83808080808080808080808080807a6f63574c4035291d12060006121e2935404c57636f7a86919da9b4c0cbd7ece2d8cec6bdb4ada59e9b938f8b888787888a8e939c9fa6afb8c1cad9d4c9beb2a79c93877b7064594d41362a1f130800000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000915212c38434f5a66727d8994a0acb7c9bfb3a89c9085796e63574f4f4e4a443c342a20160c01000007111c28333e4a555f68747f8b959ea9b4bcc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c10000814202b37424e5a65717c8894a8b1ab9f93887c71655a5f6b76828d99a5b0bcb4a89c91867b6f64584c43372f2c38434f5a66727d8994a0abbab0a7968b7f73685c5145505b67727e8a95a1aca5998d82766b5f53483c3125190e000d18242f3b46525e6975808c98a3afbac6d2d4c8bdb1a69a8e83776c584f453b30251a0f030000000000000000000000000000000000000000070e13181b1d1e211d1c1916110b0400000000000000000000000000000000000000000000000000000000000000000000000000040d162129313c465059636c747f8b929ca6afb9c3ced9e4eaede2d7cbc1b6aca39c91867c706960554a443930271d1309010000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000617232f3a46515d6974808b97a3aebac5d1d6cbbfb4a89c9185796e63574c4034291d1206000b17222e3a45515c68747f8b8c8c8c8c8c8c8c8c90959fa9b4c0cbd5cabfb3a89d938f8c8c8c8c8c8c8c8c8c8c8c8c867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd7e4dcd5cfcbc5bdb5aea9a39d9a9794939293969a9ca3aaafb7bfc8d1d6cdc2b7ada49a8e83776b62574c4035291e120300000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000914202c37434e5a65717d8894a6afb9c4c0b5aa9f96877c70655f585b59544d443a30251b10050000030f1a25303b454f58636f7a84909ca3acb7c0c9d3cbc3bbb3aba49d9b938f8c89888787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c100008131f2a36424d5964707c8797a1abaca095897e72665b5d6974808b97a7afb9b6aba1978a7e72675c53483f363038444f5b66727e8995a0acb8b0a4998d82766a5a51474f5b66727d8995a0aca59a8e83776b6054493d31261a0f000c18232f3a46525d6974808b97a3aebac5d1d5c9beb2a69b8f8478685f554a3e33281c1105000000000000000000000000000000000000000810171e2327292a2d292724201b140d0a0500000000000000000000000000000000000000000000000000000000000000000000010b151e26313a414a56606a717d86919ca3acb6bfc8d3dddfdee1e2dad0c5bcb5aaa0968f837a6f635d544a41372d231a11060000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000005111c28333e48525b6b76828d99a4b0bcc7d3d5cabeb2a79b908478695f554a3f33281c1105000b17222e3a45515c68747f8b96989898989898989c9fa6afb9c3ced8cdc2b7ada49d9b989898989898989898989892867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd7dcd3ccc5c0bdbcbeb8b4aca8a6a29f9e9e9fa2a6a7acb5b9bfc7d0d7cec6beb4a89e948a7e72675b52483d32271c110500000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000008131f2a36414d5964707b87969faab5c0c3b9afa6988d81756e696866645d544a3f34291e13070000000b16212b353f4a56606a737f8a939da7afb9c4cfd3cbc3bbb5ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c100006121d2934404c57636e7986919ca8ada2968b7f73685c5a66727d89969faab5bab1a89a8e82776c63584f463f3b3d47515a68747f8b96a2aeb9b2a79b9084786b61564b4f5a66727d8994a0aba69a8e83776c6054493d32261b0f000b17232e3a45515d68747f8b96a2aeb9c5d0d6cbbfb3a89c91857a6e63574c4034291d130800000000000000000000000000000000000007101920272d3234353834332f2b251e16150f0904000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d636f7a838f97a0aab3bcc6cfd8d6d4d3d6d6d9d5cfc4bab0a79d938c80756d635a51473c312a21170e0500000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000020c161e2a35414c57626c7984909ba7b3becad5d3c8bcb1a59a8e82776b584f453b30251a0f04000b17222e3a45515c68747f8b96a2a3a3a3a3a3a3a7a9afb6bfc8d3dbd1c7bdb4ada8a6a3a3a3a3a3a3a3a3a3a39d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd7d5ccc3bbb5b2b0b3b5bab7b3b1aeabaaaaabadb1b2b6bcc4c9d0d7cfc7beb5aca29b8f84796e63574c42382e23190e0300000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000006121d2934404b57636e7a85909ca8b3bcc6bfb1a69b918b80797574726e64594e43372c20150900000007111b25313c465059636e79838f969faab5bac2d0d4ccc5bdb7b3ada8a6a3a09f9e9fa0a2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c100006111d28333f4a5560697884909ba7afa3988c8175695958636f7a85919ca8b3bdb2a79c92887c71685f55504a46474b56616b76828d99a5b0bcb4a99e94867b6f64584c4e5a66717d88949faba69a8f83786c6055493e32261b0f000a16212d3844505b67727e8a95a1acb8c8d2d7ccc1b5aaa097877c7065594d42372d22180c0200000000000000000000000000000000040e17202931373d404144403e3a352e26241f18140e08030000000000000000000000000000000000000000000000000000000000060f17202b353e47515a646e75818d949da7b0bac4ccd7cfcbc8c7cacbced2d3c9c0b7ada49a91897d726a61564b453a32271f150c02000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000007121c26303b454f5865707c87959ea9b4bfcbd6d2c6bbafa3988c81756a5e5247362c21160c01000b17222e3a45515c68747f8b96a2aeafafafafafb3b4b9bfc6cfd8e1d7cdc5bdb7b3b2afafafafafafafafafa99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbdacfc5bbb3aba6a5a8aab0b7c0bdb9b7b5b5b6b9bdbec1c6ced3d4cfc7bfb6aea59c92897e72685f554a3e31281e14090000000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000005111c28333e4a545f6876828d99a3acb5bcbfb5aba199908b8481807e72665b4f44382c21150a000000020c17222c36404a545f68707c86919ca1aab2bbc5cad1cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c1000040f1a25303b4650586b77828e9aa5b1a69a8e8377696056606a76828d99a4adb7b6aca39a8f83796e636058555051565d646f7b86919ca8b3bfb8aea595897d72665b4f4e5a65717d88949faba69a8f83776c6055493d32261b0f000814202b37424e5a65717c8893a5aeb8c2cdd8cfc4bab0a7968a7e73675a51473c31261c12080000000000000000000000000000000009131e27313941474b4c4f4b49453e36332e29231e18130d08020000000000000000000000000000000000000000000000000000030c161f28303a454f58616b727e89919ba4adb7c0cad3cbc5c0bdbcbec0c3c8cfd0c7bdb4aaa19b90847b6f645e554b42382f261c1207000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000081019212c363e4a555f6874808b97a5aeb8c3cdd8cdc2b8aea5958a7e73675c5044392d22120700000b17222e3a45515c68747f8b96a2aeb9bababababfc0c3c8cfd7dfe7ded5cdc7c2bfbdbabababababababab5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbcbcbc0b5aba29c999ca0a7b0bac0c8c2c1c1c2c4c8c9ccd0d3cecac4beb6afa69e958e82776e64584f453b3021180e040000000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b20140800000000000000000000000000030f1a25303b454f5866727e89939da5acb3b7bbb2a9a09994908d8b82766b5f54483d31251a0e0000000008121d26303b454f58626c737e8a909aa1abb6bac1c9cfd1cdc7c2bfbdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c1000010c17212c3646525d6975808c97a3afa89c91857a6f63575966727d89949da8b3bcb3a89d938c80756e696360595a61636e75808c96a0aab5c0baaea3978b807469574e4f5a66727d8994a0aba59a8e83776b6054493d31261a0f0007121e2a35414c58636f7b86949ea9b4bfcbd6d4cabcb0a5998d82766a61564b40362c21170f050000000000000000000000000000061019232d37414a5156585b57544e47433e39322e28221d17120c070100000000000000000000000000000000000000000000000008121c2630384049545f686f7b85909ca1abb5bdc8d0cbc3bbb5b1b0b3b4b8bfc6cfcdc5bab4a99e958e82766e655b52483f362c211810060000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00030810182129303b465058636e7984909ba7b2bec8d2d6cbbfb4a99e94877b7064594d41362a1f130700000b17222e3a45515c68747f8b96a2aeb9c5c6c6c6cacbced3d8dfe7eee5ded7d1cdcac9c6c6c6c6c6c6c6c0b5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4bfbfbfbfbdb2a69c928d9197a0aab0b7bdc1c6c9cacbcecccbcac9c3c0bab5ada69f9690847b6f645d54483f352b211108000000000d1924303b47535e6a75818d98a4afbbc7d2c9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8d3c8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b20140800000000000000000000000000000b16212b35404b57636e78838f959ca3a8adb4b9b1a9a59e9b988e82766b5f54483d31251a0e00000000030d16212b353f47525b646e75808c919ba1abb1b8bec4c9cdd1cdcac9c6c3c2c1c1cac5beb6afa69f9c9a9ca3acb6c1ccd5cabeb2a79b9084786d61564a3f33271c1000000712212c38444f5b66727e8995a4adaaa096887d71655757636e79848f9ba3acb7b7aca39a918c8079726e696a6a6a6f747e89919aa7b0bac4bcb1a5998e8277685e544f5b66727e8995a0aca5998e82766b5f54483c31251a0e0006121d2934404b56616a7984909ba7b3becad5d6cbbfb3a89c91867b6f635950463b31271f160d04000000000000000000000000060e172129323d47515a616467635e57534c48423d38312d27211c16110b0400000000000000000000000000000000000000000000061019222c364049535c636e78828e959fa9b2bbc5cecec5bbb2aba6a4a7a9aeb6bfc8d2cec3b8aea59c928a7f736c62584f453b302820170d0300000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b090d12192029313a414a556069727e89949ea9b4bfcad8d5cabeb2a79b9084796b62574c4035291e120700000b17222e3a45515c68747f8b96a2aeb9bfbfbfbfc9cacdd1d7dee6ece3dbd4cfcac7c7bfbfbfbfbfbfbfbfb5a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4b4b4b4b4b4b0a5998d8286919ca0a7adb3b7bbbdbfc0c3c1bfbebcb9b5b0aba49e9690857d716a61564d44372f251b1100000000000d1924303b47535e6a75818d98a4afbbc7cbc9beb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcc8cbc8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000007111c27333e49545e68707c848e939a9da4adb7b9b5aea9a5998e82766b5f54483d31251a0e000000000007111b252e37424b555e636e78818d919ca1a8aeb5b9c0c2c8c9cacccecbcacac4c1bab6aea69f95908e939ca7b2bec9d5cabeb2a79b9084786d61564a3f33271c10000007121e2a35414c58646f7b86939da8b0a7978c8075685e545f68727e89939ca6afb9b4aaa19a918c837e7a777676777b8087919ca1aab7c0c4bfb3a79c9085796e6357515c68737f8b96a2ada4988d81766a5e53473c3025190d0005101b26313c47515a6a76818d99a4b0bbc6d1d7ccc0b5aaa0968b7f746960554a42382f261e150d0600000000000000000001060f171f27313a414b56616b6f726e68635d57534b48413c37312c26201b150d060100000000000000000000000000000000000000040d162129313c465059636c747f8b929ca6afb9c2cbd1c8bdb5aba29b999c9fa5aeb8c3ced2c8beb5aba29c90857c70695f554a433930271d130800000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22171213181d22293139414a535c636e79848f9ba5aeb8c2cdd8cdc2b7ada4988c8175695b52483d32271c110500000b17222e3a45515c68747f8b96a2aeb4b4b4b4b4bebfc2c7ced5dee4dbd3cbc4bfbcbbb4b4b4b4b4b4b4b4b4a99d92867b6f63584c4135291e12070006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f7f8a91969da4a8adb0b2b3b5b9b5b4b2b1afa9a7a09c948f857d716c635a51473d34271e150c02000000000d1924303b47535e6a75818d98a4afbbbfbfbfbeb2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0bcbfbfbfbdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000000030e19242f3a454e57626b707b82898f939da8b3bebeb8b0a5998e82766b5f54483d31251a0e0000000000010b151e27323b4449545f686e79818b91979ea5aaafb4b8bcbebfc0c3c0bfbdbab5b1aba59e969085828e9aa5b1bdc8d4cabeb2a79b9084786d61564a3f33271c10000006121d2934404b56616a78838f9ba6b2a79b9084796e635758636e78828e969faab5bab2aaa19b938f898583818183858b9197a1abb2b3b5b9c0b4a99f95877c70645950596975818c98a3aea3978b8074695d51463a2f23170c00020d18222d3745505c67737f8a96a3acb7c1ccdacfc4bab0a79b90847a6f635b52483f362e251e16100a05020000000104060b11171f272f38414a545d646f7b7e78716d65625c57524b47403b36302b251e161109010000000000000000000000000000000000010b151e26313a414a556069717d86919ca3acb6bfc8d4cac0b8ada49b928d90959fa9b4bbc5cecfc6bbb5aa9f968f83796e635c534940372d22191106000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221b1d1e23262c31394149515a636c747f8b949da8b5bec7d2d6cabfb4a89e94887d71655a4e43382e23190e0300000b17222e3a45515c68747f8b96a2a8a8a8a8a8a8b2b3b7bdc5ced7ded4cbc2bbb5b1afa8a8a8a8a8a8a8a8a8a89d92867b6f63584c4135291e12070006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f737f868f939a9da4a4a6a8aaafaba8a7a5a69f9c97918c847c716d635c534a41372c24160e0500000000000d1924303b47535e6a75818d98a4afb4b4b4b4b4b2a79b8f84786d61564a3e332725313d48545f6b76828e99a5b0b4b4b4b4b4b1a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000000000b16202b353e47525b626b70777d838f9aa6b2bdc7bcb0a5998e82766b5f54483d31251a0e000000000000050e16222a303a454f585f686e757f8790949c9fa6a9aeb0b2b3b5b9b4b3b1b0aaa8a19c9490857d808c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000005101b26313c47515a6874808b97a3aca89e94887d71655b545e68707c85909ca1aab1bab2aaa49d9b96918e8d8d8e91969ca1a8a9a7a8aaafb7b9afa6958a7e72675b55606977838e9aa5b0a7958a7e73675b5044392d21160a000009131f2a36424d5964707c87939da8b3c0cad4d4cac0b4a99e958b80746c625950473e352e26201815100d090b070c0f11161b20272f373f48515a636d768189837d77706c64615b56514a46403a352e26221a1108000000000000000000000000000000000007111b252e37414a545d636f7a838f96a0aab3bcc6cfcfc4bab0a79d948d8285909ca1abb5bdc8d1cec4b9afa69d938c80746d635a51473c312a21160e050000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2326292a2d32373c434a515a616b717d86919ca4adb7c5ced7cec3b8aea59b8f84796e63574b4034291d14090000000b17222e3a45515c68747f8b969c9c9c9c9c9c9ca6a8adb5bdc7d1d9cfc4bbb2aba6a49c9c9c9c9c9c9c9c9c9c9c92867b6f63584c4135291e12070006121e2935404c57636f7a869191919191919191919191918b7f73737d838a8f9396999a9c9fa6a09c9b9a9795908c86807a706c635d534c433931271c13060000000000000d1924303b47535e6a75818d98a4a8a8a8a8a8a8a8a79b8f84786d61564a3e332725313d48545f6b76828e99a5a8a8a8a8a8a8a8a69a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b20140800000000000000000000000000000006111c28333e4a555f686e767e838f939da8b3bec2bcb0a5998e82766b5f54483d31251a0e0000000000000006111a202b353e474f585f636f747d848c91969b9ea5a5a6a8aaafa9a7a6a7a09c97918d847c75818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000020d18232d37424d5964707c87939da7aea5998d82766c625757626b727e8a909aa1a9b4b8b4ada8a69f9c9a99989a9ca0a7aba59e9b9c9fa6afb9afa3988c8175695957636f7a85919ca8aaa096887c71655a4e42372b201409000007131e2a35404c57626b78838f9aa7b0bac4cfdacdc2b8aea59c91867c706960574e453e373028241f1c18141712171a1d20252b2f383f485058616b727d89918f88827c76706b63615a555049453e37322a22180f05000000000000000000000000000000060f17202b353e47515a646e75818c949da7b0bac4cccfc7bfb5aba0978f847a7e89919ba4adb8c0cad3c9bfb7aca39c91877d716a61564b443a31271e150c0200000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a332d323435373d40464b535a616a6f7b849097a0aab5bdc7d6d3cbc0b4a99f958b7f74685e54493e33271c10040000000b17222e3a45515c68747f8b9191919191919191929da4adb7c2cdd5cabfb5aba19b98919191919191919191919191867b6f63584c4135291e12070006121e2935404c57636f7a85858585858585858585858585857f736c71797e83878a8d8f9096919791908e8c8985817c756f6a625b534c433b332920170b030000000000000d1924303b47535e6a75818d989c9c9c9c9c9c9c9c9c9b8f84786d61564a3e332725313d48545f6b76828e999c9c9c9c9c9c9c9c9c9a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000006111c27333e48525b636e7981898f949da4adb7bdb7b3b1a5998e82766b5f54483d31251a0e000000000000000107111b252e373f474f545f666d717a80858b909497999b9c9fa69f9c9a9896918d87817a7075818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000009131e2a35404c57626b77838f9aa5aea89c91877c70645d545b646e74808c919aa0a9aeb6b7b3afaaa8a5a4a4a5a8aab0a79e949091969faab5b1a69a8f837769605966717d8896a0aaa89c91857a6f63574c4035291d1206000005111c27323d48525b68737f8b97a0aab5c1cad4d2c8beb5aa9f968f83796e685e544f474039332f2927232323232125282b2f353a4248505860696f7b84909b9a928e87817b756f6a636059544f47423b32291f140a0000000000000000000000000000020c161f28303a454f58616b727e89919ba4adb7c0cad3c9bfb6aca39c91867d7175818d949da7b0bac4cfd0c7bdb6aba19790847a6f635e554a42372f251b110700000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453e3e373c404143474b50565c636b6f7a838f949ea7b0bac5ced6cdc2b8aea59c90857a6f63574e453a2f24190e030000000b17222e3a45515c68747f85858585858585858588949da8b3bfcad3c7bcb1a69b918d858585858585858585858585857b6f63584c4135291e12070006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f65686e73787c7f818385858686858482807d7a75706b636059524b433c332b22191007000000000000000d1924303b47535e6a75818d91919191919191919191918f84786d61564a3e332725313d48545f6b76828e91919191919191919191918e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000007131e2a35414c57626c74808c919b9da4adb4bdb4ada8a8a1998e82766b5f54483d31251a0e0000000000000000010b151e262e373f454a565d636a6f747b8084888b8d8f91969195908f8d8a85817c756f6a75818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000005111c27323d48525b67737e8a949ea8aba1978d81766d6359545e667075808b909c9ea5abb0b4b8b5b3b1b0b0b1b3aea7a097908486919ca8b2b2a89c91857a6e63606a75818d98a7b0a59a8e83776960554a3f34281d11060000030e19232e38424d58646f7b86919ca8b1bac5d0d8cfc4b9afa69d938d81786e635f585149443e3935322e2f2e2f2c3033353a3e4549525960696e79828e959ea29c97918d86807a746f69635f58524b42392e24190e030000000000000000000000000008121c262f384049545f686f7b85909ca1aab4bdc8d0cec3b9afa69c938b80746c6f7a848f97a0abb5bcc7cfd0c5bab1a89e948d81766e645b52483f352b21180f06000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514a4a4a4a474b4c4e51565960636d717b838f939da5aeb7c0cad5cec6beb4a99e948b7f746a6056473e352b20160b000000000b16222d39444f5b656f747a7a7a7a7a7a7a7a7a838f9ba6b2bec9d2c7bbafa4988d817a7a7a7a7a7a7a7a7a7a7a7a7a776a61564b4034291d120600040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e5f63676c70737678797a7a7a7a787775726f6964625b565049423b332b231a120800000000000000000d1924303b47535e6a75818585858585858585858585858584786d61564a3e332725313d48545f6b76828585858585858585858585858583776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000008131f2b36424d5965707c86919ca2a8adb5bdb4ada49d9b97918e82766b5f54483d31251a0e000000000000000000040d161e272e353b454c535960636b6f74797c7f8284858586858583817e7b76706c636975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000030e19232e38424c57636e7984909ba4ada89b92897d716a6056565f636e78808990959ca0a7a9aeafb0b1b1b0afaaa59e9791877d838f9aa6a6a6a6a096887c7165636f7a85909ca8ada4978b8074695950463b31261a0f040000000a141e2934404b56616b76818d97a1abb6bfc9d3d3c9c0b7ada49b918c80756e68615a544c4943403d383a3a3a363b3f4045494e545b62696e79818d939ca5aca8a19c96918c857f7a736e68625b52483e33281c1106000000000000000000000000051019222c364048535c636e78828e959ea9b2bbc5cecec6beb5aa9f968e82796e636a717d86919ca3acb6bfc9d3cac1b8aea59b918a7e736b62584f453b302820160d030000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c55555555555156585a5a61646a6f757d848f939da4adb5bec8d0d1c8beb5aba29b90847a6f63595046362e251b1106000000000914202b36414b555e65686e6e6e6e6e6e6e6e78848f9ba6b2bec9d2c7bbafa4988d81756e6e6e6e6e6e6e6e6e6e6e6e6d615a51473c31261b100400010c17222c36404950556263636363636363636363636363635c5a5554575b6265686a6c686e6f6e696d6b696663605957524a464038322a231b120a0200000000000000000c18242f3a46515c6770757a7a7a7a7a7a7a7a7a7a7a7a7a78736a5f54493d322625303c47525d6871767a7a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000005101c27323d47515a6a75818c97a0abb3b7bdb7ada49d938f89868581766a5e53473c3025190d00000000000000000000060e161e252b303c434950565a6164686e71747678797a7a7a797775726f6a65625c6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000a141e28333f4a555f69737f8a949ea8aba29b8f837a6f635e55545e686e747e858d91979c9ea5a3a5a5a5a5a69f9c9590877f75818c989b9b9b9b9b968a7f73686a747f8b969faaa89d93877c7065594d42362c21170c0100000005101b27323d47515a64707c87919ca6afb9c4ced7d0c7bdb4aba29a908c80786f6a635d58534d4c484746454647464a4c4e54575e636b7079818d919ba3acb5b1aba79f9c95908b847e79706c62574c41352a1e13070000000000000000000000040d162029313b465059626c747f8b929ca5aeb8c2cbd1c9beb5aba29c90857c70685f636c74808b939ca6afb9c3ced1c9beb5aba29c90857c70685f554a433830261d12080000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686161616161615a616465686b6f747a808790959da4adb4bdc5ced4cac0b8aea59c92897e726a6056494036261e140b010000000006111c27313c454e555b5c636363636363636d78848f9ba6b2bec9d2c7bbafa4988d81756a63636363636363636363636256514941372d22180d02000008121c26303840464a575757575757575757575757575757514f4b4a4b5257595c5f585f6363636058605d5b5755504c48423c363028221a120b020000000000000000000b16212d38424d5760676a6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453a2f24222e39434e5861686b6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000007121e2935404b56616b7984909ba7b0bac2beb3a89d938f837e7a797670675d51463b2f24180d0000000000000000000000060e151b212b333940464b5156585f6365686b6c686e6f6e686c6a6763615a585e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000030f1a25303b454f58636f7a848f9ba2aba89d948d81766f655e55575e636e727b81868c90959698999a9a999796908c847e73737e8a8f8f8f8f8f8f8f8d81766a6f7b85909ca6aea59a8f83786c62574c4135261c120800000000020d18232d38414c57626c76818d969faab5bdc7d0d8cdc4bbb2aaa19a918c827a726d65625c5857525251515152505557575e63686e727b828d929ba2abb4bcbab6afaaa69f9c94908a837c7065594d42362b1f130800000000000000000000010b141e263139414a556069707c86919ca3acb6bfc8d4cac1b8aea59b928a7e736b62585c636e79828e969faab5bbc6cecec5bbb5aa9f968e82796e635c534940372c2219100600000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746d6d6d6d6d6d6d6d6a6f7174777b7f858c91979ea5adb4bdc4cdd3cfc4bab0a79e958e82766e64595046383026160d040000000000020d18222c353e454b4f51575757575757616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e57575757575757575757574b47413930271d1308000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413e42484c4d50534f54575757555054524f4c4a46403d38312c261f18110a020000000000000000000008131e29333d474f575c5e63636363636363636363636363615f5a524a40362b211f2a343e4850585d5f63636363636363636363636363605e5951483f352a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b2014080000000000000000000000000007131e2a35414d58646f7b87959ea9b8c1c4bab0a79b8f837a726f6a6a6760574d43382d22160b000000000000000000000000050b111b232830373c41474b4f54575a5d5f585f6363635f585e5b585651525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000b16212b353f4a556069727d89929ba5ada49b918b7f736e645d55545d646a6f757c8084888a8c8e8e8e8e8c8985807b726d707c83848484848484848382766e76818d959fa9a99e958a7f73685b52483e3328160c02000000000009131e28333d48525b64707b85909ca4adb7bfc9d3d5cbc2bab1aaa19a928e847d76706c6764625b5e5d5d5d5e58606365686e72787e858e939ca2abb2bbc4c5c0b9b5afa9a59e9b90847a6f63584c4035291e12060000000000000000000006111b252e36414a545d636f7a838f96a0aab3bcc6cfd0c5bab1a89e958d81766e645b52555f68707c85909ca2abb5bec9d1cec3b9afa69c938b80746c635950463c312921160d04000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f787878787878787879797b7d7f82868b90959ca0a7aeb5bdc4cdd2cbc2bbb5aba09790847b6f645d54494037281f16050000000000000008121c252d353c4144454b4b4b4b4b55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e534b4b4b4b4b4b4b4b4b4b403c37302920170d0300000000060f171f262c313440404040404040404040404040404039383633383e4142454845494b4c4c4a46484643403f3b36322e28221d160f07010000000000000000000000040f19232d363f474d5153575757575757575757575757575654504a423930261c1a242e3740484e52545757575757575757575757575754534f4841382f251b100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000914202b37434e5a65717d8894a5aeb8c8c0b5aaa096897d726a6360595d5750473d33291e1308000000000000000000000000000107121820272d31383d3f454a4b4e51534f55575757544f53504c4b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000007121c25313b465059636d76818d959ea7aba29c91877e736e655f55545a61646c7075797c7f8182838382807e7a756f6a646c707878787878787878787671727e8a919ba6ada49c90847a6f63574c42392e241906000000000000040e19242e38424c57626b747f8b939da6afb9c4ced3d3cac2bab1aaa29c949089827c7773706b6b69696869696a696e7175797e838a90959ca3abb3bbc3cbd0c9c4bfb8afa69c92897e726a60564b3f34281d1106000000000000000000060f17202b353e47515a646d75818c949da7b0bac3ccd0c7c0b6aba19790847b6f635e554b4f58626b737e8a929ba5aeb8c1cad3c9bfb6aca39c91867d716a60564b443a31261e150b010000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabeb3a79c90858484848484848484848586888b8e91979c9fa5abb0b8bec6cdd3cfc2bbb2aaa19c91867d716b61564d44383026180f0600000000000000020b141d252c3136393a404040404a55616d78848f9ba6b2bec9d2c7bbafa4988d81756a5e534740404040404040403534312d2720181007000000000000070f161c2226283434343434343434343434343434342e2d2b282e33353639353a3e4040403f3b363b383534312c26231e17120d06000000000000000000000000000009131d262f363d4246474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403932292016141e2730373e4347484b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3830281f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000915202c38434f5a66727d8994a0acb7c8bfb3a89c91857a6e63595650514d473f372d24190f04000000000000000000000000000002070f171d22282d32353b3e40424648454a4c4c4b49454744414047525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000020c17212c364048545d646f7b849097a0ababa19791877e746f63605953565b6264686e7173757677777675726f6963615c62656c6c6c6c6c6c6c6c6c6d717d86919ca2aba89d948b7f746960554a3f32291f140a000000000000000a141f28323d48525b636e79838f969faab5bac3cbd4d2cac2bab3aba59e9b928d88837f7b7876757474747576787a7c8084898f939c9fa6acb3bbc3cbd3d3cfc5bab0a79f968e82766e645950463c31261b10040000000000000000020c161f282f3a454e57616b727e89919aa4adb7c0cad3c9c0b7ada49c91877d716a61564d4548525b646e76818d949ea8b1bac5d0cfc7bcb5aba0978f847a6f635d544a41372e251b11070000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbbfb4a99e95908f8f8f8f8f8f8f8f90909694969a9ca0a7a9aeb6bac1c8ced0c9c4bab2aaa19a908b7f736d635a51473c3428201607000000000000000000040d141c22272b2d2e3434343e4a55616d78848f9ba6b2bec9cfc7bbafa4988d81756a5e53473b34343434343434292926221d1710080000000000000000060d12171b1d29292929292929292929292929292922221f1f24272a2b2e2b303334353433302c2f2c292826221c19140e0803000000000000000000000000000000030d161e262d33383a3b404040404040404040404040403e3d3a3630292119100e171f272e34393c3d404040404040404040404040403d3c39352f2820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727d8995a0acb7c3beb2a79b9084786960554a4640433d372f261d140a0000000000000000000000000000000000060d13171e23252b303334373a353b3e4040403e3a3539353b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000008121c262f38444b56616b717d87919ca2aba8a09791877f756f69625c565257585f636568696b6b6b6b69666360595653575961616161615960636e727d859096a0aaaaa19b8f847a6f635950463b31261a0f0400000000000000050f18232e38424a555f69707c85909ca1aab2bbc3ccd4d2cbc3bcb5aea8a29c99938e8a87848280807f8080818385888c90949a9da4a9afb6bcc4ccd3d3cbc3bbb6aba09790857b70645d544940372c22170c01000000000000000008121c262f384049545e686f7b84909ca1aab4bdc8d0cfc4bab0a79d938c80756d635a51473d424a555e636f7b849097a1abb6bdc7d0cfc4bab0a79e948d81766e645a51473e352b20170f0600000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec3b8aea59e9c9b9b9b9b9b9b9b9b9b9c9fa6a2a5a8abb0b4b8bfc5cad1d0c7c0b9b5a9a19b918c80756f655c534a41372c23180f0600000000000000000000040b12181c2022222929333e4a55616d78848f9ba6b2bec3c3c3bbafa4988d81756a5e53473b302929292929291e1d1b18130d070000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d17161414191c1e1f2220252829292928252123211d1d1a17120c0a04000000000000000000000000000000000000050e161d23292d2f303434343434343434343434343433322f2b2620191108060f171e242a2e30313434343434343434343434343432312e2a251f171007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d5850463c3638332d261e160d0400000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000020c161f28323d47515a636d747f8b919ba2aba7a097918b817a706c63605956505457595c5e5f60605f5d5b5755504b484c4e555553575c63696e757e8690959fa7aca39b91887d716960554840362c22170c01000000000000000009141e28303b454f58626c727e8a919aa2abb3bcc3d0d4d3ccc5beb8b4aba6a39c9a9694908e8c8b8b8b8c8d8f9196979b9ea5a8adb5b9bfc7ccd4d3cfc2bbb3aba19c91877e726b62574d443930271d13080000000000000000051019212c364048535c636e78828e959ea9b2bac5cdcfc6bfb5aaa0968f83796e635d544941373a454b56616a717d87919ca4adb7c0c9d3cac0b8ada49b91897e726b61584f453a30281f160c03000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4ddd2c8beb6aea9a7a6a6a6a6a6a6a6a7a7a8aaafaeb1b4b6bac1c3c8cfd1cac5bdb7afaaa09a918c81786e635e554c433931271c130700000000000000000000000002080d111416171d27333e4a55616d78848f9ba6b2b8b8b8b8b8afa4988d81756a5e53473b30241d1d1d1d1d1212100d0803000000000000000000000000000104061111111111111111111111111111110b0a090a0e11131311161a1c1d1e1d1d1a17121512110f0c0802000000000000000000000000000000000000000000050d13191e21242429292929292929292929292929272624211c1610080100060e141a1f22252529292929292929292929292929262523201b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a362c2629241d160e0600000000000000000000000000000000000000000004090b11161a1c1d2023212528292929282520242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000000060f17232d37414a535c636e78818d929ba2aba8a19c918d837c756f6a63605957534f515254545454524f4c4a464a4b4d5055575c62656d7179808991969fa6aea59d938c81756d63595046382f261c1208000000000000000000040e16212c363f48525b646e75808c919ba3abb3bbc5cad1d6cec7c2bbb5b2aca7a6a59e9b999897969798989a9ca0a7a7a8aeb3b7bdc3c9cfd7d0c9c4bab2aba29b918b7f746d645b52483c342820160d0300000000000000040d162029313b465059626c737f8b929ca5aeb8c2cbd2c8bfb6aca39c91867c706960554c433930313c47515a636d75808c939da7afb9c4cfd1c8beb5aba29c90857b6f685f5449433830261c1208000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d8cfc6beb8b4b3b2b2b2b2b2b2b2b2b3b3b5b9b9bcbfc1c5caced1cdc9c1bab6ada79f9c908b81796e685e544e453c332920170b0300000000000000000000000000000206090b101b27333e4a55616d78848f9ba6acacacacacacaca4988d81756a5e53473b30241911111111070604020000000000000000000000000000000000000006060606060606060606060606060000000003060708070b0e11111212110f0c07090606040100000000000000000000000000000000000000000000000003090f131618191d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120c0600000000040a101417191a1d1d1d1d1d1d1d1d1d1d1d1d1d1a1a1815100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271e19140d0600000000000000000000000000000000000000000000000001070b0f11121411161a1c1d1e1d1c1a16242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000000009131e2731394349545e686e79818d929ba2aaaba19b948f86807a736f6a65625c5b585651535251515152524f545759586063666c70767d838c919c9fa7aea59e958f82796e635d54484036281f160c020000000000000000000007121c262f38424b555e636e78818d929ca2abb6bac1c9cfd7d2cdc5c0bcb6b2b1aea8a7a5a3a3a2a3a3a4a6a8aab0b2b4b8bec1c6ced3d4cfc7c0b9b5aaa19b928d81756f655d544a42382c23180f0600000000000000010b141e263139414a556069707c86919ca2acb6bec8d2cec3b8aea59c928b7f736c625950463c33292d374149545d636e79838f969faab5bcc6cfcec5bbb4a99f958e82786e635c534940362c221910050000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dfd6cfc8c3bfbebebebebebebebebebebfc0c4c9c8cbcccfd0ccc7c2bdb8b1aba49d96918a80756e685f574e453e352b2319100700000000000000000000000000000000000004101b27333e4a55616d78848f9ba0a0a0a0a0a0a0a0a0988d81756a5e53473b3024190d06060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606060401000000000000000000000000000000000000000000000000000000000000000004080b0c0d11111111111111111111111111100f0e0b07020000000000000005090c0e0e111111111111111111111111110f0e0d0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b0f0a040000000000000000000000000000000000000000000000000000000003050608070b0f11121211110e18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000000000040e1720292f3a454e575f686e79828d919aa0aaaba49d96918c847f7a75706c696663615a5e5d5d5d5d5d5e585f636467696e72777c81888f949aa1aaada59e9590847b6f6960554c43382f26170f060000000000000000000000020c151f27323a4449545f686e79828e929ba2abb1b8bfc6cdd2d5cfcbc6c1bebdb8b4b2b0afaeaeaeafb0b2b3b5babebfc2c7ccd1d8d1cac4bdb7afaaa19a918d81796e635e554d443a31281c1307000000000000000006111b252e36414a545d636f7a838f96a0aab3bcc6cfcec5bdb4a99f958e82786e635b52483f362b23273039434a556069707c86919ca3acb6bfc8d2cec3b9afa69c928b7f746c625950463c312920160d0400000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8dfd8d2cecbcac9c9c9c9c9c9c9c9cacacbced3d4cfcccac5c1bdb7b3aca8a19c948f867f746f635f584f473e352d251b12080000000000000000000000000000000000000004101b27333e4a55616d78848f95959595959595959595958d81756a5e53473b3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000305060606050d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000000000071019202b353e474f585f696e79818b909c9fa6aca7a09c95908a85807c7874726f6a6b6a6969686869696b686e7073767a7e82888d929b9da4aaaba49d9590847c706b615950463c33281f160700000000000000000000000000050e17222a303a454f5860696f7a828d919ca1a8aeb6bcc2c8ced2d6d0ccc9c7c2bfbebcbabab9bababbbdbfc0c4cacacdd2d7d0ccc8c0bab5aca79f9c908c81796e6960554e453c332a21180b0300000000000000050f17202b353e47515a646d75808c939da7b0bac3ccd1c8bdb5aba19c90857b6f685e544b42382f261b2029303b465059626c737f8b929ca5aeb8c3ced3c8bfb6aca39c91867c706960554a443931261e140b01000000000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdd2cecbcac8cac4c0bfbab6b4ada8a39d97918c837c736e665f544f473f362e251d140a020000000000000000000000000000000000000004101b27333e4a55616d78838989898989898989898989898981756a5e53473b3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cecdc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000000000000006111b252e363f484f585f696e78808a90969da3aaaaa59e9c95908c8783807d7b79777575747474747576787a7c7e8185898e92999ba2a8ada9a29b938f847c706c625a51483f362b23170f06000000000000000000000000000006111a202b353e47505860696f79818b91979ea5acb4b8bec3c8cdd1d6d5d2cdcacac8c6c5c5c5c6c7c9cbcccfd4d6d4cfccc6c1bcb8b0aba39d96918a80786e68605850463e352c2319110800000000000000020c161f272f3a454e57616a727e89919aa4adb7c0c9c1cac0b8ada49b91897e726b61574e453b32271f1618212c363f48525b636e78828e959fa9b4bbc5c1c1c6bcb5aaa0968f837a6f635d544a41362e251b1106000000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c8c3bfbebdbbbab5b3b1aba8a49d9b938f87817a706c655e564a453f372e261e140c040000000000000000000000000000000000000000000915202c38434f5a66727e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7165594e42372b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3cbcbc2b6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000000000000010b141e262f373f484f585f686e747e858f939c9fa7aba9a69f9c97948f8c898684838180807f808081828385878a8d9095999ca2a6ababa59f9c918d837b706c625b524a41382f261b13070000000000000000000000000000000107111b252e373f48505960696e78808790959ca3a9aeb4b8bfc2c7cbced2d4d6d5d3d2d1d0d1d2d2d4d6d5d4cfcccac4c1bdb7b3aca7a09c938f867f746e685f5850483f362d251b1309000000000000000007121c262f383f49545e686f7b84909ca1aab4b5b5b5b5b5bab0a79d948d81756e645a51473e352a22170f121c262f384249545e686f7b85909ca1abb5b5b5b5b5b5bab0a79d948c81756d645a51473e352b20160b000000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8b4b3b1b0b0aaa8a8a19c9a938f8a837d756f6a625c554d463b352e271e160d04000000000000000000000000000000000000000000000914202b37424d59636d7272727272727272727272727272716c63584d41362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7bfbfbfbfb6ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000000000000000040d161e272f383f484f575e636e727c838b91969ba2a7aca9a7a49d9b979494908e8d8c8b8b8b8c8c8d8f909695999c9fa6a7ababa7a29b95908a817a706b625b524b423a31271f160b0200000000000000000000000000000000010b151e262f38404950585f686e747e858e929b9ea5a9aeb4b7bebfc3c8c8cacbced2cececed4cfcccbc9cac4c1bfbab5b3aca8a39c97918b837c736e635e574f483f382f261d140b0200000000000000010c17212c363f48525b636e78828e959ea9aaaaaaaaaaaaaaaaaba0978f847a6f635d544a41362e251a11070c161f272f3a454e57616b727e89919ba4adaaaaaaaaaaaaaaada49a91897e726b61574e453a2f24190e030000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aea9a7a6a4a7a09c9a97918e89837e79716c636059534b453d302b251e160e05000000000000000000000000000000000000000000000007121e29343f4a545d63666767676767676767676767676765635c53493e33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb4b4b4b4b4b4ab9f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000000000000000050e161f272f383f474e545e646b707980868d92999ca2a8aaada8a6a3a59e9b9a98979796979798999a9c9fa6a4a7a9afaaa8a29c99918d857e766f69625b524b423a322921170f05000000000000000000000000000000000000040d161f27303840484f575e636d727b828990959c9fa5a8adb3b4b8bbbdbfc0c3c8c2c3c3cac5c1bfbebcbab5b3b0aaa8a39d9a938e868079706c655e544e473f372f271f160c040000000000000000040f1a25303b465059626c737f8a929ca59e9e9e9e9e9e9e9e9ea39c91867d716a60564d443a31261e140a01050f17202b353e47515a646e75818d949da79e9e9e9e9e9e9e9e9ea19c90847b6f685e54493e33271c10050000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea59e9c9a989796918e8a86827e79736e68635c565049423b342d211b150e06000000000000000000000000000000000000000000000000040f1a25303a444c54595a5b5b5b5b5b5b5b5b5b5b5b5b5b5958534c43392f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0a8a8a8a8a8a8a8a89f93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000000000000000000060e171f272f363e4549545b62696e747c82888e92989c9fa6a8aaafaea9a7a5a4a3a3a2a2a3a3a5a6a8aaafafa9a7a69f9c98928e88817b726e636059524a423a322a221910070000000000000000000000000000000000000000060e171f2830373f474e545d636b6f777e848b90959b9ea4a7a9aeafb1b3b4b9b6b7b7b7b7bab6b4b2b0b0aaa8a7a09c99938f89827d746e69625b5549453e362f271f170e0500000000000000000006111d28333f4a556069707c869193939393939393939393939393938b80746c635950463c342921160d04000006111b252e36414a545d636f7a838f97939393939393939393939393958e82786e63574b4034291d11060000000f1b26323d4955606c77838f93939393939393939393939393939393939393939393929295908e8d8b8885837f7b77726e68635f58534a464038322a241c110b0500000000000000000000000000000000000000000000000000000b16202a333c444a4d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4d49433b32291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d89949c9c9c9c9c9c9c9c9c9c93887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6cbcabeb2a79b9084786d61564a3f33271c100000000000000000000000000000060e171f262e353a444b52585f636b70767d82878d9096999c9fa6a4a6a7a9afaaabacababaaaea9a7a6a4a69f9c9996908c88827c766f6a645e555048423a322a221a110800000000000000000000000000000000000000000000060f171f272f363e4549545a61646e727a80858b8f94989b9ea5a4a6a7a9afababacababb0aba8a6a5a7a09c9a97918d89837e77716c635f58524b453a352e261e160e060000000000000000000006121d2935404c57636e7a838787878787878787878787878787878782796e635c534940362c23191005000000010b141e26313a444a56606a717d86878787878787878787878787878787877f73685c5045392e22160b0000000f1b26323d4955606c778387878787878787878787878787878787878787878787878786858483817f7d7a77736f6b66635f58544f47433c363028221a14070100000000000000000000000000000000000000000000000000000006101a232c333a3f42434444444444444444444444444442413e39322b22190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d89919191919191919191919191887c7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbbfbfbfbeb2a79b9084786d61564a3f33271c10000000000000000000000000000000060e161e252b2f3a42484f555b62646d71777c8185898d909696989a9c9fa69f9fa0a09f9fa59e9c9a989695908d8a85817c76706c64615a554a464038312a211a1109010000000000000000000000000000000000000000000000070f171e262e353a444a51575d646a6f747a7f84888c909596989a9c9fa69fa0a0a09fa7a09c9b999797918e8a86827d77726d65635c554f48423b2f2b251e160e06000000000000000000000006121d2935404c57636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f685f554c433830261c13080000000000040d162129313c465059636c717b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e130700000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a7a79777674716f696864615a57544f49453e37312c261f18120a0300000000000000000000000000000000000000000000000000000000000a131b232a30343738383838383838383838383838383736332f29221a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d85858585858585858585858585857d7165594e42372b201408000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afb4b4b4b4b4b2a79b9084786d61564a3f33271c1000000000000000000000000000000000050d141b202a32383f454a52575c63666c70757a7e8285888a8d8f9095939394949494939395908f8d8a8885817e7a75706c65625c56514a443b362f28211911090100000000000000000000000000000000000000000000000000060e161e252b2f3a41474b545960636a6f73797d8184878a8d8f90959393949494949397918f8d8b8985827f7b76716d66645d58534a453f38322a201b140d0500000000000000000000000006111d28343f4a5560696f70707070707070707070707070707070706f6a60584f453b33281f160b03000000000000051019222c364049535c636b7070707070707070707070707070707070706b62574c4035291e120700000007121e2935404b57616b7070707070707070707070707070707070707070707070706f6f6e686c6a68666360595856514b49453e3a352e26221d160f0701000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2b2a28241f19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a716c63584d41362a1f1308000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3a8a8a8a8a8a8a8a79b9084786d61564a3f33271c100000000000000000000000000000000000040b111921272f363b42484c53585c6265696f7276797c7f818385868788888989888887868483817f7c7a76726f6a65625c58534b474139312c261f17110901000000000000000000000000000000000000000000000000000000050d141b202931383d44495056596063686e7175797c7e818385868788888989888886858482807d7a77736f6a66635d59544c49433b362f27221a110b0400000000000000000000000000040f1a26313b4650596063646464646464646464646464646464646463605950483f352b22180f06000000000000000008121d263038434c535b61646464646464646464646464646464646464625b52483d32271c100500000005101c27323d48525b616464646464646464646464646464646464646464646464646463635f585e5d5a5755504d4b47413e3a35302b251e16120d06000000000000000000000000000000000000000000000000000000000000000000020a10161a1e2020212121212121212121212121211f1f1d19150f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f49545d63666e6e6e6e6e6e6e6e6e6e6e6e6e6e65635c53493e33281d1106000000000000000000000000000a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c989c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c10000000000000000000000000000000000000010611171f262c30383d43494d535759606366686e70737677797b7c7c7d7d7d7d7c7b7a79787573716e696763605958534c49433d373129221c160f07000000000000000000000000000000000000000000000000000000000000040b111921282e323940464b5056575e6365696c70737677797b7c7c7d7d7d7d7c7b7a787674716f6a6864615a58544e4a443e39302c261f171106010000000000000000000000000000010c17222c36404850555759595959595959595959595959595959595856504940372f251b1207000000000000000000030d161f28333b434a525758595959595959595959595959595959595857524a42382e23180d02000000020d18232e38414a5257585959595959595959595959595959595959595959595959585857554f53514e4c4a4641403d3833302b25201b150d0803000000000000000000000000000000000000000000000000000000000000000000000000060b0f121415151515151515151515151515151413110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3a434c54585a63636363636363636363636363635958534c43392f24190e03000000000000000000000306070a15212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c91919191919191919191919084786d61564a3f33271c100000000000000000000000000000000000000001060e151c21282e323a3e42484c505557585f6365686a6c6a6f70717172717171706f696c6a6765635f585856504c49433e39322d272019120c060000000000000000000000000000000000000000000000000000000000000000010610181e232830373c40464a4e54575a5b6264676a6c6a6f707171727171706f6e686b68666360595856514d49433f3a332f29211c150e06010000000000000000000000000000000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271e150a0200000000000000000000060f18222b333a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e1409000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4c4a45474543403f3b3634322d2825201b16110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000040709090a0a0a0a0a0a0a0a0a0a0a0a0a08080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202a333c43494d4f57575156585b5c5c5b58565157574e4d49433b33291f150a000000000000000000050a0e11131318212c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975808585858585858585858585858584786d61564a3f33271c10000000000000000000000000000000000000000000050c12161e232a2f34393e40464a4c4f5457595c5f5a616364656566666565646360595e5c5a57554f4c4b46403e39332f29231d171008020000000000000000000000000000000000000000000000000000000000000000000000070e141820272c31363c3e45494b4e5257595c5e5a61636465666666656564635f585d5a5856504c4b47413f3a34302a241f16120c05000000000000000000000000000000000000020c161f282f363b3f404242424242424242424242424242424242403f3c37302820160e0500000000000000000000000007121a222931383d40414242424242424242424242424242424241403d38312a21180e040000000000040e18212931383d404142424242424242424242424242424242424242424242414140403e3b353a373534312c2927231e1a16110b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c33373f454a53585a61646668676664615a58534a453f37332b22190f050000000000000001080f14191c1e1f24242c38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3a45515c6770757a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b100000000000000000000000000000000000000000000002070e14182025292e33363b3f40454a4b4e505351565859595a5a5a5a595957555053504e4c4a45403f3c37332f29241f18130e07000000000000000000000000000000000000000000000000000000000000000000000000000004090f161d22262c31353a3e4042484c4d505351565859595a5a5a5a595857554f514f4c4b4641403d37342f2a252019150f07020000000000000000000000000000000000000000060f171f262c31343536363636363636363636363636363636363534312c2720180f0600000000000000000000000000020a121921282e323536363636363636363636363636363636363635322e28211911080000000000000007101921282e323536363636363636363636363636363636363636363636363635353433302b2e2c292826221e1b18130e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a090602000000000000060a0e101111111111111111111111111111110c0b09070300000000000004080c0f1011111111111111111111111111110c0c0a07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f484f555c63666b6f727373726f6a65635c554f483f362e251b1106000000000000010911181f24282a2b2f2f2f38444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c37424d576067696e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e000000000000000000000000000000000000000000000000040910151a1f24262c3134353b3e40424547474b4c4d4e4e4f4f4e4e4d4c4a46474542403f3b3534312c26241f19150f09040000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171d22252b2f3334383d41424447474b4c4d4e4e4f4f4e4e4d4c4a454643403f3c3734322d2725201b16100a050000000000000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221d160f07000000000000000000000000000000020911181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e1811090000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292928252123201d1d1a1712100d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000030a1015191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171715120d0802000001080e13171a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d181715120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e474f585f636d71777b7e7f7f7d7b77716d635f584f473e352b20160e04000000000008111a22292e3335363b3b3b3b444f5b66727e8995a0acb7c3beb2a69b8f84786d61554a3e33271b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28333d464f575c5e63636363636363636363636363615f5a534a40362c21160b0000000000000000000000000000000000000000000000000000060b0f15191c2226282b3033343639373c3f414242434343434242403f3b3639373433302b2826221d19150f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d12171b202427292e32353639373c40414242434343434241403e3b35373534312c2927231d1a16100b060000000000000000000000000000000000000000000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d06000000000000000000000000000000000000080e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e080000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1c1a16111412110f0c08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04050c141a2024272929292929292929292929292929292322201c18120c04020a11181d22252728292929292929292929292929292323201d18130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f585f686e757d8387898a8a8986827d756e685f574e453a2f281e130900000000050f18222a32393e41424646464646505b67727e8995a1acb8c3beb2a69b8f84786d61554a3e33271b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19232d363f464d5152575757575757575757575757575654504a423a30261c120700000000000000000000000000000000000000000000000000000000050a0c12171a1d212528292b2e2d31343536373738373737363534312c2d2b292825211d1b17120d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b1116191c1d24272a2a2d2d31343536373738373736353433302b2c292826221d1b18130e0b06010000000000000000000000000000000000000000000000000000000002080c0f111213131313131313131313131313131313131211100c0803000000000000000000000000000000000000000004090d101213131313131313131313131313131313131312100d09040000000000000000000000000004090d1012131313131313131313131313131313131313131313131313131212110f0b070906060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c0c151d242a2f323434343434343434343434343434342e2e2b27221c150d0a131a22282d313334343434343434343434343434342f2e2c28231c150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f686e7980888e9395969697918e8880796e685e544941382d23180d020000000a141f29323b42484c4d5252525252525a68737f8a96a2adb9c4beb2a69b8f84786d61554a3e33271b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d262e363d4245474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d0200000000000000000000000000000000000000000000000000000000000002080c0f11161a1c1d1f22222629292a2b2c2c2c2b2b2a2928262222201d1c1a16120f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1014191c1e1f22222629292b2b2c2c2c2b2b2a29282521201e1d1b1713100d09040000000000000000000000000000000000000000000000000000000000000000000104060608080808080808080808080808080808080606040100000000000000000000000000000000000000000000000002050707080808080808080808080808080808080707050200000000000000000000000000000000000205070708080808080808080808080808080808080808080808080707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d14141d252d343a3e4040404040404040404040404040403a3936322c251d15111a232b32373c3e3f404040404040404040404040403b3a37322c251e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b636e78818c919a9ca3a1a8a19c9a918c81786e635a51473d32271b10050000030e19242e39424b5257595d5d5d5d5e5b626a76818d98a4afbbc7bdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e262d33373a3b404040404040404040404040403f3e3b363029221910070000000000000000000000000000000000000000000000000000000000000000000104070b0f11121413181b1d1e1f1f202020201f1f1d1d1a17121412110f0b07040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050a0e11131313181b1d1e1f1f202020201f1e1d1c1a16111211100c080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b1a242d363d44494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c18222b333b42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645423c362e251c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b74808b929aa1a7acadb1aba8a19a918b7f746b61564b4034291e1206000006111c28333e48525b626569696969696a6b707b85909ca8b3bfc8bcb1a59a8e82776b6054483d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e151d23282c2f2f343434343434343434343434343332302c2620191109000000000000000000000000000000000000000000000000000000000000000000000000000003050608080d101212131414151514141312110f0c08080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080d101212131414151514141312110f0b070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110b0b090602000000000000000000000000000000000000000000000000000305060e1111111111111111111111110f0f0d0a0601000000000000000000000001060a0d0e0f11111111111111111111111111110b0b09060200000000000000000000000000000407090910101010101010100706050200000000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22202a343d464e5357575757575757575757575757575751504c463e352c221d28323b444b5155565757575757575757575757575752504c463e362c23180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c86919ca2aab2b6b9bab6b4aaa29c90857b6f64584d41352a1e1207000007131e2a35414c57626c70757575757576777c828e969faab5c0c7bbb0a4998d82766a5f53483c3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191e21232429292929292929292929292929272724211c17100901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204060708080909090908080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204060708080909090908070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000001060b0e10111a1d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110c06000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000060b0f1214151c1c1c1c1c1c1c1b1312100d0904000000000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b3127242f3a444e575e6263636363636363636363636363635d5b564e463c3227222d37424b545b6062636363636363636363636363635d5b564f463c32281d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586975808c96a0aab2bac1c6c5c1bab5aa9f968b8074685d5146352b21160b000008131f2b36424d5965707c80808080808183878e939ca6afb9c3c4b9afa6978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e131618181d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292222201c18120b04000000000000000000000000000000000000040b1116191c1d25292929292929292929292929272624201b160f0800000000000000070f151b2023262629292929292929292929292929292222201c18120b0400000000000000020a10161a1e202027272727272727271e1d1b18130e070000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b27323e49535e676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b25313c47515b656b6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564c42372c20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6878848f9ba7b0bac3ccd0d0ccc4b9afa69a8f83776c584f453b30251a0f03000915212c38434f5b66727d898c8c8c8c8d8f91979ca3acb6bfc9c0b5aa9f96887d71665a4e43372c20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080a0c0d1111111111111111111111111110100e0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060708111111111111111111111111111106060401000000000000000000000000000000000000000000000000000000000000000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d0400000000000000000000000000000000050d141b202427293134343434343434343434343432312f2b261f18100800000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d040000000000020b131a2025292b2c33333333333333322a2927231e1710080000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d2934404b57626d777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e27333e4a55606b75797a7a7a7a7a7a7a7a7a7a7a7a7a7470665b50453a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b4bfcad6dbdbd3c9bfb3a79c908579695f554a3f33281c1105000915212c38434f5b66727d8995979798989a9ca1a8acb4bcc7c4b9afa69c90857a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070b0f1112121313131212110f0c070907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131d1d1d1d1d1d1d1d1d1d1d1d1d1c12110f0c080200000000000000000000000000000000000000000000000000000000000000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b020000000000000000000000000000040d161e252b2f33343c4040404040404040404040403e3d3a352f2821180f06000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b02000000000a131b232a303437383e3e3e3e3e3e3e3e3534322d272019100700000000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e2934404b57636e7a85858585858585858585858585858074685d51463a2e28343f4b56626e7985858585858585858585858585858074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b8697a1abb6c1ccd8e3e2d7cbc0b5a99f95867a6e63574c4034291d1206000915212c38434f5b66727d8995a0a3a3a4a6a8abb1b8bcc4c3bbb5aa9f968c80756960554a3f33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080c0f11121411161a1c1d1e1e1f1e1e1d1d1a1712151212100c0805030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f29292929292929292929292929281d1d1a17120c060000000000000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000010b141e262e353a3e40484b4b4b4b4b4b4b4b4b4b4b4b4948453f3931281f160c0100010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000006101a232c333a3f42434a4a4a4a4a4a4a4a41403d37312920170e04000000000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e2934404b57636e7a859191919191919191919191918b8074685d51463a2e28343f4b56626e79859091919191919191919191918c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a86949ea8b4c1cad4dcdcd6cabfb3a89c908579695f554a3f33281c1105000915212c38434f5b66727d8995a0acafafb1b4b6bac1c3bfb9b5aaa19c91857b6f645950463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506090b070b0e1111121211110e0b070a0707050200000000000000000000000000000000050606060606060606060606060606060606040000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012171a1d1d202321252829292a2a2a292928252123201e1d1b1713110e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f24272a2b3434343434343434343434343433292826211c160f070000000000000000000000000000000000000000000000000000000000000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d0200000000000000000000000006111b252e363e45494b5357575757575757575757575755534f4941392f261b11060006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d0200000b16202a333c444a4d4f56565656565656554d4b47413931271e1309000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e2934404b57636e7a85919c9c9c9c9c9c9c9c9c9c978b8074685d51463a2e28343f4b56626e7985909c9c9c9c9c9c9c9c9c9c978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f697884909ba7b0bac5cdd1d1cdc4bab0a79a8f83786c584f453b30251a0f03000915212c38434f5b66727d8995a0acb7bbbdbdbdbcbbb9b4afaaa19b918a7f736b6156483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c0f1112141711161a1c1d1d1d1d1c1a1611161312100d090502000000000000000000030607081011111111111111111111111111111111110f0706050200000000000000000000000000000000000000000000000000000000000000000001060b0e13181b1d212628292c2e2b30333435353636353433302c2f2c292926221e1c19140f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22292e333536404040404040404040404040403f3534312c261f170f060000000000000000000000000000000000000000000000000000000000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c11060000000000000000000000071119202b353e474e54575f636363636363636363636363615e5952493f352b20150a000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c110600040f1a25303a444c54595a61616161616161615856514a41372d23170f060000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e2934404b57636e7a85919ca8a8a8a8a8a8a8a8a2978b8074685d51463a2e28343f4b56626e7985909ca8a8a8a8a8a8a8a8a3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f586975818c97a0abb6bbc2c7c7c2bbb5aaa0968c8074695d5246352b21160b00000915212c38434f5b66727d8995a0acb1b1b1b1b1b0afafa9a69f9c918c81756f655a5147382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f12161a1c1d2022242025282929292928252024211e1e1c1814100d09040000000000050a0e1113131c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1312100d0904000000000000000000000000000000000000000000000000000000000001070b1116191e2327292c313435373a353b3e404041414141403f3b363a383534312d2927231e1a16120c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a32383e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b403f3b362f281f160c0200000000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b20140900000000000000000000060f17212a2f3a454e575e636b6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f453a2f24180d000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b2014090007121e29343f4a545d63666d6d6d6d6d6d6d6c64615a51473d32281f160c0200000000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4b4b4b4b4b4aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3b4b4b4b4b4aea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c36424d5965707c86919ca3abb4b7babab7b3aba39c91867c7064594d41362a1f120700000915212c38434f5b66727d8995a0a6a6a6a6a6a5a4a4a69f9c96908a81796e635e554a4137271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c12161a1c212528292b2e302b30333435353433302b2f2d2a2927231e1c18140e0a050001080f14191c1e1f272929292929292929292929292929292929271e1d1b18130e07000000000000000000000000000000000000000000000000000000050b11161b2024272d3234363b3f40434547454a4c4c4d4d4d4c4c4a46484643403f3c3735322e2825211c17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b42484c4d57575757575757575757575757564c4a4640382f261c120800000000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b000000000000000000020c161f28313a4249545e686e767a7a7a7a7a7a7a7a7a7a7a7a7873695e53483d31261a0f000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b000914202b37424d59636d7278787878787878786f6b61564b44382f261c120800000000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfbfbfbfb9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfbfbfbfbaaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c57626c75808c929ba2a8adaeaeada8a29b928c80756b62574c4035291e120200000915212c38434f5b66727d89959a9a9a9a9a9a9a99989695908b857f756e6960554e45393127170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171c2125282c30333437393c353a3e404040403e3a353b383635322e2927231e19140f080911181f24272a2b333434343434343434343434343434343434322a2927231e17100800000000000000000000000000000000000000000000000003080e151b21252b2f33373d4041464a4c4e51534f5557585859585857555053514f4c4b4641403d3833302b25211c160f0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b52575963636363636363636363636363625755504840362c21170c01000000000000000000000000000000000000000000000000000000000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b00000000000000000008121c262f38424a545d636e788185858585858585858585858583786c6155493e32271b0f000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b000915202c38434f5a66727d84848484848484837b6f645d544840362c21160d04000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbcbc5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcacbc6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b636e79828d929b9ea4a3a3a49d9b928d82796e635b52483d32271c110500000915212c38434f5b66727d898f8f8f8f8f8f8f8e8d8c8b8885807b736e63605850463d352920170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161c21252b3033363b3f404345474945494b4c4c4b494548464441403d3835322e28241f1813121a22292e3335363f40404040404040404040404040404040403e3534322d272019100700000000000000000000000000000000000000000000060d12161e252b30353a3e41474b4c5055575a5d5e585f6363646464636360585f5d5a5856504d4c48423f3b35302c261f17130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b62656e6e6e6e6e6e6e6e6e6e6e6e6e6d63605950463b31261a0f04000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b000000000000000008121b222c364048525b636d747f8b92919191919191919191918f83786c6155493e32271b0f000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b0006121d2934404c57636e79848f8f8f8f8f8f8d81766d635950463b31261e140b010000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39424a555f696f7a818a8f9496979796948f89817a6f695f554b42382e23190e0300000914202b37434e5a65717d83838383838383838382817f7c79746f6a655e5550483f362d241910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11171f262c30353b3f40454a4c4e5153544f5457575757544f5452504d4b4841403d38332e28221d1a222a32383e41424a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4941403d37312920170e040000000000000000000000000000000000000001070f161d22272e353b3e45494b51565859606365686a6c686e6f6f706f6f6e696c6a69666360595957524c4a453f3b362f27231e1710060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c777a7a7a7a7a7a7a7a7a7a7a7a7a796f6960554a3f34281f150a000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b00000000000000061019222b313b465059626b717d87919ca29c9c9c9c9c9c9c9c9b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b0005111c28333e4a555f68737e8a949b9b9b9b91897d716960554a42362e251b11060000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29303b454f5860696f787e84888a8c8b8a88847e786f6960584f453a31281e140900000008141f2b36424d58636d71777777777777777777767574716e6863615a554a463f382f261d14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21272f363b3f454a4c4f55575a5c5e60615f636363635f585f5e5b5857524d4b48413e38312d27222b323b42484c4d565757575757575757575757575757575757554c4b47413931271e1309000000000000000000000000000000000000030a11181f262c31373f454a4e54575a616468696f71747677797a7a7b7b7b7b7a79787674726f6a6864625b57554f4a463f38322d272019110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505965707c85858585858585858585858585857a6f63574c43392f24190d030000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b000000000000050e172129333b434a556069707c859097a1aba8a8a8a8a8a8a8a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b00030f1a25303b454f58636e7984909ba5a7a29b8f847a6f635b52473e352b20160d0300000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f16212c363f48505960686e72797c7f80807f7c79726e68605950483f352a21180e0400000006121d28333e49535c63656c6c6c6c6c6c6c6c6b6b6a6865635f58565149453b362f271f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b30383f464a4f5557585f6365686a6c6d686e6f6f6e686d6b696764615b5857524c48423c37302b333b434b525759616363636363636363636363636363636363615856514a41372d23180d02000000000000000000000000000000000107141a222830363c43474f54575e63666b6f73777a7d7f81838485868787878686858382807d7a7874706b67635f58555048443d373129201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606975808c9191919191919191919191958a7e72675c53493e33271d13080000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b0000000000020c151f27313a434c555e636f7a838f959fa8b1bab4b4b4b4b4b2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b00000b16212b353f4a555f69737f8a959ea9a89d948b80746c62574e453a2f271d130900000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38404950575e63686e7173747473706e68635e57504940372f2519110800000000040f1a252f39434c53585a6060606060606060605f5e5c5957544f4b474139302c261f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272e353b43485055585f6366696e7173767778797a7a7a7a7978777572706b6864615b57524b474039313b434b535b62656d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c64615a51473d32271b1005000000000000000000000000000000040b111c242a323840464a53585f63686e72777b7f8385888b8d8e9095929293929296908f8d8b898683807c77736e69636059544b4741392f2b251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2935404c57636f7a85909c9c9c9c9c9c9c9c9c9ca59a8e83776c62584c40372c22170c0100000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b000000000007121c262f38414a535c656f76818d939da6afb8c1cabfbfbfbdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b000007111b25303b454f58636f7a84909ba5ada49c91867c70685e544941372d23170e05000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f27303840474e54575e63656869696765635e57544e47403830271e15090100000000000b151f29333b43494d4e5555555555555555545352514e4b4a453f3c373029211c160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f373f454a54596063696e72767a7d7f8183848585868685858482807e7b7874706b64625b565149443c434c535c626c70797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786f6b61564b4034291d12060000000000000000000000000000060d151b202d343b424950565c63686e72797d82868a8e919697989a9c9ea59e9e9ea69f9c9a999797918f8b87837e79736e69635d56514a433a352e261e160f0700000000000000000000000000000000000000000000000000000000000000000000000000000004121d28333e49535c67737e8a959fa9a8a8a8a8a8a8a8a8a79c93887c70655950463c31261b100400000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b0000000008121a212c363f48515a636d737f8a919ba4adb6bfc9d1cbcbc9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b0000020c16212c363f4a556069737f8b959ea9aaa0968e82786e635a51473c31271f160c020000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f2830363e45494e5457595c5d5d5c5957544e49453e3630281f170e05000000000000061019232b33393e424349494949494949494948474542403e3b35312d272018120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f272f3840474f545d63696e73797e8285888b8d8e909196919196908f8e8c8987837f7b76706c63615a544b464c545c636c707c848585858585858585858585858585858585837b6f64584c41352a1e130700000000000000000000000000050d161e252b303d454b525960636c71797e83898e91979a9ca0a7a4a6a7a9aea9aaa9afaaa8a6a4a7a09c9a97938e8a847f7a726d64615a5349453e362f271f170f0600000000000000000000000000000000000000000000000000000000000000000000000000010b141f2a36414d58636c78838f9aa6afb9b4b4b4b4b4b4b6aca3988c81756a60564b3f34281f150b00000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000061018222b303b454f58616b717d86919ca2abb4bdc6cfd9e1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000007121c26313b465059636f7a84909ca6afa79c938a7e736a61564b43382f261c12070000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262e353a3e45494b4e505251504e4b49453e3a352e261f170f06000000000000000009121b23292f3336373d3d3d3d3d3d3d3d3d3c3b3a373433302b25221d17100702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38404850585f636d717a7f84898d909696989a9b9ca09da69f9c9b999895938f8b86817c756f6a645d5650545d636d717d85909591919191919191919191919191938e837b6f6b61564b4034291d1206000000000000000000000000040d161e262e353a464d555b626a6f757d83898f93999ca0a7a8aab0b0b1b3b4b8b5b5b5b9b5b3b2b0b0aba8a6a39c9a94908a847d766f6b635c544e473f372f281f170e0600000000000000000000000000000000000000000000000000000000000000000000000006111b25313c47515a65717c88939da8b6bfc9bfbfbfbfc6bcb3a89c90857a6f63584c43392f251a0d03000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000050e162029323b434a555f696f7b849097a0aab2bbc4cdd7dfe0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000020c17212c36404a556069747f8b959fa9aca39c90857b6f645c53483f362c21170e0400000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b2f353a3e40424546464542403e3a352f2b251e160f07000000000000000000020a12191f25282b2b32323232323232323131302e2b292825211b18130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019212c363f48505960686e757d848b9095999c9fa6a4a5a7a8aab0afaaa8a7a5a3a49d9b97918d86817a726e6360595d646d717d8590959ea59c9c9c9c9c9c9c9c9ca29c928e827a6f6a615a51473d32271b10050000000000000000000000010b141e262e373e4549565e646c707a80868f939b9da4a8abb0b3b5babbbdbec0c3c8c1c9c3c0bfbdbbbab6b4b1aca7a59e9b948f89817b716d635e574f4840382f271f160d0400000000000000000000000000000000000000000000000000000000000000000000000b16202b35404b56616a75818d98a4adb7c7cfcbcbcbcbcbc0b5aa9f968a7f73675c53493e33271d1309000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00010b151e273039434b555e636e79828e959ea7b0bac2cbd5dde7e0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000008121c26313c465059636f7a85909ca6afa99f958d81766d635850463b30281e140a00000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b20252b2f333437393a3a393634332f2b25201b140d050000000000000000000000020910151a1d1f202626262626262626262524221f1d1c1a16110b0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029303b454f5860696f79808990949b9ea5a8aaafafb1b2b3b5bab9b5b3b2b1afada8a7a09c97918c847e766f6a62646d727d8690959ea5aea8a8a8a8a8a8a8aba29c928e827a6f6a615a514a41372d23180d02000000000000000000000006111b252e363e474f545f666e737c838c91979da3a8adb4b6babfc0c4c9c8cacbced2cdd3cecbcac9cac5c1bfbcb6b3aea8a49d9b928d847d746e685f58504840382f261e150b01000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7b85919ca8b3bdc6d6e0d6d6d9cec4b9afa69b8f83786d63584d41372d23180b010000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0007111b252e374149535c646e75808c939ca5aeb7c0cad3dbe5ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000020c17222c36404b56606a74808b969faaaea59b91887d716960554a42382e23181006000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161b202427292b2e2f2f2e2b292724201b16110b040000000000000000000000000000060b0f1214141b1b1b1b1b1b1b1b1a1918171412110f0b0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e273139414a555f696f7a828c919b9ea5a9aeb3b5b9bbbdbebfc0c4c4c0bfbebcbab7b3b0aba7a09c959089817a706c6e727e8690969fa6aeb6b4b4b4b4b4b2aba29b928d827a6f6a60595149413931271e1309000000000000000000000008131b202b353e474f585f636f747e868f949ca0a7acb3b7bdc1c5cacccfd3d4d6d5d3d3d2d3d3d5d6d4d4cfcccbc6c1beb8b4ada8a29b9590877f786e68605950483f372e251b110701000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8b969faab5c0ccd7e2e2e8ddd3c9bfb3a89d93887d71655a51473c32251b11070000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b07111a212b353f47515a626c737e8a919aa3acb5bec8d0dae3ecece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000008121c26313c465059636f7b85909ca7afaba29b8f83796e635b52483d322820170d030000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b1116191c1d1f222323221f1d1c1916110b06010000000000000000000000000000000000040608090f0f0f0f0f0f0f0f0f0e0d0b0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a555e636e79828e929aa1a8aeb4b8bec0c3c9c8c9c9c7c7c7c8c9c9c8c7c2c0bab5b0aba59e9c918d837c71737e8691969fa6afb6bfc6bfc2bab2aaa19b918d81796f69605950494139312920170e0400000000000000000000051019232b2f3a454e575f686e75808a91969da4abb0b8bdc1c7cccfd4d6d4cfcccbc9c8c7c7c7c8c9cbcccfd4d6d6d0ccc7c2bdb7b3aba59e97918b81796f69605850473e352b201a1107000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f9ba6afb9c4cfdae5f0ede3d9cdc2b7ada4998d81766a61564b3e352b20160b0000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2217050f18212a303b454f58616a707c86919ca1aab3bcc6ced8e1eaf4ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000030d17222d37404b56616a75808c969faab3a89d948b80746b62574c443930271d13080000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e101114161817161411100e0b06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a646e75818d929ca2aab4b8bec3c8cbcbc7c2bfbebcbbbbbcbebfc2c7cacac4c1bab6aea9a29b948f857d7f879197a0a7afb7bfc7cac1bab1aaa19a918d81796e6960595049403930292019100700000000000000000000040d162129333c4349545e686e78808b909c9fa6adb6bac1c8ccd1d7d2cecbcac5c1bfbebcbbbbbbbcbdbfc0c4cacacdd1d7d2cdc7c2bbb5aea7a09c918d81796f6960584f453a302a22170f0600000000000000000000000000000000000000000000000000000000000005101b27323d47515a66717d88949da8b7c0c9d3dee8f3f3e6dbd1c7bdb3a89c91867b6f64584f453a30251a0e0300000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170d161f28323a424a545f686f7b848f969faab1bac4ccd6dfe9f1f7ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000008121d2630384149515a646f7b85919ca8b3ada49c91867c70645e544940372d22180f0500000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0c0c0b080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606050300000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b737e8a919ba2abb3bac2c7cdc9c3c0beb8b4b2b0afafb0b2b4b7bdbec1c6cac5beb8b4aba49d9590868a9197a0a7b0b7bfc7d0c1b9b1aaa19a918c81796e6960585048403830282018100800000000000000000000010b141e26313a434c555e636e78818c919aa0aaafb7bdc5cad1d9d1cdc8c3bfbebab6b4b2b1b0afb0b0b2b3b5babebfc2c7ccd0d6d1cdc6beb8b0aba19b928d82796e685f5449453b32281f160c02000000000000000000000000000000000000000000000000000000000006121e2934404b56616b76828d99a4adb7c7d0d9e3edf8f5ebe1d7ccc0b5aaa0968b7f74685f54493e33281e140900000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2217141e263038424b545d636e79828e949ea6afb9c2cbd4dde7eff9f7ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000010c17222c374049515a61686e75818c98a3afb5aa9f968e82776e645a51473c31281f140a00000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006060606060606060606060606060000000002050607070b0f11121212110f0b0708070603000000000000000000000000000000000000000000000000000005111c27323d48525b646f7b85909ca1abb3bbc3cdccc7bfb9b5b3aea8a7a5a4a4a5a7a8adb1b3b7bdc1c6c8c3bbb4ada69f9791979ca1a8b0b8c0c7cac5b9b1a9a09a908c80786e685f5850484038302820181008000000000000000000000006111b252e36414a545d656f75808c919aa1a9b5b9c0c7cfd4d3cec7c2beb8b4b3b0aba8a7a5a4a4a4a5a6a8aab0b2b3b7bdc1c6cdd2d6cfc8c1bab6aba29b928d81786e635e554b42382f261c120800000000000000000000000000000000000000000000000000000000030f1a25303b454f58646f7b86919ca8b4bdc7d6e0e9f3f9faf0e5dacfc4bab0a79b8f84796e63574b41382e23180c02000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22111b252e364049525b646d74808b929ca4adb7c0c9d2dbe5edf7fff7ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000040f1b26313c465059616a6f797f84909ba7b3b9afa79c928a7e726a61564b42382e24190d03000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060808090a0a0a0a0a0a0a0a080806030000000000000000000000000000000104061111111111111111111111111111110b0a09090d10121311161a1c1d1e1d1c1a16111413110e0a0401000000000000000000000000000000000000000000000007121e2935404c57626b76818d959fa9b2bbc3cccbc3bbb6afa9a7a59e9b999898999b9ea4a6a8acb3b7bdc4cac5bdb6afa7a09ca0a7abb1b8c0c8c9c1bab6a9a099908b80756e685f584f483f382f281f180f070000000000000000000000000b16202b353e47515a636d747f8b909aa1aab2bac4c9d0d7cfc9c3bdb7b3aea9a7a7a09c9b99999899999b9ca0a7a7a8adb2b6bcc3c8ced6d1cac5bbb3aba39b918c80756e655b524840362c22170f0500000000000000000000000000000000000000000000000000000005111c28333e4a555f6874808b97a0abb5c1ccd7e3f0eeedeef0e9ded4cac0b4a89e94897d72665b52483d32261c1207000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2219202b353e475059626c727e89909aa2acb5bec7d0d9e3ebf5fafef7ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000040e18212a343f4b56606a6f7b828a90949ea9b4c0b7aca39c90847a6f635b52483e33271d1309000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070b0f111213141516161616161616161413120e0a05000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d17161413181b1d1e21212528292929282521221f1e1c1915100d08030000000000000000000000000000000000000000030f1a25303b454f5864707c86919ca6afb9c2cbcbc2bbb3aba69f9c9794908e8d8d8e8f94969a9da3a8adb5bac0c8c6bfb8b0aba8abb0b6bac1c9c8c1b8b1aba099908b807570635f584f473f372f271f170f07000000000000000000000000030e19242f3a454e57616b717d87919ca1aab2bac2cfd3d5cdc7bfb9b5ada8a59e9b9797918f8e8d8d8d8e8f9196979b9da4a7acb4b8bec6ccd4d4cfc3bbb3aba29a918a7f736c625950463b31281f140a00000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba7b0bac4cfdae5e5e3e2e3e5e9e3dacdc2b7ada4998e82766b61574b3f362c21160c010000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2221292f3a454e57606a707c85909ca1aab3bcc5ced8e0e9ebeceff4f7ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000009141e28343f4a545d636f7a838e939b9ea5aeb8c2bcb4a99e958c81756c62574c41372d23180d020006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51453a2e2934404b57636e7a85919ca8b4bfcbd1c5b9aea2978b8074685d51463a2e28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f11161a1c1d1f20212121212121212121201f1d19150f09020000000000000000060d12171b1d29292929292929292929292929292922221f1e2327292a2d2b303334353433302b2e2b2a28241f1b17130d070200000000000000000000000000000000000005111c28333e4a555f6875808c97a0abb6bfc9cec6bbb2aba29c95908b87848281818284878a8f939a9da4aab0b7bec6c8c1bab6b4b6bac1c5cac8c0b8b0a8a19c8f8b7f746f665f544f473f372f271f170f07000000000000000000000000040e172129333e49545e686f7b849097a1abb1bac2cbd2d4ccc5bdb6afaaa49d9b95908c89868482828181828385888b8f949a9ca3a9aeb5bcc3cbd2d3ccc3bbb2aaa19c91867c706960554a42382e241910060000000000000000000000000000000000000000000000000005111c27323d48525b66727e89949ea9b8c0cad4dededad7d6d7dadee3dcd1c7beb4a89c91867b7064584f453b30251a0f040000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e1f27313a4149545e686f7a838f959fa9b1bac3ccd6dee1dedfe1e4e9efece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000020e18232e38424d59636d76818d939ca3a9aeb5bec8c3b8aea59c91867c70645a51473c32261b10050006121e2935404c57636f7a86919da9b4c0cbd1c5baaea2978b8074685d51463a2e28333f4a5560697a85919ca8b4bfcbd1c6baaea3978c8074695d52463a2f28343f4b56626e7985909ca8b3bfcad1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c12171a1d212528292a2b2c2d2d2d2d2d2d2d2d2b2a28241f19120a02000000000000070f161c2226283434343434343434343434343434342e2d2b272d32343539353b3e4040403e3b353a3635332e2926221d17120c05000000000000000000000000000000000006121d2934404c57636e7984909ca7b0bac7cfc8beb5aba29b928d85807b7876757676787b7f83898f939ca0a7aeb5bec8cac5c1bfc1c5cad0cac0b7b0a7a097918a7f746f665f5649453e372e271e170e060000000000000000000000000009131e28313c47515a636e78828e959ea8b1bac2cad3d3ccc3bcb4ada69f9c938f8984807d7a787776757676787a7c8084888e939b9ea5acb3bac2cad2d4cbc3bab5aa9f968f837a6f635b52483d33291f150b0000000000000000000000000000000000000000000000000007121e2935404c57626b77828e99a5aeb8c8d1dad9d3cfcccbcccfd3d9e0d7ccc1b6aba0978b8074695f554a3f33281f140a0000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e262f38414a535d636e78818d949da6afb9c1cad4d9d7d6d3d4d6dadfe5ece0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000005111c27323d48525b66727d89919ba4acb4b8bec6cec8beb6aba0978d81766a61564b4034291d12060006121e2935404c57636f7a86919da9b4c0cbd1c6baafa3978c8075695d5246352b2934404c57636e7a86919da8b4c0cbd2c6bbafa4988c81756a5e5347372c28333f4a555f697a85919ca8b3bfcbd1c6baaea3978c8074695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161c2126282b30333436373838383838383838383736332f29221a12090000000000060f171f262c313440404040404040404040404040404039383633373d40414447454a4b4c4b4a45484542413e3934312d27211c160e06010000000000000000000000000000000914202b37434e5a65717d88959ea9b8c1cacdc2b8aea59b918d817b74706b6b6a6a6b6b6f73777d838b91969ea5aeb8c2cdcfcccbcccfd4cfc4bab0a7a09791877f736f655f564f463a352e261e160e0600000000000000000000000000020d18232d38404b56616a737e8a929ca5aeb8c1cad2d4ccc3bbb3aba49d96908a837e7975716f696b6a6a6a6b696e7174787d828990959ca3aab2bac2cad3d3cfc4b9afa69d948b80746c62574c43392f241a0f050000000000000000000000000000000000000000000000040f1a25303b46505964707c86919ca8b4bec8d6d8d0c9c4c0bfc0c4c9d0d8dacfc5bab0a79b90847a6e63574c42382e24190c0300000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2c363f48525b636d747f8b929ba4adb6bfc9d2d3cecbcac7c8cbcfd5dce3e0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000007121e2935404c57626b77838e9aa2abb4bcc2c8ced6cfc5bab0a79c91867b6f64584c41352a1e12070006121e2935404c57636f7a86919da9b4c0cbd2c7bbafa4988d81756a584f453a302935414c58636f7b86929da9b4c0ccd3c7bcb0a5998d82766b5950463c312934404c57636e7a8697a0aab5c1ccd1c6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21262c3134353b3e40424243444444444444444442413e39332b22190f05000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413e41474b4d50534f54575857544f53514e4c48423f3c37302c261f17110a0300000000000000000000000000000b17232e3a45515d68747f8b97a5aeb8c8d1cbbfb4a99e948d81796f6a64625b5e5e5a6164676d71797f8690959ea9b4bfcbd6d7d6d7dad7ccc1b5aaa09791877e736e655e564e463e302b251e160e06000000000000000000000000000005101c27323d47515a636f7b85909ca3acb6bec9d1d6ccc4bbb2aba29c938f857f79726e68666360595f5e5f585f6365686d71777e848e929ba1aab1bac3cbd5d3c9c0b7ada49c91867c70645c53493e33291f150a000000000000000000000000000000000000000000000006111d28333f4a55606975808c97a1abb6c1ccd8d0c7c0bab5b3b5bac0c7ced5d4cac1b4a99e95897e72675b52483e33261c120800000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e303b465059616b717d87919ca2abb4bdc7cfcfc8c3c0bfbcbdc0c5cbd3dce0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000007131f2a36414d5964707b87939ca7b2bbc4cdd2d8dfd4cac1b5aaa0978a7f73685c5045392e22160b0006121e2935404c57636f7a86919da9b4c0cbd4c8bdb1a69a8f8377685f54493e332a36414d5864707b87929eaab5c1ccd5c9beb2a69b8f84786a60564b3f342935414c58636f7b86929db0bac4cfd1c6baaea3978c8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161e252b30363b3f40454a4b4d4e4f4f505050505050504e4d49433b33291f150a00000008121c26303840464a575757575757575757575757575757514f4b494d5156585b5e585f6363635f585f5c5957534c4b47403b362f27221a130c04000000000000000000000000020e1925313c48535f6b76828d99a5b0bcc8d3cabeb2a79b90847a6f68615a575253535156585d63686e747d84909ba7b3becad5e1e2e3e2d6cbbfb3a89c91867e736e655e554e453e362e201b150d0600000000000000000000000000000007121e2935404b56616b75818c959ea9b3bcc6cfd9cec5bcb3aba29b928e837c736e68635f585755505353534f55575a5d63666e727b828c919aa1aab2bbc4cdd7d0c7bdb5aaa0968e82776d63584d42392e24190b010000000000000000000000000000000000000000000006121d2935404c57636e7a84909ca8b1bac5d0d3c9c0b7b0aaa8aab0b7bdc5ced7cec3b8aea59a8e82776c62574c40362c22170c01000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a333b434a556069707b859097a0abb2bbc5cdcfc6bfb9b4b3b0b1b5bbc3cbd5e0d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000a16212d3844505b67727e8a95a3acb6c3cbd5dce1e4dacfc4bab0a7998d82766b5f53483c3125190e0006121e2935404c57636f7a86919da9b4c0cbd6cabfb3a89c9085796e63574b41372d37434e5a66717d8894a0abb7c2ced6cbbfb4a89c91867a6f63584c41372d37424e5965717c88939fabb6cad4d1c5baaea2978b8074685d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820272f353b40464a4c4f5457595a5b5b5b5b5b5b5b5b5b5a58534c43392f24190e0300010c17222c36404950556263636363636363636363636363635c5a5553585a6164676a6c686e6f6e686c6a6865625c5856514a463f38322a241c150d040000000000000000000000030e19242f3a454e576c78838f9ba6b2bdc9d1c5baaea2978b80746a6058514c484747474b4d545960696f7a828e99a5b1bcc8d3dfebe6dbcfc4b8aca1958a7e726e645e554e453e352d251d110b0400000000000000000000000000000004101b26313c47515a646f7b86919ca5aeb8c4ccd6d1c8beb5aca39b928d827a706b635f58554f4c4a46484747454a4c4e54585d646a6f79808c919aa2abb4bdc7d0d8cfc4bab0a79c92887d71655b52483e33251b110700000000000000000000000000000000000000000006111c28333e48535c67727e8a959ea9b8c1cad4cfc4bab0a7a09ca0a7adb4bdc7d1d2c8beb2a79c92877c70645950463c31261b0f04000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a39434c555e636e79838f959ea7b0bac3cbd1c9bfb6afa9a7a4a6abb2bbc5cfdad4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000c17232e3a46515d6874808b97a2aebac6d1dce5ece9ded4cabeb2a69b8f84786d61554a3e33271b100006121e2935404c57636f7a86919da9b4c0cbd7cbc0b5aa9f96887d71655a51473c363b46505867737e8a96a1adb8c4d0d8ccc1b6aba197897d72665a51473d353b454f5867727e8a95a1acb8c3cfd0c5b9aea2968b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019202930373f454a505557585f63646566676767676767676765635c53493e33281d120600040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e5c63656b6f737678797a7a7a79787673706c6863605a555048423b342c251d150d040000000000000000000005101c27333e49545e687985909ca8b3bfcacdc2b6ab9f94887c7165595047413d38394149515a606a6f7a828e929ca7b2bdc9d4e0e2e2dfd3c8bcb1a5998e82796e635f564d443b332a21180f060000000000000000000000000000000006121d29343f4b56606a75808c96a0aab6bfc8d4d4cac1b8aea59c938d81796f69625b544f4a45403f3c363c363b3f4043494d545a61686e78808c919ba4adb7bfc9d3d4cac0b7aca3998e82766c62574c3f352b21160b00000000000000000000000000000000000000000007131f2a35414c57626c77838e9aa5aeb8c9d1d7ccc0b5aaa09691969da4adb7c2cdd8ccc1b6aca3988c80756960554a3f34281f150a000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514537414a535c656e75818d939da5aeb8c1cad4cac1b8afa69f9c999ba2abb5c0cbd6d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00010c18232f3b46525d6975808c97a3afbac6d1ddeaf4eee1d6cabeb3a79c9084796d62564b3f33281c110006121e2935404c57636f7a86919da9b4c0cbd9cec4b9afa6978c80756a61564b4642414a55606976818d99a4b0bbc7d3dbd0c5bab1a8988d81766b61564b4542414a555f6875818c98a4afbbc6d2d0c4b8ada1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313941484f5559606367686e7071727272727272727272716c63584d41362a1f13080006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f65646d71767b7e8183858586858583827f7c78736f6a636058534b443d352e251d150c0400000000000000000006111d2934404b57636e7a85969faab5c0cbccc1b5a99e92877b6f64584d4137323a414a515a616a6f7a828e929ca2acb6c0cbd6d7d6d7dad4c9bdb2a79c928c81756f655d544c433a312820170e0500000000000000000000000000000007121e2935414c58636f7a85909ca7b0bac6cfd8cfc5bab0a79e948e82796e696059524a453f3b3534312c302c3033343a3f444951585f686e78818d939da6afb9c4ced7d0c8bcb2a79c92877c7065584f453b30251a0f0300000000000000000000000000000000000000040f1b26313c46505965707c88939ca7b6bfc8d9d0c5bab1a89c91858f949da8b3c0cad4d0c6bcb3a79c90857a6f63574c43392f24190d030000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453f48515a636c737f8a919ba3acb6bec8d1d0c5bab1a89f95908d929ba6b1bdc8d4d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000b17232e3a45515d68747f8b97a2aeb9c6d0dbe4ebe7dfd5c9beb2a69b8f84786c61554a3e33271b100006121e2935404c57636f7a86919da9b4c0cbddd3c9bfb3a79c90857b6f635e55504d4d525a636e7a85909ca7b3bfcad6dfd4cabfb3a89c90857b6f645e554f4d4d515a636e7984909ba7b3becad5cfc5bab0a795897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f273139414951585f63696f73767a7c7c7d7e7e7e7e7e7e7e7e7d71655a4e42372b2014080006121e2935404c57636f7a85858585858585858585858585857f736b70767d82868a8d8f90969196908f8d8b87837f7a746e69625c544d463e352e251c140a02000000000000000006121d2935404c57636f7a8697a0abb5c1ccccc0b5a99e92867b6f64584c41353a424a515a616a6f7a828e939ca3acb3bcc5d0cfcccbcccfd3cbc1b6aca39b918b7f746e645c534a423930271e150c020000000000000000000000000005101c27323d47515a67737e8a969faab7c0cad7d7ccc1b6aba09790847b6f6960585049423b35302b28262224212528292f343941474f575e686e79838f969faab5bec7d2d8cbc0b6aba2978c8075685f544a3e33281c11050000000000000000000000000000000000000006111d28343f4b56606a75818c98a3acb6c6cfd8ccc1b6aba1978c80838f9ba7b0bac4cfd7cbc0b4a99f958a7e73675c53493e33271d13080000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145454f58616a717d86919ca1abb4bdc6cfcec5beb6aba1979085818d99a4b0bcc7d3d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000a16212d3844505b67727e8a95a3acb6c1ccd4dcdfded7cfc4bab0a7998e82776b6054483d31261a0e0006121e2935404c57636f7a86919da9b4c0cbd7d7cbc0b4a99f958c80756e63605859595b616b737f8a959fa9b4c0cbd6e2d7cbc0b5aa9f968c81756e635f5859585a616a727e8a949ea9b4bfcbd6ccc1b6aba097887c7065594e42362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a515a61686e737a7f8285878889898989898989898981756a5e53473b3024190d0006121e2935404c57636f7a869191919191919191919191918b7f73727c82888d9197989a9c9fa69f9c9b9996948f8b857f79706c645e564e463e352d241b1208000000000000000006111d2934404b57636e7a85919ca8b4bfcbcdc2b6aa9f93887c7165584f453a424a525a616b6f7b838e939ca3acb3bcc3ccc9c4c0bfc0c4c9d0c5bcb3aaa19c91877e726c635b524940372f251c12070300000000000000000000000007121e2935404b56616b77828e9aa6afb9c8d0dacec3b9afa69c91877d716a615950484038302b25211d1b1712161a1c1d252930373f474e576069707c85909ca5aeb8c2cdd9d0c5bcb3a79b9084796e63574b4034291d12080000000000000000000000000000000000000006121e2935404c58636f7a85909ca8b3bcc6d6d6cbbfb4a89c91867c7f8b96a0aab5c0ccd7cec3b9afa69a8f83776c63584d40372d22180b0100000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454a555f696f7b849096a0aab2bbc4cdd0c7beb5aba29c91877d808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000007131e2a35414d58646f7b87929ca7b2bac3cdd1d4d3cfc6bfb5aba0978b7f74685c51453a2e22170b0006121e2935404c57636f7a86919da9b4c0cbd7d9cec3b9afa69a918a7f746e69666464666b707b84909ba6afb9c3ced9e2d9cec4b9afa69b918a7f746e69666464656b6f7b84909ba5aeb8c2cdd6cbbfb4a89c91857a6f63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f48515a616a6f797f848a8d90959494959595959595958d81756a5e53473b3024190d0006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f737e858d92999ca0a7a6a8aaafaaa8a6a4a49d9b95908b837c726e665f564e463d352b231810070000000000000005101c27333e49545e687985909ca7b3becad0c5b9ada2968b7f73685f5449424b525b626b6f7b838f939ca3acb3bcc3ccc7c0b9b5b3b5b9c0c7ccc3bbb6aba19791867d716b625a51483f352b211c130a02000000000000000000000007131e2a35414d58646f7b86919ca8b4bfc9d6d7cbc0b4a99f958c81756d635a51483f383028211b16110f0c080c0f11151820272e363e475059626c747f8b949ea8b4bfc9d3d6cbbfb4a99e95887d71665a4e43362c22170c01000000000000000000000000000000000004121d28333e49535c67737f8a969faab5c0cbd7cec3b8aea59a8e82777b86919ca8b3bdc7d1d3c8bfb3a89d93887c71655a51473c31251b110600000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514b545d636e79828e949ea7b0bac2cbd3c9c0b7ada49c928b8074808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000006121e2934404b56616b77828e9aa1aab3bbc2c7c8c9c4bdb6ada49c91867c7064594d41362a1f13070006121e2935404c57636f7a86919da9b4c0cbd7ddd3c8bfb6aaa19c9187807a7471707071757b838f959ea9b6bfc8d2ddd8d2cdc9bfb7aaa19c91867f797471707071747b828e949ea8b5bec8d2d5c9bdb2a69b8f83786960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58616b6f7b828b9095999c9fa6a0a1a1a1a1a1a1988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f7f8990969ca2a8abb0b2b3b5b9b5b3b2b0ada8a69f9c938f867e746f665f564e453c332920170d03000000000000030e19242f3a454e576c78838f9ba6b2bdc9d5c9beb2a69b8f83796e635b524b525b626b707b838f939da4acb4bcc4ccc4bdb7afaaa8aaafb7bdc4d0c5bab1a89f9690847c706a60584f453b302c241b120900000000000000000000000a16212d3944505b67737e8a97a1abb6c1ccd8d0c5bab1a89c90857b6f635c534941382f271f17110b070401000104050b10161e262e363f48525b636e7a84909ba6afb9c4ced8cdc2b8aea5978c8074695950463c31261b0f0400000000000000000000000000000000010b151f2b36414d58636d78838f9ba6afb9c3ced6cbbfb4a99e95897e7276818d99a4adb7c2cdd9ccc1b7aca3988d81756a61564b3e352b20160b00000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51525b646e75808c929ca5aeb7c0cad3cfc4b9afa69e948e827874808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000005101b27323d47515a65717d88919aa3abb3b7bbbcbcb9b5ada69e948c81756b62574c4035291e12070006121e2935404c57636f7a86919da9b4c0cbd7e2d8cfc6bab6aba097918b84807d7c7b7d80858f939da5aeb8c6cfd8d6cec8c2bfbebbb5aba097918b83807d7c7b7d80858e939ca5aeb8c6ced8cec3b9afa6988c8175695950463b31261a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f696f7b848e929b9ea5a7a9afacacacacacaca4988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4b4b4b4b4b4b1a59a8e8287919c9fa6abb4b6babdbfc0c3c0bfbdbcb7b3afa9a49d96918a80746f665e554c433930271d1309000000000000000b16202b3547535f6a76818d99a4b0bbc6d1cabfb3a89d948a7e736b625a535b626c707c848f949da4adb4bcc4ccc4bcb4aca79f9c9fa7acb4bdc5cac1b8afa69e958f837a6f695f554a453d342b2219110800000000000000000004101b26313c4650596a75818d98a8b1bac5d0d8ccc1b6aba1978c80746a61564c433930271f170f07010000000000000000060e161e262f38424a556069737f8a969faab5c0cbd7d2c8bdb1a69a8e83776a60564a3f34281d11060000000000000000000000000000000007111b25313c47515a65717d88939da8b6bfc9d3d6cabeb3a79c90847a6e717d88949da8b3c0cad4d0c6bdb3a89c91857b6f63574e453a2f24190e03000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c515a626c727e89919aa3acb5bec8d0ccc4bcb5aa9f968f847a6f74808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000020d18232d38414d58636d75808c929ba1a8adb0b1b0afaaa49d958f847b6f635b52483d32271c11050006121e2935404c57636f7a86919da9b4c0cbd7e9dfd7cfc5bab0a7a09c94908b888787888c90959da4adb5bec8d7d6cec6beb8b4b3b4b8b0a7a09c948f8b888787888c90959ca3acb5bec7d6d7cbc0b5aa9f96897e72665b4f44362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a636e79828e949ca3a9aeb3b4b9b7b8b8b8b8afa4988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4bfbfbfbfbdb2a79c928e9197a1aaafb6bbc1c5cacacbcecbcac9c7c2bfb9b4ada7a09c908b80746e655c534941372d22160d040000000000000611222e3945515c68737f8b96a4adb7c1cccdc2b7ada49c90857c706a625c626c707c848f949da4adb4bdc4ccc3bcb3aca39d9691969da3acb5bec7c9c0b7aea59d938e82796e635f564d443b332a21181006000000000000000006111d28343f4b56606a78848f9ba7b2becad4d6cbbfb4a89c91867b6f645a51473b332920170f060000000000000000000000050d161f27303b465059636f7a85909ca8b3bfcad6d6cbbfb4a89c91857a6f63584c4035291e1206000000000000000000000000000000000b16202b35404b56616a76818d98a4adb7c7cfd9ccc1b6aca3978c8074696e79848f9ba7b0bac4cfd7ccc0b5aa9f968a7f73685e54493e33271e1309000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c58606a707c85909ca1aab3bcc6cecec6bcb3aaa19c91867c706a74808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000009131e28333e49535c636e79828d919b9da4a4a5a5a69f9c948f857c706a61564b42382e23190e030006121e2935404c57636f7a86919da9b4c0cbd7e4dcd5cfcac1b8b0aba59e9b9794939294979c9fa6adb4bdc6ced9cec5beb5aea9a7a9aeb5b0aba49d9b9794939294979c9ea5acb3bcc5ced7d0c5bab1a89c90857a6f63574c4035291d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a74808c939ca4acb4b8bec0c1bdbcb8b5b4afa4988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4c0cbcbccc1b6aca39c9a9ca1a8b1b9bfc7c2c1c1c2c3c6cacacdd1cdc8c3bdb7b0aaa099908a7f736d635a51473c31261e150b01000000000008141f2b36424e5965707c87939da8b3bdc7d1c7bdb4a99f958f837b706b636c707c8490949ea4adb5bdc5ccc3bcb3aca39c938f858f939da5aeb6bfc8c7beb6ada49c928d81756f655d544c433a312820170e050000000000000006121e2935404c58636f7a86949da8b3bfcadad4c8bcb1a59a8e82776b61574941372b2318100700000000000000000000000000050f17212c363f4a55606976818d99a4b0bbc8d2d7ccc1b5aba097887c71655a4e42372b201409000000000000000000000000000000030e1a25303a454f58646f7b85919ca8b3bdc7d6d4c9bdb2a79c92877c706468747f8b97a0aab5c1ccd7cfc4b9afa69b8f83796e63574b41372d23180b010000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5f686f7a838f969faab1bac4ccd0c8beb5aca39a918a7e726c6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000040e1a242f39434a555f696e7981898f9497999a999896918b837c706c625a51473a31281e1409000006121e2935404c57636f7a86919da9b4c0cbd7dcd3cbc5c0bdbcbab6aea8a7a39f9e9e9fa3a7a9afb6bdc4cdd6d1c9beb5aea59e9b9ea5aeb5b5ada8a6a29f9e9e9fa3a7a9aeb6bcc4cdd6d2ccc1b6aba1978c81756960554a3f34281d11020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b85909ca3acb5bcc3c4bcb6b2b1acaaa9a8a4988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4c0cbdad0c6bcb3aca7a5a8abb1b8bfbcb9b7b5b5b6b7babebfc2c7ced2cec7c0bab5a9a09c91867d716a61564b44372e251b1107000000000007131e2a35414c57626c78838f9aa4adb7c2cdcec3b9afa69d948f837b716d717c8590959ea5adb5bdc5cbc3bbb3aba39c938e837b838f949ea6afb8c1cac6bdb4aca39b918b7f746e645c534a423930271f150c0200000000000008141f2b37424e5965707c8893a4adb7c2cdd8cfc5bab0a7968b7f73685a51473930271b120800000000000000000000000000000007121c26313c46505967727e8995a5aeb8c3ced9cfc4bab0a7958a7e73675b5044392d21160a00000000000000000000000000000005111c28333e49545f68747f8b96a0aab5c0ccd7cec3b8aea59a8e82776b62646f7b86919ca8b3bec7d1d3c9c0b3a89d94887d71665a51473d32251b11070000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685d636e78828e949da6afb9c2cad4cac0b7aea59c938c80756e646974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000b151f29303b454f5860696e757e83888b8d8e8d8c8985807a706c625b524941372a21180e04000006121e2935404c57636f7a86919da9b4c0cbd7d5cbc3bbb5b1b0b3b5b8b4b2aeabaaaaabafb3b4b9bfc7cdd5d4cac1b8aea59e9590959ea5aeb8b7b3b2aeabaaaaabaeb3b4b8bfc6cdd4d3cec3b9afa69c91867c70645950463b31261a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a6974808b969faab3bcc5c2bbb3aca7a5a09e9d9d9d988d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4c0cbd7d6ccc4bcb6b2b1b4b6bab5b3b0adabaaa9aaacafb2b4b8bec3c8cfd0c9c4b9b5aaa09790847b6f635d54473e352b20160b000000000006111c28333e48535c68737f8a949da8b3bbc4cdc8bfb6ada49d948f847d757d8590959ea5aeb5bec5cbc3bbb2aba29c928e827a6f7b8490969fa7b0babebebebcb3aba19c91877e726c635b524940382f261c12070000000000000a15212d38444f5b67727e8995a0acb8c7d1d7ccc1b6aba097887c7165594e42382b20170a02000000000000000000000000000000020c17222c36414d58646f7b87959ea9b4c0cbd6d4cabaaea3978b8074695d51463a2f23170c00000000000000000000000000000006111d2934404b57636e79848f9ba7b0bac4cfd6cbbfb4a99e95897e72675b616a76828d99a4adb7c2cdd9cdc2b7ada4998d81766b61564b3f352b21160b0000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468646d74808b929ca4adb7bfc9d2cfc4bab0a79e958e82796e635e6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000061016212b353f48505860636e72797d80818282817e7a746f6a625b524b4239302719110800000006121e2935404c57636f7a86919da9b4c0cbdacfc5bbb2aba6a4a8aaafb7bebab7b5b5b7babfc0c3c8cfd7d1cac5bab1a89e94908490949ea8b1babfbebab7b5b5b7babec0c3c8cfd7d1cdc2bbb5aa9f968d81766c62574840362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2934404b56616b78838f9ba6afb9c4c8bbb2aba39c9a9592919191918d81756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4c0cbd7dcd4ccc6c1bdbcbbb7b0aaa8a5a19f9e9e9fa0a3a7a8aeb4b8bec6cdd3cfc4bab0a79e958d81766d63584f453a30251a0e0300000000030e19242e39424c57636e79848f9ba1aab4bcc5cec7bdb4ada49d959087818590959ea5aeb5bec6cbc2bbb2aba29b928e827a6f6b707c859097a0abb3b3b3b3b3b3b3aba19791867d716b625a51483f362c21160c0100000000000b17222e3a45515c68747f8b96a2aeb9c5d0d6cbbfb4a89c91857a6e63574c4034291d1207000000000000000000000000000000000008121e2935404b57616b7984909ca7b3becad6d2c7bbb0a4988d81766a5e53473c3025190d000000000000000000000000000005101c27323d48525b66717d89949ea8b7c0c9d3d6cabeb3a79c90847a6e63575a66717d89949ea8b4c0cad4d1c7bdb3a89c91867b6f64584f453b30251a0f0300000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686b727e87919ca2abb5bdc7d0cdc5bdb5aaa09790847b6f695f5d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000007121c252f373f4850555d64686e717476777675726f6a636059524b423b32292017090100000006121e2935404c57636f7a86919da9b4c0cbcbcbc0b5aba29b999c9fa7afb7bfc7c1c1c2c6cacbced3d1cdc9c1bab6aba19790847b849097a1abb5b9bfc7c2c1c1c2c6cacbced2d1ccc7c2bab2aaa19c90857b6f645b5248382f261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87949da8b7bfc9c0b8aba19b928e8987868585858581756a5e53473b3024190d0006121e2935404c57636f7a86919da9b4c0cbd7e4dcd9d0c8c0bab5aba7a09c99969493929395989b9ea5a9aeb5bdc4cdd4cac0b7aea59b91897d71685f54493e33281f140a00000000000a151f28333f4a556069727e89919ba3acb4bdc5cdc5bdb4ada59e97918c90969fa6aeb6bec6cac2bab2aba29b928d82796f69626c727e87919ca1a7a7a7a7a7a7a7a7a89f9690847c706a61584f453b30251a0f0400000000000c18232f3a46515d6974808b97a3aebac5d1d5c9beb2a79b9084786960554a3f33281d1106000000000000000000000000000000000005101c27323d47515a6c77838e9aa6b1bdc8d4d3c7bcb0a5998e82766b5f54483c31251a0e000000000000000000000000000007121e2935404b57616b76828d99a4adb7c7d0d9ccc1b6aca3978c8074695f5557636e79848f9ba7b0bac4cfd7ccc1b5aaa0978b7f74685f544a3e33281e140900000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7469707c859097a1abb3bbc5cecfc6bdb4aba29c91867d716b61585d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000020c151e272f383f464a54585f6365696a6b6b6a6763605a565049423a322a221810070000000006121e2935404c57636f7a86919da9b4bfbfbfbfbdb1a69b928d91969fa7afb6bdc2c7cacbcccccac9c7c2beb8b1aba19c91877e727e87919ca1aaafb6bbc0c4c9cacbcecbcac9c6c1bdb7b3aaa29a918a7e736b61574b4238281f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5b66727d8995a4adb7c7c4bab0a79b918d827e7b7a7a7a7a7a796e63574b4034291d11060006121e2935404c57636f7a86919da9b4c0cbd7e4dad1c9c0b7b0aaa29b96918e8a88878788898c90949b9ea5acb4bcc4cdd0c8beb5aba29a8f83796e63574b42382e24190e0300000000040f1a25303b465058646d75818c939da4adb5bdc4cfc5bdb6aea7a09c989c9fa6afb6bec6cac2bab2aaa19b918d81796f69605c646d737f8a919c9c9c9c9c9c9c9c9c9c9c9c958f837a6f695f554a3f33281c110500000000000c18242f3b46525e6975808c98a3afbac6d1d4c8bdb1a69a8e83776c5850463b30251a0f040000000000000000000000000000000000020d18232e3848535f6b76828d99a5b0bcc7d3d4c8bcb1a59a8e82776b6054493d31261a0f00000000000000000000000000030f1a25303b454f5864707b86919ca8b4bec7d6d4c9bdb2a79c92877c7064584f545f68747f8b97a0abb5c1ccd7cfc4bab0a79b9084796e63574b42382e23190c02000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746f7a838f959fa8b1bac3ccd1c9bfb6ada49b918a7f736d635a515d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000050e171f272f363b44474f54575a5d5f605f5e5b5856514b464039322a221a1108000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4b0a4998d818691979fa6acb3b7bcbebfc1c0bfbebcb7b3ada8a19c918b7f746d747f8b909c9fa6abb3b5b9bdbfc0c3c0bfbdbbb7b3ada8a19a918c80756e645a51473a3228170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737e8a96a1adb8c7c1b5aba0978d817872706f6e6e6e6e6e685f54493e33281c11050006121e2935404c57636f7a86919da9b4c0cbd7dfd4cac1b8b0a7a09c918d86827f7d7c7b7c7d80848a90959da3acb4bcc6cfcfc6bbb3a89d93897e72665b52483d33271c110500000000010c17212c363f48545d636e79838f949da4adb4bcc4cac6beb8b0aba8a4a8aaafb6bfc6cbc2bab1aaa19a918d81796e696059545d656f75808c90909090909090909090909090908e82796e63574c4034291d120600000000000d1924303b47535e6a75818c98a4afbbc6d2d3c8bcb1a59a8e82776b605448362c21170c01000000000000000000000000000000000000091425303c47535f6a76818d98a4b0bbc7d2d4c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000005111c28333f4a555f6974808b97a0abb6c1ccd7cec3b8aea59a8e82776b6257484f58646f7b86919ca8b4bec7d2d4cac0b4a99e94897d72665b52483d32261c1207000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7476818d939da6afb8c1cad4cac1b8afa69d938d81766f655c53525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000060e171f262c30373f454a4b4e51535454524f4c4b47403c373028211a110901000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f7e8690969da3a8adb1b3b4b6b5b3b2b0ada8a49e97918b80756f666f74808a90969ba2a8aaafb1b3b4b9b5b3b2b0ada8a49d9b908b81786e635e554a41382a2218070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b97a2aeb9c5bfb4a89c91867b6f68646363636363635f584f453a30251a0e030006121e2935404c57636f7a86919da9b4c0cbd7dbd0c5bab1a8a097918a817b7773717070707275797e848f939da3acb6bfc8d3ccc1b7ada49a8e82776c62574c41352a1e1208000000000007121c262f38444a5560696f7b838f949da4abb5bac0c8c8c1bab6b4afb3b5b9bfc7cfc4bbb2aaa19a918c81796e686058504c555e636e7981848484848484848484848484848484858075695d52463b2f23180c01000000000d1924303b47535e6a75818d98a4afbbc6d2d3c8bcb1a5998e82776b5f5448352b21160b000000000000000000000000000000000000020d1924303c47535e6a76818d98a4b0bbc7d2d4c9bdb1a69a8f83776c6055493e32261b0f0000000000000000000000000006121d2934404c57636e7984909ba7b0bac5cfd6cbbfb4a99e95897e72675b52484b56616b76828d99a5aeb8c2cddacdc2b8aea5998e82776b62574c3f362c21170c010000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747f8b919ba4adb6bfc9d1d0c5bab1a89f958f837a6f635e554c525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000030c141b232830363c3f42484c4d4f504f4e4c4a453f3d38302b251e160f0700000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f737e858f939b9da4a5a7a8abaaa8a7a5a49d9b948f87807570675f666f747e858d92989c9fa6a6a7a9afaaa8a6a4a49d9a948f8880786e685f544d443a31281a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3a46525d6974808c97a3aebac6bdb2a69a8f83786b6157575757575757544f473e352b20160b000006121e2935404c57636f7a86919da9b4c0cbe0d7ccc1b6aba19791867e76706b676564646566686e737b838f939da6afb9c3ced1c6bdb2a79c92877c7064594d42362c22170c0100000000020c161f27303b465059616a6f7b848f939ca2abb0b8c0c7cac5c1bfbbbfc0c3c9cfcabfb5aba19a908c80786e685f585048454a545f686e76797979797979797979797979797979797570665b50453a2e23170c00000000000d18242f3b46525e6975808c98a3afbac6d2d4c8bdb1a69a8e83776c584f453b30251a0f030000000000000000000000000000000000020e1925313c48535f6b76828d99a5b0bcc7d3d4c8bdb1a59a8e83776b6054493d31261a0f00000000000000000000000005111c27323d48525b66727e89959ea9b8c1cad4d6cabeb3a79c90847a6e63574c4247515a66727d89949ea8b4c1cad4d2c7beb4a89c91867c70645950463b30251a0f040000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7d86919ca2abb4bdc6cfcec5beb6aba19790857c706960554e46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000020b141c242b333840464a4c5257595a5b5b5957554f4c48423b352e271f170f05000000000006121e2935404c57636f7a869191919191919191919191918b7f73727c838a8f94979a9b9ca19f9c9b9997948f8a847d746f6760575f666e737b81878d9196989a9c9fa69f9c9a9996938f8a837d746e685f584f453d3429211809010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bcb0a5998d82766b5a514c4c4c4c4c4b49453e372e251b1107000006121e2935404c57636f7a86919da9b4c0cbd9cdc2b7ada49c91877e736e64625b5a595859585f636a6f7a828f959fa9b4bec8d2ccc1b6aca3978b7f74685950463c31261b0f040000000000050e17212c363f48515a616b6f7b838e929ca0a7afb7c0c9cfcccbc6cacbced3d3c7bcb1a69b918c80756e685f584f483f3b454f585f636b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d69665f564c42372c21150a00000000000c18232f3a46525d6974808b97a3aebac5d1d5c9beb2a69b8f8478685f554a3e33281c1105000000000000000000000000000000000005101b26313c47515a6b77838e9aa5b1bdc8d4d3c8bcb0a5998e82766b5f54483c31251a0e00000000000000000000000007131e2a35414c57626c77828e9aa5aeb8c8d1daccc1b6aca3978c80756960554a3f414b57636e7984909ba7b0bac5cfd8ccc1b6aba1978c80746960554a3f33281f150a0000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c6baafa3988c80849097a0abb2bbc5cdd0c7beb5aba29c91877e726b6259504646525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000008131b242d343c43495055575b626466676665635f5857524a453f372f271f160c020000000006121e2935404c57636f7a85858585858585858585858585857f736c70797e83888b8e90919796918f8d8b88847f79716d665f574f565e646b6f767c8185898c8e90959196908f8d8a87837e79716d635e574f473e352c24191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e534740404040403e3a352e261e150b01000006121e2935404c57636f7a86919da9b4c0cbd3c9bfb3a89d948c80746d645e57524e4d4d4e4f545a616a707b85909ca5aeb8c2cdd0c6bcb1a69a8f83776a60564a3f34281d110600000000000007121c262f38414a515a616b6f7a828b91979fa6afb9c4cfd7d6d2d6d7d9ddd2c7bbafa4988d81756e69635c554a453f373f474f54575f626262626262626262626262626262625d5b564f463c32281d120700000000000b17232e3a45515d68747f8b96a2aeb9c5d0d6cbbfb3a89c91857a6e63574c4034291d1308000000000000000000000000000000000006121d2934404b56616a7984909ba7b3becad5d3c7bbb0a4998d81766a5f53473c3025190d0000000000000000000000040f1a26313b46505964707c87929ca7b5bec8d9d4c9bdb2a79c92877c70645850463b3e49545f6874808b97a0abb6c1ccd7d0c5bab1a89c90847a6e63574c42392e24190d0300000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbbfb4a89c918690959ea7b0bac3cbd3c9c0b7ada49c928b80746d645b52494046525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000071018232c343d454c54596063686b70717272716e6964625b544f473f382f261c12070000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f65686e73787d8082848586868584827f7c78736e69635c564e464d555a61646c70757a7e8183858586858583817f7c78736e69635c544e473e372e251c140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3434343433302b251e160d0400000006121e2935404c57636f7a86919da9b4c0cbcec4b9afa69b8f83796e635d554c4843424142454a5159626b737f8a959ea9b4bfcbd6cbbfb4a89c91867a6f63584c4035291e1206000000000000020c161f273139414a515a616a6f787f8691969faab5c0ccd7e2dde1e0d8ddd6cbbfb3a89c91868079716c655e554f4840383f454a4b535656565656565656565656565656565652504c463e362c23180e0300000000000a16212d3844505b67727e8a95a1acb8c8d2d7ccc1b5aaa097877c7065594d42372d22180c020000000000000000000000000000000008121e2a35414c58636f7b86959ea9b4bfcbd6d1c6baaea3978c8074695d52463a2f23180c000000000000000000000006111d28343f4a55606975808c98a3acb6c6ced8cec3b8aea59a8e82776b6257483f363a454f58646f7b86919ca8b4bec7d2d4cac1b4a99e958a7e72675b52483e33261d120800000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8ccc1b6aba19791979ea5aeb8c0cad3cfc4b9afa69e948e82786e635d544b423846525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000030d172029333c454d555d63696f74787b7d7e7d7c7a76706c635f5850483f362c21170f06000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e5f63676d717477797a7a7a79787674706c67636058534c463e444a51575b6265696f727577797a7a7a79787673706c67635f585349453e362e261e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c302929292825201b150d060000000006121e2935404c57636f7a86919da9b4c0cbcbc0b5aa9f968a7e73695f554d443d383636353b4149525b636e7a84909ba7b3becad4ccc1b6aba097887d71655a4e43372c20140900000000000000050f172029313a414a515960686e747d85919ca8b3bfcad6dbd8d5d5cdd1d6ccc0b5aaa096918b837d736f635f58504940373b3e40484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4645423c362e251c13090000000000000814202b37424e5a65717c8893a5aeb8c2cdd8cfc4bab0a7968a7e73675a51473c31261c120800000000000000000000000000000005101a25303b454f5866727d8995a5aeb8c3cdd9d0c5bab1a8968a7e73675c5044392d22160a000000000000000000000006121d2935404c57636f7a85909ca7b3bcc6d6d6cbbfb4a99e95897e72675b5248382f353e4b57616b76828e99a5aeb8c2cddacec3b8aea59a8e83776c62574c40362c22170c01000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dbd0c5bab1a8a19ca1a8aeb6bec8d1ccc4bcb5aa9f968f847a6f685f544d443a3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000009131d273039444c555e656d717a7f8487898a898885817c746e68605950463b30281f160c030000010c17222c36404950556263636363636363636363636363635c5a5554575c6365696b686e6f6e696d6b6865625c57555048433c353a41474b525759606366696c686e6f6e686c6a6864625b57554f48433a352e261e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c30241d1d1c1a16110b04000000000006121e2935404c57636f7a86919da9b4c0cbcabfb3a89c90857a6f63584f453c322e2a2a2b3038424a55606974808b97a8b1bac5d0cfc5bab0a7968a7f73685c5045392e22160b00000000000000000710192129313a414a545d656f74808b969faab5c0ccd7d1cccac9c1c5cbccc4bab0a7a09c948f867f766e69605950473f3533343c3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37322c251e150c0300000000000007121e2a35414c58636f7b86949ea9b4bfcbd6d4cabcb0a5998d82766a61564b40362c21170f0500000000000000000000000000040d162029333f4a555f6975818c98a3afbbc8d2d8ccc1b6aba197887d71665a4e43372c2014090000000000000000000006111d28333e49535c67737e8a959fa9b4c0cbd7d6cabeb3a79c90847a6e63574c423829323d47515a66727d89949ea9b4c1cad4d2c8beb2a79c93877c70655950463c31261b0f04000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dfd4cac1b8b1aba8abb1b8bec6cfcec6bcb3aaa19c91867c706a61584f453c333a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000020d18232d37414a545d656e737d848b8f9494959595908d8680796e6960554a453830261c120800000008121c26303840464a575757575757575757575757575757514f4b494b53585a5d575e6363635f585f5d5958534c4a463f38332b31383d42484c5055575b5e585f6363635f585f5c5957524c4a453f372f2b251e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c30241911110e0b070100000000000006121e2935404c57636f7a86919da9b4c0cbc8bcb1a5998e8277696055483f352c231f1e2128303b46505866717d8897a1abb6c1ccd4cabaafa3978c8075695d52463b2f23180c0000000000000000000b16202b353e47525b636d737f8b909aa6afb9c4cfcdc7c2bebdb6babfc0c4c0b7b0aaa49d96918b81796f6960584f453b302931333333333333333333333333333333332f2e2c28231c150d050000000000000006121d2934404b56616a7984909ba7b3becad5d6cbbfb3a89c91867b6f635950463b31271f160d040000000000000000000000020b141e26303a454f58636e7984909ca7b3becad6d6cbbfb4a89c91867b6f63584c4135291e12070000000000000000000008131f2a36414c58636c77838f9aa6afb9c3ced7ccc1b6aca3978c80756960554a3f33282d38414b57636e7984909ba7b0bac5cfd8ccc1b6aca3988c81756a60564a3f34281f150a000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dad1c9c1bab6b4b6bac1c9cfd0c8beb5aca39a918a7e726c625a51473e352f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000005101b26313c47515a646d737f8690959b9da4a1a69f9c97918c81796e635e554940362c22170c010000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413e43494d4e514e54575757554f53514e4c48423f3b362f2723282e32393e40464a4c4f524f54575757544f53504d4c48423f3b352f27201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d050300000000000000000006121e2935404c57636f7a86919da9b4c0cbc5baaea2978b807468595046372f251c141118212c36404c57636f7a86919ca8b4bfcbd3c7bbb0a4998d81766a5f53483c3025190e0000000000000000030e19242f3a454e57616b727e87919ca1aab7c0c9ccc5bdb7b3b2aaaeb3b5bac0c0bab5ada7a09c918d827a6f685f544a43372e25282828282828282828282828282828282323211d18130c05000000000000000005101b26313c47515a6a76818d99a4b0bbc6d1d7ccc0b5aaa0968b7f746960554a42382f261e150d06000000000000000000050c121b252e363e49545f68727e8a959ea9b4bfcbd6d4c9bdb2a69b8f83786a61564b4034291d120600000000000000000004101b26313c47515a65717c88939da7b6bfc8d3d4c9beb2a79c92877c70645850463b302528333e4a545f6874808b97a0abb6c1ccd7d0c6bcb3a89c90857a6f63584c43392f241a0d030000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e1d9d1cac5c1bfc1c5cad1d4cac0b7aea59c938c80756e645c534940372e2f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000006121d2934404b56616a727e8791979ea5a8adacafa9a7a09c928d81766e645950463c31261b0f04000000060f171f262c313440404040404040404040404040404039383633393e41424645494b4c4c4a45484642413e3933302c261f171e23292e33363c3f404447454a4b4c4b4945484542413e3833302b251e17110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc4b8ada1968a7e73675c5044362d1e150907121d28343f4a5560697985909ca7b3becad3c8bcb0a5998e82766b5f54483d31251a0e000000000000000005101c27333e49545e68707b859097a0abb1bac7ccc4bcb4ada8a69fa3a8aab0b7bcc4bdb7b0aaa29b928e81796e635d53473f352b21161c1c1c1c1c1c1c1c1c1c1c1c1c1c181715120e0903000000000000000000020d18222d3745505c67737f8a96a3acb7c1ccdacfc4bab0a79b90847a6f635b52483f362e251e16100a05020000000205090e161c212b353e47515a636e79838f9aa5aeb8c3ced9cec3b9afa6988c8075695a51473c31261b100400000000000000000006121d29343f4b56606a75818d98a3acb7c6cfd8cec3b8aea59a8e82776b6257483f362c2125303b454f5864707b86919ca8b4bec8d2d7cbc0b5aa9f968a7f73675c53493e33271d13090000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e9e1dad4d0cccbccd0d4d5cfc4bab0a79e958e82796e635e544b423930262f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000040f1a25303b465059646f7b859097a0a7aeb3b7b8b9b5b0aba29b918a7e736960554a3f34281d110600000000070f161c2226283434343434343434343434343434342e2d2b282f333637353a3e4040403f3b353a3636332f2825211c160e14181f24262c31343538353b3e4040403e3a35393635332e2825211c150e0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc3b8aca095897e72665b4f44382c21150a040f1a26313b4650596c78848f9ba6b2bec9d4c8bcb1a59a8e83776b6054493d31261a0f00000000000000040f1a26313b465059636e78828e959fa7b0bac1cac3bcb3aca49d9b93979ca0a7acb4bbc2c0bab5aba29c928c80756d63584f453b30251a0f111111111111111111111111110c0c0a070300000000000000000000000009131f2a36424d5964707c87939da8b3c0cad4d4cac0b4a99e958b80746c625950473e352e26201815100d090b090d1014171f262c303a454e57616a737e8a939da8b6bec8d2d7cbc0b4a99f95897d72665b4f43372d22180d0200000000000000000006121e2935414c58636f7a85909ca8b3bdc6d6d6cbbfb4a99e95897e72675b5248382f261c212b353f4b57616b76828e99a5aeb8c2cddacec3b9afa69a8f83786c63584d41372d22180b0100000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebebe4dfdbd8d6d8dbd7cdc5bdb5aaa09790847b6f695f554d443b3228202f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000006111d28333f4a55606975808c959fa7b0b8bec2c7c3c0bab5aba29b90847a6f63574c4035291d12060000000000060d12171b1d29292929292929292929292929292922221f1f24282b2b2b2f3334353433302b2e2b2a28241f1a17120c05090f15191c222628292c2b303334353433302b2e2b2a27241f1a16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc3b8aca095897e72665b4f44382c211208040f1a26313b4650596c78848f9ba6b2bec9d4c8bcb1a59a8e83776b6054493d31261a0f0000000000000006111d28343f4a556069737e8a929ca6afb8c1cac5bcb3aca39c938f878c91969da3abb2bbc3c4bbb3aba29a91887d71685f544a3e33281c1107000505050505050505050505010000000000000000000000000000000007131e2a35404c57626b78838f9aa7b0bac4cfdacdc2b8aea59c91867c706960574e453e373028241f1c18141713181b1e23272f363b4549545e686f7b84909ca4adb7c6cfd8d6cabfb3a79c90857a6e63574c4035291d130800000000000000000005121d28343e49535c68737f8a969faab5c0cbd7d6cabeb3a79c90847a6e63574c4238291f161b25323d48525b66727e89959ea9b4c1cad4d3c9bfb3a89d93887d71655a51473c31251b110600000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf4eee9e6e3e2e1d9cfc6bdb4aba29c91867d716b61584f453d342a22232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000006121d2935404c57636e7a85909ca6afb8c0c8cdd1cecac4bbb4a99e95897e72675b4f44382d21160a00000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614151a1d1f20202427292929282521231f1f1d19150f0c07020000050a0d12171b1d1e21212528292929282520221f1e1c19140f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc4b8ada1968a7e73675c5044362c21170c07111d28343f4a5560697985909ca7b3becad3c8bcb0a5998e82766b5f54483d31251a0e0000000000000006121d2935404c57636f7a84909ba3acb6bfc8c7bdb4aca29c928e837c80868f939ba2abb3bcc5c3bbb3aaa19b8f83796e63574b40352b21160b000000000000000000000000000000000000000000000000000000000005111c27323d48525b68737f8b97a0aab5c1cad4d2c8beb5aa9f968f83796e685e544f474039332f2927232323232326292e32383f464a555e636e78828e959ea9b4bdc6d6d9ccc1b6aca3988c81756960554a3f33281d11030000000000000000010b151f2b36424d58636d78838f9ba6afb9c4ced7ccc1b6aca3978c80756960554a3f33281d0e18232e38414c57636e7984909ba8b1bac5d0d9ccc1b7ada4988d81766a61564b3e352b20160b00000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7f9f4f1eee4dad1c9bfb6ada49b918a7f736d635a51483f362c241a232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000915202c37434f5a66717d89969faab6bfc8d1d8dcdad4cdc2b8aea5988d81766a5f53473c3025190d00000000000000000104061111111111111111111111111111110b0a090b0f12131116191c1d1d1d1c1a16121413110e0a040100000000000003080c0f111211161a1c1d1e1d1c1a16111313110e0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc5baaea2978b8074685950463b31251c1411181f2935404c57636f7a86919ca8b4bfcbd3c7bbb0a4998d81766a5f53483c3025190e00000000000005111c27323d48525b67737f8a949ea9b3bcc6c9c0b7ada49c928e827a70747c838d919ba3acb6c0cbc3bab3a89d94897d7266584f453b30251a0f0300000000000000000000000000000000000000000000000000000000030e19232e38424d58646f7b86919ca8b1bac5d0d8cfc4b9afa69d938d81786e635f585149443e3935322e2f2e2f2d3134383d434850555e656f74808c929ca5aeb8c4cdd6d1c9c1b3a79c93887d71655950463b30251a0f04000000000000000007111b25323d47515a66717d88949da8b7bfc9d3d4c9beb2a79c92877c70645850463b30251a0f141e28333e4a555f6874808b97a1abb6c1ccd8d1c7bdb3a89c91857b6f63574e453a2f24190e03000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7fff8eee6dfd4cac1b8afa69d938d81766f655c534a41382f261c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000b17222e3945515c68737f8b96a6afb9c7cfd9e1e9e4dcd2c8bdb2a69a8f83786c6055493e32271b0f000000000000000000000000060606060606060606060606060600000000040608060b0e10111212110f0b0708080603000000000000000000000001040606070b0f11121211110e0b07080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbc8bcb1a5998e82776960554a3f352b231f1e2128303b46505866717d8897a1abb6c1ccd1c6baafa3978c8075695d52463b2f23180c00000000000007131e2a35414c57626c78838f9ba5aeb8c4cfc4bab0a79d938e82796f6a6c7079818d929ca7b2bec7cdc2b7ada4998d8276685f544a3e33281c110500000000000000000000000000000000000000000000000000000000000a141e2934404b56616b76818d97a1abb6bfc9d3d3c9c0b7ada49b918c80756e68615a544c4943403d383a3a3a373c4042484c535860636f737f8a909aa2abb6bec8d5d4cac1b8ada49a8e83776d6358483f362c21170c0100000000000000000b16212b35404b56616b76818d99a4adb7c7d0d9cec3b8aea59a8e82776c6257483f362c21170c0f1a25303b454f5864707b86919ca8b4bec8d2d7ccc0b5aa9f968b7f73685e54493e33271e1409000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7faf0e8ded6d0c5bab1a89f958f837a6f635e554c433a31271f1518232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00010c18232f3a46525d6974808c97a3aebac9d1dfe9f1ece1d5cabeb3a79c9084796d62564a3f33281c100000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbcabfb3a89c91857a6f63584f453b322e2a2a2b3038404a55606974808b97a8b1bac5d0cfc5bab0a7968a7f73685c5045392e22160b00000000000008131f2a36424d5964707c87939da8b5bec8ccc0b5aaa0968f837a6f696062696e78828e99a5aeb8c2cdc7bdb3a89c90857a6e63574b4034291d1206000000000000000000000000000000000000000000000000000000000005101b27323d47515a64707c87919ca6afb9c4ced7d0c7bdb4aba29a908c80786f6a635d58534d4c484746454646474b4c52575c62696e757f8a8f99a1aab3bcc6cfd9d0c5bab1a89d93897d72665c5349382f261c12070000000000000000030f1a25303b454f58646f7b86919ca8b3bdc7d6d6cbc0b4a99e95897e72675b5248382f261c12070b16212b353f4c57626b77828e99a5aeb8c3cedacfc4b9afa79b8f84796e63574b41382d23180c020000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7f3e9e0d8cec5beb6aba19790857c706960554e453b332921170e18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000c17232f3a46515d6974808b97a3aebac8d2dce7efebe1d5cabeb2a79b9084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbccc0b5aa9f968a7e73695f554a443d383636353b4149525b636e7a84909ba7b3becad4ccc1b6aba097887d71655a4e43372c2014090000000000000b16222e3945505c68737f8a96a4adb7c6cecbbfb3a89c91867c706a6059585f68707c88949ea9b4bfcacbc0b5aa9f96877c7065594d42362b1f14080000000000000000000000000000000000000000000000000000000000020d18232d38414c57626c76818d969faab5bdc7d0d8cdc4bbb2aaa19a918c827a726d65625c58575252515151525156585b62646c7079818b9099a0a9b1bac3ccd6d1c8c1b6aba1978f83786e63574b4339291f160c02000000000000000005111c28333e4a545f68747f8b97a0aab5c1ccd7d6cabeb3a79c90847a6e63574c4238291f160c0207111b25323d48525b66727e89959ea9b4c1cad4d3c9c0b3a89d94897d71665a51473d32251c12070000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf8ede3d9d0c7beb5aba29c91877e726b625950463d352b2319100618232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000b16222e3945505c67737f8a96a5aeb8c2cdd7dfe4e1dad1c8bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbcfc4b9afa69b8f83796e635d554c4843424142454a5159626b737f8a959ea9b4bfcbd6cbbfb4a89c91867a6f63574c4035291e12060000000000010d1924303b47535e6a75818d98a4afbbc7d2c6bbafa3988c81756c6259504f58626c7884909ba7b2becacec4b9afa695897e72675b5044382d21160a00000000000000000000000000000000000000000000000000000000000009131e28333d48525b64707b85909ca4adb7bfc9d3d5cbc2bab1aaa19a928e847d76706c6764625b5e5d5d5d5e5a6164676b70757c838c9199a0a9b0b9c1cad4d4cac1b8aea59c91877d71685e54493e33271c0f0500000000000000000006121d2934404b57636e7984909ba7b0bac4cfd7ccc1b6aca3978c80756960554a3f33281d0e0500020c18232e38424c57636e7984909ba8b1bac5d0d9cdc2b7ada4998d82766b61574b3f352b21160b0000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebede5ded3c9c0b7ada49c928b80746d645b524940362d241b12080c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000008141f2b37424e5965717c88959ea9b4bdc6ced6d8d7d1cac0b8aca3988c8075695e52473b2f24180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd3c9c0b3a89d948c80746d645e57524e4d4d4e4f545a616a707b85909ca5aeb8c2cdd4c9bdb1a69a8f83776960554a3f34281d11060000000000030f1a26313d4954606b77828e9aa5b1bcc8cdc2b6aa9f93887c71655b524947535c6b77828e99a5b1bcc8d3c9b9ada1968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000040e19242e38424c57626b747f8b939da6afb9c4ced3d3cac2bab1aaa29c949089827c7773706b6b69696869696b6a6f72767c81868f939ba1a9b0b9c0c9d2d4cfc5bab0a79e958d81756d63574e453a2f24190e00000000000000000005111c27323d48525b66727d89949ea8b7c0cad4d4c9beb2a79c92877c70645850463b30251a0f00000009141e28333f4a555f6974808c97a1abb6c1ccd8d1c7bdb4a89c91867b6f64584f453b30251a0f0300000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe7ddd4cfc4b9afa69e948e82786e635d544b423830261d140a020c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000006111d2934404b57636e7984909ba4adb6bec6cbcdccc9c1bab0a79d93897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd9cdc2b7ada49c91877e736e64625b5a595859585f636a6f7a828f959fa9b5bec8d2ccc1b6aca3978b7f74685950463c31261b0f040000000000040f1b26323e4955606c78838f9aa6b1bdc9cbc0b4a99d91867a6f63574c424650596b76828d99a5b0bcc7d1c5b9aea2978b7f74685d51453a2e23170c000000000000000000000000000000000000000000000000000000000000000a141f28323d48525b636e79838f969faab5bac3cbd4d2cac2bab3aba59e9b928d88837f7b7876757474747576787b7e82868c91979da4aab2b9c1c9d1d5ccc4bcb6aba09790847b6f635c53473e352b20160b00000000000000000007121e2935404c57626b76828e99a5aeb8c8d0dacec3b8aea59a8e82776c6257483f362c21170c010000030f1a25303b454f5864707c86919ca8b4bec8d2d7ccc1b5aba0978b8074695f554a3f33281e140a00000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e9dfd6ccc4bcb5aa9f968f847a6f685f544d443a31281f160c04000c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000005101c27333e49545e68737f8a949da5aeb5bbbfc2c0beb8b1aba0978f83786e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f1519232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbdcd1c7bdb6aba19791867e76706b676564646566686e737b838f939da6afb9c6ced3c9beb2a79c92877c7064594d42362c22170c010000000000030f1b26323d4955606c77838f9aa6b1bdc8ccc0b4a99d92867b6f63574f4a4c55606977838e9aa5b1bdc8d1c5baaea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000050f18232e38424a555f69707c85909ca1aab2bbc3ccd4d2cbc3bcb5aea8a29c99938e8a87848280807f8080828486898e91979ca0a7adb4bac2c9d1d4cdc5bcb3aba29c91877d716a61564c43362e251b11060000000000000000040f1a25303b46505864707b86919ca8b4bec7d6d6cbc0b4a99e95897e72675b5248382f261c1207000000000b16212b353f4c57626b77828e9aa5aeb8c3ced9cfc4bab0a79b9084796e63574c42382e24190c02000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e1d8cec6bcb3aaa19c91867c706a61584f453c332a21170f0600000c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000030e19242f3a454e57636e79838f959ea5abb3b4b8b5b3ada8a19c91867d71685e54493e33271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a11191f24282f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7d7d0c5bab1a8a097918a817b7773717070717275797f848f939da3acb6bfc8d6ccc1b7aca39a8e82776c62574c4135261c1208000000000000030e1a25313d48545f6b77828e99a5b1bcc8cec3b7aba094897d71685f5855575d636f7a85919ca8b3bfcad0c4b9ada2968a7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000009141e28303b454f58626c727e8a919aa2abb3bcc3d0d4d3ccc5beb8b4aba6a39c9a9694908e8c8b8b8b8c8d8f9495999ca0a7abb0b8bdc4cbd2d4ccc4bcb4aca39c928b80746d635a51473b33261e140b01000000000000000006111d28333f4a55606974808c97a1abb6c1ccd8d6cabeb3a79c90847a6e63574c4238291f160c020000000007121c25323d48525b67727e89959ea9b4bfcbd6d4cac0b4a99e95897e72665b52483d32261c1208000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8dad0c8beb5aca39a918a7e726c625a51473e352c231911070000000c18232f3a46525d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000b16202b353e4a556069707c8590949ca2a7a9aeaaa8a49e97918a7f736d63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22292e33353b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7dfd4cac1b8b0a7a09c918d86827f7d7c7b7c7d80848a90959da3acb4bcc7cfcec6beb3a89d93897e72665b52483d3227160d03000000000000010d18242f3b47525e6975818c98a3afbac6d0c8bcb1a59a8e82786e68636062646d747f8b969faab5c0cccdc2b7ada495897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000040e16212c363f48525b646e75808c919ba3abb3bbc5cad1d6cec7c2bbb5b2aca7a6a59e9b999897969797999b9da4a5a8abb0b5bac0c8cdd5d3cfc3bcb4aca49c938d81786e635d534941372b22160d0400000000000000000006121d2934404c57636e7a84909ca8b1bac5d0d7ccc1b6aca3978c80756960554a3f33281d0e050000000000020c19232e38424c57636e7a84909ca7b3bcc6d0dacdc2b8aea59a8e82776c62574c40362c21170c010000000f1b26323d4955606c77838f9aa6b1bdc9cdcdd4cac0b7aea59c938c80756e645c534940372e251b1309010000000c18232f3a46525d6974808b97a3aebac5cdcdc9bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc9cdcdc5b9aea2968b7f74685c51453a2e22170b00000006111b25303b465058626b717d848d92989b9ea59f9c99948f877f746f655c53473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a32393e4142454e576975808c97a3afbac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7e4dad1c9c0b8b0aba29b96918e8a88878788898c90949b9ea5acb4bcc4cdd0c8beb5aba29a8f83786e63574b42382e24190600000000000000000a16222d3944505b67737e8a95a3acb6c1ccc9bdb2a79c928c8078716e696b70757e86919ca6afb9c4cfcabfb3a89d94877b7064584d41362a1e130700000000000000000000000000000000000000000000000000000000000000000007121c262f38424b555e636e78818d929ca2abb6bac1c9cfd7d2cdc5c0bcb6b2b1aea8a7a5a3a3a2a2a3a5a6a8adb0b4b5bac0c4cad1d8d0c9c4bbb3aca39d938e82796f685f544c433930271b120500000000000000000006111c28333e48525b67727e89959ea9b8c1cad4d4c9beb2a79c92877c70645950463b30251a0f0000000000000009141e28333f4a555f6975808c97a3acb6c1ccd8d2c8beb2a79c92877c70645950463b31261a0f040000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c4bab0a79e958e82796e635e544b423930261e150b02000000000c18232f3a46525d6974808b97a3aebac1c1c1c1bdb2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1b9aea2968b7f74685c51453a2e22170b000000010b17212c363f48525b636c717b82888c90959296918e8a847e746f655e554c43362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b42484c4e51545e6876818d98a4b0bbc6bbafa4988c81756a5e52473b3024190d010000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7e4dcd9d1c8c0bab5aba7a09c99969493929395989b9ea5a9aeb5bdc4cdd4cac0b7aea59b91897d71685e54493e32281e140a000000000000000007131e2a36414d5864707b87939ca7b2bdc9ccc1b6aca39a918c827d7a79797c80879197a0aab7c0c9cfc4bab0a79b8f84786b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000020c151f27323a4449545f686e79828e929ba2abb1b8bfc6cdd2d5cfcbc6c1bebdb8b4b2b0afaeaeaeafb0b2b3b7bcbfc1c4cacfd4d3cec7c0b9b5aba39c938f837a6f6960584f453c332920170a0200000000000000000007131e2a35414c57626c77828e9aa5aeb8c9d1dacec3b8aea59a8e82776c6257483f362c21170c01000000000000040f1a25303b454f5864707c87929ca7b2bfc8d2d8ccc1b6aca3978c80756960554a3f34281f150a0000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5aaa09790847b6f695f554d443b322820160d0400000000000c18232f3a46525d6974808b97a3aeb5b5b5b5b5b5b2a69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5aea2968b7f74685c51453a2e22170b0000000007121c262f38424b535c636b6f767d818486878685827e79726d655f554e453b33261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39424b5357595d5d636e79848f9ba7b2bec6baafa3978c8075695d52463b2f24180c010000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7dcd4ccc6c1bdbcbbb7b0aaa8a5a19f9e9e9fa0a3a7a8aeb4b8bec6cdd3cfc4bab0a79e958d81766d63574e453a2f21180f05000000000000000007121e2935404b57616b77838e9aa4adb8c1cac6bcb3aaa19a938e89858485878c9197a0a7b0bac7d0c9c1b5aaa0978b8074695b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000050e17222a303a454f5860696f7a828d919ca1a8aeb6bcc2c8ced2d6d0ccc9c7c2bfbebcbabab9bababcbebfc2c7cbcccfd4d3cec9c3bdb7afaaa19b928e837b6f6a605950473e352b23181007000000000000000000040f1b26313c46505965707c87939ca7b6bec8cdcdcbc0b4a99e95897e72675b5248382f261c120700000000000000010c16212c363f4c57626b77828e9aa5aeb8c3cecdd0c6bcb3a79c90857a6f63574c43392f24190d0300000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaba29c91867d716b61584f453d342a221810060000000000000c18232f3a46525d6974808b97a3aaaaaaaaaaaaaaaaa69b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaa2968b7f74685c51453a2e22170b00000000020c161f27323a434b535a61646d7175797a7b7b7977736e69645d554e453d352b23160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48535c626568696d727e89949ea8b4bfc4b9afa6968b7f73685c5145392e22170b000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7d6ccc4bcb6b2b1b4b6bab5b3b1adabaaa9aaacafb2b4b8bec3c8cfd0c9c4b9b5aaa09690847b6f635d54473e352b20110800000000000000000005101c27323d48525b67727e89939da8b1bac5d0c4bab1aaa39c9a9691909095989ca0a7b0b7c0cacac1b8aea59c91867b7064584d42382e23180d02000000000000000000000000000000000000000000000000000000000000000000000006111a202b353e47505860696f79818b91979ea5acb4b8bec3c8cdd1d6d5d2cdcacac8c6c5c5c5c6c7c9cacdd1d6d7d2cec9c4bfb9b5aca69f9c918d827a6f6a615a514840372e251b12080000000000000000000006111d28343f4a55606975808c98a3acb6c6c1c1c1c1beb3a79c90847a6e63574c4238291f160c02000000000000000007121c26323d48525b67727e89959ea9b4c0c1c1c1c1c0b4a99f958a7e73675c53493e33271d130800000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9ea49b918a7f736d635a51483f362c241a1208000000000000000c18232f3a46525d6974808b979e9e9e9e9e9e9e9e9e9e9b8f83786c6155493e32271b0f000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e968b7f74685c51453a2e22170b0000000000050e17212a323b434a51565c63656a696f706f6e6867636058544c453e352d241b120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707475777d85909ca4adb7c2c1b5aa9f96897d71665a4f43372c201509000000000000000000000006121e2935404c57636f7a86919da9b4c0cbdad0c6bcb3aca7a5a8abb1b8bfbcb9b7b6b5b6b7babebfc2c7ced2cec7c0b9b5a9a09c91867d716a61564c43362e251b1101000000000000000000020d18232e38414b57636e79838f97a1abb6bbc3cfc2bab3aca7a7a09c9b9c9fa6a8abb0b8c0c8cec5bab1a89e958c81756b62574c4031281e14090000000000000000000000000000000000000000000000000000000000000000000000000107111b252e373f48505960696e78808790959ca3a9aeb4b8bfc2c7cbced2d4d6d5d3d2d1d0d1d1d3d5d6d4d3cecbc8c3bfb9b5afa9a39d96918a81796f6a615a514940382f261e150b020000000000000000000006121e2935404c57636f7a85909ca7b3b5b5b5b5b5b5b6aca3978c80756960554a3f33281d0f05000000000000000000020c19232e38424c57636e7a84909ca7b3b5b5b5b5b5b5b9afa69a8e83776c62584c40372d22170c01000f1b26323d4955606c77838f93939393939393939393938d81766f655c534a41382f261c130a01000000000000000c18232f3a46525d6974808b9393939393939393939393938f83786c6155493e32271b0f000f1b26323d4955606c77838f9393939393939393939393938b7f74685c51453a2e22170b000000000000061119222b323a41474b53585a5960636463635e5757555048443c352d251d140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c7f80838990959fa9b5bebeb8afa69c91857a6f63574c4035291d1206000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7ccc1b6aca39c9a9ca1a8b1b9bfc7c2c1c1c2c3c6cacacdd1cdc8c3bdb7afaaa099908a7f736d635a51473c33261e140b010000000000000000000009141e28333e49545f68717d87919ca2abb3bbc4cac4bcb6b2b0aaa8a7a7a9afb4b6bac1c8c8c3bab6aba19790847b6f635b52483d3221180e0400000000000000000000000000000000000000000000000000000000000000000000000000010b151e262f38404950585f686e747e858e929b9ea5a9aeb4b7bebfc3c8c8cacbced2cececed3cecbcac9c8c3c0beb8b4afaaa69f9c938f867e756e6960595149413930281f160d040000000000000000000006121d28333e49535c67737e8a959fa9aaaaaaaaaaaaaaaaa79c92877c70645950463b30251a0f00000000000000000000000a141e28333f4a55606975808c97a3acaaaaaaaaaaaaaaaaa79c93887c70655950463c31261b1004000f1b26323d4955606c7783878787878787878787878787837a6f635e554c433a31271f150c0300000000000000000c18232f3a46525d697480878787878787878787878787878783786c6155493e32271b0f000f1b26323d4955606c778387878787878787878787878787877f74685c51453a2e22170b0000000000000109121a222931383d43494d4e505557585857544e4c4a463f38332c251d140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a8c8f939c9fa5aeb8b9b4aea79f968d81766960554a3f34281d1106000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd4c9bdb2a79c928e9197a1a9afb6bbc1c5cacacbcecbcac9c7c2bfb8b4ada79f9c908b7f746e655c534941372b23160d040000000000000000000000030e1a25303a454f58636d74808c929ca3abb5bac0c8c6c1c0bab5b3b3b3b4b9bfc1c5cac6bfb9b4a9a19c91877e726a61564a42382e231108000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f27303840484f575e636d727b828990959c9fa5a8adb3b4b8bbbdbfc0c3c8c2c3c2c9c4c0bfbdbbb9b4b3aea9a69f9c95908a837c736e63605850494139302820170f06000000000000000000000008131f2a36414d58636c78838f9aa69e9e9e9e9e9e9e9e9ea59a8e82776c6257483f362c21170c0100000000000000000000040f1a25303b46505964707c87939c9e9e9e9e9e9e9e9e9e9ea3988c81756a60564b3f34291d12060007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7a6f6960554e453b332921170e0500000000000000000007121e2a35414c58636f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e13070007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e120700000000000000010a121921282d32393e4243464a4c4d4c4b4945403f3b362f27231b140d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a969a9da3a9aeb6b6afa9a59e9790857c70645950463c31261b0f04000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd4c8bcb1a59a8e8287919c9fa6abb4b6babdbfc0c3c0bfbdbbb7b3aea9a49d9691897f746f655e554c433930271b1305000000000000000000000000000b16202b353e47535c636e79828e929ba2aab0b7bcc0c5cac4c0bfbebfc0c3c8cac4c1bbb6afa9a09a908b7f746d645a51473a31281e140000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f2830373f474e545d636b6f777e848b90959b9ea4a7a9aeafb1b3b4b9b6b7b7b7b6b9b5b3b2b0afa9a7a59e9c96908c857f79706c645e5550484038302920180f070000000000000000000000000814202b37424e5a65717d8893939393939393939393939393958a7e72675b5248382f261c12070000000000000000000000010c17212c363f4c57626c77838e9393939393939393939393939390857a6f63584c4035291e12070007121e2935404b57616b707070707070707070707070706f6a605950463d352b231910060000000000000000000006121d2934404b56616a6f7070707070707070707070707070706b62574c4035291e12070007121e2935404b57616b7070707070707070707070707070706f6a61564b3f34291d12060000000000000000010810171e23292f3336363c3f404141403e3a3533302c261f17130b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1a7acb4b8b9afa69f9c9590877e726b62574940362c22170c01000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7f8990959ca2a8abb0b1b3b5b9b5b3b2b0ada8a59f9c938f867e746f655f564e453b332920170b020000000000000000000000000007111b252e37434a545f686f7a828d929ca0a7acb2b6bcbebfc2c8c3c3c7c2bfbebab5b4aba69f9c908b80756f665d544941372a21180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f363e4549545a61646e727a80858b8f94989b9ea5a4a6a7a9afababacababafaaa8a6a4a69f9c9895908b85807b736e68625b554a463f38302820181008000000000000000000000000000d1924303c47535e6a768187878787878787878787878787878785796e63574c4238291f160c0200000000000000000000000007121c26333d48525b67727e878787878787878787878787878787877f73685c5045392e22160b0005101c27323d48525b6164646464646464646464646464636059504940362d241b1208000000000000000000000005101b26313c47515a6163646464646464646464646464646464625b52483d32271c10050005101c27323d48525b6164646464646464646464646464646463615a51473c31261b100400000000000000000000070e13181f25282b2c313435363534332f2b2825211c160e0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb7bdc0b4a99f95908a847e726e645b52483830261c120800000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f737e858d92999ca0a7a6a8aaafaaa8a6a4a49d9b95908b837c726e655f564e453d342b221810070000000000000000000000000000010b151e26303b454f5860696f7a818b91969ca3a7acb0b3b4b8b7b7b7b7b8b4b2b0aba8a29b95908980786e635f564d4439302719110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e262e353a444a51575d646a6f747a7f84888c909596989a9c9fa69fa0a0a09fa69f9c9a999695908d8984807b756f6b635f58524b453b362f271f181008000000000000000000000000000007131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f6960554a3f33281d0f0500000000000000000000000000020c19242e38424c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e130700020d18232e38414a52575859595959595959595959595958565049403830261d140a020000000000000000000000020d18222d37414951565859595959595959595959595959595857524a42382e23180d0200020d18232e38414a52575859595959595959595959595959595856514940372d22180d020000000000000000000000040910151a1d1f222628292a29292724201d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c6bfb3a79c90857f7a726d645e544b42382c21170c0300000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73727c82888d9197989a9c9fa69f9c9b9996948f8b857f79706c645d564e453e352d241b120800000000000000000000000000000000040d16212b353f47505960696f787f868e92999ca2a4a7a9aeababababaea8a7a7a09c99928d857e746e685e544e453c3329201709000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b2f3a41474b545960636a6f73797d8184878a8d8f90959393949494939396908f8d8a8885817d79746f6a64615a544f47423b302c261f170f0700000000000000000000000000000007121e2935404c57626b707070707070707070707070707070706f6b615950463b30251a0f0000000000000000000000000000000a141f28333f4a555f696e707070707070707070707070707070706f6b61564b4034291d1206000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930281f160c040000000000000000000000000009131d27303941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e140900000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d13080000000000000000000000000000060b0f1212171b1d1d1e1e1d1c1916110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c0c0b4a99f959085807a706b615950463b31251b110700000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736b70767d82868a8d8f90969196908f8d8b87837f7a736e69625b544d453e352d251c140a02000000000000000000000000000000000007111b252e374048505960686e747c82898e9296999b9ea59fa0a09fa59e9b9997918d88817b726e635e574e453e352c2318100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202931383d44495056596063686e7175797c7e8183858687888889888887868583817f7c7976716e6864615a56514a453f37322a211c160e060000000000000000000000000000000005111c27323d48525b626464646464646464646464646464646464615a51483f362c21170c010000000000000000000000000000030f1a25303b454f585f636464646464646464646464646464646464615a51473d32271b10050000040e18212931383d4041424242424242424242424242403f3c37302820170f060000000000000000000000000000030d17202930373c4041424242424242424242424242424241403d38312a21180e04000000040e18212931383d40414242424242424242424242424242413f3c37302820170d03000000000000000000000000000000000406080c0f1112131211100e0b0604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1b0b1b5bbb9afa69f95908b837b706960554a3e352b20160b00000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7368646d71767b7e8183858586858583817f7c78736f6a635f58524b443d352d251d150c04000000000000000000000000000000000000010b151e272f38404850575e636c70777d82878a8d909593949494949394908d8a86817d76706b645d544e473e352d251b1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111921282e323940464b5056575e6365696c70737677797b7c7c7d7d7d7c7c7b79787673706e6866635f5856514b47413b352e27221a120c050000000000000000000000000000000000020e18232e38424a5257595959595959595959595959595959595857514a41382f261c1207000000000000000000000000000000000b16212b353f484f5557595959595959595959595959595959595856514a41372d23180d0200000007101921282e3235363636363636363636363636363534312d2720180f070000000000000000000000000000000007101820272d31343536363636363636363636363636363635322e2821191108000000000007101921282e32353636363636363636363636363636363534312d27201810060000000000000000000000000000000000000000010406060707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a0a7a6abb2bab6afa69f9c938f837a6f63584f453a30251a0e03000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c63656b6f737678797a7a7a79787673706c68636059554f48423b342c251d150d040000000000000000000000000000000000000000050e161f282f3840474e545c62656d71777b7f8284868788898988878684817e7b76716c64615b5449453e362e251d150b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010610181e232830373c40464a4e54575a5b6264676a6c6a6f707171727171706f6b6c6a6865635f5857554f4b47413d37302b251e161107020000000000000000000000000000000000000009141e28313a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31271f160c020000000000000000000000000000000007121c252f373f454a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413931271e130900000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f070000000000000000000000000000000000000810171d2226292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181109000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a9196999ba2aab1bab6afa9a49d938b7f74685f54493e33281c1105000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c585a6164676a6c686e6f6e686c6a6865625b5856504a453f38322a241c150d0400000000000000000000000000000000000000000000060f171f282f363e454953575d63666b6f7376797a7c7d7d7d7d7c7a7876736f6a65635c57524a443a352e261e140d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e141820272c31363c3e45494b4e5257595c5e5a61636465666666656564615a5f5c5957544f4c4a453f3c37322d27211b150e06010000000000000000000000000000000000000000040e18212a31383d404142424242424242424242424242424241403d38312921170f050000000000000000000000000000000000020c151e272f353b3f404242424242424242424242424242424241403d37312920170e04000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d060000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e08000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0600000000000000000000000000000000000000000000000000030506090c0d0e0e0d0a0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8485888d929aa1aab6bfb9b4ada49b9084796e63574b4034291d1106000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c515156585b5e585f6363635f585f5c5957524c4b46403b362f27221a130c04000000000000000000000000000000000000000000000000070f171f262e353a42484c54595a6164686b6a6f7071727171706f696a6764615a58534b48413a2f2b251e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090f161d22262c31353a3e4042484c4d505351565859595a5a5a5a5958565153514e4b4a45403e3b35312d27231e16110b05000000000000000000000000000000000000000000000008111921282e3235363636363636363636363636363636363535322d282119100700000000000000000000000000000000000000050e171e252b303334363636363636363636363636363636363534322d2720191007000000000000000004090d1012131313131313131313131313131212100c08030000000000000000000000000000000000000000000003090d10121213131313131313131313131313131312100d0904000000000000000000000004090d10121313131313131313131313131313131212100d0803000000000000000000000000000000000000000000000001070b0e11111417191a1918151212100c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37434e59646e72797a7c818c919aa6afb9c3bdb4a99e95887c7165594e42372b201408000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51474b4c50534f54575757544f53514d4c48423f3c37302c261f171109030000000000000000000000000000000000000000000000000000070f161e252b2f393e44494d5157585c5960636565666665656360595b5856514d49433d383129201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171d22252b2f3334383d41424447474b4c4d4e4e4f4e4e4d4c4b47484542403e3b3533302b25231d18130e0701000000000000000000000000000000000000000000000000000911181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181008000000000000000000000000000000000000000000060e151c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e1710080000000000000000000000020507070808080808080808080808080706040100000000000000000000000000000000000000000000000000000205060708080808080808080808080808080707050200000000000000000000000000000002050707080808080808080808080808080807060402000000000000000000000000000000000000000000000000040b11161a1c1d202325262524211e1d1b17130d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a35404a545e6467686e7176808c959fa9b4c0c2b8aea5968a7f73675c5045392d22160b000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c514540414447454a4b4c4b4a45484542413e3934312d27211c150e060100000000000000000000000000000000000000000000000000000000050d141b20292f333a3f41474b4d50505658595a5a5a5a59575550504c4b47413e39322e282119110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d12171b202427292e32353639373c40414242434343424241403d3739363433302b2825211b18130d090400000000000000000000000000000000000000000000000000000000080e14181c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e070000000000000000000000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070d151b202528292b2f3031312f2d292926221d17120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303b444d5459585f63656f7a85909ca7b3bfc8baaea3978c8074695d52463b2f23180c010000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145393539353b3e4040403e3b35393635332e2926221d16120c0500000000000000000000000000000000000000000000000000000000000000040b11161f242a3034383d404145464b4c4d4e4f4f4e4d4c4a464441403c37332f29231e18100601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b1116191c1d24272a2a2d2d313435363737383737363534322d2e2b292825211c1a16110c09030000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131312100d09040000000000000000000000000000000000000000000000000002070b0f1112131313131313131313131313131313131312100d0904000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110b0b09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060808111111111111111111111111111109090704000000000000000000000000000000050c12161e252b303334373a3c3d3c3b383534312d27221d160f070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212b343d444a4e4f5557606976828d99a5b0bcc6bbafa4988c81756a5e52473b3024180d010000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2d2b303334353433302b2e2b2a28241f1b17130d070200000000000000000000000000000000000000000000000000000000000000000001060f15192025282e323536373c3f40424343434342403f3c363534312d27241f18140e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1014191c1e1f22222629292b2b2c2c2c2b2b2a292723221f1d1c1a16110f0b0702000000000000000000000000000000000000000000000000000000000000000000000002050707080808080808080808080808080808070705020000000000000000000000000000000000000000000000000000000000000305060808080808080808080808080808080807060502000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120f0b06000000000000000000000000060e161c21262e353a3e4042464748484744403f3c37312c2620181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242c343b403f454a50596975808c98a3afbac6bbafa4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22212528292929282521221f1e1c1914100c080300000000000000000000000000000000000000000000000000000000000000000000000000050a10161a1e2327292a2c3134353637383837363534312c2a2926231d19150f09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050a0e11131313181b1d1e1f1f202020201f1e1d1b18131412110f0b07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292222201c18120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f20292929292929292929292929292920201d1a16100a02000000000000000000060e171f262c30373e45494b4e51535453524f4c4b46403c373028211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242b3035353b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22161a1c1d1e1d1c1a16111313110e0a04010000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0e14181c1e1e222628292b2c2c2c2b2b292826221e1d1b18130d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080d101212131414151514131312100d09080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110a0a080501000000000000000000000000000000000000010508090a1111111111111111111111111111111111111109080704000000000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b34343434343434343434343434342c2b2925201a130b0200000000000000050e171f272f363b44474f54575a5d5f605f5e5b5856504b464038322a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131b2126252b3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170f11121212110f0b07080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d101213171b1d1e1f202020201f1e1d1b171212100d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204060708080909090808070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d161513100c0701000000000000000000000000000001070c101315151d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120f0b0600000000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404040404040403737342f2a231b130a000000000000020c151e272f383f464a54585f6365696a6b6b6967636059565049423a322a2218100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161b232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b050606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c10111214141515141312110f0c0806050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b20232626292929292929292929292929292921211f1b17110a03000000000000000000000000030a11161b1e202129292929292929292929292929292929292928201f1d1a1510090200000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332c231a1006000000000007121c252f373f4850555d64686e717476777675726f6a636059524b423b322920170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608090909090806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110b0b0906020000000000000000000000000000000000000000000000000000000000000005090c0d0e11111111111111111111111111110d0d0b08040000000000000000000710181f252a2e313234343434343434343434343434342d2c2a26211b140c0300000000000000000000030b131a2126292c2d343434343434343434343434343434343434342c2b2925201a120b0200000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e57575757575757575757575757574f4d49433c332a20160b00000000000b16212b353f48505860636e72797d80818282817e7a746f6a625b524b423930271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1d1d1d1d1d1d1d1d191816130f0a04000000000000050f1820282f35393c3d4040404040404040404040404040393835302b241c140a010000000000000000020b131c242a303537384040404040404040404040404040404040403f3736342f2a231b12090000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c53585963636363636363636363636363635a58544c433a2f251a0f04000000030f1a25303b454f5860696e757e83888b8d8e8d8c8985807a706c625b524941372d22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292222201c18120b0400000000000000000000000000000000000000000000000000060e141a1f22242529292929292929292929292929292524221e19140d0600000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342c241b110700000000000000010a131b242c343a3f43444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332b231a100600000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e66635d54493f34291d12070000040e172129333f4a555f696e7981898f94979999999896908b837c706c625a51473c31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d040000000000000000000000000000000000000000000000060f171e24292d30313434343434343434343434343434302f2d29241d160e0600000006111b252f3841494f53555757575757575757575757575757504e4a443d342b21170c0100000000000109121a232b343d444a4e4f575757575757575757575757575757575757574e4d49433c332a20150b00000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a7a7a7a7a7a7a716d63584d42372b201409000009131e28333e49535c636e79828d919b9da4a4a5a5a69f9c948f857c706a61564b42382e23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b02000000000000000000000000000000000000000000040e171f272e34383b3c40404040404040404040404040403c3b38332d261f160d0400000a15202a353f4951595e6063636363636363636363636363635b59554d443b30261b10050000000000081119222b333c444d54595b626363636363636363636363636363636363625a58534c433a2f251a0f04000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585858585858585857d71665a4f43372c20150900020d18232d38414d58636d75808c929ba1a8adb0b1b0afaaa49d958f847b6f635b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12080000000000000000000000000000000000000000000a141e272f373e4347484b4b4b4b4b4b4b4b4b4b4b4b4b4b4746433d372f261d140a00000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645e554a40352a1f130800000000071019212a323b434c545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e66635d53493f34291d1207000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191919191919191897d71665a4f43372c2015090005101b27323d47515a65717d88919aa3abb3b7bbbcbcb9b5ada69e948c81756b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d020000000000000000000000000000000000000005101a242e3740484e5254575757575757575757575757575753514d473f372d24190f04000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a726e64594e43382c21150a000000070f182029323a434b545d646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79716d63584d42362b1f1408000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c9c9c9c9c9c9c94897d71665a4f43372c2015090006121e2934404b56616b77828e9aa1aab3bbc2c7c8c9c4bdb6ada49c91867c7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c11060000000000000000000000000000000000000009141f29343e4850585d5f63636363636363636363636363635f5d5750473d33291e1308000f1b26323d4955606c778385858585858585858585858585857e72675b5044392d21160a0000060f1720283139424b535c636d727e868585858585858585858585858585858585867d71665a4e43372c201509000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a8a8a8a8a8a8a8a094897d71665a4f43372c2015090007131e2a35414d58646f7b87929ca7b2bac3cdd1d3d3cec6beb5aba0978b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b201409000000000000000000000000000000000000000c17222d38434e5861686b6e6e6e6e6e6e6e6e6e6e6e6e6e6e6a6760574d43382d22160b000f1b26323d4955606c77838f9191919191919191919191918a7e72675b5044392d21160a00050e161f273039414a525b636c717d869197919191919191919191919191919191877e726d63584d42362b1f1408000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb4b4b4b4b4b4aba094897d71665a4f43372c201509000a16212d3844505b67727e8a95a3acb6c2cbd4dcdfded7cfc4bab0a7998e82776b6054483d31261a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b000000000000000000000000000000000000020d1924303b47525d6871767a7a7a7a7a7a7a7a7a7a7a7a7a7a7671675d51463b2f24180d000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c958a7e72675b5044392d21160a010b151e272f384049515a626b717d859096a09c9c9c9c9c9c9c9c9c9c9ca199908a7f736e645d53493f34291d1207000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6bfbfbfbfb7aba094897d71665a4f43372c201509000b17232e3a45515d68747f8b97a2aeb9c6d1dbe4ebe7ded4cabeb2a69b8f84786c61554a3e33271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b000000000000000000000000000000000000020e1a25313c48545f6b7681858585858585858585858585858581766a5f53473c3025190d000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a1958a7e72675b5044392d21160a07111b252e373f485059616b707c8490969fa7b0a8a8a8a8a8a8a8a8aba29a918b80746e655d544c433a2f251a0f04000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cbcbc3b7aba094897d71665a4f43372c201509000c18232f3b46525d6975808c97a3afbac6d1ddeaf4eee1d6cabeb3a79c9084796d62564b3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d020000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b000000000000000000000000000000000000020e1a25313c48545f6b76828d9191919191919191919191918d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aca1958a7e72675b5044392d21160b141d212b353f475059606a6f7b848f959ea6afb7b4b4b4b4b4b4b4aca39b918c80756f665e554d443c332a20150b00000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000b17232e3a45515d68747f8b97a2aeb9c6d0dbe4ebe7dfd5c9beb2a69b8f84786c61554a3e33271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c3024190d090805010000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b000000000000000000000000000000000000020e1a25313c48545f6b76828d999c9c9c9c9c9c9c9c9c9c998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb8aca1958a7e72675b5044392d2116131c242d303b454f5860696f7a838f949ea5aeb6bfc8bfbfc6bdb4aca39c928d81786e635f564e453d342b231a100600000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000a16212d3844505b67727e8a95a3acb6c1ccd4dcdfded7cfc4bab0a7998e82776b6054483d31261a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c302419151513100c07010000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b000000000000000000000000000000000000020e1a25313c48545f6b76828d99a5a8a8a8a8a8a8a8a8a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9cbcbc4b8aca1958a7e72675b5044392d21161b242c353d454a545f686e79828e939da4adb6bec7cfcfc6beb5ada49d938e82796e685f544e463d352c241b12090000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090007131e2a35414d58646f7b87929ca7b2bac3cdd1d4d3cfc6bfb5aba0978b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c30242421201e1b16110a0300000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b000000000000030607080706030000000000020e1a25313c48545f6b76828d99a5b0b4b4b4b4b4b4b0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d211a232b343d454e565f636e79818d929ca4adb5bec6cfd0c7bfb6aea59d948f837a6f695f584f453e352d241c130b020000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090006121e2934404b56616b77828e9aa1aab3bbc2c7c8c9c4bdb6ada49c91867c7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e53473c302f2f2d2c2926211a130b030000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b00000000050a0e11131313110e0a05000000020e1a25313c48545f6b76828d99a5b0bcbfbfbfbfbbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d21222b333c444d555e666f75808c929ba3acb4bdc5ced0c8bfb7afa69e948f837b6f6a60584f473e352e251c140b03000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b08070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090005101b27323d47515a65717d88919aa3abb3b7bbbcbcb9b5ada69e948c81756b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4988d81766a5e5347353b3b3b383735302a241c130a01000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b000001080f14191c1e1f1e1c19140f080100020e1a25313c48545f6b76828d99a5b0bcc7cbcbc7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d212a323b434c545d656f74808b919ba2abb3bcc4cdd1c9c0b7afa69f9590847b706a615950483f372e251d150c0400000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221715141212100d0907050300000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900020d18232d38414d58636d75808c929ba1a8adb0b1b0afaaa49d958f847b6f635b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bbb0a4998d81766a584f454646464644433f3a342c241a110700000000060f171f262c3134404040404040404040404040404040393836312b251d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00020911181f24282a2b2a28241f18110901020e1a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d29313a434b535d646e737f8a909aa1aab2bbc4ccd4cac1b8b0a79f9690857c706b615a514940382f261e150d040000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e222121201e1d1b181313110e0a040100000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000009131e28333e49535c636e79828d919b9da4a4a5a5a69f9c948f857c706a61564b42382e23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aebac6bcb1a59a8e8277685f554e525252524f4e4a443d342a21160c0100000000070f161c2226283434343434343434343434343434342e2d2b27221b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b020b131a22292e33353635332e29221a110a010e1a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d3139424b535c636d727e87919ca0a9b2bac3cbd3d0c5bab1a8a09790867d716c625b5249413830271f160d04000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2d2d2c2b2a2926231f1e1c19140f0c08020000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000040e1a242f39434a555f696e7981898f9497999a999896918b837c706c625a51473a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a3aebac5beb3a79c9084796e635e575d5d5d5d5b59544d443a30261b10050000000000060d12171b1d29292929292929292929292929292922221f1c17120b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b08131b232a32393e4142413e39322a221a11070e1a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044393039414a525b626c717d869197a1abb1bac2cbd3cbc2bbb6aba19791867e726c635b524a413930281f170e0600000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a39393838373534322d2a2a27241e1a17120c0701000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000000b151f29303b454f5860696e757e83888b8d8e8d8c8985807a706c625b524941372a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8a96a2adb9c8c0b4a99f95897e726e68696969696967645d544a3f35291e130800000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2217051019232c333b42484c4d4c48423b322a22170f0e1a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b504439384049515a626b707d859096a0a8b1bac1cad2ccc3bbb2aaa19c91877e726d635c534b423a312920180f060000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514544444444434241403c373635322e2826211c16110b050000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000061016212b353f48505860636e72797d80818282817e7a746f6a625b524b423930271911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a95a6afb9c3c3b8aea59c90857e79767575757575726e64594e43372c20150900000000000000000104061111111111111111111111111111110b0a0906020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170d162029333c444b52575957524b423b32281f160c1a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044373f485059616b707c8490969fa7b0b8c1cad2ccc4bbb3aaa19a908b7f736e645d544c433b322921181007000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5150505050504f4e4c4b474542403d3834312c26211b150e0601000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000000007121c252f373f4850555d64686e717476777675726f6a636059524b423b32292017090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88959fa9b4c0c8bfb4a99f959089848281808080807e72675b4f44382d21150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2217141e263139444c545b6265625b534b42382f261c121a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b50443f475059606a6f7b848f959ea6afb7c0c9d1cdc4bcb3aba29b918c80746f655e544c443b332a2219110800000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5c5c5c5c5c5b5b5a585651514d4c48423f3b36302b251e161207010000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000000020c151e272f383f464a54585f6365696a6b6b6a6763605a565049423a322a221810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7985909ca7b3bcc7c3b9afa69f9c94908d8c8c8c8c8c81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22111b252e36414a545d636c706c625c534840362c22191a25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044454f5860696f7a838f949ea5aeb6bfc7d0cec5bdb4aca39b928d81786e635e554d443c332b221a11090000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746867676767676767666564615a5c5957524c4a46403b352e27221a110b0500000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000000000050e171f272f363b44474f54575a5d5f605f5e5b5856514b464039322a221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6876828d99a3acb7bfc8bfb6afa9a59e9b99989797978d81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070b0f1112121313131212110f0c080907060402000000000000000000000000000000020606060606060606060606060606060606060606030000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2218202b353e47515a636d727c706c625950463b3129211625313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b50454a545f686e79828e939da4adb6bec7cfcfc6beb5ada49c928d81796e685e544e453d342c231b1209010000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74737373737373737272716f6a6b6864625b5755504a453f37322a211b150e06000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000000000060e171f262c30373f454a4b4e51535454524f4c4b47403c373028211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5866717d88939ca6afb9c0c6bfb9b4aea8a7a4a3a3a3988d81756a5e53473b3024190d000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b040000000000000000000000000000000000000000000000000000000000000000000000000205080c0f11121411161a1c1d1e1e1f1e1e1d1d1a1712151212100d0805020000000000000000010406060e11111111111111111111111111111111111111110f0706050200000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221f282f3a454e57616a727e857c706960554a443a31271e25313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b504e565f636e79818d929ca4adb5bec6cfcfc7beb5ada49d938e82796f685f574e453e352c241b130a02000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bcb0a4998d817e7e7e7e7e7e7e7e7e7d7c7b797674706c67636059544f47423b302b251e160e060000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000000000030c141b232830363c3f42484c4d4f504f4e4c4a453f3d38302b251e160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4d58636d77828e969faaafb7bdc2c3beb8b4b2b0afafa4988d81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c0400000000000000000000000000000000000000000000000000000000000000000003090d1012171a1d1d202321252829292a2a2a2a2928262223201e1d1b1813110e09030000000003080c0f1112191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1312100d09040000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e222630384049545e686f7b848f837a6f635d544a41372e2525313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b50555e666f75808c929ba3acb4bdc5ced0c7bfb6aea59e948f837a6f6960584f473e352d251c130b0200000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb1a69b928d8a8a8a8a8a8a8a8a8989888684827f7c78736f69635f58534b453b352e271e160e0500000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000000000020b141c242b333840464a4c5257595a5b5b5957554f4c48423b352e271f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25343f49535c65707c85909c9fa7adb3b7babbbcbdbdbcbbafa4988d81756a5e53473b3024190d00000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b02000000000000000000000000000000000000000000000000000000000001060b0e13181b1d212628292c2e2b30333435353636353534312c2e2c292926221e1c18140f0b0701060c12171b1d1d252929292929292929292929292929292929292929261e1e1b18130e0700000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e222c364049535c636e78828e938c81756e645a51473f352b21313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b545d656e74808b919aa2abb3bcc4cdd1c8c0b7afa69e958f847b6f6a605950483f362e251d140c030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b5aba29b99969696969696969695959395908e8b87837e7a736e68625c554a453f372e271e160d04000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000000008131b242d343c43495055575b626466676665635f5857524a453f372f271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b1a252f3a434c57626c727e8991969da4a8adafb0b1b1b1b1b1afa4988d81756a5e53473b3024190d000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120800000000000000000000000000000000000000000000000000000001070b1116191e2327292c313435373a353b3e404041414141403f3b363a383534312d2927231e1a16110b0f161c22262829303434343434343434343434343434343434343434322a2927231e171008000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2a313c465059636c747f8b929b91897e726b61584f453b3028313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5d646e737f8a909aa1aab2bbc4ccd4cac1b8afa79f9590847c706b6159504840372f261e140c04000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dacfc5bbb2aba6a4a1a1a1a1a1a1a1a1a1a0a59f9c9996938f8a847f79706c655e544f473f372e261e140b010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000000071018232c343d454c54596063686b70717272716e6964625b544f473f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a333e48525b646e737e868f949b9da4a3a4a5a6a6a6a6a6a4988d81756a5e53473b3024190d00000000000000000000000000000000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d0200000000000000000000000000000000000000000000000000050b11161b2024272d3234363b3f40434547454a4c4c4d4d4d4c4c4a4648464341403c3735322e2825211b16171f262c3134353c40404040404040404040404040404040404040403d3534322d28211910070000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e313a424a56606a717d86919ca19c90857b6f685f544a433930313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675c636d727e87919ca0a9b2bac3cbd2cfc5bab0a79f9690857c706b625a514940382f271e160d0400000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5cbc3bbb5b1b0adadadadadadadadacacaea9a7a5a49d9a95908a837c736f635f584f473f362e251b11060000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000030d172029333c454d555d63696f74787b7d7e7d7c7a76706c635f5850483f362c21170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019242e39424b545d646e737d838a8f939598999a9a9a9a9a9a9a988d81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c1106000000000000000000000000000000000000000000000003080e151b21252b2f33373d4041464a4c4e51534f5557585859585857555053514f4c4b4741403d3833302b2521212830363c3f40484b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4941403d38312921170e0400000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2f37424a545e636f7a838f96a0a99f958e82796e635c534940372d3c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e7267626c717d869197a0abb1bac2cbd3cac2bab6aba09791867d716c625b524a413930281f160e050000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dcd3cbc5c0bdbcb8b8b8b8b8b8b8b8b8b7b8b4b3b0ada8a59e9c938f867f756e685f584f473e352b20170f0600000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000009131d273039444c555e656d717a7f8487898a898885817c746e68605950463b30281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b444d555e646c71797e83878a8c8d8e8f8f8f8f8f8f8f8d81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f140900000000000000000000000000000000000000000000060d12161e252b30353a3e41474b4c5055575a5d5e585f6363646464646360595f5d5a5856514d4c48423e3b35302b2a313840464a4c535757575757575757575757575757575757575757554d4b47413a31281e130900000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a353f48525b646e76818d949da7afa69c928b7f746d635950463c313c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72676b707c859096a0a7b0bac1cad2cbc2bab1a9a09c91877e726d635c534b4239312820170f06000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e4dcd5cfcbc8c7c4c4c4c4c4c4c4c4c3c8c3c0bebcb7b3aea9a49d96918a80796e685f574e453a2f281f160c02000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000020d18232d37414a545d656e737d848b8f9494959595908d8680796e6960554a453830261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a343d444d555c63686e72787b7e80818283838383838383837f74685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a000000000000000000000000000000000000000001070f161d22272e353b3e45494b51565859606365686a6c686e6f6f70706f6f696c6b686663615a5957524b4a453f3b35333a42495055575f6363636363636363636363636363636363636363605856514a41382d23180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3b454f58626b727e8a919ba4adb6aca39c91867d716a60564b453a3c48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e726a707c8490959fa7b0b8c1cad2ccc3bbb2aaa199908a7f736e645c534b423a312920180f0700000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe5dfdad6d4d3d0d0d0d0d0d0d0cfcfd2cecbcac6c1beb8b4ada7a09c918c81796e685e544943382f261c1208000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000005101b26313c47515a646d737f8690959b9da4a1a69f9c97918c81796e635e554940362c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a242c343d444b53585f63676b70737576777777777777777777746f665b5044392e22170b000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b00000000000000000000000000000000000000030a11181f262c31373f454a4e54575a616468696f71747677797a7a7b7b7b7b7a79787674726f6a6864625b57544f4a453f3c434a525960636a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c64615a51473d32271b1005000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514539414a555f69707c85909ca2abb5bcb5aba09790847a6f635e554b423848545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e726f7b848f959ea6afb7c0c8d1cdc4bcb3aba29a918b7f746e655d544c433b322a211910070000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e8e0d9d3cecbcacacacacacacacacacbced2d5d6d1ccc8c3bdb7b0aaa19a918d81786e635c534840362c21170d030000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000006121d2934404b56616a727e8791979ea5a8adacafa9a7a09c928d81766e645950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109131c242c343b43484f55575b626467696a6b6c6c6c6c6c6c6c6c68665f564c41362b201509000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b0000000000000000000000000000000000000107141a222830363c43474f54575e63666b6f73777a7d7f818384858687878786868583827f7d7b7774706b67635f58554f48454c545b62696f767a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776f6b61564b4034291e1206000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454149535d636e79828e959fa9b2bbc4bab0a79e948d81766e645b52483f48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e727a838f949da5aeb6bfc7d0cdc5bcb4aca29b918c80756f665e554d443c332a22191108000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e0d7cfc9c3c0bfbebebebebebebebfc0c3c8c9cacdd1d2cec7c0bab5aaa29b918b7f746d635950463b31271d13080000000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900040f1a25303b465059646f7b859097a0a7aeb3b7b8b9b5b0aba29b918a7e736960554a3f34281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141c242b32373f454a4c5257585b5e5f6060606060606060605d5b564e463c32271c1206000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b0000000000000000000000000000000000040b111c242a323840464a53585f63686e72777b7f8385888b8d8e9095929293929295908f8d8b8986837f7b77726e68635f58534b555d636b707a818585858585858585858585858585858585858585837b6f64584d41352a1e1307000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514547515a636d74808c939ca6afb9c2cac0b8aea59b918a7e736c6258504648545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e7a828e939da4adb5bec7cfcec5bdb4aca39c928d81786e635f564e453c342b231a120901000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d9cfc7bfb9b5b3b3b3b3b3b3b3b3b3b4b9b9bebfc2c7cfd4d0c9c4bab2aaa19c91867d716960554a41372d22180b0100000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090006111d28333f4a55606975808c959fa7b0b8bec2c7c3c0bab5aba29b90847a6f63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141a22272f353b3e42484c4d50525354555555555555555551504c463e352c22180d03000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b00000000000000000000000000000000060d151b202d343b424950565c63686e72797d82868a8e919697989a9c9ea59e9e9ea69f9c9a999797918e8b86827e79736e68635c565e656d717c838d9191919191919191919191919191919197918b81796f6b61564b4034291e1206000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454b56616a717d87919ca3acb6bfc9d1c8beb5aba29c90857c706960554a48545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8ada1958a7e818d929ca4adb5bdc6cfcfc6beb5ada49c938e82796e685f544e453d342c231b120a0100000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4ddd3c9bfb6afaaa8a7a7a7a7a7a7a7a7a9afadb2b3b7bdc4cad0d3cfc3bbb5aba0978f847a6f635a51473c31251b110600000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090006121d2935404c57636e7985909ca6afb8c0c8cdd1cecac4bbb4a99e95897e72675b4f44382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a12161e252b3033383d40414447474849494949494949494644413c352e251c120800000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b000000000000000000000000000000050d161e252b303d454b525960636c71797e83898e91979a9ca0a7a4a6a7a9aea9aaaaafa9a7a6a4a7a09c9a97918e89837e79716d6360636f747d858f939ba29c9c9c9c9c9c9c9c9c9c9ca49d9590867f766e69615a51473d32271b1005000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514b555e636f7b849097a1abb4bcc7cfd8cec5bbb5aa9f968f83796e635d544a545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d5c9beb2a79b8f848d929ba3acb4bdc5ced0c7bfb6aea59d948e827a6f695f584f453e352d241c130a020000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec3b9afa69f9c9b9b9b9b9b9b9b9c9fa6a2a7a8adb5bac0c8cfd3cfc4bab0a79d948b80746a61564b3e352b20160b00000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000915202c37434f5a66717d89969faab6bfc8d1d8dcdad4cdc2b8aea5988d81766a5f53473c3025190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b2125282e323536393b3c3d3d3d3d3d3d3d3d3d3a3936322c251d150c0200000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b0000000000000000000000000000040d161e262e353a464d555b626a6f757d83898f93999ca0a7a8aab0b0b1b3b4b8b5b5b5b9b4b3b2b0b0aba8a8a19c9a948f8a837d756f6a6f767f8790959da4aba8a8a8a8a8a8a8a8a8aaa29c938f857d736f636059514a41382d23180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51535c656f76828e959ea8b1bac4cdd7ded6cec4b9afa69d938c80756d635a51545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabfb4a89e948f949ba2abb3bcc4cdd3c9bfb7aea59e948f837b6f6960584f473e352d251c140b03000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d7cbc0b5aa9f969090909090909090909593969b9da4aab0b7bfc7cfd4cac0b8ada49c90857b6f63574e453a2f24190e03000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000b17222e3945515c68737f8b96a6afb9c7cfd9e1e9e4dcd2c8bdb2a69a8f83786c6055493e32271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161a1e2327292a2d2f303132323232323232322e2e2b27221c150d040000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b00000000000000000000000000010b141e262e373e4549565e646c707a80868f939b9da4a8abb0b3b5babbbdbec0c3c8c1c8c3c0bfbdbcbab6b4b1aba8a49d9b938f88817a727a818b91979fa5adb4b4b4b4b4b4b4b7afaaa09a928d837c716d655e555048413a31281e130900000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5059626c737f8a929ca5aeb8c1cad4dde6ddd3c9bfb7aca39a90897d716a61574e5f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc2b7ada49e9b9ea4abb2bbc4ccd5cec4b9afa69e9590847b6f6a615950483f372e251d150c0300000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabfb3a89c9085848484848484848586878b8f949ca0a7afb6bfc8d1d1c8bdb5aa9f968b8074685e54493e33271c1005000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000c18232f3a46525d6974808c97a3aebac9d1dfe9f1ece1d5cabeb3a79c9084796d62564a3f33281c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f14181c1e1e2124252626262626262626262322201c18120c04000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000006111b252e363e474f545f666e737c838c91979da3a8adb4b6babfc0c4c9c8cacbced2cdd2cecbcac9cac5c1bfbab6b4ada8a49d9a918d847e838d919ca0a7aeb6bdc4bfbfc4bcb5aea69f9c908b817a706b635d554a463f38312921170e0400000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c556069707c86919ca2abb5bec9d1dae2e2e2d9d0c7bdb4aaa19c90847b6f685e545f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4dcd1c7beb5ada8a7a8adb5bbc3cbd4d7cbc0b5aa9f9690857c706b615a514940382f261e150d040000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f79797979797979797a7c7f848a91969fa6afb8c1cad4cec3b9afa69b9084796e63574b4034291d1106000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000c17232f3a46515d6974808b97a3aebac8d2dce7efebe1d5cabeb2a79b9084786d61564a3f33271c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012131618191a1b1b1b1b1b1b1b1b171715120d080200000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000008131b202b353e474f585f636f747e868f949ca0a7acb3b7bdc1c5cacccfd3d4d6d5d3d3d2d3d3d5d6d4d4cfcccac5c1bdb7b3ada8a19b948f898f939ba2abb0b8bfc6cdcac4bab3aca59e96908980786f6a625b544c453b362f27211910070000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5d636f7a838f969faab3bbc6ced9dad7d6d7dad7cdc4bab4a99e958e82786e635c5f6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4e0d7cec5beb7b4b2b4b7bec5cbd3dcd6cabfb3a89c90857d716c625a5149413830271f160d04000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746d6d6d6d6d6d696e7073797f8690969fa7b0bac5cfd3c9bfb4a89e94887d71655a4e43352b20160b000000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000b16222e3945505c67737f8a96a5aeb8c2cdd7dfe4e1dad1c8bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a0d0e0e0f0f0f0f0f0f0f0f0c0b090603000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000051019232b2f3a454e575f686e75808a91969da4abb0b8bdc1c7cccfd4d6d4cfcccbc9c8c7c7c7c8c9cacdd1d6d6d4d0ccc7c2bdb7b3aba49e9b959a9da4abb6bac1c8cfc8c0bab5aaa39c9490857e746e686059524b433c302c261f171008000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685b646e75818c939da7afb9c3ccd6d3cfcccacccfd3d5cec3b8aea59c928b7f736c62596b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4e0d9cfc7bfb9b5b3b5b9bfc7ced5ded1c6baafa3978c80756d635b524a413930281f170e0600000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746861616161585f6365696e737d859097a0abb6c1cad4cdc2b8aea5978b807469574e453a2f24190e030000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090008141f2b37424e5965717d88959ea9b4bdc6ced6d8d7d1cac0b8aca3988c8075695e52473b2f24180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000040d162129333c4349545e686e78808b909c9fa6adb6bac1c8ccd1d7d2cecbcac5c1bfbebcbbbbbcbcbebfc2c7cacbced2d8d1cdc7c1bbb5ada8a7a0a6a8adb4bbc5cacdc6beb7b0aaa19a928e847c726e635f585049423a332b211c160f0700000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468616b727e89919ba4adb7c0c9d3d0c9c4c0bfc0c4c9d0d2c8beb6aca29c91867c7069606b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4ddd3c9bfb6afa9a7a9afb6bdc5ced7d6cbbfb3a89c91867d716b615950473e352b201a120800000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5656564f5557585f636d727e87919ca8b1bac5d0d2c7bdb1a59a8e8377685e54493e33271c10050000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090006111d2934404b57636e7884909ba4adb6bec6cbcdccc9c1bab0a79d93897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0a0a0a0a0a0a0a0a0a0a07060401000000000000000000000000000000020506070c0c0c0c0c0c0c0c0c0c0c0c0b090703000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000010b141e26313a434c555e636e78818c919aa0aaafb7bdc5cad1d9d1cdc8c3bfbebab6b4b2b1b0afb0b1b2b4b8bbbec0c3c8cdd2d6d1ccc5beb7b4b2acb2b3b7bdc4cfd0c4bdb6aea7a09c918c827b706c645d544f474038312a231b120c050000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746868707b85909ca1aab4bdc7d0cdc7c0b9b5b3b5b9c0c7d0cfc6bcb5aaa0968f837a6f636b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec3b9afa69f9c9fa6adb5bdc7cfd7ccc0b5aaa09690847b706960574e453a2f2a22181006000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514a4a454a4c4f555c636d75818c97a1abb6c1ccd6cabfb3a89c9185786e63574b4034291d11060000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090005101c27333e49545e68737f8a949da5aeb5bbbfc2c0beb8b1aba0978f83786e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d10121216161616161616161616161212100c0803000000000000000000000004090d1012131818181818181818181818171715120d080200000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000006111b252e36414a545d656f75808c919aa1a9b5b9c0c7cfd4d3cec7c2beb8b4b3b0aba8a7a5a4a4a4a5a7a8aeafb3b4b8bfc3c8ced6d6cec7c2bfbeb8bdbec1c6cdcac5bbb4aca59e96918a80796f6a625c5449453e3730282119130702000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686e79828e959fa9b2bbc5cdcdc4bcb7afaaa8aaafb7bfc7d0cfc4bab0a79d948d81756e6b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d7cbc0b5a99f9590959da4adb6bfc9d1cfc4bab0a79e958f837a6f685e5449443b322920170e050000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145353b3f40454a545d646f7b86919ca8b4bfcbd6ccc0b5aa9f96877b6f64584d41352a1e13070000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900030e19242f3a454e57636e79838f959ea5abb3b4b8b5b3ada8a19c91867d71685e54493e33271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e21212121212121212121211e1d1b17130d06000000000000000000070e13181b1e1e24242424242424242424242322201d18120c04000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000b16202b353e47515a636d747f8b909aa1aab2bac4c9d0d7cfc9c3bdb7b3aea9a7a7a09c9b99999899999b9ea5a4a7a9aeb4b8bec6ced8d7d1cdcac9c3c9caccd1c9c1bab6aba39d9590867f756e69615a534b443a352e26201811090200000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746d74808b939ca6afb9c2cbcfc7bcb4aca69f9c9fa6afb7bfc9d3cac0b7ada49b91897e726b76828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabfb3a79c90858f949da6afb8c1cad4cac0b7aea59d938d81786e635d544b423931271f150c0200000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3033353b444b56616b77838e9aa6b1bdc8d4cfc4b9afa694887d71655a4e42372b2014080000000000000000000000000000000814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000b16202b353e4a556069707c8590949ca2a7a9aeaaa8a49e97918a7f736d63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2326292a2d2d2d2d2d2d2d2d2d2d2d292926221d170f07000000000000000810171e2327292a2f2f2f2f2f2f2f2f2f2f2f2e2e2b27221c150d040000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000030e19242f3a454e57616b717d87919ca1aab2bac2cfd3d5cdc7bfb9b5ada8a59e9b9797918f8e8d8d8d8e909494989c9fa5a9aeb5bec8d2dcdcd8d6d5cfd4d5d4cac1b8b1aba29b938f847d736e635f58514a423b302b251e160f07010000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74717d87919ca3acb6bfc8d3c9bfb6aca39d9691969fa6afb9c4ced0c8bdb5aba19c90857b7076828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4d0c4b9ada2968a7f838f959fa8b1bac5d0d0c8beb6ada49b928b80746e645c534a41382f261c120702000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e282b323d47515a6975808c98a3afbac6d2d3c9b7aba094897d71665a4f43372c2015090000000000000000020507070707070814202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000006111b25303b465058626b717d848d92989b9ea59f9c99948f877f746f655c53473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d32343538383838383838383838383534312d2720180f06000000000007101921282d3234353b3b3b3b3b3b3b3b3b3b3b3a3936322c251d150c0200000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000040e172129333e49545e686f7b849097a1abb1bac2cbd2d4ccc5bdb6afaaa49d9b95908c89868482828182828486898c90959b9ea5aeb8c3cdd9e4e3e1e1dae0dbd0c5bab1a8a19c918d837b716d655e554f484139322a201b150d0600000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747a849097a0abb3bcc6cfcec3b9afa69d938f8590969faab5bbc5cecec5bbb4a99f958e827976828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e7c859097a1abb6bbc4cdcfc6bdb4aba29a90897e726c625a51483f362c211b1309010000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22232d3845515d68747f8b97a2aeb9c5d0cfc3b7aca095897d72665b4f44382c21150a00000000000004090d1012131313131314202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000010b17212c363f48525b636c717b82888c90959296918e8a847e746f655e554c43362e251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202931373c40414444444444444444444444403f3c37302820170d03000000040e17212931383d404146464646464646464646464645413c352e251c120800000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000009131e28313c47515a636e78828e959ea8b1bac2cad3d3ccc3bcb4ada69f9c938f8984807d7a787776767677787b7d81858a90959ea9b4bfcbd6e2ededece6e3d8ccc1b6aba197918b817a706b635c554a453f373029221a110b040000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f76818d949ea7b0bac4cccec5beb5aa9f968f837c86909ca2abb5bec8d1cec3b9afa69c938b8076828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e727e87919ca2abb4bdc6cfcdc4bbb2a9a09c90857c706a61584f453b302b231911070000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22242f3a46515d6974808b97a2aebac5d1cec3b7aca095897d72665b4f43382c2115090000000000080e14181c1e1f1f1f1f1f1f202b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000007121c262f38424b535c636b6f767d818486878685827e79726d655f554e453b33261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27313941474b4c50505050505050505050504c4b46403930271d130800000009131e28313a41474b4d525252525252525252525251504c463e352c22180d03000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000020d18232d38404b56616a737e8a929ca5aeb8c1cad2d4ccc3bbb3aba49d96908a837e7975716f696b6a6a6a6b6a6f72757a7f84909ba7b3becad5e1edf8f8eee2d6cbbfb4a89c91877f766f69615b534c453b352f272018120701000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7f8a929ba5aeb8c1cad1c8beb5aba29c90857c737f8a919ba5aeb8c0cad3c8bfb6aca39c91877d828d99a5b0bcc7d3d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72747f8b929ba4adb6bfc8d1cbc3bab5aa9f9690847b6f695f554a453c332a21180f0600000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2c2e333e49535c6a75818c98a4afbbc6d2cec2b7aba094887d71665a4e43372c201409000000000911181e2327292a2a2a2a2a2a2a2b37424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000020c161f27323a434b535a61646d7175797a7b7b7977736e69645d554e453d352b23160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a5156585b5b5b5b5b5b5b5b5b5b5b5856504940372d22170c0100020d18232d38414a5156585d5d5d5d5d5d5d5d5d5d5d5d5b564e463c32271d1207000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000005101c27323d47515a636f7b85909ca3acb6bec9d1d6ccc4bbb2aba29c938f857f79726e68666360595f5e5f5a6063696e757f86919ca8b3bfcbd6e2edeef0ede2d6cabfb3a89c91857b6f646059524a433b302b251e1710080100000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c7bbb0a4988d8185909ca2abb5bec8d1cac0b8ada49b918a7e726e76818d949ea7b0bac4cfcfc7bcb6aba0979084828e9aa6b1bdc8d4d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e726e78818d939da5aeb8c0cad4cec4b9afa69e948e82796e635e554c433a312820160d04000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3737393e454c58636c78848f9ba7b2bec9d5cec3b8aea593887c7065594e42362b1f140800000008111921282e3235363636363636363637424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000000050e17212a323b434a51565c63656a696f706f6e6867636058544c453e352d241b12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a6164676767676767676767676763605950463c31261b10040005101b27323d47515a6164696969696969696969696968665f564c41362b201509000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000007121e2935404b56616b75818c959ea9b3bcc6cfd9cec5bcb3aba29b928e837c736e68635f585755505353545c626a6f79808a9196a0aab5c0ccd7e3e2e3e5e9e2d7ccc0b5aa9f968d81756c62574c413a332b211c150e06000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c8bcb1a69b918d90969faab2bbc5cecfc4bab0a79e948d81766e636f7a849097a0abb5bcc6cfcfc5bab0a79e94908e939ca7b2bec9d5d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72686f7a838f959ea7b0bac4cfd3c9bfb7aea59c938c81756f655d544b423930261e150b010000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514542424344484c565f65717c88949da8b3bfcad6cbbfb4a99e95867a6f63584c4035291e12060000040e18212a31383d40414141414141414141424e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c2015090000000000061119222b323a41474b53585a5960636463635e5757555048443c352d251d140a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a34404b56616a6f72727272727272727272726f6a60564b3f34291d12060006121e2934404b56616b6f7575757575757575757575746f665b5045392e22170b000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000004101b26313c47515a646f7b86919ca5aeb8c4ccd6d1c8beb5aca39b928d827a706b635f58554f4c4a474f545d646c707b828c919ca0a7b0bac4cfdad7d6d7dadee3dacfc4b9afa69c91877c70645a51473d32271b120c0500000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5cabfb5aba29b989c9fa6afb9c3cbcfc6bfb5aba0978f847a6f63606a717d86919ca3acb6bec8d2cac1b8aea59e9b9a9ca3acb6c1ccd7d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e726769707c859097a0abb5bbc4cdd0c7beb5aca39b918a7f736d635b524940372e251b11070100000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514e4e4e4e4f52575e656f77828e9aa4adb7c2cdd5cabeb3a79b9084796a60564b3f34281d1106000009141e28313a42484c4d4d4d4d4d4d4d4d4d4d4e5965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000000000109121a222931383d43494d4e505557585857544e4c4a463f38332c251d140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323d48525b646f7b7e7e7e7e7e7e7e7e7e7e7e7a6f63584c4035291e12070007131e2a35414d58646f7b80808080808080808080808074685d51463a2e23170c000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000006121d29343f4b56606a75808c96a0aab6bfc8d4d4cac1b8aea59c938d81796f69625b544f4a45404950585f636e727c848e929aa1aab0b7c0cad4cfcccbcccfd4daded3c9c0b6aba1978d81756b61564b4034291f140a0000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cfc5bbb2aba6a4a8aaafb7bfc9d2c8bfb6aca39c91867d716a605a636c747f8b929ca5aeb8c3ced1c8beb5aea9a7a6a7acb3bcc6d0dbd2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e7267626b717d86919ca1abb4bcc6cecec5bcb3aaa19c91867d716b625950473e352b201a120800000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5a5a5a5a5a5b5b62656f747f8b929ca7b5bdc7d1d3c7bcb0a4998d82766b5950463c31261b100400020d18232e38424a525758595959595959595959595965717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000000000010a121921282d32393e4243464a4c4d4c4b4945403f3b362f27231b140d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38404c57626b758089898989898989898989837a6e63574b4034291d11060008141f2b36424e5965707c878c8c8c8c8c8c8c8c8c8c84796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000007121e2935414c58636f7a85909ca7b0bac6cfd8cfc5bab0a79e948e82796e696059524a453f4049515960686e747e8590949ca3aab5bac0c8d0cac4c0bfc0c4cad0d8d9d0c5bab1a89c91867b6f64584c42392e24190e0300000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d4cbc2bbb5b1b0b3b5b9bfc7d0cec3b8aea59c928b7f746c6359535c636e78828e959ea9b4bac4cdcec5beb8b4b2b1b2b6bcc4ccd6ded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b636d737f8a919ba3acb5bec7d0ccc4bbb5aba09790857c706a60584f453a302b22191007000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746865656565656667686c70767f87919ca3acb6c5ced7ccc1b6aca3968a7f73685c5045372c22170c010005101c27323d48525b6264646464646464646464646465717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c20150900000000000000010810171e23292f3336363c3f404141403e3a3533302c261f17130b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b64707b869195959595959595948a7e72685f54493e33281c11050008141f2b36424e5965707c879397979797979797979084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000005101c27323d47515a67737e8a969faab7c0cad7d7ccc1b6aba09790847b6f6960585049423b3c47515a616a6f78808990969ea5acb3bac4caccc8c0bab5b3b5bac0c8d0d9d4cac1b5aaa0968b7f74685b52483e33281c110600000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd3cbc5bfbcbbbfc0c4c9d0cdc5bdb4a99f958e82786e635c5349545f686f7b85909ca1aab4bdc7d0cec7c2bfbebdbec1c6ccd4ddded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5d656f75818d939ca5aeb7c0c9d3cfc4bab0a79f958f837a6f685f5449443b322921170f050000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74717171717171717274777c828b9197a1abb3bcc6d5d3c9beb2a79c93877b7064584d41362a1e1308000007121e2935404c57626b70707070707070707070707070717c88939fabb6c2cdcec3b7aba094897d71665a4f43372c201509000000000000000000070e13181f25282b2c313435363534332f2b2825211c160e060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131e2a35404c57626b75818d96a0a1a1a1a1a59b8f84796e63584f453a30251a0e030008141f2b36424e5965707c87939fa3a3a3a3a3a39b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000007121e2935404b56616b77828e9aa6afb9c8d0dacec3b9afa69c91877d716a615950484038343f4b56616a6f7a818b909c9fa6aeb5bcc4cfcfc3bcb7b0aaa8aab0b7c0c9d1dacfc4bab0a79b8f83786c62574c41352a1e120700000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd4cfcac8c7cacbced3d0c7bdb4aaa19c90857b6f685f544c454f58616b727e89919aa4adb7bfc9d3d2cdcbcac8c9ccd0d6dde5ded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b555e636e79828e959ea7b0bac4cfd4cac0b8afa69d938e82786e635e544c433a31271f160c0200000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c6bbafa3988c807d7c7c7c7c7c7c7d7e8083868e929ca1a8b1bac3ccd6cdc2b7ada49a8e83776b62574c4035291e1203000007131f2a36414d5864707b7b7b7b7b7b7b7b7b7b7b7b7b7b7e8995a0acb7c3cfcec3b7aba094897d71665a4f43372c20150900000000000000000000040910151a1d1f222628292a29292724201d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b64707c86919ca7b0acaca99e948a7e73685f55473e352b20160b000008141f2b36424e5965707c87939faaafafafafa79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000007131e2a35414d58646f7b86919ca8b4bfc9d6d7cbc0b4a99f958c81756d635a51483f383035414c58636f7b838e929aa1aaafb7bec5cccac4bab3aca7a09ca0a7b0b8c1cad4d4cac0b3a89d94877c7065594d42362c21160c01000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe5ded9d5d3d2d6d7d9d3c9c0b7ada49a91897e726b61584f453e47515a646d75808c939da6afb9c4ced5d8d6d5d4d5d7dbe0e6eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b505560696f7b849096a0aab5bac3ccd1c8bfb6ada49c928c80746e645c534a41382f261c120702000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bcb0a59a918c8888888888888888898b8e91979ca2abb1b8c1cad4cec6beb3a89d94897e72675b52483d32271c100500000c18232f3a46525d69748087878787878787878787878787898e98a2adb9c4d0cec3b7aba094897d71665a4f43372c201509000000000000000000000000060b0f1212171b1d1d1e1e1d1c1916110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e2a35404c57626b76818d97a0abb7b9afa69b9084796e63584f45372e251b1107000008141f2b36424e5965707c87939faab6babab3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000a16212d3944505b67737e8a97a1abb6c1ccd8d0c5bab1a89c90857b6f635c534941382f29343f4b56616a75818d939ca5aeb7bfc7cec8c0bab5aaa39c969196a0a8b1bac5d0dacdc2b7ada4978b7f7468584f453b30251a0f04000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebeee9e4e1dfdee2dfd6cfc4b9afa79d938c80756d645a51473e37414a545d636e79838f969faab5bbc5ced8e1e1dfe0e2e6eaf0eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b505058616b717d86919ca1aab3bcc5cecfc6bdb4aba29a908a7e726c635a51483f362c211b1309010000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5cabfb4aaa19a98949494949494949495979a9ca1a8abb6bac1c9d1d0c8beb5aba29b8f83796e63574b42382e23180d02000006121d2934404c57636e79828e959393939393939393939395989fa8b2bcc7d2cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000406080c0f1112131211100e0b06040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c25313c47515a64707c86919ca7b0bab5aa9f968b7f73695f55483f35261e150b01000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000004101b26313c4650596a75818d98a8b1bac5d0d8ccc1b6aba1978c80746a61564c4339302726313c47515a636e79828e949ea6afb9c4c6beb7b0aaa19a928e859197a1abb6c1ccd8d1c7bcb1a59a8e8277695f554a3f33281c1105000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7f3efeceaebe1d9cec6beb5aa9f968f837a6f635d544a4137313a444a556069707c85909ca2abb5bdc8d0dae4eeeceef1f5f5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5048515a636c737e8a919aa3acb5bec7d0cdc5bbb3aaa19c91867d716b615950463b302c231a11080000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec4bab1aaa5a39f9f9f9f9f9f9fa0a0a2a5a8abb1b8bbc5cad1d1c8c0b7aea59c92897e72685f544a3e31281e140900000005111c28333f4a555f69707c85909ca19e9e9e9e9e9e9e9ea0a2a8afb8c1cbd6cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000010406060707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b56616a75818c97a0abb8bfb3a89c90857b6f63584f45372f25160d0400000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000006111d28343f4b56606a78848f9ba7b2becad4d6cbbfb4a89c91867b6f645a51473b332920222d37404a5560696f7b8490969faab5babdb6aea7a09c918c827c87919ca8b4bfcbd6d6cabfb3a89c91857a6e63574c4034291d1206000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7fefaf9eee4dad1c9beb5aba29c91867c706960554d443a3129303b465058626c737e8a919ba4adb7c0cad4dee7effafcfff5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b50444a535c646e75808c929ca4adb7bfc9d3ccc3bab5aa9f9690847b6f6960554a453c332a2118100600000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d4cbc2bab4b0afababababababababacaeb1b4b6bac1c9d0d4d0c8c0b8b0a79e958d82766d64584f453b3021180e04000000030f1a25303b454f58626b727e89919ba4adaaaaaaaaaaaaacadb2b8c0c8d1dacec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca7b0bab6aca3988d81756a6156483f36271e15060000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000006121e2935404c58636f7a86949da8b3bfcadad4c8bcb1a59a8e82776b61574941372b23181d27303b465058616a707d85909ca1aab3b4ada59e96918a807977828e9aa5b1bcc9d3d7ccc0b5aa9f96887c7065594e42362b1f1408000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7fff9f0e8dfd4cac1b8aea59c928a7f736c625950463c3429212c363f48525b646e76818d949da7b0bac4cfd6dfe9f2fbfff5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044434c555e636e79828e949ea6afb9c4ced3cfc4b9afa79e948e82796e635e554c443a322820160e05000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd2cbc4bfbcbbb6b6b6b6b6b6b6b7b8b9bdbfc1c5cad1d4cfc7bfb8b0a7a09690847b6f645d54473f352b21110800000000000b16212b353f48525b646e75818d949da7b0bab5b5b5b5b7b9bcc1c8d0d8dacec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69747f8b969faab8c1b3a79d93887c71655a5147382f26160e050000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000008141f2b37424e5965707c8893a4adb7c2cdd8cfc5bab0a7968b7f73685a51473930271b1217212c363f48515a626c727e89909aa2ababa49d9590867f756e737f8b96a7afb9c4cfdacfc4b9afa6958a7e72675b5044382d21160a000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7fcf2e9e0d7d0c5bab1a89e958d82766f655b524840362c231c262f38424b555e636f7a848f97a0aab5bcc6cfd9e1ebf4fef5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b50443b444a555f686f7b848f969faab5bac3ccd3c9c0b7aea59c938d81766f655d544b423930271e150c020000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd4cecac7c6c2c2c2c2c2c2c2c2c3c5c8cbccd0d4cfcac4bdb7afa7a09791867d716a61564d44372e251b1100000000000007121c252f37424a545d636f7a838f96a0aab5bcc6c1c1c3c4c7cbd1d8e0dacec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba6afb9b9afa69a8f83776c6358494037271f1506000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000a15212d38444f5b67727e8995a0acb8c7d1d7ccc1b6aba097887c7165594e42382b201707121c262f38414a535c646e74808b929ca4a29b938f847d736e65707c88969faab5c0ccd7d3c9baaea3978b8074695d51463a2f23170c000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf7f7ede3d9cfc7bfb6aba19790847b6f635e554b42382f261c161f27323a454b56606a717d86919ca3acb6bec9d1dae4eef9f5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044393b454f58616a707c85909ca0a9b3bbc5cdd0c7beb5aca39b918b7f746d635b524940372f251b11070200000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8d8d8d9d5d3d2cececececececececfd1d4d5d2cdcac5c0bab5ada69f9791877e726d635a51473c34271e150b010000000000020c151e27313a444a556069707c86919ca2abb5bec9d1cfd0d2d6d8d8d8d8cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b67727e89949ea9b7bfb5aa9f968a7e72675c5349393027170e05000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000b17222e3a45515c68747f8b96a2aeb9c5d0d6cbbfb4a89c91857a6e63574c4034291d12070c161f273139434b545d636e78818d939d9a928d837b716d65636e7985919ca8b3bfcbd6d2c7bbafa4988d81756a5e53473b3024190d020000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf9eee6ddd3c9bfb6aca39c91877d716a61564e453b32281f160e17212a313c465059636c747f8b929ca5aeb8c1cad4dfe8f0f5eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b504439353f48515a626c727e89909aa2abb4bdc6cfcec6bcb4aba29c91877e726c625a51483f352b211b120900000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdd3cecbcac9c7c2c1bab6b0aaa49d9690867f736e645c534a41372c23160e0500000000000000050e17212a313c465059626c737f8b929ca5aeb8c1cad4cdcdcdcdcdcdcdcdc3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b77828e9aa5aeb8bfb3a89c90857a6f63574c43392920170600000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000c18232f3a46515d6974808b97a3aebac5d1d5c9beb2a79b9084786960554a3f33281d1106050e172029323b4449545f686f7a838f95908b817a706b635c5f6878838f9aa6b2bdc9d4d3c8bcb1a5998e82776b5f54483d31251a0e030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebf1e9ded6cec3b9afa69d938c80746d635a51473d352a22170f06111a222c374049535c636e78828e959ea8b1bac5d0d7e0e9f2eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392f374149525b646e74808b929ca4adb6bfc8d1cdc4bbb6aba09790857c706a61584f453b302b22191007000000000000000000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c9c4c0bfbdbcb8b4b0aba7a09c938f857e736e645d544c433931271b1306000000000000000000061119222c364049535c636e78828e959ea8b1bac5c1c1c1c1c1c1c1c1c1c1b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e5764707b86919ca8b4beb8aea5988d81766960554a3f34281d100600000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000c18242f3b46525e6975808c98a3afbac6d1d4c8bdb1a69a8e83776c5850463b30251a0f0400061019222b303a454f58606a707c85908980786f69625b53586b76828e99a5b0bcc7d3d4c8bdb1a59a8e83776c6054493d32261a0f030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebeae1d8cec5beb5aa9f968f83796e635d534941372d241a11070108131d2730394349545f686f7b849097a1abb6bdc7cfd9e3edeaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9d4cfc4b8aca1958a7e72675b5044392d3039424b545d636e78818d939da6afb8c1cad4cfc5bab0a79f958f837a6f685f554a453b332921170f050000000000000000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9b5b3b2b0aea9a7a09c97918c837c726d645e554d443b332920170b030000000000000000000008121c2630384349545e686f7b849097a1abb6b5b5b5b5b5b5b5b5b5b5b5b5aba094897d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6874808b97a1abb6bfb4a99e95897d72665950463b31261a0f0000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000d1924303b47535e6a75818c98a4afbbc6d2d3c8bcb1a59a8e82776b605448362c21170c01000008121a202b353e475059626b717d857e746e68605952535f6a76818d99a4b0bbc7d2d4c9bdb1a69a8f83776c6055493e32261b0f040000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0eee4dad0c8beb5aba29c90857c70695f554c433930271d140a0100030d162028303a454f58616b717d87919ca3acb6bfc9d3dde6eaded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc9cdcdc4b8aca1958a7e72675b5044392d29323b4449545f686f7a838f959fa7b0bac5cfd4cac1b8afa69d948e82796e635e554c433a31281f160d0400000000000000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaa8a6a4a59e9b97918d86807a706c645d554d453d342b231910070000000000000000000000030d161f282f3a454e57616a717d87919ca3acaaaaaaaaaaaaaaaaaaaaaaaaaaa094897d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79848f9ba8b1babeb3a79c90847a6e63574c40362c22170c0100000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000d1924303b47535e6a75818d98a4afbbc6d2d3c8bcb1a5998e82776b5f5448352b21160b0000000107111b252e374049525b636d717b726e635e575049535e6a76818d98a4b0bbc7d2d4c9bdb1a69a8f83776c6055493e32261b0f040000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e7ded4cac0b7ada49b918a7e726b62584f453c332920170c04000000060f18202b353e47515a636d75808c939da6afb9c3ced5dee8ded2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1b8aca1958a7e72675b5044392d222a303a454f58606a707c859097a0abb6bbc4c1c1c8bfb6ada49c928c80756e655c534a413830261e140b01000000000000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9b999694908c86817c756f69625b544d453d342c241b120800000000000000000000000000060f17202b353e47515a636d75808c939da69e9e9e9e9e9e9e9e9e9e9e9e9e9e94897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5865717d88949da8b8c1b9afa6988c8175695f554a3f33261c12080000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000d18242f3b46525e6975808c98a3afbac6d2d4c8bdb1a69a8e83776c584f453b30251a0f03000000010b151e263038424a535d636a6f6a645d544e4748535f6b76828d99a5b0bcc7d3d4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8dfd7cfc4bab0a79e948d81766e645b52483f352b23181007000000000007111b252e37414a545d636e79838f969faab5bbc5ced8e1d8d2c7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5aca1958a7e72675b5044392d21202b353e475059626b717d87919ca2abb4b5b5b5b5b5b5b5aca39a918a7f736d635b524940362e251b1106000000000000000f1b26323d4955606c77838f939393939393939393939393939393939393939393939296908f8d8b8884807c76706c636059524b443c342d241c130a02000000000000000000000000000006111b252e36414a545d636e79838f9693939393939393939393939393939393897d71665a4f43372c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6875818c98a4adb7c0b4a99f95887d7165584f453b3025160c020000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000c18232f3a46525d6974808b97a3aebac5d1d5c9beb2a69b8f8478685f554a3e33281c110500000000040d161f28313a434c535a6163615a5449453e47515a6b77838e9aa5b1bdc8d4d3c8bcb0a5998e82766b5f54483c31251a0e030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcfc6bfb5aaa0978f847a6f635e554b42372f251b1208000000000000010b151e263139444a555f69707c85909ca2abb5bdc8d0cdcdcdc7bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaa1958a7e72675b5044392d211b252e374049525b636d747f8b919ba3acaaaaaaaaaaaaaaaaaaa19c91867d716b615950473e352b20160b000000000000000f1b26323d4955606c7783878787878787878787878787878787878787878787878787868583827f7c7975706b64625b555048423b342c241c140b03000000000000000000000000000000010b141e263139434a555f69707c858787878787878787878787878787878787877d71665a4f43372c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7984909ca7b3bdbfb3a79c9085796e63574b40352b21160b000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000b17232e3a45515d68747f8b96a2aeb9c5d0d6cbbfb3a89c91857a6e63574c4034291d13080000000000060f18212a333c4349515658565149443a404b56616a7984909ba7b3becad5d3c7bbb0a4998d81766a5f53473c3025190d020000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c8bfb6aca39c91867d716a60564d443a31271e150b0200000000000000040d162029303b454f58626b727e8a919ba4adb7c0cac1c1c1c1bbb0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e958a7e72675b5044392d21151e263038424b545d656f76818d939da59e9e9e9e9e9e9e9e9e9ea09690847b706960574e453a2f24190e0300000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a79787673716e6864625b57524a464038322a231b140c030000000000000000000000000000000000040d162029303b454f58626b707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c88959ea9b4bfbbb0a4998d8176685f544a3e33251c1207000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000a16212d3844505b67727e8a95a1acb8c8d2d7ccc1b5aaa097877c7065594d42372d22180c020000000000071119232b333940474b4c4b47403935414c58636f7b86959ea9b4bfcbd6d1c6baaea3978c8074695d52463a2f23180c000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b8aea59c928b7f746c635950463d342a21170e05000000000000000000061019212c363f48525b646e76818d949da7b0bab5b5b5b5b5b5b0a4998d81766a5f53473c3025190d000f1b26323d4955606c77838f9393939393939393939393938a7e72675b5044392d2116162028323a444c555e636f7a838f9593939393939393939393939393958f837a6f685e54493e33271c100500000000000007121e2935404b57616b7070707070707070707070707070707070707070707070706f6f6a6c6a6865635e5757524c48423b362f28221a130b0300000000000000000000000000000000000000051018212c363f48525b626b6f7070707070707070707070707070707070706f6960554a3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b6974808b97a5aeb8c1b7ada4958a7e7367584f453b3025150c02000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b0000000814202b37424e5a65717c8893a5aeb8c2cdd8cfc4bab0a7968a7e73675a51473c31261c120800000000000009121b232830373c3f413f3c37303b454f5866727d8995a5aeb8c3cdd9d0c5bab1a8968a7e73675c5044392d22160a000000000000000000000000000000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaa99e958e82786e635c534940372c24191106000000000000000000000007121c262f38424b545e636f7a838f96a0aaaaaaaaaaaaaaaaaaa4998d81766a5f53473c3025190d000f1b26323d4955606c778387878787878787878787878787877e72675b5044392d21160f18212a333c454a5560696f7b84878787878787878787878787878787878781796e63574b4034291d110600000000000005101c27323d48525b61646464646464646464646464646464646464646464646464646360595f5c5957544e4c48423d38312c261f17110a0300000000000000000000000000000000000000000007121c262f38424b525a616464646464646464646464646464646464646463605950463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b78838f9aa6b2bdbeb3a89d93867b6f64584c41352b21160700000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b00000007121e2a35414c58636f7b86949ea9b4bfcbd6d4cabcb0a5998d82766a61564b40362c21170f050000000000020b121820272d31343534312d333f4a555f6975818c98a3afbbc8d2d8ccc1b6aba197887d71665a4e43372c201409000000000000000000000000000000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9ea19c90857b6f685f544c433930271c1409010000000000000000000000020c151f27323a444a56606a717d86919ca29e9e9e9e9e9e9e9e9e998d81766a5f53473c3025190d0007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e12071119232c313b465059616b6f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d1206000000000000020d18232e38414a52575859595959595959595959595959595959595959595959595858565053514e4b49453e3d38332e28221c160f070100000000000000000000000000000000000000000000020c151f27313a424a5156585959595959595959595959595959595959595755504940362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87939da8b3bebdb2a69a8f83786b61564b4034251b110700000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b00000006121d2934404b56616a7984909ba7b3becad5d6cbbfb3a89c91867b6f635950463b31271f160d040000000000020810171d222629292926303a454f58636e7984909ca7b3becad6d6cbbfb4a89c91867b6f63584c4135291e1207000000000000000000000000000000000f1b26323d4955606c77838f939393939393939393939391897e726b61584f453b332820160c0300000000000000000000000000050e17212a313c465059636c737f8b9293939393939393939393938d81766a5f53473c3025190d0007121e2935404b57616b7070707070707070707070707070706f6a60564b3f34281d110609131b212c364048515a616a6f7070707070707070707070707070707070706e695f554a3f33281c11050000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46484542403e3a35322e28241f17120c0600000000000000000000000000000000000000000000000000050e17212a313a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a4adb7c1baaea3978c8074695a51473d32271b100500000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b00000005101b26313c47515a6a76818d99a4b0bbc6d1d7ccc0b5aaa0968b7f746960554a42382f261e150d06000000000000060d13181b1d1e252e363e49545f68727e8a959ea9b4bfcbd6d4c9bdb2a69b8f83786a61564b4034291d1206000000000000000000000000000000000f1b26323d4955606c77838787878787878787878787878780756d645a51473e352b22180f06000000000000000000000000000000061119222c364049535c636e78828787878787878787878787878781766a5f53473c3025190d0005101c27323d48525b6164646464646464646464646464646463605950463c31261b10040208121c262f38414a515a6164646464646464646464646464646464646464635f584f453b30251a0f0400000000000000040e18212931383d4041424242424242424242424242424242424242424242424141403f3c37393734332f2b25231e19140f0802000000000000000000000000000000000000000000000000000000061119212931383d4041424242424242424242424242424242424242403f3c3630281f160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a6a76818d98a4b0bbc2b7ada494897d72665b4f43372d23180d0200000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b000000020d18222d3745505c67737f8a96a3acb7c1ccdacfc4bab0a79b90847a6f635b52483f362e251e16100a05020000000205090e161c212b353e47515a636e79838f9aa5aeb8c3ced9cec3b9afa6988c8075695a51473c31261b10040000000000000000000000000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c796e635d544a41372e251a1207000000000000000000000000000000000108121d2630384349545e686f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e130700020d18232e38414a52575859595959595959595959595959595856504940372c22170c0100020c161f28313a414a51565859595959595959595959595959595959595957554f483f362c21160c01000000000000000007101921282e3235363636363636363636363636363636363636363636363636353534312d2e2b292724201b19140e0a0500000000000000000000000000000000000000000000000000000000000109111921282d3234353636363636363636363636363636363636363534312c261f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b7884909ba7b2bebfb4a89e94867b6f64584c41352a1e13090000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b0000000009131f2a36424d5964707c87939da8b3c0cad4d4cac0b4a99e958b80746c625950473e352e26201815100d090b090d1014171f262c303a454e57616a737e8a939da8b6bec8d2d7cbc0b4a99f95897d72665b4f43372d22180d020000000000000000000000000000000007121e2935404b57616b70707070707070707070707070706e6960554d443a31261e150a020000000000000000000000000000000000030d161f282f3a454e5760696f707070707070707070707070706f6b61564b4034291d1206000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d1308000000060f172129313941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f382f261c1207000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29292622221f1d1c1916110b09040000000000000000000000000000000000000000000000000000000000000000010810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87949ea8b4bfbeb2a79b8f84786a61564b4034291d12040000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b0000000007131e2a35404c57626b78838f9aa7b0bac4cfdacdc2b8aea59c91867c706960574e453e373028241f1c18141713181b1e23272f363b4549545e686f7b84909ca4adb7c6cfd8d6cabfb3a79c90857a6e63574c4035291d1308000000000000000000000000000000000005101c27323d48525b61646464646464646464646464646463605850463c342921160d0400000000000000000000000000000000000000060f18202b353e47505960636464646464646464646464646464615a51473d32271b10050000040e18212931383d40414242424242424242424242424242403f3c37302820160d0300000000071019212930373c4041424242424242424242424242424242424242403f3b362f271f150c020000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1b17131411100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1b17120c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a5aeb8c2bbb0a4988d81766a5a51473c32261b10050000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a0000000005111c27323d48525b68737f8b97a0aab5c1cad4d2c8beb5aa9f968f83796e685e544f474039332f2927232323232326292e32383f464a555e636e78828e959ea9b4bdc6d6d9ccc1b6aca3988c81756960554a3f33281d11030000000000000000000000000000000000020d18232e38414a52575859595959595959595959595959575550483f362c2319100600000000000000000000000000000000000000000006111b252e364049505557595959595959595959595959595856514a41372d23180d0200000007101921282e32353636363636363636363636363636363534312c2720180f0600000000000009101820272d3134353636363636363636363636363636363636363433302c261f170e050000000000000000000000000004090d1012131313131313131313131313131313131313131313131313131212100c08080605030000000000000000000000000000000000000000000000000000000000000000000000000000000004090d10121313131313131313131313131313131313131312110f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576975808c98a3afbac7b9ada1968a7f73685c5045372d23180d020000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f140900000000030e19232e38424d58646f7b86919ca8b1bac5d0d8cfc4b9afa69d938d81786e635f585149443e3935322e2f2e2f2d3134383d434850555e656f74808c929ca5aeb8c4cdd6d1c9c1b3a79c93887d71655950463b30251a0f0400000000000000000000000000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a463f382f261b130800000000000000000000000000000000000000000000010b141e26303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413931271e130900000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221d160f0700000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c150e060000000000000000000000000000000002050707080808080808080808080808080808080808080808080707070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070808080808080808080808080808080808080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6877838e9aa6b1bdc3b8aea594887c71655a4e42372b201309000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c110600000000000a141e2934404b56616b76818d97a1abb6bfc9d3d3c9c0b7ada49b918c80756e68615a544c4943403d383a3a3a373c4042484c535860636f737f8a909aa2abb6bec8d5d4cac1b8ada49a8e83776d6358483f362c21170c01000000000000000000000000000000000000040e18212931383d404142424242424242424242424242403f3b362f271f160b030000000000000000000000000000000000000000000000040d161f2830363c3f404242424242424242424242424241403d37312920170e04000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d0600000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca8b3bfbfb4a99e95867b6f63584c4135291e1207000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000008121c26303840464a5757575056585a5c5c5b5957525757514f4b453e352b22170d02000000000005101b27323d47515a64707c87919ca6afb9c4ced7d0c7bdb4aba29a908c80786f6a635d58534d4c484746454646474b4c52575c62696e757f8a8f99a1aab3bcc6cfd9d0c5bab1a89d93897d72665c5349382f261c1207000000000000000000000000000000000000000007101921282e323536363636363636363636363636363433302c261f170e0500000000000000000000000000000000000000000000000000050f171f262c313435363636363636363636363636363534322d2720191007000000000000000004090d10121313131313131313131313131313131211100c080300000000000000000000000003090d10121213131313131313131313131313131313131312110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110b0b09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001040506060606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87969faab5c0beb3a79c9084796a61564b3f34291d1206000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000030d161f2830363c454b52575960636667686764625b57544f474039352d251b1208000000000000020d18232d38414c57626c76818d969faab5bdc7d0d8cdc4bbb2aaa19a918c827a726d65625c58575252515151525156585b62646c7079818b9099a0a9b1bac3ccd6d1c8c1b6aba1978f83786e63574b4339291f160c020000000000000000000000000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c160e06000000000000000000000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e171008000000000000000000000002050707080808080808080808080808080806060401000000000000000000000000000000000205060708080808080808080808080808080808080806050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a0c070c0f11121212110f0c0709060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a6afb9c3bcb1a59a8e82776b5a51473c31261b1004000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000050e17232c353e454d555b62646a6f72737372706c67635f585149403930271d13080000000000000009131e28333d48525b64707b85909ca4adb7bfc9d3d5cbc2bab1aaa19a928e847d76706c6764625b5e5d5d5d5e5a6164676b70757c838c9199a0a9b0b9c1cad4d4cac1b8aea59c91877d71685e54493e33271c0f050000000000000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1a17120c050000000000000000000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292222201c18120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090d101213151812161a1c1d1e1d1d1a17121512110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2adb9c9bbafa3988c81756a5e5247372d22180d02000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000020c151e27333c454e555e656b70767a7d7e7f7e7c78726e68615a514940372c22171006000000000000040e19242e38424c57626b747f8b939da6afb9c4ced3d3cac2bab1aaa29c949089827c7773706b6b69696869696b6a6f72767c81868f939ba1a9b0b9c0c9d2d4cfc5bab0a79e958d81756d63574e453a2f24190e0000000000000000000000000000000000000000000000000004090d1012131313131313131313131313131312110f0c07020000000000000000000000000000000000000000000000000000000000000003080c0f1112131313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0c0e0f1111111111111111111111111111110d0d0b0804000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113181c1e1e21232521252829292928252123201d1d1a17120c0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b47525e6a75818c98a4afbbc4b9ada2968a7f73685c5145392e22130800000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000007121c252f37444c555e656e737c8185898a8a8987837e786f6a615950463c312a20160b000000000000000a141f28323d48525b636e79838f969faab5bac3cbd4d2cac2bab3aba59e9b928d88837f7b7876757474747576787b7e82868c91979da4aab2b9c1c9d1d5ccc4bcb6aba09790847b6f635c53473e352b20160b000000000000000000000000000000000000000000000000000000020507070808080808080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000001040606080808080808080808080808080706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1015181a1a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d191816130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f14191c1e2327292a2d2f312c303334353433302c2f2c292825211c19150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313d4854606b77828e9aa5b1bcc3b7aca095897d72665b4f43382c21150a00000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000b16212b353f48545d656f737f868d9196969695948f8a827a6f6a60564b443a30251a0c03000000000000050f18232e38424a555f69707c85909ca1aab2bbc3ccd4d2cbc3bcb5aea8a29c99938e8a87848280807f8080828486898e91979ca0a7adb4bac2c9d1d4cdc5bcb3aba29c91877d716a61564c43362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b202325262929292929292929292929292929292424221e19140d060000000000000000000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c1208000000000000000000000000000000000000000000000000000000000000000000000000000000040910151a1e24272a2d323535383b3c363b3f4040403f3b363a373533302c26241f19140e0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596c78838f9ba6b2bdc2b6ab9f94887c71655a4e42372b20140800000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000030f1a25303b454f58636d737f8a91969ca0a7a2a49d9b928e837a6f635d54493f34261c12080000000000000009141e28303b454f58626c727e8a919aa2abb3bcc3d0d4d3ccc5beb8b4aba6a39c9a9694908e8c8b8b8b8c8d8f9495999ca0a7abb0b8bdc4cbd2d4ccc4bcb4aca39c928b80746d635a51473b33261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090911111111111111111111111006050300000000000205080a0b11111111111111111111110f0e0d0a06010000000000000000000000000000000000000000000000000000000000000000000710171f252a2e3132343434343434343434343434343434302f2d29231d160e060000000000000000000000000000000000000000000000000000000000000000000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d0200000000000000000000000000000000000000000000000000000000000000000000000000070e14181f24282e3235383d404144464849454a4c4c4c4a46484643403f3b36332f29231e16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560697985909ca7b3bfc3b9afa692877b7064584d41362a1f130700000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100005111c28333f4a555f69717d87919ca0a7aab0adada8a39c938d82766d63584d40362c22170c01000000000000040e16212c363f48525b646e75808c919ba3abb3bbc5cad1d6cec7c2bbb5b2aca7a6a59e9b999897969797999b9da4a5a8abb0b5bac0c8cdd5d3cfc3bcb4aca49c938d81786e635d534941372b22160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214151d1d1d1d1d1d1d1d1d1d1d1c11110e0b070101070c111415161d1d1d1d1d1d1d1d1d1d1d1a1a1815100b0500000000000000000000000000000000000000000000000000000000000000050e1720282f35393c3d4040404040404040404040404040403c3b38332d261e160a010000000000000000000000000000000000000000000000000000000000000000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c11060000000000000000000000000000000000000000000000000000000000000000000000010610181e23292f33383d4042474b4d4f5253554f55575857555054514f4c4a463f3e39322e28201b140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a86959fa9b4c0c0b5a99f95867a6f63574c4035291d120600000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100006121d2934404c57636e79838f97a1aab0b5bab9b7b3aca49c92897d71665950463c31261b0f040000000000000007121c262f38424b555e636e78818d929ca2abb6bac1c9cfd7d2cdc5c0bcb6b2b1aea8a7a5a3a3a2a2a3a5a6a8adb0b4b5bac0c4cad1d8d0c9c4bbb3aca39d938e82796f685f544c433930271b120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1d20202929292929292929292929281d1c1a16110b0b11171b1f21222929292929292929292929262523201b150e070000000000000000000000000000000000000000000000000000000000010b151f2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4746433d372f261a12090000000000000000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b20140900000000000000000000000000000000000000000000000000000000000000000000040b111921282e32393e42484c4d5156585b5d5f61585f63636360585f5d5a5755504c49433d382f2b251e160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b8792a6afb9c3bfb3a79c9085796960554a3f34281d110600000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000a15212c38444f5b66727e89949da8b1bac0c4c7c2bcb4aba2998e82776960554a3f34281d110600000000000000020c151f27323a4449545f686e79828e929ba2abb1b8bfc6cdd2d5cfcbc6c1bebdb8b4b2b0afaeaeaeafb0b2b3b7bcbfc1c4cacfd4d3cec7c0b9b5aba39c938f837a6f6960584f453c332920170a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c343434343434343434343433292825201b15141b21262a2c2d343434343434343434343432312e2a251f1710070000000000000000000000000000000000000000000000000000000006101b252f3841484f535457575757575757575757575757575753514d473f372b22190f0500000000000000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b000000000000000000000000000000000000000000000000000000000000000000050d141b202931383d43494d5257595a616467696b6c6d696e6f6e696d6b696663605958534c48423a352e261f170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c88949fabb6c8beb2a69b8f84786c5950463b31261a0f0400000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000d1924303b47535e6a75818d98a4adb8c1cacfd1cdc5bbb3a89c91857a6f63574c4035291d12060000000000000000050e17222a303a454f5860696f7a828d919ca1a8aeb6bcc2c8ced2d6d0ccc9c7c2bfbebcbabab9bababcbebfc2c7cbcccfd4d3cec9c3bdb7afaaa19b928e837b6f6a605950473e352b23181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a2f34373740404040404040404040403f3433302b251e1c242b3135383940404040404040404040403d3c39352f28201708000000000000000000000000000000000000000000000000000000000a15202a353f4851595e606363636363636363636363636363635e5c5750473b32291f150a00000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000060d161e252b2f3a41484b53585b6264696b6f72757678797a7a7a7a79787774716e6965625c575249453e36302820180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0abb7c3bdb1a69a8f83776c605549362c22170c0100000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000f1a26323d4954606c77838e9aa6b1bdc9d1dadcd5ccc0b5aaa096877c7064594d42362a1f130800000000000000000006111a202b353e47505860696f79818b91979ea5acb4b8bec3c8cdd1d6d5d2cdcacac8c6c5c5c5c6c7c9cacdd1d6d7d2cec9c4bfb9b5aca69f9c918d827a6f6a615a514840372e251b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c333a3f42434b4b4b4b4b4b4b4b4b4b4b4a403e3a352e26242d343b4043444b4b4b4b4b4b4b4b4b4b4b4948443f3830281910070000000000000000000000000000000000000000000000000000010c18232e39444f5961686c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6a6760574b43392f24170e05000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000040d161e262e353a444a52575c63656c7074787b7e8082838585868686858482807d7a75706c64625b544e474038302820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb7c3bdb1a59a8e83776b6054493d312612080000000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000101b27323e4a55616c78848f9ba6b2bec9d5e1e5dacfc4bab0a794887d71655a4e43372b2014090000000000000000000107111b252e373f48505960696e78808790959ca3a9aeb4b8bfc2c7cbced2d4d6d5d3d2d1d0d1d1d3d5d6d4d3cecbc8c3bfb9b5afa9a39d96918a81796f6a615a514940382f261e150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202a333c43494d4f5757575757575757575757564b49453e372e2b343d454b4f50575757575757575757575754534f4841382920170e0400000000000000000000000000000000000000000000000000030e1a25313c48535e6872777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7670675c53493e33271f150c020000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000010b151e262e363e4549555b61646d71777c808487898c8d8f9091979296918f8e8b8985817c76706b635e575049403830271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a1acb8c3bcb1a5998e82776b6054483d31261a0e0300000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000f1b26323d4955606c77838e9aa6b1bdc8d2daddd6ccc1b5aba097877c7065594d42362b1f130800000000000000000000010b151e262f38404950585f686e747e858e929b9ea5a9aeb4b7bebfc3c8c8cacbced2cececed3cecbcac9c8c3c0beb8b4afaaa69f9c938f867e756e6960595149413930281f160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3a434c54585a63636363636363636363636257544f473e35313b454e555a5c6363636363636363636363605e5951483931271e130900000000000000000000000000000000000000000000000000030f1a26323d4954606c778285858585858585858585858585858581766c63584c44382f261c12070000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000007111b252e373e474e545e646b70767d82878b8f949597999b9c9ca0a7a09c9b999796908c88827c736e686059504940382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1adb8c4bcb0a5998e82766b5f54483c31251a0e0200000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000d1925303c47535e6a76818d98a5aeb8c2cad1d2cec5beb4a89c91857a6f63584c4035291e12060000000000000000000000040d161f27303840484f575e636d727b828990959c9fa5a8adb3b4b8bbbdbfc0c3c8c2c3c2c9c4c0bfbdbbb9b4b3aea9a69f9c95908a837c736e63605850494139302820170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f49545d63666e6e6e6e6e6e6e6e6e6e6e6d635f584f453a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6c6962594a41372d23180d02000000000000000000000000000000000000000000000000000814202b37424e5965717d889191919191919191919191919191877c71655d54483f362c21160d0300000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000b16202b353e474f575e636e737b82888e92979b9da4a3a5a6a7a8aab0aaa8a7a5a69f9c98928d867f786f69605950483f362c21160f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb8c4bcb0a4998d82766a5f53483c3025190e0200000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000a16212d3844505b67727e89949ea9b4bac1c9c8c3bdb5aca39a8e82776a60564b3f34281d1106000000000000000000000000060e171f2830373f474e545d636b6f777e848b90959b9ea4a7a9aeafb1b3b4b9b6b7b7b7b6b9b5b3b2b0afa9a7a59e9c96908c857f79706c645e5550484038302920180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d58636d717a7a7a7a7a7a7a7a7a7a7a796e685f54493e38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7772695a51473d32271b10050000000000000000000000000000000000000000000000000008131f2a36414d58636c76818d969f9c9c9c9c9c9c9c9c9ca1978e82776e64584f453b30271d130800000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000030e1a25303a454f585f686e757e858e929a9ca3a6a8adafb0b2b3b3b5bab5b3b2b0afaaa8a29b96918b817a6f6a60584f453b30291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945505c68737f8a96a2adb9c4bbb0a4988d81766a5e53473c3025190d0200000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100006121d2935404c57636f7a84909ba1abb1b8babab9b4ada59c93897e72665950463c31261b0f0400000000000000000000000000060f171f272f363e4549545a61646e727a80858b8f94989b9ea5a4a6a7a9afababacababafaaa8a6a4a69f9c9895908b85807b736e68625b554a463f38302820181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d858585858585858585858584796e63574b403944505c67737f858585858585858585858582776b61564b4034291d13080000000000000000000000000000000000000000000000000006111d28333e49535c64707b85919ca5aea8a8a8a8a8a8b1a89c92897e72695f554a41372d22180f05000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000005111c28333e49545f686e78808a90959ca2a7acb2b3b7babcbdbfbfc1c4c0bfbebcb9b5b3aba79f9c928d827a6f695f554a43392f24190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a1adb9c4bbb0a4998d81766a5f53473c3025190e0200000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100006111d28343f4a556069727e89909ca1a8acaeaeafa9a49d948e82786e63574b40372c22170c010000000000000000000000000000070f171e262e353a444a51575d646a6f747a7f84888c909596989a9c9fa69fa0a0a09fa69f9c9a999695908d8984807b756f6b635f58524b453b362f271f181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a8590919191919191919195887d71655a4e4239414c58646f7b8691919191919191919191867b6f64584d41372c22170c01000000000000000000000000000000000000000000000000030e19242f39434b57616b74808b959ea9b4b4b4b4b4b4b8aca39b8f83796e635a51473c31281e140a000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000007121d28343e49535c636e78818c909c9fa6abb2b6bcbfc2c7c7c9c6c4c4c3c4c5c9c9c3c0bbb7afaaa29b938e82796e635c53493e33291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a96a1adb8c4bcb0a5998d82766b5f53483c3125190e0200000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000040f1a26313b465059646e75808b91979ca3a2a3a69f9c938f847b6f685e54493e30261d120800000000000000000000000000000000060e161e252b2f3a41474b545960636a6f73797d8184878a8d8f90959393949494939396908f8d8a8885817d79746f6a64615a544f47423b302c261f170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6976818d999c9c9c9c9c9ca5978c8075695b52483e404b56616b77838e9a9c9c9c9c9c9ca1978a7f73675950463c31261b1004000000000000000000000000000000000000000000000000000a151f29323d48525b636f7a84909ba4adb7c1bfbfc9bcb3a89d948b7f736a61564b42382e24160d040000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000008141f2b36424d58636d75808c919aa1a9afb6bcc1c6cac7c1bebdbbb9b8b8b8babebfc2c7c7c0b9b5aba39c928c80746c63584c42392e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a95a1acb8c3bcb0a5998e82776b5f54483d31251a0e0300000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000010c17222c364048545d636e7880878e939697979695908b837b706a61574e453a2f20160d030000000000000000000000000000000000050d141b202931383d44495056596063686e7175797c7e8183858687888889888887868583817f7c7976716e6864615a56514a453f37322a211c160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f5867727e8997a0aaa8a8a8a8a79b8f84786c62574c413d47515a68737f8b96a4ada8a8a8b1a8998e82776a60564b3f34281d120700000000000000000000000000000000000000000000000000050f18232e38414a56606a737e8a939da8b3bbc8d0cdc2b7ada49c90857b6f635b52483d32261e150b0100000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d88909ca0a7afb7bfc7c9c4c0bdb7b3b2afadacacacaeb2b3b7bdc5c9c4bbb3aca39c91877d71655b52483e33281c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a0acb8c3bcb1a59a8e82776b6054493d312611070000000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000008121c262f384449545e686e747d83878a8b8c8b88857f7a706b615a51473e352b200f0600000000000000000000000000000000000000040b111921282e323940464b5056575e6365696c70737677797b7c7c7d7d7d7c7c7b79787673706e6866635f5856514b47413b352e27221a120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c36404c58636f7a86919ca8b3b4b4b3a89d94877c7065594d4238414d5964707c87939da8b3b4b4b3a89c91857a6f63584c40362c21170c010000000000000000000000000000000000000000000000000009141e28313c465059636e79838f9aa2abb7c0cad1c7bdb4a99f958c80756c62574c43372e251b110700000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000008141f2b36424d58636d747f8a91979fa7afb6bec0b9b5b3ada8a6a3a2a1a0a1a3a6a8adb5bbc3cfc4bcb6aba1978e82776c62574c41352a1e110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a0acb7c3bdb1a69a8e83776c605449352b21160b0000000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000020c161f282f3a454e575e636d71777b7e80807f7d7a746f69615b524a41362e251b11000000000000000000000000000000000000000000010610181e232830373c40464a4e54575a5b6264676a6c6a6f707171727171706f6b6c6a6865635f5857554f4b47413d37302b251e161107020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f4b56606a77828e99a5b1bcc2b7ada4978b7f74685b52483d404c57626b78838f9ba6b2bdc0b5aaa096897e72675950463b30251a0f0400000000000000000000000000000000000000000000000000040e17222c36404a545f68717d88929ca7b0bac4cfcec3b9afa69c91867c70645d53473e352b20160d03000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000007121d28343e49535c656f747f8691969fa6aeb5b7afaaa8a49d9b9896959595979b9da4abb2bbc5d0c5bab1a89c92877c7065594d42352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7cabdb2a69a8f83786c584f453b30251a0f0300000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000060f17202b353e474e545c63656b7073747473716e69636059524a413931261e140b0100000000000000000000000000000000000000000000070e141820272c31363c3e45494b4e5257595c5e5a61636465666666656564615a5f5c5957544f4c4a453f3c37322d27211b150e0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505967737f8a96a3acb7c1bdb1a69a8f83786b61574b403d48525b6974808b97a5aeb8c2bab0a7998d81766960554a3f33281d1107000101000000000000000000000000000000000000000000000008121d26303b454f58636d76828e97a0aab5bfc8d2c8bfb5aaa0978d82766d63584f453a30261c1208000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000040f1a252f3a434c565f656e737e8690959ea5adaca69f9c97938f8c8a8a898a8b8f949ba2abb5c0cbcac1b8aca3978c807469584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c8793a7b0bac4beb3a79b908479685f544a3e33281c110500000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000006111b252e363e454953585b62646768696866635f58555048413a312920160d0400000000000000000000000000000000000000000000000004090f161d22262c31353a3e4042484c4d505351565859595a5a5a5a5958565153514e4b4a45403e3b35312d27231e16110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d37414d58646f7b87939da8b3bebeb3a89d93877b7064584d4138424e5965707c88949ea8b4bfbfb3a89c90857a6e63574c40352b21160b0d0d0d0a09070501000000000000000000000000000000000000030d16212b353f47535d64707c86919ca6afb9c3cecfc4bab0a79c92887d71685f544940362c22170e040000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000b15202a333c454e565e656d727d8590959da4a39c96918c8783817f7e7e7e80838d929ba6b1bdc8d1c9bcb1a69a8f8377685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b8696a0aab5c0bfb4a89c91857a6e63574b4034291d120600000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000000010b141e262e353a43494d5257595c5d5d5c5a57554f4a464038312921191005000000000000000000000000000000000000000000000000000000060d13171d22252b2f3334383d41424447474b4c4d4e4e4f4e4e4d4c4b47484542403e3b3533302b25231d18130e070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935404b57616b78838f9aa6b1bdc1b7aca3968a7f73685a51473c414c58626c7884909ba7b2bec0b5aa9f96897d7266584f453b30251a19191919151413100b0600000000000000000000000000000000000007111b252e37434c57626c75808c959fa9b4bdc7d1cac0b7aba29a8f83796e635950463c31281e14090000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000061019232b353e454d555d646d717c848f949d9b928e85807b7875737272737479818d99a4b0bcc7d3cbbfb3a89c91857a6e63574b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85919ca8b3bfc1b6aba097867b6f64584c41352a1e120700000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000040d161e252b2f393e42484c4d505152514e4c4a453f3b362f2821191008000000000000000000000000000000000000000000000000000000000003080d12171b202427292e32353639373c40414242434343424241403d3739363433302b2825211b18130d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c121c27323d47515a6874808b97a4adb7c2bcb1a59a8e82776a61564b403e49535c6975808c98a5aeb8c3b9afa6988c8175685f544a3e3328242424242421201e1b16100a0300000000000000000000000000000000010b151e27323d48525b636f7b85909ca4adb7c2cdd0c8bbb3a89d938a7e736960554a41382e23180f0500000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000009121b252d353d454d545c636c707c838f93918d827b75706b696867666769707c88939faab6c2cdccc0b5aaa096877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e687884909ba7b2bec5bab0a793877c7065594e42362b1f140800000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000050d141b20292f33383d40414446464543403f3b36312c261f171009000000000000000000000000000000000000000000000000000000000000000003080b1116191c1d24272a2a2d2d313435363737383737363534322d2e2b292825211c1a16110c09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21252e38424e5965707c88949ea8b4bfbfb4a89c91867b6f63584c4139434e5a66717d88959ea9b4c0beb3a79c9084796e63574b40343030303030302c2b2925201a130b0300000000000000000000000000000000050e16242e38424b56616a737f8b949da8b3bcc9d1ccc1b7ada49b90847a6f635a51473d32291f150a00000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b090909090909090909090706050200000000000000000000000000000000020a151d252d343c444c535c626b707b838e8d8179706b64625b5c585f6368707c88939faab6c2cdcfc4bab0a793877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576c77838e9aa6b1bdcab7aba094897d71665a4f43372c20150900000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000000000000040b11161f24282e323536393a3a39373433302c26221c160f07000000000000000000000000000000000000000000000000000000000000000000000001060b0e1014191c1e1f22222629292b2b2c2c2c2b2b2a292723221f1d1c1a16110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252b303334414c57626c78848f9ba7b2bec1b5aba0978a7e73675950463c404c57636e7984909ca7b3bebfb4a99e95887d71655a4e43393b3b3b3b3b3b383734302a231c130a00000000000000000000000000000000000a141e28313c47515a636e79838f9ba3acb8c1cad1c6bdb4a99e958b80746b61574b43392f24170e05000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221715151515151515151515151212100d0903000000000000000000000000000000040d151c242c343b434b535b626a6f7a8282786e68615b5a616467686e7279818d99a4b0bcc7d3cfc4bab0a792877b7064594d41362a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b3548535f6a76828d99a4b0bcc4b8ada1958a7e73675b5044392d21120700000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000010610151a1e2327292a2d2f2f2e2c292825211c17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000003050a0e11131313181b1d1e1f1f202020201f1e1d1b18131412110f0b07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f353b3f404748535c6975808c98a6afb9c3bab0a7998d82766960554a47474a555f6875818d98a6afb9c3b8aea5978c8075695c53484747474747474743423f3a342c231a100600000000000000000000000000000000050f18222d37414a555f69727e89929ca8b1bac5d0cdc3b8aea59c91857b6f645c53493e33271f160c020000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e222121212121212121212121211e1d1b18130d07000000000000000000000000000000040c141b232b333b424a525a616a6f7a7a6f686163676a6b6f7275797d838d929ba6b1bdc8d4ccc0b5aaa096867a6f63584c4035291e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000611232f3a46515d6974808b97a3aebacabaaea3978c8074695d5246352b21160b00000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000000000000000000060b0e14191c1e1f22232322201d1c1a16120c08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080d101212131414151514131312100d0908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f373f454a4c5353535a66717d88959fa9b4c0bfb3a89c91857a6f6357535353534f5866727d89969faab5c0beb2a79b8f84786c625753535353535353534f4e4a443c342a20160b010000000000000000000000000000000008131d27303b454f58646e77828e97a1abb6bfc9d2c8beb5aa9f968d81766c63584c44382f261c12070000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2c2c2c2c2c2c2c2c2c2c2c2c2c2a2926231d171008000000000000000000000000000000030b131b232a323a424a515960696e6f6a676a6f7275787b7e8184898f939ba2abb5c0cbd6cbbfb3a89c9185796a60564b3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a7b0bac5bcb0a5998d82766b584f453b30251a0f03000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000000000000000000000004090e111213161718171412110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070808090909080807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f484f55575e5e5e5e636e7985909ca7b3bfc0b5aa9f96897e7266585e5e5e5e5e5e636f7a85909ca8b3bfbfb4a89e94877c70655e5e5e5e5e5e5e5e5e5b59544d443a30251b100500000000000000000000000000000000030d16212c363f48545d65707c87919ca6afb9c4cecfc4b9afa69c91877c71655d54483f362c21170d0300000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a38383838383838383838383838383534322d2720181007000000000000000000000000000000020c151e272f373e4549545a6063696f73777b7e818487898d90959a9da3abb2bbc5cfd1c8bdb1a59a8e83776c5950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c8897a0abb6c1beb2a69b8f8478695f554a3f33281c1105000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000030507070a0c0c0b090605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f636a6a6a6a6a6876818d98a4b0bbc4b9afa6988d8176696a6a6a6a6a6a6a6a6976828d99a4b0bcc2b7ada4978b80746a6a6a6a6a6a6a6a6a6a66645d544a3f34291e1307000000000000000000000000000000000007121c262f38444c58626c75818d969faab5bec8d2c9c0b6aba1978e82776e645850463b30271d130800000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514543434343434343434343434343434341403c37312920170d03000000000000000000000000000007111b252f373f474f545d646a6f747a7f8286898d8f9495989c9ea5a7acb4bbc3cbd4cac1b8aca2978b8074695d5146372c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8b4bfbfb3a89c91857a6e63574c4034291d1206000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060606060606060606060606060606060606060606060606060606050300000000000000000000000000000000000000000000000000000003050610111111111111111111111111111111070605020000000000000000000000000000000000000000000000000000000000000000020506071111111111111111111111111111111006050300000000000000000005111c28333f4a555f696e757575757575757e8995a0acb8c9bfb3a79c90857975757575757575757575757e8a95a1acb8c7bdb2a69a8f837875757575757575757575726d64594e42372b2014090000000000000000000000000000000000020c151f27333e49535c646f7b85909ca5aeb8c2cdd0c5bab1a89c93897e726960554a41372d22180f05000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c4b47413931271d130900000000000000000000000000060f18212b353f484f585f636d727a80848a8e9197989b9da4a4a7a9aeb3b6bcc4cbd2cdc5bab0a79c92887c7165594e42372b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606978848f9ba7b2bec1b5aaa097877c7064594d42362a1f1207000000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000000000000104060609090909090909090909070705020000000000000000000000000002070b0f111212121212121212121212121212121212121212121212121212121212110f0b070200000000000000000000000000000000000000000001070b0e11111b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1212100d09030000000000000000000000000000000000000000000000000000000003090d1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b11110e0b070100000000000006121d2934404c57636e7981818181818181818d99a4b0bbc7c0b4a99f958d818181818181818181818181818d99a4b0bcc7beb3a89d938d81818181818181818181817e72665b4f43382c21150a000000000000000000000000000000000000050e17242f39434b56616b74808b949ea9b4bdc6d0cac1b8aca39b8f84796e635a51473c31281f140a000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5856514a41372d23180d020000000000000000000000030d162028303b454f585f686e757e848b90959a9ca0a7a7a8adafb3b4b8bec1c6cdcfc8c2bab6aba0978e82776c63584c41362a1f1303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596a76828d99a4b0bcc4bab0a795897e72665b4f44362c21160c010000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000000002070c0f1112141414141414141414141312100d090400000000000000000000050c12161a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1a16110c0500000000000000000000000000000000000000040b11161a1c1d272929292929292929292929292929281e1d1b18130d070000000000000000000000000000000000000000000000000000070d13181b1d1e282929292929292929292929292929271d1c1a16110b04000000000006121d2935404c57636e7a868d8d8d8d8d8d8d919ba6b1bdc8c3b9afa69b928d8d8d8d8d8d8d8d8d8d8d8d8d929ba6b1bdc8c1b7ada49b918d8d8d8d8d8d8d8d8d8d8b8074695d51463a2f23170c000000000000000000000000000000000000000a151f29323d47515a636f7a84909ba3acb7c1ccd1c9bcb3a89d948b7f736a61564b42382e24160e050000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746866666666666666666666666666666666666664615a51473c32261b1005000000000000000000000008131d273039404a555f686e78808990949c9ea5a8abb0b2b3b7bbbebfc3c8cccec9c4beb8b4aaa29c91877d71655c53493e33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c3645515c68737f8b96a6afb9c4baafa3978c807569584f453b30251a0f040000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000000000050c12171a1d1d202020202020202020201e1e1c18140e080000000000000000060e151c21252829292929292929292929292929292929292929292929292929292929292825211b150e060000000000000000000000000000000000060d151b20252829333434343434343434343434343434342a2926221d1710080000000000000000000000000000000000000000000000000810171d2226292a34343434343434343434343434343433292825201b150d060000000006121d2935404c57636e7a86919898989898999ba2abb5c0cbc8bfb6aba29b999898989898989898989898999ba2abb5c0cbc6bdb4aba29b989898989898989898978b8074695d51463a2f23170c00000000000000000000000000000000000000050f18232d38414a556069727e8a939da7b3bbc7d0cdc2b7ada49c90857b6f635b52483d33271e150b0100000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74727272727272727272727272727272727272726f6a61564b4034291d120600000000000000000000010c17222c374049545d636e79818c919b9ea5a9aeb4b5babebfc2c7cacbcdcbc8c3c0b9b5aea9a19a918b7f746c63584b43392f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000812202b37424e5965717c88969faab5c0bdb1a59a8e8377695f554a3f33281c11050000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000070f161c212528292b2b2b2b2b2b2b2b2b2b2a2927231e181109000000000000050e171e252b3033343535353535353535353535353535353535353535353535353535353433302b251e160e05000000000000000000000000000000040d161e252b3033343e40404040404040404040404040403f3534312d27201810070000000000000000000000000000000000000000000007101820272d3134353f40404040404040404040404040403e3433302b251e160d0400000006121d2935404c57636e7a86919da4a4a4a4a4a6abb2bbc5cfcfc6bbb2aba6a4a4a4a4a4a4a4a4a4a4a4a4a4a6abb2bbc5cfcdc4bbb2aba6a4a4a4a4a4a4a4a4a2978b8074695d51463a2f23170c000000000000000000000000000000000000000009131e28313c465059636e78838f9aa2abb7c0c9d1c7bdb4a99f958c80756c62574c43372e251b110700000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c7bbafa4988d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b6f64584c41352a1e12070000000000000000000004101b26313c465059646d75808c919aa1a9aeb4b8bfc1c4cacacdcbcac8c2bfbeb8b4afaaa59e9b908b81786e635c53493b32291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85909ca8b3bfbfb3a89c91857a6e63574c4034291d12070000000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c1000000000000000000000000000000000000000060f171f262c303335373737373737373737373635322e282119110800000000020c151e272f353b3f40404040404040404040404040404040404040404040404040404040403e3b352f271e150c0200000000000000000000000000010b151e262e353a3e404a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b41403c37302920170d030000000000000000000000000000000000000000030d17202930373c40414b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a403e3a352e261e150b01000006121d2935404c57636e7a86919da8afafafb0b1b5bbc3cbd5d7cbc3bbb5b1b0afafafafafafafafafafafb0b1b5bbc3cbd5d5cbc2bbb5b1afafafafafafafaea2978b8074695d51463a2f23170c0000000000000000000000000000000000000000040e17222c364049545e68717d88929ba7b0bac4cfcec3b9afa69c91867c70645d54473f352b21160d03000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c8bcb1a69b918d89898989898989898989898989898989898989897d72665a4f43382c2015090000000000000000000006111d28343f4b56606a727e89919ba2aab4b8bec3c8cccecbc9c4c0bfbcb8b4b3aea9a79f9c95908980786e685e544c43392b22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6977828e9aa5b1bcc0b5aa9f96887c7165594e42362c21160c0100000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000040d161f272f363b3f404242424242424242424241403d38312a21180e0400000007121c252f373f454a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453f372f251b11070000000000000000000000000007111b252e373e45494b555757575757575757575757575757574c4b47413930271d1309000000000000000000000000000000000000000009131d27303941474b4c575757575757575757575757575757554b49453e372e251b1107000006121d2935404c57636e7a86919da8b4bbbbbbbdc0c5c6c7caced3cbc5c0bdbcbbbbbbbbbbbbbbbbbbbbbbbcbdc0c5c7c8cbcfd3cbc4bfbcbbbbbbbbbbbbbaaea2978b8074695d51463a2f23170c00000000000000000000000000000000000000000008121c262f3a454e57636d76818d96a0aab5bec8d2c8bfb5aba0978e82766d63584f453b30261d1208000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5cabfb5aba19b9895959595959595959595959595959595959594897d72665a4f43382c201509000000000000000000030f1a25303b454f58636f7a84909ca1aab2bac2c8ced0c9c4c0bfb9b5b3b0aea9a7a59e9b96918c847e746e685e574e453b33291a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586974808b97a6afb9c3b9afa7968a7f7368584f453b30251a0f0400000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000010b151e262f383f464a4c4e4e4e4e4e4e4e4e4e4e4d4c48423a31281e14090000000b16212b353f484f555757575757575757575757575757575757575757575757575757575757554f483f352b21160b000000000000000000000000000b16202b353e474f5457616363636363636363636363636363625856514941372d22180b01000000000000000000000000000000000000020d18222d3741495156586263636363636363636363636363636157544f473e352b20160b000006121d2935404c57636e7a86919da8b4b7b7b7b7b7b7babcbfc4cbd2cfcbc8c7c2bfbeb7b7b7b7b7b7b7b7b7b7b7b7bcbdc0c5cbd3cfcac8c6c1bebcb7b7b7aea2978b8074695d51463a2f23170c000000000000000000000000000000000000000000030c16202b353e47535c64707c86919ca5aeb8c3cecfc4bab0a79c92887d71685f544a40362c22170e040000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cfc4bbb2aba6a4a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094897d72665a4f43382c20150900000000000000000005111c28333e4a545f68737f8b959ea9b2bac2cdd2ccc7bfb9b5b3afaaa8a5a59e9b9895908b85807a726e635e574e473e352b22190a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35434e5a66717d88959fa9b4c0bcb0a4998d8276695f554a3f33281c110500000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000207111b252e373f485055575a5a5a5a5a5a5a5a5a5a5857524a42382e23180d0200030f1a25303b454f585f63636363636363636363636363636363636363636363636363636363635f584f453b30251a0f030000000000000000000000030e1a25303a454f585f636d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e63615a51473c31251b110700000000000000000000000000000000000005101b26313c47515a61636e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d635f584f453a30251a0e030006121d2935404c57636e7a86919da8acacacacacacacafb0b4bac2cbd4cec5bdb7b3b2acacacacacacacacacacacacb0b1b5bbc3cbd5ccc4bcb6b2b1acacacaca2978b8074695d51463a2f23170c0000000000000000000000000000000000000000000006111b252e36434c57626b75808c959ea9b4bdc7d1cac0b8aba29a8f83796e635950463c31281e14090000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d4cbc2bbb5b1afacacacacacacacacacacacacacacacacaca094897d72665a4f43382c20150900000000000000000006121d2934404b57636e79848f9ba5aeb8c2cbd3ccc4bcb7afaaa8a69f9c999695908c8984807b756f6a645d544e473e362e251a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2934404c57636e7985909ca7b3bfbfb3a89c90857a6e63574c4034291d140900000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000000000000000000000020b141c202b353e47505960636565656565656565656564625b52483d32271c10050005111c28333f4a555f696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685f554a3e33281c1105000000000000000000000005111c28333e49545f686e787a7a7a7a7a7a7a7a7a7a7a7a7a7a796f6a61564b3f352b21160b00000000000000000000000000000000000006121d2934404b56616a6f797a7a7a7a7a7a7a7a7a7a7a7a7a7a786e685f54493e33281c11050006121d2935404c57636e7a86919da0a0a0a0a0a0a0a0a3a5aab1bac4cec7bdb5ada8a6a0a0a0a0a0a0a0a0a0a0a0a0a4a6abb2bbc5cfc6bcb3aca7a5a0a0a0a0a0978b8074695d51463a2f23170c00000000000000000000000000000000000000000000010b141e26323d48525b636f7a84909ca4adb7c2cdd1c8bbb3a89d938a7e736a60564a41382e23180f0500000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd3cbc4bfbcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aca094897d72665a4f43382c20150900000000000000000008141f2b36424e5965707c88949ea8b6bec8d2cfc6bcb3aca69f9c9896908e8b8884817d79746f6a6360595449453e362e261e140a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6876818d99a7b0bac0b5aa9f96887d71655a4e43382d23180d02000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c100000000000000000000000000000020a131b242d303a454f5860696e71717171717171717171706b62574c4035291e12070006121d2934404c57636e7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574c4034291d1206000000000000000000000006111d2934404b57636e79848585858585858585858585858585867b6f63584f453b30251a0f0300000000000000000000000000000000030f1a25303b454f58636f7b86858585858585858585858585858584796e63574b4034291d11060006121d2935404c57636e7a8691959595959595959595989aa1aab4bfcac2b7ada49d9b959595959595959595959595999ba2abb5c0cbc1b6aca39c9a9595959595958b8074695d51463a2f23170c0000000000000000000000000000000000000000000000040d16232e38424b56606a737f8a949da8b3bcc8d1ccc1b7ada49b90847a6f635b52483d32291f150a00000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd4cfcac8c7c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b7aca094897d72665a4f43382c2015090000000000000000000b16222e3945505c67737f8a96a4adb7c6cfd2c8beb6aca39c96908d8885827f7c7975716e6964615a565049443a352e261e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5867727e8997a0abb5c1b9afa6978c8074695a51473d32271c1005000000000000000008141f2b36424e5965707c87939faab6c1beb3a79b9084796d61564a3f33281c10000000000000000000000000000109121a232c343d4549545f686e797c7c7c7c7c7c7c7c7c7d7b7064584d41362a1e1307000e1a25313d48545f6b76828686868686868686868686868686868686868686868686868686868074685d51463a2e23170c000000000000000000000005111c28333e49545f68737f8b969191919191919191919191968b7f74685f544a3e33281e140a0000000000000000000000000000000005111c28333e4a545f68747f8b969191919191919191919191968b7f73685f54493e33281c11050006121d2935404c57636e7a86898989898989898989898c919aa5b0bdc7bfb3a89d948f8989898989898989898989898d929ba6b1bfc9beb2a79c928e898989898989898074695d51463a2f23170c00000000000000000000000000000000000000000000000009141e28313c465059636e79838f9ba2acb8c1cad1c7bdb4a99e958b80746b61574b43392f24170e05000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe4ded9d5d3d2cecececececececececececececec3b7aca094897d72665a4f43382c2015090000000000000000020d1924303b47535e6a75818d98a4afbbc7d2cec3b8aea59c938e85817d7a7673706e686667645e56514b4640382f2b251e160d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35414c58636f7b86919ca8b4bfbdb2a69a8f83786b61574b4035291e1409000000000000000008141f2b36424e5965707c87939faab5b5b5b3a79b9084796d61564a3f33281c100000000000000000000000000008111a222b333c454d565f636e7881888888888888888888877c7065594e42372b1f1408000e1a25313d48545f6b76828e919191919191919191919191919191919191919191919191918b8074685d51463a2e23170c0000000000000000000000030e1a25303a454f58636f7a85909c9c9c9c9c9c9c9c9c9c9c9b9084796e63574b42382e23190d0300000000000000000000000000000006121d2934404b57636e7984909b9c9c9c9c9c9c9c9c9c9c9c90857a6f63584f453a30251a0e030006111d2934404b57636e787e7d7d7d7d7d7d7d7d7d7d808c98a4adb7c2beb2a69b8f837e7d7d7d7d7d7d7d7d7d7d7d818d99a6afb9c3bcb1a59a8e827e7d7d7d7d7d7d7c7064594d42362a1f1308000000000000000000000000000000000000000000000000040e17222d37404a555f68727d89929ca7b0bac5cfcdc3b8aea59c91857b70645c53493e33271f160c020000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe4ded9d5d3d2cecececececececececececececec3b7aca094897d72665a4f43382c2015090000000000000000020e1925313c48535f6b76828d99a5b0bcc7d3cbbfb4a99e958e827c75716e696865636b70726e635f585049423a332b211c150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111d29343f4b56616a77828e9aa7afb9beb3a89d93877b6f64584d42382e23190e030000000000000008141f2b36424e5965707c87939faaaaaaaaaaa79b9084796d61564a3f33281c10000000000000000000000000071019212a333b444d555e666f75808c92949494949494958d81756c62584c41362a1f1308000e1a25313d48545f6b76828e999d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b8074685d51463a2e23170c0000000000000000000000000b16202b353e4b56606a75818c98a3aca8a8a8a8a8a8a8a89e94897d72665b52483d32261c1208000101010101010101010101010105111c27323d48525b66727d89949ea8a8a8a8a8a8a8a8aca3988c81756a6056473e352b20160b000005111c28333e49545f686e72727272727272727272727c87949da8b3bfbfb3a89c91857a72727272727272727272727d89969faab5c0beb3a79b90847a727272727272706c62574c41352a1e13070000000000000000000000000000000000000000000000000008131d27303b454f58646d77828e97a0abb6bfc9d2c8beb5aa9f968d81766c63584d44382f261c12070000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd4cecac7c6c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b7aca094897d72665a4f43382c2015090000000000000000030e1a26313d4854606b77828e9aa5b1bcc8d4cabeb3a79c90847a706b66635f5d646b707c7e756e686059524b433c302b251e1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a969faab5c0b7ada4968a7f73685b52483d32271c11050000000000000008141f2b36424e5965707c87939e9e9e9e9e9e9e9b9084796d61564a3f33281c100000000000000000000000070f182129323a434c545d656e747f8b919aa29f9f9fa49c90857b6f645c53493e33281d1106000e1a25313d48545f6b76828e99a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c00000000000000000000000007111b25313c46505964707c87929ca7b2b4b4b4b4b4b8aea5998e82776b62574c40362c22170c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d131e2a35404c57626c77828e99a5aeb8b4b4b4b4b4b2a79c92877c7064595046372e251b11070000030e1a25303a454f585f63666666666666666666666b78838f9ba6b2bdc1b5aaa097897e726766666666666666666e7a85909ca8b3bfbfb4a99e95887c71666666666664625b52483d32271c110d08030000000000000000000000000000000000000000000000030d16212b353f48545d65707c86919ca6afb9c3cecfc4b9afa69c91877d71655d54483f362c21170d0300000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd3cbc4bfbcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aca094897d72665a4f43382c2015090000000000000000030f1a26313d4954606b77838e9aa5b1bcc8d3c7bcb0a4998d82766a625b6163676e727b848a80796f6a625b534c453b352f2720181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37404c58636f7a85919ca8b3bebdb1a69a8f83776b62574c4035291f150a0000000000000008141f2b36424e5965707c879393939393939393939084796d61564a3f33281c1000000000000000000000060f172028313a424b535c646d737f8a9099a1aaababa89d948b7f746a61564b43392f24190e03000e1a25313d48545f6b76828e99a5b0b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea2978b8074685d51463a2e23170c000000000000000000000000010b17222d37404c57626c77828e99a4adb7c2bfbfc7beb4a89c91867c70645950463c31261b181818181818181818181818181818181b26313c46505964707c87929ca7b5bec7bfbfc2b7ada4998e82776c6257494037261e150b010000000b16202b353e474f54575b5b5b5b5b5b5b5b5b5b6974808c97a5aeb8c3bab0a7998d8176695f5b5b5b5b5b5b606976828d99a8b1bac2b8aea5978b8074695b5b5b5b5957524b42382e241d1b17130d06000000000000000000000000000000000000000000000007111b252f37444c57626c75818c969faab5bec7d1c9c0b6aba1978e82776e645850463b30271d130900000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d4cbc2bbb5b1afabababababababababababababababababa094897d72665a4f43382c2015090000000000000000020e1925313c48535f6a76828d99a4b0bccad4c9bdb2a69b8f8378706b6d6a6f72777e8490908c827a706b635d554a453f37302920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d29343f4b56606a76818d99a5aeb8beb3a79d93877c7064594d43392f24190d0300000000000008141f2b36424e5965707c878787878787878787878784796d61564a3f33281c10000000000000000000040d161f273039414a525b636c727e86919ca0a9b1b7aca29b8f83796e635a51473b32291f150a00000e1a25313d48545f6b76828e99a5b0bcc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b9aea2978b8074685d51463a2e23170c0000000000000000000000000008131d27333e48525b66727d89949da8b3bfc9d3ccc1b6aba1978c80756960554a3f342824242424242424242424242424242424242428343f4a55606975808c98a3acb6c5cecbcabfb3a89d94897d72665b5248393027160d040000000007111b252e373e45494b4f4f4f4f4f4f4f4f4f5a65717d88959fa9b4c0bfb3a79c90857a6e63574f4f4f4f505867737e8a97a1abb6c1bdb2a69b8f83786b62574f4f4d4c48423a322a292926221d170f0800000000000000000000000000000000000000000000020c151e27333e48525b646f7b85909ca5aeb8c2cdd0c5bab1a89c93897e726960554a41372d22180f05000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec4bbb2aaa5a4a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094897d72665a4f43382c2015090000000000000000010c18232f3a46525d6974808c97a7b0bac4cfcabeb3a89d938d817b7978797b7e828990959a928e837c716d655e554f48413930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505966727d89959ea9b4c0b6aca3978b7f74685c53493e33271d130800000000000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7064594d41362a1f13070000000000000000010b151e262f384049515a626c717d869097a0abb1bab0a79c92897d72695f554a41372b22190f0500000e1a25313d48545f6b76828e99a5b0bcc8cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc5b9aea2978b8074685d51463a2e23170c00000000000000000000000000030d19242e38424b57636e79848f9ba6afb9c4ced0c5bab1a89c90857a6f63574c43392f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f35404c57636f7a85909ca7b3bcc5d6cec4b9afa69b8f84796e63574b4238292017060000000000010b151e262e353a3e4043434343434343434c57636e7a84909ca7b3bec0b5a99f95897d7166574e4543434c58646f7b86919ca8b4bfbeb3a89d93877c7064594d4342413d383636363534312d2720180f0600000000000000000000000000000000000000000000050e16242e39424b56616a747f8b949ea8b4bcc6d0cac1b8aca39b8f84796e635a51473c31281f140a000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5cabfb5aaa19b9894949494949494949494949494949494949494897d72665a4f43382c2015090000000000000000000a15212d38444f5b66727e8997a0aab5c1caccc1b7ada49b918d87858485868a8e929c9ea29c948f857d736f635f58514941372d22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d37404b57636e7984909ba7b0babcb2a69b8f83786c62584c40372d22170b01000000000006111d28333f4a5560696e7070707070707070707070706b62574c4035291e1207000000000000000207111b252e373f485059616b707c8590969fa7b0bab5aaa0978e82776d64584f453931271a12090000000e1a25313d48545f6b76828e99a5b0bcc8c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000a141f28333e49545f68737f8b969faab5c0cbd4cac1b4a99f958a7f73675c53493e3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3e49535c67737f8a959fa9b4c0cbd7cbc0b5aa9f968b7f73685f54493e33281c0f06000000000000040d161e252b30333438383838383d40424a555f6876818d98a7b0bac3b9afa6988c8075685e544942424b56616a77838e9aa6b1bdc2b7ada4968b7f73685a514742424242424242413f3c37302820170d03000000000000000000000000000000000000000000000a141f29323d47515a636e7a84909ba3acb6c1ccd1c9bcb4a89e948b7f746a61564b42382e24160e050000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bcb1a59b918c89898989898989898989898989898989898989897d72665a4f43382c20150900000000000000000007121e2935414c58636f7b86919ca8b1bac5d0c7bdb4aba19b9895908f909695999ca3a9aba49d9590867f756e69615a51473c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d28333e4a545f6874808c97a0abb5bfb3a89d94887c70655a51473c31251b11060000000000040f1a25303b4650586063646464646464646464646464625b52483d32271c1105000000000000020b141c202b353e475059606a6f7b8490959ea6afb8b8aea59c91867c70645d54483f362920170a010000000e1a25313d48545f6b76828e99a5b0bcbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb9aea2978b8074685d51463a2e23170c0000000000000000000000000000030e1a25303a454f58636f7a85909ca8b3bcc6d0cec3b9afa69b8f83786d63584d474747474747474747474747474747474747474747474d58636d78838f9ba6afb9c3ced6cabfb3a89c90857a6f63584f453a30251a0e0000000000000000060d151b202528292c2c323a42484c4d4d4f5867727e8997a0aab5c1beb2a79b9084796e63574d4d4d4d515a68747f8b97a5aeb8c2bdb1a59a8e82776a61564d4d4d4d4d4d4d4d4c4b47403930271d130800000000000000000000000000000000000000000000050f18232d37414a556069727e89939ca7b2bbc7d0cdc2b7ada49c90857b6f635b52483e33271e150b0100000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c6bbafa4988c817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b6f63584c41352a1e120700000000000000000006121d29343f4b56606a76818d97a1abb6bdc6cdc5bbb2aba6a69f9c9b9c9fa6a5a7acb4b4ada59f97918a80796f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5864707b86919ca8b4bcb7ada4988c81756a60564b3e352b20160b0000000000010c17212c363f4850555759595959595959595959595957524a42382e23190e030000000000020a131b242d303a454f5860696f7a838f949ea5aeb7bfb4a99e958c80756c62574d44382f26191007000000000e1a25313d48545f6b76828e99a5b0b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aea2978b8074685d51463a2e23170c0000000000000000000000000000000b16202b353e4b56606a75818c98a3acb6c1ccd3c8bfb3a89d93887d71655a5152525252525252525252525252525252525252525252515a65717d88939da8b6bfc8d3cbc1b6aca3988c81756a6056473e352b20160b000000000000000000040b11161a1c1d252f37424b525759595959636f7a85919ca8b3bfbfb4a99e94887c70655959595959595965707c88949ea9b4bfbfb4a89c91867b6f645959595959595959595856514940372d22170d010000000000000000000000000000000000000000000009131d27303b465059636e78828e9aa2abb7c0c9d1c7beb4a99f958c80756c62574c43372e251b110700000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74717171717171717171717171717171717171716f6a61564b4034291d120600000000000000000004101b26313c47515a65717c87919ca4adb5bdc5cdc2bbb5b1afa9a7a7a8aaafb1b2b6bcbdb6aea7a09c918c827b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b57616b76818d99a3acb6bdb3a89c90857a6f63574e453a2f24190e03000000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e140900000000000109121a232c343d4549545f686e79828e939da5aeb6bfb7ada49c90847a6f635b52483c33271f150800000000000e1a25313d48545f6b76828e99a5a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a2978b8074685d51463a2e23170c00000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1ccc1b7ada4998d81766b615e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616b76818d99a4adb7c7cfd4c9bdb2a79c92877c70645a5147372e251b11070000000000000000000001070b0e16212b353f48525b6264646464646a77828e9aa5b1bcc2b8aea5978b80746864646464646464646c7884909ba7b2bec1b6aba0978a7e736764646464646464646463605a51473c31261b100400000000000000000000000000000000000000000000040e17212c363f49545e68717d88919ba7afb9c4cfcec3b9afa69c91867c70645d54473f352b21160d03000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746866666666666666666666666666666666666663615a51473c31261b1005000000000000000000010d17222d37404c58636c75818c949da5adb4bbc2c7c4bfbfb9b4b3b2b3b5b9bcbdc1c5c3bdb7b0aaa09c91857c71655a4e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25323d48525b65717d88939ca7b2bdb5aa9f968a7f73685e54493e33271f150a0000000000020c161f272f363b3f40424242424242424242424241403d38312a21180e04000000000008111a222b333c454d565f636e78818d929ca4adb5bec0b3a89d938a7f736a60564b42382c23170e0500000000000e1a25313d48545f6b76828e999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978b8074685d51463a2e23170c000000000000000000000000000000010b17222d37404c57626c77828e9aa4adb7c2cdd1c7bdb3a89c91867b6f69696969696969696969696969696969696969696969696969696f7b86919ca8b3bdc7d6cdc2b7ada4998e82776c6257494037261e150b01000000000000000000000000030f1a25303b454f58626c707070707070737f8b96a2adb9c7bdb2a69a8f83787070707070707070707075818c98a3afbbc5bab0a7998d8276707070707070707070706f6a60564b3f34291d1206000000000000000000000000000000000000000000000007121c262f3a454e57636c76818d969faab5bec8d2c8bfb5aba0978e82766d63584f453b30261d1208000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5856514941372d22180d080300000000000000000008131d27333e49535c636f7a838f949da4abb3b7bdc1c4c8c3c0bfbebfc0c3c9c7c2bfb9b5ada7a09c908a7f736c63584d41362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b18232e38414d58636c77838e9aa4adb7b9afa69b8f83796e63574b42392f24190f050000000000050e171f262c30333436363636363636363636363635322e28211911080000000000071019212a333b444c555e656f75808c929ba3acb4bdc0b7aba29a8f83796e635a51473a32281b13060000000000000e1a25313d48545f6b76828e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8b8074685d51463a2e23170c0000000000000000000000000000000008131d27333e48525b66727d89949ea8b4bfc9d3ccc1b5aaa0978b8075757575757575757575757575757575757575757575757575757575808b97a0aab5c1ccd6cabfb4a89e94897d72665b5248393027160d040000000000000000000000000005111c28333e4a555f68777c7c7c7c7c7c7c7e8994a0acb7c3beb3a89d93887d7c7c7c7c7c7c7c7c7c7c7c7f8a96a1adb9cabfb3a89c90857c7c7c7c7c7c7c7c7c7c7c7a6f63584c4135291e12070000000000000000000000000000000000000000000000020c16202b353e47535c64707b86919ca5aeb8c3cecfc4bab0a79c92897d71685f544a40372c22170e040000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c4b47413930271d1b17130d060000000000000000030d19242f39434a56606a707c848f949ba2a8adb4b5babcbebfc0c4c0bfbebdbbb7b3afaaa49d96918a7f736e655c53493e33281d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e49535c67727e89949da8b3bdb3a89d94887d71665c53483e33281f140a000000000000060e161c212528292a2a2a2a2a2a2a2a2a2a2a2a2927231e1811090000000000040e172129323a434c545d646e747f8b919aa2abb3bcc4b9afa79b92887d71685f544940372a21180b020000000000000c18242f3b46525e6975808383838383838383838383838383838383838383838383838383837e73675c5044392d22160a00000000000000000000000000000000030d19242e38424b57636e79848f9ba6afb9c4cecfc4bab0a79c90848181818181818181818181818181818181818181818181818181818184909ca7b0bac4cfcec4b9afa69b8f84796e63574b423829201706000000000000000000000000000006121d2934404c57636e7985878787878787898e97a2adb8c4c1b7ada4978d8887878787878787878787878a8f99a3aebac5c0b5aa9f969087878787878787878787877f73685c5045392e22160b00000000000000000000000104040404040404040404040006111b252e36434b57616b74808b959ea9b4bdc7d1cac0b8aba29b8f83796e635950463c31281e14090000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514543434343434343434343434343434341403c37302e292926221d170f0800000000000000000a151f29313c465059626b707c838d919b9da4a8abb0b1b2b3b5b9b5b3b3b1afada8a69f9c948f867f736f655e554c43392f241a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a242f39434c57636e79838f9ba4adb7b7ada4998e82766c62584c42382e24190d03000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e0800000000000009131e28313a424b535c646d737f8a9099a1aab2b4b4b4b5aa9f968d81766d63584f453930271a1108000000000000000c17232e3a45515c667075777777777777777777777777777777777777777777777777777777736e655a4f43382c21150a00000000000000000000000000000000000a141f28333e49545f68737f8b969faab5c0cbd4cac0b4a99e95908c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959ea9b7c0cad4cbc0b5aa9f968b7f73685f54493e33281c0f06000000000000000000000000000006121d2934404c57636e7a8591939393939394979ea7b1bcc7c6bdb4a79e979493939393939393939393939699a0a9b3bdc8c4b9afa69f9c939393939393939393938a7f73685c5045392e22160b0000000000000003070a0c0c101010101010101010101010100b141e26323d48525b636f7a84909ba4adb7c1ccd1c8bcb3a89d938a7e736a60564b41382e23180f0500000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a39393939393939393939393939393939393939393534312d2720180f0600000000000000050f17222c364049525b626b707a81898f93999ca0a7a5a7a8aaafaaa8a7a5a4a49d9b96908b847d736e655e554d453b33291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f28333e4a555f68727e8a939da8b1b1b1a79c92887c70655b52483d33271d13080000000000000002070c0f111213131313131313131313131312110e0904000000000000020d18232d38414a525b636c727e86919ca0a9a8a8a8a8a8aea59c91867b70645c53473f352820170901000000000000000a15212c37424c565f66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67655e554b40352a1f14080000000000000000000000000000000000030e1a25303a454f58636f7a85909ca8b3bcc6d0cec3b8aea59e9c989898989898989898989898989898989898989898989898989898989c9ea5aeb8c8d0d6cabfb3a89c90857a6f63584f453a30251a0e00000000000000000000000000000006121d2934404c57636e7a85919d9e9e9e9ea0a2a7afb8c1cbcdc4b7aea7a19f9e9e9e9e9e9e9e9e9e9e9ea1a3a9b0b9c2ccc9bfb7afaaa89e9e9e9e9e9e9e9e9e968a7f73685c5045392e22160b000000000003090e121517181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b16232e38414b56606a737f8a939da8b3bcc8d0ccc1b7ada49b90847a6f635b52483d32291f150a00000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145454545454545454545454545454545454545454545413f3c37302820170d030000000000000008121d263038424a525b626a6f767d83898e919797999b9c9fa7a09c9b9a9896938f8a857f7a716c655e554e453d342b22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e79838f9ba4a6a6a6a6a2998d81766c62574c40372d22180d02000000000000000001040606080808080808080808080807070503000000000000000005101b27323d47515a626c717d869097a09c9c9c9c9c9c9c9c9e948b80746b62574c43372e25180f06000000000000000007121d28323d464f565c5e6060606060606060606060606060606060606060606060606060605c5a554d453b31261b10050000000000000000000000000000000000000b16202b353e4b56606a75818c98a3acb6c1ccd2c8beb6aea9a7a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a7a9aeb6bec8d8ccc1b6aca3988c81756a6056473e352b20160b00000000000000000000000000000006121d2934404c57636e7a85919da8aaaaaaacadb1b8bfc8d1d5c7bfb7b1acabaaaaaaaaaaaaaaaaaaaaaaadaeb3b9c0c9d2d0c7bfb9b5b3aaaaaaaaaaaaaaaaa2968a7f73685c5045392e22160b00000000050c13181d202323272727272727272727272727272727272728313c465059636e79838f9aa2abb7c0cad1c7bdb4a99e958b80746b61574b43392f24170f05000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51505050505050505050505050505050505050505050504c4b47403930271d130800000000000000030d161f28313a424a525960636d71797e8286898c8e8f9196919691908e8c8a87837f7b746f69635c554d453e352d241a12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f49545f68727e89939a9a9a9a9a9a9a91877c70645a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000006121e2934404b56616b707c859096919191919191919191919190847a6f635b52483c33271e1508000000000000000000030e19232d363f464c5152555555555555555555555555555555555555555555555555555555504f4b453d342b21170c0200000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1cfc6beb8b4b3afafafafafafafafafafafafafafafafafafafafafafafafafafafafb3b4b8bec6cfd4c9bdb2a79c92877c70655a5147372e251b110700000000000000000000000000000006121d2934404c57636e7a85919da8b4b5b5b7b8bcc1cacbcdd2cfc7c1bbb8b6b5b5b5b5b5b5b5b5b5b5b5b9babdc2cacbced2d0c9c4c0bfb6b5b5b5b5b5b5ada2968a7f73685c5045392e22160b000000050d151c23282c2e2f3333333333333333333333333333333333332c37404a545f68717d88929ca7b0bac4cfcec3b8aea59c91867b70645c53493e33271f160c020000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5856514940372d22170d0100000000000000060f18212a313a424950565d63686e72767b7e80828485868686858483817e7b78736f6a636059534b453d352d251c140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25303a454f58636e78838f8f8f8f8f8f8f8f8f8d81766a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b848585858585858585858585858585857e726960554a42382b23160e050000000000000000000009131c262e363d4245464949494949494949494949494949494949494949494949494949494443403b342d241b110700000000000000000000000000000000000000010b17222d37404c57626c77828e9aa4adb7c2cdd6cfc8c3bfbebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebfc3c8cfd6cdc2b7ada49a8e82776c6257494037261e150b0100000000000000000000000000000006121d2934404c57636e7a85919da8b4bdbdbdbdbdbdbebfc2c8ced6cbc6c3c8c3c0bfbdbdbdbdbdbdbdbdbdbdbdbdbfc0c3c8cfd3cecbcac8c3bfbebdbdb9ada2968a7f73685c5045392e22160b0000030c151e252c32373a3b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3b454f58636d76828e97a0aab5bfc8d2c8beb5aa9f968d81766c63584d44382f261c12070000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746868686868686868686868686868686868686868686868686863605a51473c31261b10040000000000000000071119212a313940464b54585f63666a6f72757778797a7a7a7979777573706b6863615a555048433b342d251d140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202b353e49545e68717e83838383838383838383827b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000006121e2934404b56616b6f787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a726e645950463a31281b12060000000000000000000000030c151e262d32373a3b3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d393835312b241c140b01000000000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4bfc9d3d8d2cecbcac6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6cacbced2d8d6cabfb4a89e94897d72665b5248393027160d040000000000000000000000000000000006121d2934404c57636e7a85919da8b1b1b1b1b1b1b1b3b4b8bec6ced8cfc7bfb9b4b3b1b1b1b1b1b1b1b1b1b1b1b1b3b4b9bfc6cfd8cfc6beb8b4b3b1b1b1ada2968a7f73685c5045392e22160b000009131c252e363c4245464a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a47545d64707c86919ca6afb9c3cecfc4b9afa79b91887d71655d54483f362c21170d0300000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74737373737373737373737373737373737373737373737373736f6a60564b3f34291d1206000000000000000000091119212830373c44474f54575a616366696b6d696e6f6e696d6b6a6764625b5856514a464038322b241c140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f3a454e57636d7177777777777777777777776f6a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a61646d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645e544940362a21180a02000000000000000000000000050d151c23282c2e2f3232323232323232323232323232323232323232323232323232322d2c2a26211b140c03000000000000000000000000000000000000000000030d19242e38424b57636e79848f9ba6afb9c4ced9ddd9d6d6d2d2d0ccc9c8c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c9caccd1d2d2d6d6d9ddd9cec4b9afa69b8f84796e63574b423829201706000000000000000000000000000000000006121d2934404c57636e7a85919da6a6a6a6a6a6a6a6a7a9aeb5bec8d2c8bfb6afa9a7a6a6a6a6a6a6a6a6a6a6a6a6a7a9afb6bfc8d2c8beb5aea9a7a6a6a6a6a2968a7f73685c5045392e22160b00030e18232c363e464c505255555555555555555555555555555555555555555555555557626c75808c959fa9b4bdc7d1c9c0b7aba29a8e82776e645950463b30271d130900000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bcb0a5998d817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6f63584c4135291e12070000000000000000000009111820272c31373e45494b5156585b5d60585f6363635f58605e5c5957524c4b47413b362f28221a140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202b353e47545d63666c6c6c6c6c6c6c6c6c6c6c63615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414a515658616363636363636363636363636363635b59544d443830261911080000000000000000000000000000050c13191d21232426262626262626262626262626262626262626262626262626262622211f1b17110b0300000000000000000000000000000000000000000000000a141f28333e4a545f68737f8b969faab5c0cbd7dfe4e2ddd4cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdbec1c7cdd5dde2e4e2d7cbc0b5aa9f968b7f73685f54493e33281c0f06000000000000000000000000000000000006121d2934404c57636e7a85919a9a9a9a9a9a9a9a9a9b9ea5aeb8c2cdc3b9afa69f9c9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6afb9c3cec3b8aea59e9b9a9a9a9a9a968a7f73685c5045392e22160b0007121d28323c464f565b5d616161616161616161616161616161616161616161616161615b636f7b85909ca4adb7c2cdd0c7bbb2a79c93897e726960554a41372d23180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb2a69c928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a877c7064594d42362a1f13080000000000000000000000070f161d22262e353a3e41474b4c4f52544f55575857554f5453504d4c4842403c37312c261f17120a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e36444c54585a60606060606060606060605856514940372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000009131e28313a41474b4d56575757575757575757575757575757504e4a443d34281f16090000000000000000000000000000000003090e121517181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b161514100c0701000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca8b3bcc6d0dae5e0d6cdc4bcb6b3b1b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b2b3b7bdc5cdd7e0ebe2d6cabfb3a89c90857a6f63584f453a30251a0e00000000000000000000000000000000000006121d2934404c57636e7a858e8e8e8e8e8e8e8e8e8e90959ea9b4c0cac0b4a99f95908e8e8e8e8e8e8e8e8e8e8e8e90959fa9b4c0cbbfb4a99e95908e8e8e8e8e8e8a7f73685c5045392e22160b000a15202c37424c565f66696d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6a737f8b949da8b3bfcad6ccc1b6aca39b8f847a6e635a51473c31261b1005000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b5aba29c9996969696969696969696969696969696969696969696969693877c7064594d42362a1f1308000000000000000000000000060d13161e252b3033373c4041444648454a4c4c4c4a4549474441403d3834312d27221c160f070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e26333c44494d4f55555555555555555555544c4b47403930271d130800000000000000000000000000000000000000000000000000000000000000000000000000040e17212931383d40414a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342c24170f0600000000000000000000000000000000000003070a0c0c0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0a0a0805020000000000000000000000000000000000000000000000000000000b16212b353f4b56606a75818c98a3acb6c1ccd7e1dbd0c6bcb4aca7a6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a6a8adb4bdc7d1dbe2d7ccc1b6aca3988c81756a6056473e352b20160b00000000000000000000000000000000000006121d2934404b57636e79828383838383838383838384909ba7b0bac4bfb3a79c908582838383838383838383838385909ca7b3bec7beb3a79b9084838383838383837e72665b4f44382d21150a000c17232e3a45505b667074787878787878787878787878787878787878787878787878787878787879848f9ba7b2bec9d5d0c6bcb4a89e948b7f746a61564b4034291d1206000f1b26323d4955606c77838f9aa6b1bdc9d4dacfc5bbb3aba6a5a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e93877c7064594d42362a1f13080000000000000000000000000003080d151b2025282d313435383b353b3f4040403f3b353b393635322e2926221d17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d16232c333a3f42434949494949494949494949413f3c37302820170d03000000000000000000000000000000000000000000000000000000000000000000000000000007101921282d3234353e404040404040404040404040404040383735302b241c1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1dcd7ccc1b6aca39d9a989898989898989898989898989898989b9da4adb7c1ccd8e0d4c9bdb2a79c92877c70655a5147372e251b110700000000000000000000000000000000000005111c28333e4a545f686e77777777777777777777777e8a97a0abb5c1beb3a79c9084797777777777777777777777808b97a5aeb8c2bdb1a69a8e8377777777777777726e64594e43372c201509000c18232f3b46525d69748084848484848484848484848484848484848484848484848484848484848385909ca7b3bfcad6d6cdc2b7ada49c90857b6f64584c41352a1e1207000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5ccc3bbb5b2b0adadadadadadadadadadadadadadadadadadadadadadaa9e93877c7064594d42362a1f1308000000000000000000000000000000040b11161a1d222629292c2f2b303334353433302b302d2a2927231e1b18130d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005131b232a303437373d3d3d3d3d3d3d3d3d3d3d3534312d2720181006000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a333434343434343434343434343434342d2c2a26211b130c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d37404c57626c77828e9aa4adb7c2cdd9d5c9beb3a79d938f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8f939da8b3becad5d8cdc2b7ada49a8e82776c6257494037261e150b01000000000000000000000000000000000000030f1a25303b454f585f636c6c6c6c6c6c6c6c6c6c6f7b86919ca8b4bfbfb4a99e95887d716c6c6c6c6c6c6c6c6c707c88949ea9b4bfbfb4a89c91867b6f6c6c6c6c6c66645d544a3f34291e1307000d1924303c47535e6a76818d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90959fa9b4c0cbd7dcd1c7beb5a99f958c8074695d52463a2f23180c000f1b26323d4955606c77838f9aa6b1bdc9d4e0dcd3ccc5c0bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b5aa9e93877c7064594d42362a1f13080000000000000000000000000000000001070b0e13181b1d1e212321252829292928252124221f1e1c1814100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c3232323232323232323232292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1e1e2729292929292929292929292929292921201e1b16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4bfc9d3d4c8bdb1a69a8f8281818181818181818181818181818181838f9ba6b2bdc9d4d6cabfb4a89e94897d72665b5248393027160d0400000000000000000000000000000000000000000b16212b353f474f5457606060606060606060616a77828e9aa5b1bcc3b8aea5978c8075695b606060606060626c7884909ba7b2bec1b6aba1978a7f7367596060605b59544d443a30261b1005000d1924303c47535e6a76818d989b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6afb9c3ced9e1d7cec3b9afa6988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6b1bdc9d4e0e4dcd5cfcbc8c7c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c1b5aa9e93877c7064594d42362a1f13080000000000000000000000000000000000000003080d1012121512161a1c1d1e1d1c1a1612161312110e0904020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1e202026262626262626262626261e1d1b18130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161513100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242e39424b57636e79848f9ba6afb9c4ced3c8bcb0a5998e8276767676767676767676767676767678838f9aa6b2bdc9d4cec4b9afa69b8f84796e63574b42382920170600000000000000000000000000000000000000000007111b252e373f454a4b5454545454545454515a68737f8a96a4adb7c1beb2a79b8f84786c625754545454535c6975808c98a6afb9c3bab1a8998e82776a605654544f4e4a443d342a20160c01000d1924303c47535e6a76818d98a4a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a9afb6bfc8d3dde8ddd3c9bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8d8d8dad6d4d3d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0cdc1b5aa9e93877c7064594d42362a1f1308000000000000000000000000000000000000000000020406070a070b0f11121212110f0b070a0707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214151b1b1b1b1b1b1b1b1b1b1a1212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607101111111111111111111111111111110a0908050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28333e4a545f68737f8b969faab5c0cbd6cbbfb4a89c91867c706a6a6a6a6a6a6a6a6a6a6a6a717d88939da8b3becad5cbc0b5aa9f968b7f73685f544a3e33281c0f06000000000000000000000000000000000000000000010b151e272e353b3e4049494949494949494d5864707b87939da8b3bebfb4a89e94877c7065594d4949494f5a66717d88959fa9b4c0bfb3a89c91857a6f63584c4944433f3a342c241a110700000d1924303c47535e6a76818d98a4b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b3b4b9bfc6cfd8e2ecded2c7bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc1b5aa9e93877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000305060606050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090f0f0f0f0f0f0f0f0f0f0f0706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bcc6d0ccc1b6aba1978c807569605e5e5e5e5e5e5e5e616a76818d98a4adb7c1ccd6cabfb3a89c90857b6f63584f453b30251a0f0000000000000000000000000000000000000000000000050e161e252b3033343d3d3d3d3d3d3d404c57626b78838f9aa6b2bdc2b7ada4978b8074685b52483d404c57636e7a85909ca7b3bfc0b5aaa096897e72675950463b3734302a241c130a0100000d1924303c47535e6a76818d98a4b0bbbebebebebebebebebebebebebebebebebebebebebebebebebebfc0c3c8cfd7dfe9e4ded2c7bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b5aa9e93877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a0906020000000000000000000306070811111111111111111111111111111111110b0b09060200000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1ccd0c5bab1a89c90857a6f635753535353534f58646f7b85919ca8b3bdc6d1ccc1b6aca3988c81756a6156473f352b21160b000000000000000000000000000000000000000000000000060e151b21252829323232323232323d48525b6974808b97a5aeb8c2bdb2a69a8f83786b62574c403f4a555f6976818d99a7b0bac4bab0a7998d82766960554a3f342826201a130b030000000d1924303c47535e6a76818d98a4b0bbc7c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9cacbced3d8dfd8d8d8d8d2c7bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aa9e93877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b11111111111111111111111111111111100706040200000000000000000000000206090b0b111111111111111111111111111111110f0605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090a0a0a0a0a0a0a0a0a0a0a0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040608090c0c0c0c0c0c0c0c0c0c0c0c0a0908050100000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000050a0e1113131c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1cac1b4a99f958a7f73675c534947474a545f68747f8b96a0aab5c0cdd4c9bdb2a79c92877c70655a5147372e251b110700000000000000000000000000000000000000000000000000050b11161a1c1d2626262626232e38424e5965717c88949ea9b4bfbeb3a89d93877b7064584d413b454f5867727e8996a0aab5c0bfb3a89c90857a6f63574c40352b2116110a03000000000d1924303c47535e6a76818d98a4b0bbc7cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc7bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9e93877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1212100d08030000000000000002080d111416171d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a12110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10131415161616161616161616161413110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121414181818181818181818181818151513100c0701000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000001080f14191c1e1f282929292929292929292929292929292922221f1c17120b040000000000000000000000000000000000010b18222d37404c57626c77828e9aa4adb7c2cdcec3b9afa69b8f83786d63584d41404b57636e7984909ba7b0bac4cfcdc2b7ada49a8e82776c6257494037271e150b01000000000000000000000000000000000000000000000000000001070b0f11121a1a1a1a141d2934404b57636e7984909ba7b2bec1b7ada4968a7f73685a51473c404c58636f7a85919ca8b3bfc0b5aa9f96897d7266584f453b30251a0f0300000000000d1924303c47535e6a76818d98a4b0bbc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bbb0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e93877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f212229292929292929292929292929292929271e1d1b18130d070000000000040b12181c20222229292929292929292929292929292929261d1c1a16120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161b1e2021212121212121212121211f1e1c19150f08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2024242424242424242424242421201e1b16110a0300000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c04010911181f24272a2b34343434343434343434343434343434342e2d2b27221b140c04000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4bfc9d3c8bfb3a89d93887d71655a514748525b66727e89949ea9b7c0c9d3cabfb4a89e94897e72665b5248393027160e050000000000000000000000000000000000000000000000000000000000000305060f0f0f0f101c27333e49545e6875808c98a6afb9c3bcb1a59a8e82776a61564b403f4b56606a77828e99a5b1bcc3b9afa6988c8175685f544a3e33281c110500000000000d1924303c47535e6a76818d98a4b0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b0a4988d81766a5e53473c3024190d000f1b26323d4955606c77838f939393939393939393939393939393939393939393939393939393939393939393939393939393877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d3434343434343434343434343434343433292926221d171008000000040d141c22272b2d2e3434343434343434343434343434343432292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292b2c2d2d2d2d2d2d2d2d2d2d2b2a28241f19110a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12192025282b2b2f2f2f2f2f2f2f2f2f2f2f2f2d2c2926201a130b030000000000060f171f262c3134404040404040404040404040404040393836312b251d140b08111a22292e3335363f40404040404040404040404040404040393936312c251d140b0200000000000000000000000000000000030d19242e39424b57636e79848f9ba6afb9c4ceccc1b7ada4998d81766b61574b4c57626c77828e99a5aeb8c7d0cec4b9afa69b8f84796e63574b42392920170600000000000000000000000000000000000000000000000000000000000000000000030303030e19242f3a454e5766717d89959fa9b4c0bfb4a89c91867b6f64584c413c46505967737f8a96a3acb7c1beb3a79c9084796e63574b4034291d150a00000000000d1924303c47535e6a76818d98a4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4988d81766a5e53473c3024190d000f1b26323d4955606c778387878787878787878787878787878787878787878787878787878787878787878787878787878787877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b31353839404040404040404040404040404040403e3534312d272018100600020a141d252c3136393a404040404040404040404040404040403d3433302c261f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c232a30343738383838383838383838383635332e29221a110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f3336373b3b3b3b3b3b3b3b3b3b3b3b383734302a241c130a01000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b121018222a32383e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251b120800000000000000000000000000000000000a141f28333e4a545f68747f8b969faab5c0cbd1c7bdb4a89c91867b6f645850505964707c87929ca7b5bec7d7cbc0b5aa9f968b7f73685f544a3e33281c100600000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35404c57636e7a85909ca7b3bfc1b6aba0978a7e73675950463c414d58646f7b87939da7b3bebfb4a99e95887d71655a4e43392f24190e03000000000d1924303c47535e6a76818d989e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988d81766a5e53473c3024190d0007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d353b4043454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a41403c37302920160d0408121b252d353c4144454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49403f3b362f271f150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f42434444444444444444444442413e39322a22160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e424346464646464646464646464644433f3a342c241a110700000008121c26303840464a575757575757575757575757575757514f4b453e352b2217172029323b42484c4d5657575757575757575757575757575757514f4b453e352c22170d0200000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bcc6d0ccc1b5aba0978b807469605555606975808c98a3acb6c5ced6cabfb3a89c90857b6f63584f453b30251a0f00000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333f4a555f6976818d99a7b0bab5bab0a7998d82766960554a3f404b56616b77838f9aa6b1b5b5b8aea5978c8075695c53483e33281c1106000000000d1924303c47535e6a76818d9393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938d81766a5e53473c3024190d0007121e2935404b57616b7070707070707070707070707070707070707070707070707070707070707070707070707070707070706e695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212b353d454b4f5057575757575757575757575757575757564c4b47413930261e150b1019232b353e454b4f5157575757575757575757575757575757544c4a453f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f505050505050505050504e4c48423b32271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152029333c43494d4e5252525252525252525252524f4e4a443d342a20160c0100010c17222c36404950556263636363636363636363636363635c5a554e453b31271c1f273039424b52575962636363636363636363636363636363635c5a554e453c31271c110600000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1cccfc4bab0a79c90847a6e635757636f7a85909ca7b3bcc5d6ccc1b6aca3988c81756a6156473f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f5867727e8996a0aaaaaaaaaaa89c91857a6f63574c403d47515a68747f8b97a4adaaaaaaaaa79b8f84786c62574c41352a1f1307000000000d1924303c47535e6a7681878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878781766a5e53473c3024190d0005101c27323d48525b61646464646464646464646464646464646464646464646464646464646464646464646464646464646464635f584f453b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c63636363636363636363636363636363615856514941372e251b11172129333c454e555b5c636363636363636363636363636363636057554f483f362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b25303a444d54595b5b5b5b5b5b5b5b5b5b5b5957534b42372f251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a5d5d5d5d5d5d5d5d5d5d5d5d5b59544d443a30261b100500040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1c262f384149525b62656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1409000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1cac0b4a99e958a7e72675c5c67737f8a959fa9b4c0cbd4c9bdb2a79c92877c70655a5147372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c36404c58636f7a85919c9e9e9e9e9e9e9f96897e7266584f453b424d5965707c87949d9e9e9e9e9e9e9e94887c7065594e42362b1f14080000000007131e2a35414c58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584c41352a1e130700020d18232e38414a525758595959595959595959595959595959595959595959595959595959595959595959595959595959595957554f483f362c21160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d63615a51473e352b20191f27313a434c555e65686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c635f584f453b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29343f4a545d64666767676767676767676765625c53483f352b21160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c636569696969696969696969696967645d544a3f34291e13080006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d212c363f48515a626c70797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44392d22160b0000000000000000000000000000000000010b18222d37404c57626c77828e9aa5aeb8c2cdcec3b8aea59a8e83776c63636d78838f9aa6afb9c3cecdc2b7ada49a8e82776c6257494037271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28343f4b56606a77828e9393939393939393938d8176695f554a3f414c57626c78848f9393939393939393938b8074685d51463a2e23170c0000000006121d2934404b56616b6f70707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706f6b61564b4034291d1206000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786f6a61584f453a302a21262f38414a535c656f747a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776e695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e59646d7272727272727272727272706c62584f453b30261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b36424d58636d71757575757575757575757575726e64594e43372c2015090006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e2c303b454f58616a707c85858585858585858585858585858585857f73685c5145392e22170b00000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4bfc9d2c8beb3a79c93887c716565717d88939da8b6bfc8d3cabfb4a89e94897e72665b5248393027160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505967737f8787878787878787878787857a6e63574c403e48525b697580878787878787878787878783786c6055493e32271b0f0400000005101b27323d47515a6164646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464615a51473d32271b10050000040e18212931383d40414242424242424242424242424242424242424242424242424242424242424242424242424242424242403f3b362f271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f85858585858585858585858585858585847a6f685f5449443a31282c363f48515a636d747f8585858585858585858585858585858582796e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5b66727e7e7e7e7e7e7e7e7e7e7e7c70685f554a3f362c21160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29343f49545d65717d8080808080808080808080807e72675b4f44382d21150a0006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e333c444a555f696f7b848f95919191919191919191919191938d81756f655a4f44392d22160b000000000000000000000000000000000000030d19242e39424b57636e7984909ba6afb9c4ceccc1b6aca3988d81756a6b76818d99a4adb7c7cfcec4b9afa69b8f84796e63574b423929201706000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404c57636f7a7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4039424c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7064594d42362a1f130800000000020d18232d37414a51565859595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595856514a41372d23180d0200000007101921282e32353636363636363636363636363636363636363636363636363636363636363636363636363636363636363433302c261f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38434f5a656e75818d93919191919191919191919191948e82786e635d544a42382f303b454f58616b717d86919191919191919191919191919790847b6f695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3b46525e6975808989898989898989898983796e63584f453b30261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39424d58636d78838c8c8c8c8c8c8c8c8c8c8c887d71655a4e43372b2014090006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c514539323b444c555e636e79828e949ea69c9c9c9c9c9c9c9ca69e948e82796e635e554b41362b1f1409000000000000000000000000000000000000000a141f28333e4a545f68747f8b969faab5c0cbd0c6bcb3a89c91857b6f6f7b86919ca8b3bdc7d6cbc0b5aa9f968b7f73685f544a3e33281c10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d28343f4a5560696f7070707070707070707070706e695f554a3f343f4b56606a6f7070707070707070707070706b62574c40352a1e1307000000000009131e27313941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413931271e130900000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e636e79828f959e9c9c9c9c9c9c9c9c9ca49c928b80746d635b524840363b424a555f696f7b849097a09c9c9c9c9c9c9c9c9ca29c91867d716b61584f453b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b869195959595959595948a7e73695f554a3f362c21170b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c66717d89939797979797979797978e83776d63584d42362b1f14080006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c51453939424b545d656f75818d929ca4ada8a8a8a8a8a8b0a79f968f847b6f695f554e453c31271c110600000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bcc6d0ccc0b5aa9f968b7f7474808b97a0aab5c1ccd6cabfb3a89c90857b6f63584f453b30251a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596063646464646464646464646464635f584f453b313c4650596063646464646464646464646464625b52483d32271c11050000000000040e17202931373d4041424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403d37312920170e04000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313b454a5560696f7b849097a0aba8a8a8a8a8a8a8aba29c91877e726b625950463b424b545e636e79828e959ea7b0a8a8a8a8a8a8ada49b918a7f736d635a51483f362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b75818c97a0a1a1a1a1a49b8f84796e635950463b30251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c77828e9aa3a3a3a3a3a3a39d93897d72665c53493e33281d12060006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145384149525b636d737f8b919ba3acb5b4b4b4b4b4b6aba09790857c706a61584f453e352c22170d0200000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1cccfc4b9afa79b9084797984909ba7b0bac4cfccc1b6aca3988c81756a6156473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36404850555759595959595959595959595957554f483f352c37404950565859595959595959595959595957524b42382e23190e0300000000000007101920272d32343536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534322d2720191007000000000000000004090d101213131313131313131313131313131313131313131313131313131313131313131313131313131313131312110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212b303b465059616b717d86919ca2abb4b4b4b4b4b4b6aba19790857c706960554a4549525b646e75808c939ca5aeb8b4b4b4b4b8aea59d938d81766f655c534a41382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a64707c86919ca8acacaca89e948a7f736960554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c27333e48525b65717d88929ca7afafafafada49b8f83796e63574b43392f251a0f040006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c51453f48515a626c727e87919ca1aab3bcc5bfc5bcb3aba19c91877e726c625a51483f362d251b120800000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d1c9c0b4a99e94897e7e89949ea9b7c0cad4c9bdb2a79c92877c70655a5147372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f372f27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4c48423a32281e140a00000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e171008000000000000000000000002050707080808080808080808080808080808080808080808080808080808080808080808080808080808080806050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071117212c363f48515a636d737f8b919ba4adb6bfc8bfc5bab1a89f958f837a6f635e554c5059626c727e8a919aa3acb6bec8bfc5bab0a79f958f837a6f635e554c433a31271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414c57626b76818d98a3acb6b7ada49b90847a6e63584f453a30251a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d171e2a35414c57626c76828d99a3acb6babab4a89e948a7e72685e54493e33291f150b000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145454f58616a707c859097a0abb2bbc4ccc7beb5aca39b918b7f736d645b524941382f261d140b02000000000000000000000000000000000000000000010b18222d37414c57626c77828e9aa5aeb8c2cdcdc2b8aea59a8e82828e9aa5aeb8c8d0cdc2b8aea59a8e82776c6257494037271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f40424242424242424242424242403f3b352f27202830373c3f40424242424242424242424242403d38322a21180e04000000000000000000070e13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a535c656f76818d939da5aeb8c1cacac1b8afa69d938d81756e655c5357606a707c85909ca1aab3bcc6cdc5bdb6aba09790857c706960554e453b332921170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d48525b65707c87939ca7b2beb4a99e948a7f73685f54493e33281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c86919ca8b4bcc3b8aea59b8f84796e63574e453a2f23191006000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51454a555f696f7b848f959fa7b0bac2cbc8bfb6ada49c938d81756f655d544b423930271f150c04000000000000000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4bfc9d2c7beb2a79c928e8e929ca7b5bec8d6cabfb4a89e94897e72665b5248393027160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134353636363636363636363636363433302b251e1820272c31343536363636363636363636363635322e2821191108000000000000000000000004090d10121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060503000000000000000000000000000000000000000000000000000000000000000000020c161f27313a434c555e636f7a838f959fa7b0bac5cfc9bfb6ada49b918a7f736c635a5e686f7a838f969faab1bac4cdc7bdb4aba29c91877d716b625950463d352b2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19232e38424c57626c77828e9aa5aeb8b8aea59b8f83796e63574b42392f24190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37404b57616b76818d97a1abb6c1bfb4a99e958a7f73685f55473e352b20120900000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c514c555e636e79828e949ea6afb8c1cacac1b8afa69e948e82796e635e554c443b322920170e05000000000000000000000000000000000000000000000000030d19242e39424b57636e7984909ba6afb9c4ceccc1b6aca39c9a9a9ca3acb6c6cecec4b9afa69b9084796e63574b42392920170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212628292a2a2a2a2a2a2a2a2a2a2a2a292825211c150f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a27231e181109010000000000000000000000000002050607080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070b0f11121211110e0b070a07070502000000000000000000000000000000000000000000000000000000050f172129333c454a556069707c859097a0abb6bbc5cdc6bdb4aba19c91867d716a61636e78818d949da6afb9c2cac9bfb6ada49b928b7f746d635b524840362d241b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e48525b67727e89959ea9b4beb3a89d94897d72665c53483e33271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a64707b86919ca8b1bac3b9afa69c90847a6f63584f45362e251b110200000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51545d656f75818d939ca4adb6bfc8cfc5bab0a79f968f847b6f6960554e453c332a2218100600000000000000000000000000000000000000000000000000000a141f28333e4a545f68747f8b969faab5c0cbd0c6bcb3aca7a5a5a7acb3bcc6d6cbc0b5aa9f968b7f74685f544a3e33281c10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1011131611161a1c1d1e1d1c1a1611151312110e09050200000000000000000000000000000000000000000000000000071019232b313b465059626b717d87919ca2abb4bdc7cdc4bbb5aaa09690847b6f686d747f8b929ba4adb7bfc9cec3b9afa69d948d81786e635d544a42382f261d140a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424c57636e7a84909ba7b0bab7ada49a8e82776c62574c40372d22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a75808c97a0aab8c1c0b5a99f958b7f74696055483f35261e140b0100000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c525b636d737f8b919ba3acb5bec7ccc4bcb6aba09790857c706a615850463e352c231a1108000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bcc6d0ccc3bcb6b2b1b1b2b6bcc4ccd6cabfb3a89c90857b6f63584f453b30251a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f111213131313131313131313131312110f0b07020003080c10111213131313131313131313131313110e0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f1111111111111111111111111111111111111111111111111111111111111111111111111111111111110e0d0b0905000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f222421252829292928252024211f1e1c1814100d090400000000000000000000000000000000000000000000000009121b222c364048525b636d747f8b929ba4adb6bfc9cfc4bab0a79e948e82796e717d87919ca2abb5bdc7ccc3bcb5aa9f968f837a6f685e544c443a31281f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28333f4a555f6974808b97a0abb5bdb2a79c92887c70655950463c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000050f1b26313c465059646f7b85909ca7b0bac4b9afa79c90857a6f63595046372f25160d040000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5a626c727e87919ca1aab3bcc5cec5bcb3aba19c91877e726c625a51483f362d251b130901000000000000000000000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1ccd4ccc6c1bdbcbcbdc1c6ccd4ccc1b6aca3988c81756a6156473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080808080808080808080808060503000000000000010406060808080808080808080808080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d191917140f0a040000000000000000000000000000000000000000000000060b0f15191b202427292b2d302b303334353433302b2f2d2a2927231e1b18130e0a04000000000000000000000000000000000000000000000208121c262f38424a545d636e78818d939da6afb8c1cac9c0b7aea59c928b80747b849097a0abb2bbc5cec5bcb3aaa19c90857c706a60574e453c332a21170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58646f7b86919ca8b4bfb6aca3988d81756a60564b3f34291e140a00000000000000000000000000000000000000000000000000000000000000000000000000010b151d28343f4b56606a74808b969faab7c0c0b5aa9f968c80746a6056484036271e1505000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736858616a707c859097a0abb2bbc4ccc7beb5aca39b918b7f746d645b524a41382f261d140b02000000000000000000000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d2d6d0ccc9c8c8c9ccd0d6d4c9bdb2a79c92877c70655a5147372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b202326262929292929292929292929292929292929292929292929292929292929292929292929292929292929292524221f1a140d060000000000000000000000000000000000000000050a10161a1f24252b2f333436393b353b3e4040403e3a353b383635322e2927231e19140e0904000000000000000000000000000000000000000000020c161f28313a4349545e686f7a838f959fa8b1bac5d0c7beb5aca39c91877e828e959ea7b0bac3ccc7beb5aca39a90897e726c625950473e352c2319110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f4b57616b77828e99a7afb9bcb3a89c91857a6f63584c42382e23190e0300000000000000000000000000000000000000000000000000000000000000000000000007111b25303b465058636f7a85909ca6afb9c4bab0a79c91857b6f64595046382f26160e05000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685f696f7b848f959fa7b0bac2cbc9bfb6aea59c938d81756f655d544b423930271f160c04000000000000000000000000000000000000000000000000000000000000010b18222d37414c57626c77828e9aa5aeb8c2cdd9dad7d4d4d4d4d7dad8cdc2b8aea59a8e82776c6257494037271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090b0c1111111111111111111111111111100f0d0a060200000000000000000000000000000000000000000000000000000710181f252a2e313234343434343434343434343434343434343434343434343434343434343434343434343434343434343431302d29241e160f06000000000000000000000000000000000001060f14192025292f33353a3e4042444749454a4c4c4b494549464441403d3834322d28231e18130e07000000000000000000000000000000000000000000060f17212a2f3a454e57606a707c859097a1abb6bbc5cec5bcb6aba19791898e939ca5aeb8c1cac9c0b7aea59c928c80746e645b524940362e251b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26323d47515a67727e8a969faab5c0b5aa9f968a7e73675b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959fa9b7bfc1b5aba0978c81756b6156494037281f160600000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7368636e79828e949ea6afb8c1cacac1b8afa69e948e82796e635e554d443b322920170e05000000000000000000000000000000000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4c0c9d3dee2e0dfdfe0e2e1d6cabfb4a89e94897e72665b5248393027160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e121517171d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1b1915110c06000000000000000000000000000000000000000000000000050f1820282f35393c3d4040404040404040404040404040404040404040404040404040404040404040404040404040404040403c3b38342e271f160d04000000000000000000000000000000040b11161e242a2f34393e3e45494b4d5053544f55575857544f54524f4d4c4842403d38322e28231e171008030000000000000000000000000000000000000000071119202b353e475059626c727e87919ca2abb5bdc7d0c5bab1a8a19c959a9ca3acb6bec8cfc4b9afa79e948e82796e635d544b423930261e140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18232e38414c58636f7a85919ca8b3bfb9afa79a8e83776b62574c40352a1f150a0000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6afb9c7bfb4a89c91867c70645a5147393027170f0600000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73686f75818d939ca4adb6bfc8d0c5bab1a89f9690847b6f6960554e453c332a22181006000000000000000000000000000000000000000000000000000000000000000000030d19242e39424b57636e7984909ba6afb9c4cfdae5ebebebebe5d9cec4b9afa69b9084796e63574b42392920170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d2022232929292929292929292929292929272624201c160f0800000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4847433e372f271e140a0000000000000000000000000000050d141b20282e323a3f42484c4e5457595c5e60585f6363635f58605d5b5957524d4b47413d38322d272019120c06000000000000000000000000000000000000000006111b252e364049525b646d74808b929ca4adb6bfc9cac1b8b1aba8a0a6a7acb4bcc6ccc4bcb5aa9f9690847b6f685f544d443a322820160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28343f4b56606a76828d99a6afb9c0b2a79c93877c7064594d42392f24190e030000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68737f8a959ea9b6bfc0b6aba2998d81766b62574a4137282017070000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736d737f8b919ba3acb5bec7ccc4bcb6aba19790857c706a615850463e352c231a110800000000000000000000000000000000000000000000000000000000000000000000000a151f28333e4a545f68747f8b969faab5c0ccd7e0eaf4f6eee2d7cbc0b5aa9f968b7f74685f544a3e33281c1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c22272b2e2f343434343434343434343434343432322f2b261f18100800000000000000000000000000000000000000000006111b252f3841494f535557575757575757575757575757575757575757575757575757575757575757575757575757575757575753524e4740372e241a0f05000000000000000000000000070f161e252b2f383d43494d5357575e6365676a6b6d686e6f6e686d6b696764625b5856514c48423d373129221c160f0700000000000000000000000000000000000000010b141e263038424b545d636e78828e949da6afb9c3cec9c1bab6b4acb1b3b6bcc4cdc6bcb3aaa19c91867d706a61584f453c342a22180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505966727e89959fa9b5c0b6aca3978b8074695c53483e33281d11060000000000000000000000000000000000000000000000000000000000000000000109121d2934404b57636e79838f9ba5aeb8c6bdb2a79c92877c70655b5248393127180f060000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73727e87919ca1aab3bcc5cec5bcb3aba29c91877e726c625a51483f362d251b1309010000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85919ca8b3bcc6d0dbe5f1f8ede2d6cabfb3a89c90857b6f63584f453b30251a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151d252c3236393a40404040404040404040404040403e3d3a35302921180f0600000000000000000000000000000000000000000a15202a353f4951595e606363636363636363636363636363636363636363636363636363636363636363636363636363636363635f5d5850473e34291f140900000000000000000000000810181f262e353a42484c54585c6265686e7073757778797a7a7a7978777572706b6864615a57524b474139312c261f170f0700000000000000000000000000000000000000040d161f28323a4449545f686f7a838f969faab5bac3cccac5c1bfb8bdbec1c6cdc8beb5aca39a918a7e736c625a51473f352c231a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404c57636e7a85909ca7b3bfbcb2a79b9084786c62584c41362a1f130900000000000000000000000000000000000000000000000000000000000000000008121e29343f49545d67727e89949da8b5bec1b6aca3998e82766c62574a423829201707000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f737c859097a0abb2bbc4ccc7beb5aca39b918b7f746d645b524a41382f261d140b02000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1ccd7e1ebe4e2d7ccc1b6aca3988c81756a6156473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c252e353c4145464b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4845403931291f160c02000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b6860584e43382d22170b00000000000000000000081019202830363e454952575d63666c7075797c7e81838485858685858483807e7b78736f6b64625b56514a443c3630282018100800000000000000000000000000000000000000050f18212a303a454f58606a707c85909ca1aab3bcc5ced0cccbc3c8c9ccd0cac0b7aea59c938c80756e645c534941372e251c130901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d28333f4a55606976828d99a4b0bcbfb4a89e94887c7065594e42382d23180d0200000000000000000000000000000000000000000000000000000000000000050f18202b37424d59636d78838f9aa4adb7c6beb2a79c93887d71655c53483a3128191007000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7b848f969fa7b0bac2cbc9bfb6aea59c938d81766f655d544b423931271f160c04000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bec7d2dcd8d8d8d4c9beb2a79c92877c70655a5147372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222c353e464c5051575757575757575757575757575755544f49423930261c1106000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7671685d52473b3024190d0000000000000000000810192029313840474e545b62646d71777c8084878a8c8e9091969791908f8e8c8987837f7b76706b64615a544a4640383028201810070000000000000000000000000000000000000007111a202b353e475059626c727e89909aa3acb5bec7d1d8d6cfd4d5d7cfc4bab0a79e958e82796e635e554b433930271e150b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505967737e8a96a4adb7c1b8aea5978b7f74685a51473d32271b1005000000000000000000000000000000000000000000000000000000000000000a141f29333e49535c66717d89939da8b5bdc1b7ada49a8e82776d63584b42392a21180800000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9aea2968b7f828e949ea6afb8c1cacac1b8afa69e948e82796e635f554d443b322920170e05000000000000000000000000000000000000000000000000000000000000000000000000000000010b18222d37414c57626c77828e9aa5aeb8c2cdcdcdcdcdcdc2b8aea59a8e82776c6257494137271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27323c464e565b5d6363636363636363636363636363615f59524940352b20150a000000000000000000000000000000000000000f1b26323d4955606c778385858585858585858585858585858585858585858585858585858585858585858585858585858585858581766b5f53483c3125190e000000000000000006101820293139414950575e636c70767d82888c909496989a9b9ca0a19c9c9b9a9795938f8b86817c756f6b645d5550494039302920170f060000000000000000000000000000000000000107111b252e374049525b646e74808c929ca4adb7c2cdd8e2dae0e0d7ccc1b5aaa09790847b6f695f554d443b322920160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36414d58646f7b87939da8b3bebdb1a69a8f83776b61564b4034291e1106000000000000000000000000000000000000000000000000000000000000030e19242e38414d58636c77828e9aa4adb7c5beb3a89d93897d72665c53493b322919110800000000000000000006121e2935404c57636f7a86919da9b4c0cbd6cabeb3a79c90848e939ca4adb6bfc8d0c5bab1a89f9690847b6f6960554e453c342a22181006000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27333e48525b66727e89949ea8b4c0c9c1c1c1c1c1bfb4a89e94897e72665b5248393027160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b36414c565f66696e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f453a2f24190d020000000000000000000000000000000000000f1b26323d4955606c77838f919191919191919191919191919191919191919191919191919191919191919191919191919191918d81766b5f53483c3125190e00000000000000040d1620293139414a515960686e737c82898e92979b9ea5a4a5a7a8aaaba8a7a7a5a3a49d9a97918d86817b726d6360595049413930281f160d03000000000000000000000000000000000000010b151e263039424b545d636e79828e949ea8b4bfcad6e1e6e5dacfc4bab0a79c91867d716b61584f453d342b2218100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b78838f9ba6b2bdbfb4a89c91867b6f64584d41352b20160b00000000000000000000000000000000000000000000000000000000000006111c27333e48525b65717d88929ca7b4bdc2b7ada49a8f83796e63574b4339292219090000000000000000000006121e2935404c57636f7a86919da9b4c0cbd6cbc0b4a99f9590959ca3acb5bec7cfccc1b6aba19790857c706a615850463e352c231a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242e39424b57636e7984909ba6afb9b5b5b5b5b5b5b9afa69b9084796e63574b423929201706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945505b666f747a7a7a7a7a7a7a7a7a7a7a7a7a7a7873695f54483d32261b0f030000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c998d82766b5f53483c3125190e000000000000010b151e263039414a515a616a6f787f868e929a9ca3a7a9aeafb1b2b3b5b6b4b3b2b1afada8a7a09c97918c857e756f696059514a413830261c120801000000000000000000000000000000000000040d162028323b444a545f686f7b848f9ba7b2bec9d5e1ece3d7ccc0b5aaa0968a7f736d635a51483f362d241a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a6974808c97a7b0bac1b6aba1978a7e7367574e453a2f24190e03000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c76828d99a3acb6c4bfb4a89e94897e72685e54493e33271c11080000000000000000000006121e2935404c57636f7a86919da9b4c0cbd9cec3b8aea59f9c9fa5acb3bcc5cecabfb5aba29c91877e726c625a51483f362d251b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f28333e4a545f68747f8b969faaaaaaaaaaaaaaaaaaaa9f968b7f74685f544a3e33281c1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d697480858585858585858585858585858583786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a4998d82766b5f53483c3125190e00000000000007111b252e374149515a616b6f7a818a91969ca2a7acb2b4b8bbbdbebfc0c1bfbfbebdbab7b3b0aba7a09c959089817a6f6a615a514940362c221a110800000000000000000000000000000000000000061018212b353f47515a646d75818c98a4afbbc6d2dee9e2d6cbbfb3a89c91857b70685f554a433931261e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38434e5a66717d8897a0abb6c1bab1a8998d8276685e54493e33271c10050000000000000000000000000000000000000000000000000000000006101c27323d48525b65707c86919ca8b4bcc3b8aea59b8f84796e63574e453a2f24190e010000000000000000000006121e2935404c57636f7a86919da9b4c0cbddd2c8bfb6aea9a7a9aeb6bcc4ccd3c8bcb1a69b918b7f746d645c534a41382f261d140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85919c9e9e9e9e9e9e9e9e9e9e9c91857b6f63584f453b30251a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b9191919191919191919191918f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a4998d82766b5f53483c3125190e0000000000040d16202b353e47515a616b6f7b838d929c9fa7abb2b6bcbfc2c7c8cacbcccccbcac9c8c6c1c1bab6b0aaa59e9c918c827a6f6a615950463c312a21180f050000000000000000000000000000000000040d162029303b454f58616b727e89919ba5b1bcc7d3deeae3d7ccc0b5aaa0968e82796e635d534a41372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2935404c58636f7a86919ca8b4bfbeb3a79c9084796e63574b4034291d1106000000000000000000000000000000000000000000000000000000030d161e2935404c57626b76818d97a1abb6c1bfb4a99e958a7f73685f55473e352b20160b000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7d8cfc6bfb8b4b3b4b8bfc6ccd4d2c7bbb0a4988d81766f655d544b423931271f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b56616a75818c9393939393939393939393938c81756a6156473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b979c9c9c9c9c9c9c9c9c9c9b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbcb0a4998d82766b5f53483c3125190e00000000010b141e26303a454f58616a6f7b838f939ca2aaafb7bcc1c6cacdcecbcac7c6c5c6c7c9cacdcccac5c0bab5aea9a19b938e837b6f6960554a453a32281e140a00000000000000000000000000000000010b141e263039414a545f686f7b85909ca1aab5bfcad5e0e6e5dacfc4bab0a79c938b80746d635a51473e352b20180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a56606a78838f9aa6b2bdbfb4a99e95877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000008121d26323c47515a64707b86919ca8b1bac3b9afa69b90847a6f63584f45362e251b1106000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7dad1c8c0bab5b4b5bac0c8ced6cdc2b6ab9f93887c716a61584f453b302b22191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c47515a65707c87878787878787878787878787877c70655a5147372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2a8a8a8a8a8a8a8a8a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc7bcb0a4998d82766b5f53483c3125190e0000000006111b252e363e49545f686f7a838f949da3abb5b9c0c7ccd0ccc8c3c0bfbcbabababbbdbfc2c7cccfcac4bfb8b4aaa39c938f837a6f635e554b42382e2419100600000000000000000000000000000006111b252e36414a535c636e79828e959ea9b2bbc4ced9e2dbe1ded3c9c0b7aca39c91877d716a61584f453a302820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596a75818c98a4afbbc3b8aea5958a7e73675b5044372d22170c0100000000000000000000000000000000000000000000000000010c17222c37404b56616a75808c97a0abb8c1c0b4a99f958b7f74696055483f35261e140b01000000000000000000000006121e2935404c57636f7a86919da9b4c0cbded4cac0b8b0aba8abb0b8bec5ced5c9beb2a79b90847b6f695f554a453b332921170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b18222d37414c57626c777c7c7c7c7c7c7c7c7c7c7c7c7c7c776c6257494137271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aeb4b4b4b4b4b4b2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6d6d6d6dbd7d5d4d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c7bcb0a4998d82766b5f53483c3125190e000000000b16202b353e47535c636e78828e939da4acb4bbc4c9d0cec6c1bfb9b4b3b0afaeaeafb2b3b7bdc1c4cacfc8c3bbb3aca39d938d81766f655b52483d322a20160b0000000000000000000000000000060f18202b353e47515a636d74808b939ca5aeb8c2cbd4d8d6cfd5d6d9d0c7bcb6aba19790847b6f685f5449433930271d1308010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3644505b67737e8a95a6afb9c4bbafa4988d81756a5950463c31261b100400000000000000000000000000000000000000000000000000040f1b26313c465059646f7b85919ca7b0bac4b9afa79c90857a6f63595046372f25160d0400000000000000000000000006121e2935404c57636f7a86919da9b4c0cbdacfc4bab0a7a09ca0a7aeb5bec7d0cabfb4a89e948e82796e635e554c433a31281f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27333e48535c626b70707070707070707070707070706b625b5248393027160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebabfbfbfbfbdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e5ddd6d0ccc9c8c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6bcb0a4998d82766b5f53483c3125190e000000030e19242f3a454e57626c74808b929ca4adb5bdc4cfd0c9c4bcb6b2afa9a7a5a3a2a3a4a6a8adb3b5bac0c8cecec4bcb4aca49b918b7f746c62574c433a2f251a0f04000000000000000000000000030d1620282f3a454e57616a717d87919ca3acb6bfc8d4d0cccbc3cacbcdd2d0c5bab1a89e958e82786e635c534940372d221a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121f2b36424d5964707c87969faab5c0beb2a69b8f84786a60564b3f34291d12060000000000000000000000000000000000000000000000000006111d28343f4b56606a74808b969faab8c0c0b5aa9f968c80746a6056484036271e15050000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7ccc1b5aba09791979ea5aeb7c0c9cdc2b8aea59c928c80756e655c534a41382f261c120802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242e39424b535b626464646464646464646464646464625b524b423929201706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5cbcbc9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ddd4cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0a4998d82766b5f53483c3125190e00000005101c27333e49545e68707c86919ca2acb4bdc5cdcfc7bfb9b5aca7a69f9c99989797989b9da4a8aab0b7bdc5cdccc4bdb4aba29c91867c70645d54493f34291d120700000000000000000000000008131d2730394049545e686f7b849097a0abb3bcc6cfcac5c1bfb8bebfc2c8cecac1b8aea59c928b7f746c635a51473c312a22170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca8b3bfbfb3a89d94867a6f63584c4035291e1207000000000000000000000000000000000000000000000000040f1a25303b465059636f7a85909ca6afb9c4bab0a79c91857b6f64595046382f26160e050000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd6cbbfb4a89c918590949ea6afb9c4cfc7beb5aca39a918a7f736d635a514840362c221b1309010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b424b5257595959595959595959595959595957524b423b3229181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d6cdc4bcb6b2b1afafafafafafafafafafafafafafafafafafafafafafafafa4998d82766b5f53483c3125190e00000006111d2934404b57636e78828e97a0abb3bcc5cdcfc6beb7afaaa39c9a95908d8c8b8c8d8f94989ca0a7adb4bdc4c8c1bab6b0aaa0968e82766d63584d42372b201409000000000000000000000007111a222c374049535c636e78828e949ea7b0bac4ccc9c1bab6b4acb3b4b8bec6cec9beb5aca29c91867d716a60564b453b32281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6878838f9aa6b1bdc2b7ada494887c71655a4e42372b20140800000000000000000000000000000000000000000000000006111d28333f4a556069747f8b959fa9b7c0c1b5aba0978c81756a6156494037281f1606000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd1c6baaea3978c808490969faab5bac3ccc5bcb3aaa19c91867d716b615950463b312c231a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a322a22190800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dbd0c6bcb3aca7a6a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3998d82766b5f53483c3125190e000006111d28333e49535c66727e89939ca7b0bac3ccd0c8beb6aea69f9c938e8885828080808183878c91979da4adb4bdbbb8b0aba7a09c9690897d71665a4f43372c20150900000000000000000000060f17222a313c465059636c737f8b929ca5aeb8c1cacac1b8b1aba8a1a7a9aeb5bec8cec6bcb5aaa09790847a6f635e554b423830261c120801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576a76818d98a4b0bbc7b8ada1958a7e73675c5044392d2212070000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6afb9c7bfb4a89c91867c70645a5147393027170f06000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7c86919ca1aab3bbc5ccc4bab5aaa09690847b6f6960554a453c332a21180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a31383d404142424242424242424242424241403d38312a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d7ccc1b6aca39c9a98989898989898989898989898989898989898989898989898988d82766b5f53483c3125190e000008131f2a36414d58636c77838f9aa3acb8c0cad4cac0b7aea59e969089827d7a7675747476787c80868f949da4adb5b2aba7a09c96918c85807a6f63584c4035291e1206000000000000000000020c161f28323b424b56606a717d86919ca2abb5bec8d0c5bab1a8a19c959b9ea5aeb8c1cacfc4bab0a79e948d81766e655c534940362c22191106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b3546515d68747f8b97a2aeb9c5baafa3978c8075695d5246352b21160b000000000000000000000000000000000000000000000005111c28333e4a545f68737f8a959ea9b6bfc0b6aba2988d81766b62574a41372820160700000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f737e89909aa2abb4bdc6cfc4bab0a79e958f837a6f635e554c443a322820160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a111921282e3235363636363636363636363636363635322e282119110a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5c9beb2a79c938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c82766b5f53483c3125190e000008141f2b37424e5965717c88939da7b3bcc8d1cfc4bab0a79e9590867e77716e686968696a6c70757c838f939da5aca7a29b97918d86807b746f6a60564b3f34281d110600000000000000000008121c262f38424b555e636f7a848f97a0aab3bcc6cec7bfb6aba197918990949ea7b0bac5cfcac0b7aea59b928a7f736c625950463c312a21170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000611212d38444f5b66727e8995a0acb8c9bcb0a5998e82776b584f453b30251a0f030000000000000000000000000000000000000000000109121d2934404b57636e79848f9ba5aeb8c6bdb2a79c92877c70655b5248393127180f0600000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7374808c929ca4adb6bfc8cac0b7aea59d938d81766f655d544b423930261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb1a69a8e828181818181818181818181818181818181818181818181818181817f73675c5044392d22160b0005111c27323d48525b6975808c98a3acb6c4cdd7ccc1b5aaa09790847d726e66635f585d5d5b62646c707a838f959ea39c9a928d86817b756f6a63605950463c31261b0f040000000000000000061119222c364048525b656e76818d949ea7b0bac3ccc9bfb6aca39c91877e849097a0abb6bcc7cfc8beb5aba29c91867c706960554a443a32271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d5965707c8793a6afb9c4beb2a79b908478695f554a3f33281c110500000000000000000000000000000000000000000008121e29343f4a545d67727e89949da8b5bec1b6aca3998e82766c62574a4238292017070000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736e78828e949da6afb8c1cac8beb5aca39b918b7f746d635b524940372e251b110701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f757575757575757575757575757575757575757575757575757575736e655a4f43382c21150a0007121e2a35404c57626b7984909ba7b3bcc6d5cdc2b8aea59c91867d716c645d57554f515252575b626a6f7b84909b9a928e88827c75706b64615a56504940372c22170c0100000000000000050e17212a313b465059626c737f8a919ba4adb7c0cacec3b9afa69c938c80747d87919ca3acb6bfc8cec5bbb5aa9f968f837a6f635e544b42382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86969faab5c0bfb4a89c91857a6e63574c4034291d12060000000000000000000000000000000000000000050f18202b37424d59636d78838f9aa4adb7c6beb2a79c93887d71655b52483a31281910070000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73686f7a838f959fa7b0bac5cfc6bdb4aba29c91877e726c625950473e352b201a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131312110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74696969696969696969696969696969696969696969696969696967655e554b40352a1f14080008131f2a36414d5964707c87949ea9b4bfcbd6cbbfb4a99e948b7f746d635c544c4a454646484c525a616b727e89928f89827d76706c64615b56514b46403830261d120800000000000000020c151f27313a424a556069707c86919ca2abb5bec8cec5bdb5a99f958e82796e74808b939ca6afb9c3cecfc4b9afa79d948d81756e645b52483f362c211910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a7985909ca8b3bfc1b6aba197877b6f64584d41352a1e130700000000000000000000000000000000000000000a141f29333e49535c66727d89939da8b5bdc1b7ada49a8e82776d63584b42392a211808000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73686a707c859097a0abb6bbc4cdc4bbb6aba09790857c706a60584f453a302b221810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507070808080808080808080808080707050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5c5a554e453b31261b1105000a16212d3944505b67737e8a95a5aeb8c2cdd5cabeb2a79b90847a6e635c534b443e3b35383d4249515a646d778289837d77716c65625b57524b47413c37302820160d030000000000000007121c262f38424a545d636f7a838f969faab2bbc5cec8bdb5aba29c90857c70696e79828e959fa9b4bbc5cdc9c0b7ada49b918a7e726b625850463b302921160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596d78848f9ba7b2bec5bab1a893887c7165594e42372b1f140800000000000000000000000000000000000000030e19242e39414d58636c77828e9aa4adb7c5beb3a89d93897d72665c53493b3229191108000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7368626b717d87919ca2abb4bcc6cfc5bab0a79f958f837a6f685f5449443b322920170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c525252525252525252525252525252525252525252525252504f4b453d342b21170c02000c18232f3b46525d6975808c97a3afbac8d2cdc2b8aea5968b7f736960554c433b33302b2e3239414a545d65707c7e78716d65635c57524b48413c37312c2620180f0600000000000000061019212c363f48525b646e75818c939da6afb9c3cbcac0b7ada49b91897e726b6268707c85909ca1abb4bdc7d0c7bdb4aba19c90857c706960554a443a31271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c374954606c77838e9aa6b1bdcab7aca094897d72665b4f43382c2115090000000000000000000000000000000000000006111c28333e48525b65717d88929ca7b4bdc2b7ada49a8f83796e63574b43392922190900000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685b636d747f8b919ba3acb5bec7cac1b8afa69d948e82786e635d544b433931271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105080a0a111111111111111111111111111111110f0d09050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5147474747474747474747474747474747474747474747474443403b342d241b110700000e1925313c48535f6b76828d99a5b0bcc7d3cbbfb4a99e94877c70645850463b332b252124283139444c58626c70726e68635d58534c48423d38312d27221d160f0700000000000000050e162129303b454f58626b727e89919ba4adb7c0c9cfc4bab0a79d948d81766e645b626b727e89919ba4adb7c0c9cdc5bbb5aa9f968f83796e635d544a41372f251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081225313c48535f6b76828d99a4b0bcc4b8ada1968a7e73675c5044392d22160b0000000000000000000000000000000000000207131e2a35414c57626c76828d99a3acb6c4bfb3a89d94897e72685e54493e33271c110800000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5d656f76818d939da5aeb7c0c9c8bfb6ada49c928c80746e645c534a41382f261c12070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b18140f0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b393835312b241c140b0100000f1b26323e4955606c78838f9aa6b1bdc9d4cabeb2a79b9084796c6257483f362b221a16182029333e49535c626567635e57544d49433e38322e28231d17120d0600000000000000010b151e27313a414a555f69707c85909ca1aab4bdc7cfc6beb5aaa0968f837a6f635d545b646e75818d949da7b0bac4cfcec3b9afa69d938c80756d645b52483f352b2119100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc5baaea2978b8074685d51463a2e23170c00000000000000000000000000000000000006101c27323d48525b65707c87929ca6b3bcc3b8aea59b8f84796e63574e453a2f24190e0100000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c555e636f7a838f959ea7b0bac4cfc7bdb4aba29a90897e726c625a51483f362c211b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171b1f21212929292929292929292929292929282826231e19120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c2a26211b140c03000000101b27333e4a55616d78848f9ba6b2bec9d4c8bdb1a59a8e83776c5b5248382f261b120b1019242f39434b5358595b57544e47443e39332e29231e18130d0803000000000000000007111b252e37414a545d636e79838f959fa9b2bbc5cdc9beb5aca29c91867c706a60564d545d636f7a838f96a0aab5bbc6cec9bfb6ada49a91897e726b61584f453b302920160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46525d6974808c97a3aebac6baafa3978c8075695d52463b2f23180c0000000000000000000000000000000000030d161e2935404c57626b76818d98a2abb5c4bfb4a99e958a7f73685f54473e352b20160b0000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c515560696f7b849096a0aab5bac3bfc5bbb3aaa19c90857c706a61584f453b302b23191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b21262a2c2d34343434343434343434343434343433312e29231c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e242424242424242424242424242424242424242422211f1b17110b0300000000101c27333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f534838311f160a000a151f29323b43494c4e4f4b49453e36332f29241f18140e0903000000000000000000000b16212b353f47515a646d75808c939da6afb9c2bfcac1b8aea59c928b7f736c625950464a556069707c86919ca2abb5bec9bfc7bdb4aaa19c90857b70685f554a433931261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aebac5bbafa3988c8175695e52473b2f24180d000000000000000000000000000000000008131d27323c47515a64707b86919ca8b4bbc3b9afa69b90847a6e63584f45362e251b11060000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c515059616b717d86919ca1aab3b4b4b4b4b4b5aa9f9690847b6f695f554a453c332920150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141c242b303538394040404040404040404040404040403f3d38332c241c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2218181818181818181818181818181818181818161514110c07010000000000101c27333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348382e24190c020a151f29323b43494c4e4f4b49453e36332f29241f18140e0903000000000000000000030f1a25303b454f58616b727e89909aa3acb6b4b4b4b4bab1a89e958e82786e635c534940465059626c737f8a929ca5aeb8b4b4b4b4b4b4a99f958e82796e635d534a41372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515c68747f8b96a2aeb9c5bbafa4988d81756a5e53473b3024190d00000000000000000000000000000000010c17222c37404b56616a75808c97a0abb5c1c0b4a99f958b7f74696055473f35261e140b010000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5148515a636c737e8a919aa3aca8a8a8a8a8a8afa69e948e82796e635e554c43392f251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a48433c342c23190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a08050200000000000000101b27333e4a55616d78848f9ba6b2bec9d4c8bdb1a59a8e83776c5b52483d32261c120b1019242f39434b5358595b57544e47443e39332e29231e18130d08030000000000000005111c28333e4a545f686f7b85909ca1aaa8a8a8a8a8a8a8aba19790847b6f685e544b43384049535c636e78828e959ea8b1a8a8a8a8a8a8afa69c938b80746d635a51473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8a96a2adb9c4bbb0a4998d81766a5f53473c3025190d0000000000000000000000000000000004101b26313c465059646f7b85919ca7b0bac4b9afa69c90857a6f63595046372e25160d04000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51454a535c646e75808c929ca49c9c9c9c9c9c9c9ca59c938c81756e655c53493e33281d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212b343d444a4e5057575757575757575757575757575756524c453c33291e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b01010101010101010101010101010101010000000000000000000000000f1b26323e4955606c78838f9aa6b1bdc9d4cabeb2a79b9084796c62574c3f362c211a16182129333e49535c626567635e57544d49433e39322e28231d17120d06000000000007121d28333e49535c636e79828e959e9c9c9c9c9c9c9c9c9ca39c91877d716a61574e453b32384249545e686f7b849097a19c9c9c9c9c9c9c9c9ca39c91877d716a61584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb8c4bcb0a5998d82766b5f53483c3125190e0000000000000000000000000000000005111d28343f4b56606a74808b969faab8c0c0b5aa9f968b80746a6056483f36271e150500000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145434c555e636e79828e94919191919191919191919191918a7f736d63584d42362b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303b444d55595b636363636363636363636363636362615d554c43382e23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000e1925313c48535f6b76828d99a5b0bcc7d3cbbfb4a99e94877c70645950463b302b25212428313a414c58626c70726e68635d58534c48423d38312d27221d160f070000000008141f2b36424d58636d74808b92919191919191919191919191938c80756d635a51473e352b2f3a454e57616a717d87919191919191919191919191919790847b6f685f54493e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1adb8c4bcb0a5998e82776b5f54483d31251a0e000000000000000000000000000000040f1a25303b465059636f7a85909ca6afb9c4bab0a79c91857b6f64595046382f26160e0500000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51453b444a555f686f7a83858585858585858585858585858585867d71655a4e43372b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a35404a555e64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c665d52483d31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000c18232f3b46525d6975808c97a3afbac8d2cdc2b8aea5968b7f736960554a433b33302b2e3339414a545d65707c7e78726d65635c57524c48423c37312c2620180f060000000914202c37434e5a65717d8785858585858585858585858585858583796e635d544a41362e252b353e47515a636d74808585858585858585858585858585858582796e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a96a1adb8c4bcb0a5998e82766b5f54483c31251a0e0000000000000000000000000000010b141d28333f4a556069747f8b959fa9b7c0c1b5aba0978c80756a6156494037271f16060000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145393b454f58616a6f787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a716d63584d42362b1f14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a766c61564a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a5aeb8c2cdd2c8beb2a79b90847a6e635c534b443f3b35383d4249515a646d778289837d77716c65625b57524b47413c37302820160d03000008141f2b36424d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776e695f554c443931261e252e36414a535d666f747a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776e685f54493e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a2adb9c4bbb0a4998d82766a5f53483c3025190e000000000000000000000000000006111b25303b454f58636e7a84909ba6afb9c7bfb4a89c91867b70645a5147393027170f050000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c514539353f48515a61636d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e65635c53493e33281d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8585858585858585858585858585867a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c87949ea9b4bfcbd6cbbfb4a99e948b7f746d635c544c4a454646484c525a616b727e89928f89827d76706c64625b56514b46403830261d1208000007121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c635f584f453c332920161e263039434c565f66696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b635f584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a45515c68747f8b96a2adb9c5bbb0a4988d81766a5e53473c3024190d00000000000000000000000000000b16202b353e4a545f68737f8a959ea9b6bfc0b6aba2988d81766b62574a413728201607000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392f37404951565861636363636363636363636363636363625a58534c43392f251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a91919191919191919191919191857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b7984909ba7b2bcc6d0cdc2b8aea59c91867d716c645e57554f515252575b626a6f7b84909b9a928e88827c76706b64615a56504940372c22170c0100040f1a252f39434c53585a626363636363636363636363636363636057554f483f362c231910162029333c464f565b5d636363636363636363636363636363635f57544f473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d68747f8b97a2aeb9c5bbafa4988c81756a5e52473b3024180d00000000000000000000000000030e19242f3a454e57636e79848f9ba5aeb8c7bdb2a69c92877c70655b5248393127180f06000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e303940474b4c55575757575757575757575757575757574e4d49433c332920150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a959c9c9c9c9c9c9c9c9c9c9c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000005111c27323d48525b6975808c98a3acb6c1ccd2c8beb5aaa09790847d726e66635f585d5d5b62646c707a838f959ea39c9a928d86817b756f6a63605950463c31261b0f0400000b15202a333c43494d4e57575757575757575757575757575757554c4a453f382f261b13081018232b363e464c505257575757575757575757575757575757544b49453e372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46515d6974808b97a3aebac5baafa3988c8075695e52463b2f24180c0000000000000000000000000005101c27333e49545e68727e89949da8b5bec1b6aca3998e82766c62574a42382920170700000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2830373c3f414a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b43423e39332b23191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1a8a8a8a8a8a8a8a8a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000030e19232e38424e5965717c88939da7b3bcc8d1cfc4bab0a79e9590867e77716e696968696a6c70757c838f939da5aca7a29c97918d86807b746f6a60564b3f34281d11060000061019232b33393e42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49403f3b362f271f150b0208121b252e363c4245464b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b48403e3a352e261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6975808c97a3afbac5baaea3978c8074695d52463a2f23180c0000000000000000000000000009111d2934404b57636e79838f9aa4adb7c6beb2a79c93887d71655b52483a312819100700000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e20272d3134353e404040404040404040404040404040403736332f29231b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb4b4b4b4b4b4b4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000a141f2a36414d58636c77838f9aa3acb8c0cad4cac0b7aea59e96908a827d7a7675747476787c80868f949da4adb5b2aba7a09c96918c85807a6f63584c4035291e120600000009121b232a2f333637404040404040404040404040404040403d3433302c261f170e0500020b151d252c3237393a404040404040404040404040404040403d3433302b251e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4b0bbc4b9ada2968b7f73685c5145392e22170b00000000000000000000000008121d28333e49535c66727d89939da8b5bdc1b7ada49a8e82776d63584b42392a2118080000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221d2226292933343434343434343434343434343434342b2b28252019120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8bfbfbfbfbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000006111d28333e49535c66727e89939ca7b0bac4cfd0c8beb6aea69f9c938e8885828180808183878c91979da4adb4bdbbb8b0aba7a09c9690897d71665a4f43372c201509000000020a12192025282b2c3434343434343434343434343434343432292825211c150e06000000050d151c22282c2e2f3434343434343434343434343434343431292825201b150d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313d4854606b77828e99a5b1bcc3b8aca195897e72675b4f44382d21150a0000000000000000000000040e181f2b36414d58636d77828e9aa4adb7c5beb3a89d93897d72665c53493b32291911080000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2213181b1d1e2729292929292929292929292929292928201f1d1a151009020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cbcbcbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000030e19242f39434b57636e78828e97a0abb5bcc5cdcfc6beb7afaaa39c9a95908d8c8b8c8d8f94989ca0a7adb5bdc4c8c1bab6b0aaa0968e82766d63584d42372b20140900000000020910151a1d1f2028292929292929292929292929292929261d1c1a16120c050000000000050c13181d20232329292929292929292929292929292929251d1c1a16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586c78838f9ba6b2bdc2b7ab9f94887d71655a4e43372c201409000000000000000000000009141e28333e48525b65717d88939ca7b4bdc2b7ada49a8f83786d63594c43392a221809000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170d1012121b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1414120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000a151f27333e49545e68707c86919ca2acb4bdc5cdcfc7bfb9b5aca7a69f9c99989797989b9da4a8aab0b7bdc5cdccc4bdb4aba29c91867c70645d54493f34291d1207000000000000060b0f1214141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b12110f0c07020000000000000003090e121517181d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a11110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f697984909ca7b3bec3b9afa693877c7064594d42362a1f130800000000000000000000020d18232e38414c57626c76828e99a3acb6c4bfb3a89d94897e72675d544a3b33291a1108000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b040607101111111111111111111111111111111109080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57626c74808b929ca4adb5bdc4cfd0c9c4bcb6b2afa9a7a5a3a2a3a4a6a8adb3b5bac0c8cecec4bcb4aca49b918b7f736b62574c433a2f251a0f04000000000000000004070809111111111111111111111111111111110f06050401000000000000000000000003070a0b0c111111111111111111111111111111110e06050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b4bfc0b5aa9f96867a6f63584c4035291e12060000000000000000000005101c27323d48525b65707c87929ca6b3bcc3b8aea59b8f84796e63574b443a2922190901000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000040606060606060606060606060606060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000b16202b353e47535c636e78828e939da4acb4bbc4c9d0cec6c1bfb9b4b3b0afaeaeb0b2b3b7bdc1c4cacfc8c3bab3aca39d938d81766f655b52483c332a20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b8797a1abb6c1bfb3a89c9085796a60564b3f34281d11060000000000000000000007121e2935404c57626b76818d98a2abb6c4bfb4a99e958a7f73685f544a3e33281c120900000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000006111b252e364249545f686f7a838f949da3abb5b9c0c7ccd0ccc8c3c0bfbcbbbababbbebfc2c7cccfcac4beb8b4aaa39c938f837a6f635e554b42382c231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8894a8b1bac5bdb1a69a8f83776c5950463c31261b100400000000000000000006101b27323d47515a64707b86919ca8b4bbc3b9afa69b90847a6e63584f453b30251a0f0200000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000010b141e26303a454f58616a6f7b838f939ba2aaafb7bcc1c6cacdcecbcac7c6c5c6c7c9cacdcccac5c0bab5aea9a19b938e837b6f6960554e453a32281b130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a1adb9cabbafa4988d81756a5e5347372c22170c010000000000000000020c161d2934404b56616a75818c97a0abb5c1c0b4a99f958b7f74696055473f352b21160b0000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000040d16202b353e47515a616b6f7b838d929c9fa7abb2b6bcbfc2c7c8cacbcccccbcac9c8c6c1c1bab6b0aaa59e9c918c827a6f6a615950463e352a21180b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbac5b9ada2968b7f74685c51453a2e22130800000000000000000008121c26313c465059646f7b85919ca7b0bac4b9afa69c90857a6f63595046372e251b11070000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000007111b252e374049515a616b6f7a818a91969ca2a7acb2b4b8bbbcbebfc0c1bfbfbebcbab7b3b0aba7a09c959089817a6f6a615a514940362d25191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6b77828e9aa5b1bcc3b9afa694897d72665a4f43382c2015090000000000000000010c17212c363f4b56606a74808c969faab8c0c0b5aa9f968b80746a6056483f36271e150b010000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000010b151e263039414a515a61696f767f868e929a9ca3a7a8aeafb1b2b3b5b6b4b3b2b1afada8a7a09c97918c847e756f6960595149413830261d140901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56616a7984909ba7b3bec0b5a99f95877b7064594d41362a1f13070000000000000000040f1a26313b465059636f7a85909ca6afb9c4bab0a79c91857b6f64595046382f26160e05000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000040d1620283139414a515960636f737c82898e92979b9ea5a4a5a7a8aaaba8a7a7a5a3a49d9a97918d86817b726d6360595049413930281f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86949ea9b4bfbfb3a79c9085796e63574b4034291d1106000000000000000006111d28343f4a556069747f8b959fa9b7c0c1b5aba0978c80756a6156494037271f160600000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b10040000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000006101820293139414950555e656c70767d82878c909496989a9b9c9fa19c9c9b9a9795938f8b86817c756f6b645d5550484039302920170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66717d8994a5aeb8c2bcb1a5998e8277685f54493e33281c110500000000000000030f1a25303b454f58636f7a84909ba6afb9c5bab1a89c91867b70645a5147393027170f0500000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d1106000000000000000000000000000000000000000000000000000000000000000105080a0a0b0b0b0b0b0b0c17232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b100b0b0b0b0b0b0b0807060300000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000810192029313840464a555b62646d71777c8084878a8c8e9091969791908f8e8c8987837f7b76706b64615a544a46403830282018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586874808b97a2aebac4bab0a7978b7f7468584f453a30251a0e030000000000000005111c28333e4a555f68737f8a959ea9b6bfc1b6aba1978d81766b62574a4137282016070000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d1106000000000000000000000000000000000000000000000000000000000001070c101315161616161616161617232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32271b16161616161616161413110e0a050000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000081019202830363c454b52575d63666c7075797c7e81828485858685858482807e7b78736f6b64625b56514a443b362f2820181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6877828e99a5b1bcc1b5aaa097887d71665a4e43352b20160b00000000000000030e19242f3a454e57636e79848f9ba5aeb8c7bfb4a89c91867c70655b5248393127180f060000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d110600000000000000000000000000000000000000000000000000000000030b11171b1f21212222222222222222232f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e32272222222222222222221f1e1c19150f0801000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c313a42484c54585c6265686e7073757778797a7a7a7978777572706b6864615a57524b474139312c261f170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca7b3bfbfb3a89c91857a6f63574c4035291d11070000000000000005101c27333e49545e68727e89949ea8b5bec1b6aca3998d82766c62574a423829201707000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d1106000000000000000000000000000000000000000000000000000000030c141b21262a2c2d2e2e2e2e2e2e2e2e2e2f3a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e322e2e2e2e2e2e2e2e2e2e2b2a28241f19110a010000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222a32383d43494d5357575e6365676a6b6d686e6f6e686d6b696764625b5856514c48423d373129221c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5964707c87959fa9b4c0bdb1a69a8f83776960554a3f34281d11010000000000000009111d2934404b57636e79838f9aa4adb7c6beb2a79c92887d71655b52483a3128181007000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d11060000000000000000000000000000000000000000000000000000010b141c242b31353839393939393939393939393a46515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a3e39393939393939393939393635332e29221a11080000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000060d121a21282e323a3f42484c4e5457595c5e60585f6363635f58605d5b5957524d4b47413d38322d272019120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505867737f8a96a6afb9c3b8aea5978c8074695950463c31261b0f0400000000000008121d28333e49535c66727d89939da8b5bec1b7ada49a8e82776c63584b42392a21180800000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d1106000000000000000000000000000000000000000000000000000007111b242d343b404344454545454545454545454546515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c61554a45454545454545454545454542413e39322a22190f0500000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000030811181e242a2f34393e3e45494b4d5052544f54575757544f54524f4d4c4842403d37322e28231e17100802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a55606976828e99a5b0bcbfb4a99e95887d71655a4e42362c22170c010000000000040e181f2b36414d58636d77828e9aa4adb7c5beb3a89d93897d71665c53493b322919110800000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281d110600000000000000000000000000000000000000000000000000010c17212b343d454b4e50505050505050505050505050515d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c6155505050505050505050505050504d4c48423b32291f150a00000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14192025292e33353a3e4042444749454a4b4c4b494549464441403d3834322d27231e18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85909ca8b3bfbeb3a79c9084796e63574b4034291d120800000000000009141e28333e48535c65717d88939ca7b4bdc2b7ada49a8f83786d63594c43392a22180900000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b4034281208000000000000000000000000000000000000000000000000000005101b26313b454d555a5b5c5c5c5c5c5c5c5c5c5c5c5c5c5d6974808b97a2aebac5d1d5c9bdb2a69b8f84786c615c5c5c5c5c5c5c5c5c5c5c5c5c5c5957524b42392e24190e03000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a10161a1f24252b2f333436393b353b3e4040403e3a353b383635322e2927231e19140e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d88969faab5c0bab0a7988d8175685f544a3e33281c11030000000000020e18232e38414c57626c76828e99a3acb6c4bfb3a89d94897e72675d54493b33291a110800000000000000000000000000000000000000000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000516212d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e62574b362c22160d040000000000000000000000000000000000000000000000000008131f2a35404b555e646768686868686868686868686868686974808b97a2aebac5d1d5c9bdb2a69b8f84786c68686868686868686868686868686865625b52483e33281c1106000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191b202427292b2d302b303334353433302b2f2d2a2927231e1b18130e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b6975808c97a6afb9c0b5aaa096897e7266584f453b30251a0f03000000000005111c27323d48525b65707c87929ca7b3b5b5b8aea59b8f84796e63574b443a2922190901000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e2d3944505b67727e8a95a1acb8c4cfd6cbbfb4a89c91857a6e5950463b31261e150b010000000000000000000000000000000000000000000000000a15212c38434e5a646e7373737373737373737373737373737374808b97a2aebac5d1d5c9bdb2a69b8f837873737373737373737373737373737373706c62574c41352a1e1307000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f222421252829292928252023211f1e1c1814100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c78838f9ba6b2bdbfb3a89c91857a6f63584c40352b21160b00000000000007121e2935404c57626b76818d99a2abaaaaaaaaa99e958a7f73685f544a3e33281c1209000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e26303b46505867727e8a95a1acb8c4cfd6cbbfb4a89c91857a6960554a42372e251b11070000000000000000000000000000000000000000000000000a16212d3944505b67737e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828e99a5b1bcc8d3d5cabeb3a79b90847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7065594d42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1011131611161a1c1d1e1d1c1a1611151312110e0905020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87949da8b3bfb8aea5998d82766a60564a3f34251b1107000000000005101b27323d47515a64707c86919c9e9e9e9e9e9ea69b90847a6e63584f453b30251a0f0200000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e363e4a556069737e8a96a1adb8c4d0d6cbbfb4a89c91867a6f635c53473e352b20160e040000000000000000000000000000000000000000000000101c27333f4a56616d78848a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8e929ca7b2bdc9d4d6cbbfb4a99e95908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080a070b0f11121211110e0b070a0707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c6974808b97a4adb7bfb4a99e95897d72665950463c3126150b01000000000006121d2934404b56616a75818c979393939393939393958b7f74696055473f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e47525b636e79838f9ba6b2bec9d5d7ccc1b6aba0978c80746c62584f453a30281e13090000000000000000000000000000000000000000000000101c27333f4a56616d788490969696969696969696969696969696999ca2acb6c0cbd6d9cec3b8aea59e9b969696969696969696969696969696968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c78848f9ba7b2bdbeb3a79c9084796e63574c40362c22170600000000000007121e2a35414c58646f7b868787878787878787878787857a6f63595046372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f19242f3a454e57626c74808b949da8b3bfcad5dacfc5bab0a79c91867c70685f544941382d23180f0600000000000000000000000000000000000000000000101c27333f4a56616d7884909ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a5a7acb3bcc5d0dadcd2c8beb5aea9a7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5865717c88949ea8b4bfb7ada4978c8075695f554a3f30261d120800000000000006121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7b6f6a6056483f36271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232c333e49545e68707c86919ca4adb7c2cdd8dfd4cac1b5aaa0978e83786e635a51473d322820160d03000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7adadadadadadadadadadadadadb1b2b6bcc3ccd5dfe2d8cfc6beb8b4b3adadadadadadadadadadadadadada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070909111111111111111111111111110d0c0a08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6975808c98a4adb7beb3a89d93887c7065584f453b30251a0f0300000000000006111d28343f4a56606a6f7070707070707070707070706f6b61595046382f26160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a0906020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f28323d47515a636e78828e96a0aab4bdc7d1dce4dacfc4bab0a79c938a7f736b61564b443830261d1208000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2b9b9b9b9b9b9b9b9b9b9b9b9bcbdc0c5ccd4dce5e8dfd6cfc8c3bfbeb9b9b9b9b9b9b9b9b9b9b9b9b9ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc9cdcdc5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214151d1d1d1d1d1d1d1d1d1d1d1d1d181816130e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba7b3beb8aea59a8f83786c6258483f352b21160b00000000000000040f1b26313c465059606364646464646464646464646464615a51494037271f16060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038404b56616a737e8a929ca7b0bac5cdd7e1e9ded4cac0b7aca39c90857b6f645d544940372c22160e050000000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2bec4c4c4c4c4c4c4c4c4c4c4c8c9cbd0d5dce4e4e4e7dfd8d2cecbcac4c4c4c4c4c4c4c4c4c4c4c4b9ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1e2020292929292929292929292929292423211e19130c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27333e48525b67727e89959ea9b4bfb4a99e958a7e73675c5348372f251c120700000000000000010c17222c3640495056585959595959595959595959595856514a41383026170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060711111111111111111111111111111111110f060504010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e16222c364049545d646f7b85909ca3acb7c0c9d5dee7eee4dad0c8bcb5a99f958d81766d645950463c31271e150c0200000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2becad0d0d0d0d0d0d0d0d0d0d3d4d6dad8d8d8d8d8d8d8d8dcd9d6d5d0d0d0d0d0d0d0d0d0d0d0c4b9ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5aea2968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c343434343434343434343434342f2f2c28231d150e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e2a35414c57626c77828e9aa5aeb8b9afa79b90847a6e63574c4239291e150c02000000000000000008121d26303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31282016070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b12110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e27313c465059636d76818d959fa9b3bcc7d0d9e4e1e1e1e1d8cec3b9afa69b92897e726a60564b43372f251b110700000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2becacdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc4b9ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaa2968b7f74685c51453a2e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a30343738404040404040404040404040403b3a37332d261e15080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c46505965707c87929ca7b5beb5aa9f968b80746960554a3f33281d0e05000000000000000000030d161f2830363c3f4042424242424242424242424241403d38312921180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1d1e2829292929292929292929292929292929261d1c1a16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f4a556069717d89919ba6afb9c4ccd8dcd8d6d5d6d8dcd3c9bfb6aba29b90847a6f635c53483f352b21160e04000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2bec1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b9ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e968b7f74685c51453a2e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c333a3f42434b4b4b4b4b4b4b4b4b4b4b4b4b4745423d362e261810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f4a56606a75808c98a3acb6bab0a79c91857b6f645850463b30251a0f0000000000000000000000060f181f262c3134353636363636363636363636363535322d28211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a333434343434343434343434343434343432292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f47535c636f7a848f9ba2abb6bfc8d4d7d2cdcbcacbcdd2d7cfc7bbb4a99e948c80756c63584f453b30281e1409000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada1968a7f73675c5045392d22160b000f1b26323d4955606c77838f9393939393939393939393938b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202a333c444a4d4f5757575757575757575757575752514d463f362820170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58636f7a85909ca7b3bcb6aba0978c81756a6156483f362c21170c010000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2927231e17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272d3234353f404040404040404040404040404040403e3433302c261f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f1a25303b454f58626c74808c949ea8b2bbc6cfd6cec7c2bfbebfc2c7ced6cdc2b8aea59c91877d71685f554a42382e23180f060000000000000000000000000000000000101c27333f4a56616d7884909ba7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1968a7f73675c5045392d22160b000f1b26323d4955606c778387878787878787878787878787877f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444c54595a636363636363636363636363635e5c574f463930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69737f8a959fa9b5bab0a79c91867c70645a5147382f261c120700000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17202931373d40414a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49403f3b362f271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18232c333e4a545f68707c86919ca4adb7c3cbd3cbc5beb8b4b2b4b8bec5ced2c7beb6aba0978f83796e635b52483d322820170d0300000000000000000000000000000000101c27333f4a56616d7884909b9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e968a7f73675c5045392d22160b0007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a545d63666e6e6e6e6e6e6e6e6e6e6e6e6e696760574940372d22180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7984909ba6afb1b1aaa0978d81766c62574a4137271f160c02000000000000000000000000000003080c0f11121313131313131313131313131312100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27313941474b4c5657575757575757575757575757575757554c4a453f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028323d47515a636e79838f97a0abb5bec7d3cbc3bbb5aea9a7a9aeb5bec9d1cfc5bab0a79d938b7f736b62574c443930271d130800000000000000000000000000000000101c27333f4a56616d78849093939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7f73675c5045392d22160b0007121e2935404b57616b7070707070707070707070707070706f6a61564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000614202b37424d59636d727a7a7a7a7a7a7a7a7a7a7a7a7a7570675a51473c31251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68737e8a949ea6a6a6a6a79c91867c70645b5248393027170e05000000000000000000000000000000000001040606080808080808080808080808070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a51565862636363636363636363636363636363636057554f483f362c21180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039404b57616b737f8a939da7b0bac5cecfc7bbb2aba59e9b9ea5aeb8c1cad4cac1b8ada49c90857b70645d544940372d22170e05000000000000000000000000000000101c27333f4a56616d7884878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787877f73675c5045392d22160b0005101c27323d48525b6164646464646464646464646464646463615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e48525b66727e8585858585858585858585858580756a61564b3f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e79848f9a9a9a9a9a9a9a968c81756b62574b4238292017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a61646d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c635f584f453b302820160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000050e17222c374049545d646f7b85909ca3acb8c0cad3c9bfb6aba29b9490949ea8b1bac5d0d1c8bdb5aa9f968e82766e645a51473c31271f150c02000000000000000000000000000007131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e120700020d18232e38414a52575859595959595959595959595959595856514940372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e2a35414c57626c77828e919191919191919191919190857b6f63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e898f8f8f8f8f8f8f8f8f867b70645b52483a32281810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030000030506060503000002000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b6f797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786e695f554a433930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27313c465059646e76828d969faab4bcc8d1cec3b9afa69b918d849097a1abb6bfc8d2cec4b9afa69c92897e726a60564b43382f261c1207000000000000000000000000000007121e2935404c57626b70707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706f6a60564b3f34291d1206000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c47515a65707c87929c9c9c9c9c9c9c9c9c9c9f968b7f74685f554a3e33281f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818383838383838383838380746b61574a42382a211808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607090b0d0e070b0f111211110e0b070d0b0907060402000000000000000000000000000000000000000000000000000000000007131e2a35414c58646f7b848585858585858585858585858585858583796e635c534940372c22191006000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f373f4b56606a727e89929ca6afb9c4cdd3cbc0b5aa9f968d817d87919ca5aeb8c3ced3c9bfb7aba29b90847a6f635c53483f362c21160e040000000000000000000000000005111c27323d48525b62646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463605950463c31261b10040000040e18212931383d40414242424242424242424242424242413f3c37302820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c36404b56616a75818c98a3aca8a8a8a8a8a8a8afa69b9084796e63574c43392f24190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a46515c67707577777777777777777777746f665b52483a31281a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406090d1012131517191a11161a1c1d1d1c1a16111917151212100d080503000000000000000000000000000000000000000000000000000006121d2934404b56616b727e899191919191919191919191919191938c80746d635950463c312921160d04000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48535c636f7a84909ba2abb6bfc9d4cdc2b7ada49c90857b75818c959fa9b4bcc8d1d0c7bcb4a99e958c81756d63584f453b30281e140a00000000000000000000000000020e18232e38424a525759595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595856504940372d22170c0100000007101921282e32353636363636363636363636363636363534312d272018100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58636f7b85919ca8b3b4b4b4b4b4b4b4b4a99e94897e72675c53493e33281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212d38424d5760676a6c6c6c6c6c6c6c6c6c6c68665f564a41382a21180901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1113181b1d1e20222425272125282929282520262422201e1d1b1813110e090300000000000000000000000000000000000000000000000005101b27323d47515a646d75818d949d9c9c9c9c9c9c9c9c9c9ca39c91877d716a60564b443a31261e150b01000000000000000000000000000000000000000000000000000000000000000000000008101a25303b454f58636c75808c949ea9b3bbc7cfd0c7bfb3a89d948b7f746f7b85909ca3acb8c1cad4cec3b8aea59c91877d71695f554a42382e231810070000000000000000000000000009141e28313a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d130800000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69747f8b969faab5c0bfbfbfbfbfc2b8aea59a8e83776c63584d41382d23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d474f575c5e606060606060606060605d5b564e463a312819110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12171a1d1d2327292a2c2e3031322b3033343433302b31302e2c292926221e1c19140e0b0601000000000000000000000000000000000000000000020d18232d37414a545d636f7a848f97a0aba8a8a8a8a8a8a8a8aba09790847a6f635d544a41372e251b110700000000000000000000000000000000000000000000000000000000000000000000071018242c333f4a555f69717d87919ca5aeb8c3ccd3c9bfb7aba29b8f83796e6a737f8a939da7b0bac5cfd2c8beb6aba1978f83796e635b52483d322920170d03000000000000000000000000040e18212a31383d404142424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242403f3c37302820170d03000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2934404c57636e7984909ba6afb9c4cfcbcbcbd2c7beb2a79c93887c71655a51473d32261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d363f474d51535555555555555555555551504c463e3529211809000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191c212528292d323435373a3b3d3e353b3e40403e3a353d3c3a373534312d2927231e1916110b0400000000000000000000000000000000000000000009131e273139444a56606a717d86919ca3acb7b4b4b4b4b4bab0a79e948d81766e645a51473e352b20170f050000000000000000000000000000000000000000000000000000000000000000030d172029323d48525b636e79838f97a1abb5bec8d3cec4b9afa69b92887d7169636e79838f97a0abb6bec8d2d0c5bab1a89d938b7f746b62574c443930271d13090000000000000000000000000008111921282e323536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312d2720180f06000000000000000004090d10121313131313131313131313131313131212100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c67727e8a949ea9b7c0c9d3ded6d6d7ccc1b6aca3998d81766b61564b40362c22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d262f363d424647494949494949494949494645413c352e2519100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040910151a1f24262c303335373d404143454748494a454a4c4b49454a49474543413f3c3735322e2724201b140d080300000000000000000000000000000000000000040e172029313c465059636c74808b939da6afb9c4bfbfcac1b8aea59b91897e726b61584f453a30271f160c020000000000000000000000000000000000000000000000000000000000000008131d273039414c57626b747f8b939da8b1bac6ced3cbc0b5aa9f968d81766d635f68707c86919ca5aeb8c3ced4cac1b8ada49c91867c70645e554941372d22170f06000000000000000000000000000911181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f0700000000000000000000000205070708080808080808080808080808080706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2b36414d58636d77838f9aa5aeb8c7d0d9e3e2e6dbd0c6bcb3a89c91867b6f645950463b31251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161e262d33383a3b3d3d3d3d3d3d3d3d3d3d3a3936322c251d150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14182025292f33363b3f4043474b4d4f51535455564f555757544f555453514f4c4b4741403d38332f2b251e16130d0700000000000000000000000000000000000000071019222c364049535c636e79838f969faab5bbc6cfd1c8beb5aba29c90857b6f685f544942382f261c1207000000000000000000000000000000000000000000000000000000000000050f17222d374149545e64707c86919ca4adb8c1cad6cdc2b7ada49c90857b6f645d58626c75808c959ea9b4bcc8d1d1c9bdb5aa9f968e82776e645a51473c31281f160c0200000000000000000000000000080e14181c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26323d48525b65717d88939da7b5bec8d8e0e9edeae0d7ccc1b5aaa0978b80746960554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161d23292d2f30323232323232323232322e2e2b27221c150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020710181e23292f33393e3f464a4c4f5156585a5c5e5f6162625f63635f6261605e5c5a5856514d4c48423e3a352e26221d1710080100000000000000000000000000000000000008121d263038434a555f69707c85909ca2abb6bec8d2cec5bbb4a99f958e82786e635b52483f362c2118100600000000000000000000000000000000000000000000000000000000020c161f27313c47515a646e77828e969faab4bdc9d1d0c7bfb3a89d948b7f746b6157535c636f7a84909ca3acb8c0cad4cfc4b9afa79c928a7e736a61564b43382f261c1208000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131212100c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404b57616b76818d99a3acb6c6ced8e5e3e2e3e5dacfc4bab0a79c90857a6f63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13191e212424262626262626262626262322201d18120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c121921282d32393e43494d5055575b5a616466686a6b6c6d6e686e6e686e6d6b6a686663615a5957524b49453e36312d272018120a030000000000000000000000000000000000030d161f28303b454f58626b737f8a929ca5aeb8c3ced5cec3b9afa69c928b7f736c625950463b302820170d0300000000000000000000000000000000000000000000000000000007121c262f383f4b56616a727e8a929ca6afb9c5cdd3c9bfb7aba29b8f83796e635a514b56606a737e8a939ca7b0bac4cfd3c9c0b7aca39c90857b6f635d534840362c21160d04000000000000000000000000000000020507070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070b0f11121212110f0b070c0a07070502000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505964707b86919ca8b4bcc6d6dedad7d6d7daded4cac0b4a99f958a7e73685e54493e33271f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f131618191b1b1b1b1b1b1b1b1b1b171715120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212931383d43494d535859606366696b6f717475777879797a7a7a7a7978777674716f6a6864625b57544e47433c373029221a130b030000000000000000000000000000000000060f18212b353f48525b656e76828e959ea9b4bac5ced2c8bfb6aca39c91867c706960554a433930271d13080000000000000000000000000000000000000000000000000000040d16212c363f48535c636f7b84909ca3acb7c0c9d5cec4b9afa69b92897d716960554a47515a636e78828e97a0abb5bec8d2d0c7bcb4a99e958d81766d635950463b31261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0f1112141611161a1c1d1e1d1c1a161218161312100d09060300000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606975808c97a0abb5c1ccd7d4cfcccbcccfd4dacec3b8aea59b8f83796e63574b42382e24190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d0f0f0f0f0f0f0f0f0f0f0c0b090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f262c303a41474b53585c6365696e7275787b7d7f818283848585858585858482817f7d7b7774706b66635e57544b474139322b231b130b03000000000000000000000000000000000007121c252f37424b555e646f7b84909ca1aab5bdc8d1cfc6bcb5aaa0968f83796e635d534940372d22191106000000000000000000000000000000000000000000000000010b141e26303b465059636d75818d959ea9b3bcc7d0d3cbc0b5aa9f968d81766d635850464049545e68707c86919ca5aeb8c2cdd8cec3b8aea59b91887d716960554a42372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f1111111111111111111111111111111111111111111111111111111111111111111111111111111111110b0a080502000000000000000000000000000000000000000000000000000001060b0e11161a1c1d2022242125282929292825212523211e1e1c1814110e0a03000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca7b0bac4cfd1cac4c1bfc1c4cad1d2c8bfb3a89d93897d71665b52483d33271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f272f363b454a51575c63656c71757a7d818486898b8d8e8f909091979791908f8e8d8b898683807c77726e68635d565149433b342c231c130a0100000000000000000000000000000000020c151e27323a454b56616a727e89919ba4adb8c0cad4cfc4bab0a79d938c80756d635a51473c312a21160e05000000000000000000000000000000000000000000000006111b252e363e4a556069717d88919ba5aeb8c3ccd8cdc2b7ada49c90857b70645d54483f3a454e57626c75808c959ea9b4bcc8d0d2c8bfb6aba29b8f837a6f635b52473e352b20160e040000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161514110c07010000000000000000000000000000000000000000000002070b1116191c212528292b2e302b303334353433302b312f2d2a2927231f1d19150f0b070200000000000000000000000000000000000000000000000000000000000005111c28333e49545f68737f8a959fa9b8c0cad1c8c0bab5b4b5bac0c8d1cdc2b7ada4998e82776c62574c41372d22180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090805010000000000000000000000000000020507070c0c0c0c0c0c0c0c0c0c0c0c0b0b0906020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f464a555a61646d71777c8185898c8f94949698999b9c9c9ca0a09c9c9b9a989697918e8b87827e78716d63615a534b443c342c231a12070000000000000000000000000000000000050e17212a323c47515a646d75818c949da7b0bac4cfd3c9c0b7ada49c91877d716a61564b443a31271e150b01000000000000000000000000000000000000000000000b16202b353e47525b636e79838f9ba1abb6bec8d4d0c7c0b3a89d948b7f746b61574c4438353e47525b636f7a84909ba3acb7c0cad4cfc6bbb3a89d948b80746c62584f453a30271e130900000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292929292929292929292929292929292929292929292929292929292922211f1b17110b030000000000000000000000000000000000000000050c12161b2024272b30333437393c353b3e4040403f3b353c3a383535322d2a28241f1a16120c05000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f9ba6afb9c8d1cac0b8b0aba8abb0b8c0cad1c7bdb2a79c92877c70645a51473c31251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112161616161616161616161616161616161616161616151513100c07010000000000000000000004090e111213181818181818181818181818171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f4850555e656b6f767d82888c9095989b9da4a2a4a5a6a7a8a8abaaa8a7a6a5a4a7a09c9a97938e89837d766f6a635c544d443c342a22180f060000000000000000000000000000000000061119232d37414a545d636f7a838f97a0abb5bcc7cfd0c7bdb6aba19790847a6f635e554a42372e251b1107000000000000000000000000000000000000000000070f19242f3a454e57626c74808b949da8b2bbc6cfd3c9c0b7aba29b8f837a6e635b52483c332e36424b56606a727e89929ca7b0bac4cfd7cdc2b7ada49c91867c70685f544941372d23170f0600000000000000000000000000000000000000000000000000000000000000000710181f252a2e31323434343434343434343434343434343434343434343434343434343434343434343434343434343434342d2c2a26211b140c03000000000000000000000000000000000003080e151c21252b2f33353b3e4042454749454a4c4c4c4a454a48464441403d3836332f2825211c150e0904000000000000000000000000000000000000000000000000000005111c28333e48525b66727d89949da8b6bfc8cfc4bab0a7a09ca0a7b0bac4cfcbc0b6aba2988c81756a61564b3f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171a1d1d21212121212121212121212121212121212121212121201e1b16110a030000000000000000080e14181c1e1f24242424242424242424242422221f1c17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505960636e737b81888e92989c9fa6a7a8adadafb1b2b3b3b4b5b5b3b3b2b1afb0aba8a6a39c9a938f89817b716c645d544d443b322820160d03000000000000000000000000000000000109131d273139444a556069717d86919ca3acb6bfc9d3d0c5bab1a89e948d81766e645b52473f352b21170f0600000000000000000000000000000000000000060f17232c333e49545e68707c86919ca4adb7c2cbd6cfc4b9afa69c92897d726960554a41382c26313c465059646e77828e96a0aab5bec7d2d1c7bdb5aaa0968e82786e635a51473d32281f160d03000000000000000000000000000000000000000000000000000000000000050f1820282f35393c3d404040404040404040404040404040404040404040404040404040404040404040404040404040404040393835312b241c140b01000000000000000000000000000000060d13171e252b30353a3e40454a4c4e5053544f55575857554f555352504d4b4742413e3933302b251e17140e07000000000000000000000000000000000000000000000000020c151e2a35414c57626c77828e9aa4adb7c6cfccc1b5aba0979197a0abb5bcc6d0c5bcb3a89c90857b6f63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2926211a130b030000000000000911181e2327292a2f2f2f2f2f2f2f2f2f2f2f2f2e2d2b27221b140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560696e757e858d92999ca3a7a9afb2b3b7b9bbbcbdbebfbfc1c1bfbfbebcbbbab6b4b1aca7a49d9a918d847d726d645d544b423930271d13080000000000000000000000000000000000030d172029313c465059636c74808b939ca6afb9c3ced4cac1b8aea59b918a7e726b62584f453b30281f160c020000000000000000000000000000000000030d161f28323d47515a636e78828e96a0aab5bdc7d3d3ccc0b5aa9f968d82766d635950463a3128222c374049545d64707c86919ca5aeb8c2cdd8cfc4bab0a79c938a7f736b61564b443830261c12080000000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b11070000000000000000000000000001070f161d22272f353b3e45494b4f5557595c5e60585f6363635f58615f5d5b5857514e4c49433f3b352f27231e181009030000000000000000000000000000000000000000000007121c26313c47515a65707c87929ca7b5bdc7cdc2b7ada49c9185919ca3acb6c1cccbc0b5aa9f968b7f74685f554a3e33281f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f262c303335383838383838383838383838383838383838383838383735302a241c130a010000000008111921282e3235363b3b3b3b3b3b3b3b3b3b3b3b393936312c251d140a010000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636e79818a90969ba2a7acb3b4b9bebfc2c7c6c8c9c9c8c7c7c7c8cac9c8cac5c1bfbcb6b2ada8a29b9490867e726d645c534940372c22170f050000000000000000000000000000000000071018222c364049535c636e79828e969faab5bbc6cfd1c9beb5aba29c90857b70685f544a43382f261c1208000000000000000000000000000000000008121c263038404b56616b737f8a939ca7b0bac5ced8cdc2b7ada49c91857c70645d54483f3629211d263038444c57626c74808c949ea9b4bcc7d0d4cac0b7aca39c90857b6f645d544940362c22160e050000000000000000000000000000000000000000000000000000000006111b252f3841494f5355575757575757575757575757575757575757575757575757575757575757575757575757575757575757504f4b453d342b21170c0200000000000000000000000209111820272c31373f454a4e5457585f6365686a6c6d686e6f6e696d6c6b696764615a5958534c4a453f37322e2821191306010000000000000000000000000000000000000000010c16212c36404b56616a75818c98a3acb6c5cecabfb3a89d948a7f8a939ca7b2bfc8cec4b9afa69b9084796e63574c43392f24190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f272f363b3f4044444444444444444444444444444444444444444444433f3a342c241a1107000000040e18212a31383d40414646464646464646464646464544413c352d251a11080000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b85909c9fa6abb2b6bcc0c3c8cacbc9c4c0bfbebcbcbbbcbdbebfc3c8cbcccbc6c1bdb7b3aba59e9691867e726c625950463c31291f140a00000000000000000000000000000000000008121c263038434a555f68707c85909ca2abb5bec8d2cec6bbb5a99f958e82796e635c534840362c22181007000000000000000000000000000000050e16222c364049545d646f7b85909ca3acb7c0cacdd0c7c0b4a89e948b80746b62574c44382f2619162028333d48525b636f7a84909ba2abb7c0c9d3d0c8bcb4a99f958d81766d635950463c31271e150b010000000000000000000000000000000000000000000000000000000a15202a353f4951595e606363636363636363636363636363636363636363636363636363636363636363636363636363636363635c5a554e453b31261b110500000000000000000000020b131a222830373c44484f55575e6366686e71737677797a7a7a7a7979787674726f6b6965625c57554f48443d383129231c110b0400000000000000000000000000000000000000040f1a25303b454f58636f7b85919ca8b3bcc6cfc4bab0a79b8f8479828e9aa6afb9c3cec9bfb4a99e94897e72675c53493e33281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f464a4c5050505050505050505050505050505050505050504f4e4a443d342a21160c01000009141e28313a42484c4d525252525252525252525252514f4b453e352a22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b737f8a929ba5aeb8c1c5cbcac4c1bfbcbab5b3b2b1b0b0b0b1b3b4b8bebfc3c8cfccc6c1bbb5aea79f9691867c706a60564b42392e24190e040000000000000000000000000000000000030c161f28303b454f58626b737f8a929ba5aeb8c3ced6cec3b9afa69c938b7f746c625950463b312920170d0300000000000000000000000000010b151e27313c465059646d76818d959fa9b3bcc8c1c1c9c0b7aba29b8f847a6f635b52483c33271f160f18242e38424a556069727e89929ca7afb9c4c1c1c1c3b9afa69b91897d726960554a43372e251b11070000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f1408000000000000000000020b131b232a323940464b54585f63686e71757a7c7f8183848585868685848382807e7b7875706c67635f58544b48413a342c201b140d0500000000000000000000000000000000000005111c28333f4a555f69747f8b969faab5c0ccccc1b5aaa0978b7f747e8a959fa9b4c0cbcdc2b8aea59a8e83776c63584d41382e23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f485055575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b59544d443a30261b100500020e18232e38424a5257595d5d5d5d5d5d5d5d5d5d5d5d5c5a554e453b32291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b656e76818d959ea9b4bac5c3c0bab5b4b1b0aaa8a6a5a4a4a5a6a7a9aeb3b4b8bec4cad1ccc5beb7afa79f968f847a6f635b52483e33281e13090000000000000000000000000000000001060e151b212b353f48525b656e76818d959ea9b4bac6cfd3c9bfb6aca39c91867c706960554a443930271d13090100000000000000000000000007111b252e373f4a556069727d89919ba6afb9b5b5b5b5b5b9afa79c92897e726960554a42382c23170f0a141f28313c465059646e77828e969faab5b5b5b5b5b5b5b6aba29b90847a6f635c53473f352b21160b0000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43382c21150a0000000000000000020a131b232b333b424950565d64696e73797d8184888a8d8e909197919691908f8d8b8a8783807c77736e69645d57524a443c2f2b251e160d04000000000000000000000000000000000007121d2934404c57636e7984909ba7afb9c4cfcbbfb3a89c91867b6f7a85909ca7b3bcc6d0c7beb3a79c93887c71655a51473d32261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465059606367676767676767676767676767676767676767676767645d544a3f35291e13080005111c27323d48525b626469696969696969696969696968655e554b42392e24190e040000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38424a555e646f7b84909ba1aab5bdb8b4b0aba8a5a7a09c9b9a9998999a9b9ea5a7a9aeb5bac0c8d0cec7c0b7afa69d948c80756c62574c41382d23180d020000000000000000000000000000010611161e252b30363c424b555e636f7b84909ba1aab6bec8d2cfc7bcb5aaa0978f837a6f635d544a41372d231911060000000000000000000000000b16212b353f47535c636f7a84909ba2abaaaaaaaaaaaaaaaaaa9f968e82766d645950463a31281b1307050f17222c364049545d64707c86919ca4adaaaaaaaaaaaaaaaaa89e948c80756c62584f453b30251a0f0300000000000000000000000000000000000000000000000000000f1b26323d4955606c77838585858585858585858585858585858585858585858585858585858585858585858585858585858585857f73675c5044392d22160b000000000000000008121b232c333c434b525960636d72797f83898d909596989a9b9ca09da09c9c9b999795938f8c88837e79726d64615b544d463a352e261e140b0100000000000000000000000000000006121d28333e49535c67727e8a959ea9b7c0c9cdc2b7ada4998d82766a75808c98a3acb6c1ccccc1b6aca3998d81766b61574b40362c22170b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560696e727272727272727272727272727272727272727272726e64594e43372c2015090007121e2935404c57626b70757575757575757575757575736f655c53483e33281e140900000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a454b56616a727e89919aa4adb5aea9a7a09c9a9696918f8e8d8d8d8e9095969b9ea5abb0b8bfc7d0d0c8c0b7ada49c91867c70655a51473d32271c100500000000000000000000000000040b111a22272f353b40464a4c5358616a727d89919aa5aeb8c3ced7cfc4bab0a79d948c80756d635a51473c312a21160e0500000000000000000000030f1a25303b454f58626c75808c949e9e9e9e9e9e9e9e9e9e9ea59c91867c70645d544840362a21180b020008121c263038444c57626b74808b949e9e9e9e9e9e9e9e9e9e9ea59c91867c70685f544a3e33281c110500000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f919191919191919191919191919191919191919191919191919191919191919191919191919191918a7f73675c5044392d22160b00000000000000051019222b333c444c545b626a6f767e838a8f94989c9fa5a4a6a7a8aab0aaa8a7a6a4a3a49d9b97938e8a837e77706b645d5649453e362e251b11060000000000000000000000000000030d161f2b36424d58636d77838f9aa5aeb8c7d0cabfb4a89e94897d7166707c87939ca7b2bfc8d0c6bcb3a89c91867b6f645950463c31251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636e797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e72675b4f44382d21150a0007131f2a36414d5964707c8080808080808080808080807f736c62574c42382e23190e040000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a313c47515a646d75818c949da7aaa59f9c97918e8a888584828281828384878b90959ca0a7afb7bfc9d1d0c7bdb5aba0978d81766b61564b4035291e1309000000000000000000000000050d141b202a32373f454a5056585c6265686d75808c959ea9b4bfcbd6d4cac0b7ada49a91897e726a61564b453a32271e150b0100000000000000000005111c28333e4a545f68707c869193939393939393939393939393948b80746b62574d44382f261911080000030c161f28323d48525b636f7a848f93939393939393939393939393978f83796e63574b4034291d120600000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b000000000000040d162029333b444c545d636c707a81898f949b9da4a7a9aeb0b1b3b3b5bab5b3b3b2b0aeada8a6a39c9a948f89827b726e665f544e473e352b20170e050000000000000000000000000008121d26323d48525b65717d88939da8b5bec8cfc4bab0a79b8f84796e636c77838e9aa5aeb8c3ceccc1b5aaa0978c80746960554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b868989898989898989898989898989898989898989867a6e62574b4034281d110006121d2934404b57636e7a848c8c8c8c8c8c8c8c8c8c8c877c70655b52483d32271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000081119232d37414a545d636f7a838f97a0a09c95908b86827f7c7a787776767677797c7f848b91979fa6afb8c1cad4cfc4bab0a79c91867b6f64584d41372d23180d0200000000000000000000040d161e252b2f3b42484f55596063686c707477797b84909ca7b3becad5dad0c8bdb4aaa19b90847b6f645e554b42372e251b110700000000000000000006121d2934404b57636e798387878787878787878787878787878787847a6f635b52483c34281f160900000000060f17232e38424a556069727e87878787878787878787878787878787877f73685c5045392e22170b00000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a1968a7e73675c5044392d22160b0000000000010b141e263139434c545d636d717c848d919b9da4a8adb3b4b8bbbdbebfc1c4c0bfbebdbcbab7b3b2aca7a49d9b928e857e746f635e574e453a2f271f160c020000000000000000000000010c17222c36404c57626b76828d99a3acb7c6ceccc1b5aba0978b7f74685f67727e8a959fa9b4c0cbcfc4bab0a79c90857a6f63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b869295959595959595959595959595959595959591857a6e62574b4034281d110005111c28333e4a545f68737f8a959797979797979797978d81766b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000009131d273039444a556069717d86919c97918c85807b7773706e696b6a6a6b6c6c70747a808690969fa8b1bac5d0d4cac0b5aaa0978b7f74685a51473c32261b1005000000000000000000010b141e262e353a454b52585f636a6f73787c8082858790959ea9b4bfcbd6e1d8cdc5bab4a99e958d81766e655b52473f352b21160e05000000000000000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f6960554a42382c23170f06000000000009141e28313b465059646d727c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e130700000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ada1968a7e73675c5044392d22160b000000000006111b252e36414a535c636d717d858f949ba2a8adb3b7bdc0c3c8c8cacbcccfcccbcac9c7c7c2bfbcb6b3ada8a39c95908980756e685e544944382f261c12070000000000000000000000040f1b26313c46505964707b86919ca8b4bdc6d6cbbfb4a89c91867b6f6458636e7a85909ca7b3bcc6d0cac0b4a99f958a7f73685e54493e33271f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19c91857a6e62574b4034281d1100030f1a25303b454f58636e7a84909ba6a3a3a3a3a3a39c91867c70645a51473d32271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313c465059636c74808b938f86807a746f6b6865635f585f5f5f5b6265696f747e859097a1abb6bec8d2cfc4bab0a79a8e83776a61564b4034291d120600000000000000000006111b252e363e4549555b62686e737a7f83888b8e90959c9ea5aeb8c3ced9e4ded5cec3b8aea59b928a7f736b62584f453b30271e150c020000000000000006111d28333f4a5560696e70707070707070707070707070707070706f6a615950463a31281b1307000000000000040e17212c364048545d646b7070707070707070707070707070707070706b61574b4035291e120700000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8ada1968a7e73675c5044392d22160b00000000000b16202b353e47515a636d717e8690959ea4abb3b7bdc2c7cbcccbc7c5c2c1c1c1c1c3c5c8cbcccac6c1bdb7b3aca69f9c908b80786e635e54483f362c21170c010000000000000000000006111d28343f4a56606a75808c97a0abb6c1cdcdc2b8aea5998d82766b6156606975808c97a3acb6c1cccec3b8aea59b8f83796e63574b42382e24190d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9acacacacacacacacacacacacacaca89c91857a6e62574b4034281d1100000b16212b353f4a556069747f8b959fa9afafafafaba0978c81756b61564b40372d22170c02000000000000000000000000000000000000000000000000000000000000000000000000000000071018222c364049535c636e79828d837c746f6a64615a5957554f53535452575960636d727d87919ca5aeb8c2cdd4cabfb4a89c91867b6f64584c41352a1e1207000000000000000008131c202b353e474e545e646c70797f848a8f94979a9c9fa6a9aeb6bec8d2dde7e6dcd2c8beb5aba29c90857c70685f544a42372f251b110700000000000000040f1a25303b4650586063646464646464646464646464646464646464615a514840362a21180b030000000000000008121c262f38444d545b62646464646464646464646464646464646464615b52483d32271c100500000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc4b8ada1968a7e73675c5044392d22160b00000000030e19242f3a454e57616b717d8691969fa6adb5bbc2c7cdc9c4c0bfbcb9b7b6b5b5b6b7b9bdbfc1c5caccc7c2bcb6afa9a09a908c80746e645850463b30251a0f04000000000000000000030e1a25303a454f58636f7a85909ca7b0bac5cfcabfb4a89e94897d72665a515964707c87929ca7b2bfc8d2c8bfb3a89d94897d71665b52483e33271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5b8b8b8b8b8b8b8b8b8b8b8b8b4a89c91857a6e62574b4034281d11000007111b25303b465058636f7a85909ca6afb9babab0a79c91857b6f645950463c31261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038434a555f68707c817a706c63605a57514e4d4e4f4f4f4e4c4c50555d646d74808b949ea9b4c1cad4ccc1b6aba197897d72665b4f43382c21150900000000000000071019232c2f3a454e575e636e737c838a90959b9da4a5a7a9afb4b8bec6cfd8e2ecece2d8cfc6bbb5aa9f968e82796e635b52483f352b21160e04000000000000010c17212c363f4850555759595959595959595959595959595959595856514a41382f261911080000000000000000020c161f28333c444b525759595959595959595959595959595959595857524a41382e23180d0200000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6d6d6d6dbd7d5d4d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0c4b8ada1968a7e73675c5044392d22160b000000020c161f27333e49545e686f7b8490969fa7afb6bec5cdc8c3c0bab5b3b0adabaaa9aaaaacaeb1b4b6bac1c4c9cdc6bfb9b4a9a19a908a7e726960554a3f33281d110600000000000000000005111c28333e49545f68737f8a959fa9b8c1cacfc4bab0a79b9084796e63574b57626c77828e9aa5aeb8c3cecdc2b7ada4998e82776c62574c41372d22180c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c3c3c3bdb8b5b4b4b4b4b4b4a89c91857a6e62574b4034281d110000010b17212c363f4b56606a74808b969faab5c0c0b5aa9f968c80746a60564b40362c21170c02000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f28303b454f58626b70756f69625c5651515156585a5a5b5a5a58565150545d636e7984909ba8b1bac5d0d0c5bab1a8978b8074695d51463a2f231106000000000000040e172129343c4449545e686e747e868f939c9ea5a8adb1b3b4b9bfc3c8cfd6dfdde1e1e4dfd6cec4b9afa69c938b7f746c62584f453b30281e140a0000000000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413931281f160900000000000000000000060f17232c333a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b48413a31281e14090000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e5ddd6d0ccc9c8c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c4b8ada1968a7e73675c5044392d22160b00000007121c26313c47515a636e78828e959ea6afb7bfc7cbc6beb8b4b0aaa8a5a2a09e9e9e9fa0a2a5a8abb0b5b9bfc7c5bcb5aea7a09c928e847a6e63574c4034291d120600000000000000000006111d2934404b57636e79838f9ba6afb9c8d1ccc1b5aba0978b8074685f5449525b67727e89959ea9b4c0cbd1c7bdb2a79c92877c70645a51473c31251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0ccc3bbb3adaaa8a8a8a8a8a8a89c91857a6e62574b4034281d1100000007121c26313c465059646f7b85909ca7b0bac4b9afa79c90857a6f635950463b31251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000060f17212b353f48525b62646a6360595357595c5a6164656666666564615a5c58566069737f8a97a1abb6c1ccd4cabcb0a4998d82766b5f5348352b20160b00000000000009131e28313a444d565f636e78808a91969da3a9aeb3b7bcbfc0c3c8ced2cdcecfd2d5d6d8dcddd3c9bfb7aca39c91867c70685f554a42382e23170f05000000000000020c161f272f363b3f40424242424242424242424242424242424241403c37312920170f06000000000000000000000007131b232a32383d40414242424242424242424242424242424241403d38312921180e040000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ddd4cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8ada1968a7e73675c5044392d22160b0000010c17212c363f4b56606a737e8a929ca5aeb7c0c7cac2bbb6aea9a7a09c9996949392929395979a9ca0a7aaafb7bbbab6aca59e97918b827b6f6960554a3f33281d1106000000000000000005111c28333e48525b66727d89949da8b6bfc8d6cbbfb4a89c91867b6f64584f454c57636e7a84909ca7b3bcc6d0cbc0b6aca2988c81756a61564b3f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c7bdb3aaa39e9d9d9d9d9d9d9d9c91857a6e62574b4034281d11000000020c17222c37404b56616a75808c97a0aab5c1c0b5a99f958b7f746960554a3f352b21160b010000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f37424b5257595e5755575b6264686b6b6f71717271716f6b6b6763615a636f7b86919ca8b4bfcbd4c9bdb1a69a8f83786c574e453a2f24190e0300000000020d18232d38414a545d666f75808c909c9fa6acb4b8bec2c7cacbcbc8c4c3c2c2c3c6cacbcdd2d7d9d0c7bcb5aaa0968f83796e635b52483d32271f160c02000000000000050e171f262c30333436363636363636363636363636363636363534322d2720181007000000000000000000000000020b131921282e323536363636363636363636363636363636363635322e2821191108000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d6cdc4bcb6b2b1afafafafafafafafafafafafafafafafafafafafafafafada1968a7e73675c5044392d22160b0000040f1a25303b465059636f7a85909ca3acb5bec7cac1bab2aba59e9c96918d8b8887878787898b8e91979c9fa6abb3b0aba39c95908780786f6a615850463b30251a0f0400000000000000020c161e2a35414c57626c77828e9aa4adb7c7cfcdc2b8aea5998d82766b6157473e4a55606975808c97a3acb6c1ccd0c5bcb3a89c90857b6f63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c3b8ada39a93919191919191919191857a6e62574b4034281d110000000008121d26313c47515a64707b86919ca8b1bac3b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27323a42484c4d53575e63666c707477797b7c7d7d7d7c7b7976736f6a64616a78838f9aa6b2bdc9d4cabeb3a79c908479685e54493e33271c10050000000005101b27323d47515a646e74808b919aa1aaafb7bdc3c8cdcac4c0bfbcb9b7b6b7b8bbbebfc2c7ced2d7cfc4bab0a79d938b7f746b62574c44382f261c120700000000000000060e161c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2926231d1710080000000000000000000000000000020911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18110900000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dbd0c6bcb3aca7a6a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a1968a7e73675c5044392d22160b000006111d28333f4a556069747f8b959ea9b3bcc6cbc3bab1a9a29b95908b85827f7d7c7b7b7c7d7f83868c90969ca2a9a7a09c928e847d746e68615a51483f362c21170c010000000000000007121c26313c47515a65707c87929ca7b5bdc7d6cbbfb4a99e94897d72665a51473b46505964707c87929ca7b2bec8d2cbc0b5aa9f968b7f74695f554a3f33281f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c0b5aa9e938a868585858585858585867a6e62574b4034281d1100000000030d18232d37414b57616b76818d97a1abb6c1bfb4a99e958a7f73685f554a3e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a323a414850555c63686e72777c7f82858788898989888685827f7b756f6b6975818c98a3afbbc6d2cbbfb4a89c91857a6e63574b4034291d11060000000006121e2934404b56616b727e89909aa1aab5b9c0c7ced0c8c0bab5b3b0adabaaabacafb2b4b8bec3c8cfd4cac0b7ada49c91867c70645d54483f362c21170c0200000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e080000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d7ccc1b6aca39c9a98989898989898989898989898989898989898989898989898968a7e73675c5044392d22160b000006121d2935404c57636e7a84909ca5aeb8c4ccc7bbb2a9a09a918d847f7b767371706f70707274777b80858d9299a09e97918b827b716d635f58514a41382f261c120700000000000000010c17212c36404b56616a75818d98a3acb6c5cecfc5bab0a79b9084796e63574b41383f4c57626c77828e9aa5aeb8c3cecec4b9afa69b9084796e63574c43392f241a0e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c0b4a89d9186797a7a7a7a7a7a7a7a79766c61564a3f291d1206000000000009131d27323d48525b64707c86919ca8b4bcc3b8aea59b8f84796e63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000061019222a323a424a515960636d71787e83878b8e9096949495949495908d8a85817b746e74808b97a2aebac5d1ccc1b6aba197867a6f63574c4035291d120600000006111c28333e48535c646f7b85909ca1aab2bac4c9d0cac5bbb7b0aaa8a5a1a09f9fa1a3a7a9aeb4b9bfc6ced0c8bdb5aa9f968e82776e645950463b30261c1208000000000000000002070c0f111213131313131313131313131313131313131212100d090300000000000000000000000000000000000000040a0e111213131313131313131313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5c9beb2a79c938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7f73675c5044392d22160b00030f1a25303b454f5866727e89959ea9b6bfc8c9c0b7aba29a908b817a736f6a68666564646566686b6f747b828b909995908780786f6a635c544f47413931271f160c0200000000000000040f1a25303b465058646f7b85919ca8b3bcc6d6ccc1b6aba0978b8074685f544a3e323d48525b67727e89959ea9b4bfcbd3c9bfb4a99e94897e72675c53493e33281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e6e6e6e6e6e6e6e6e685f544a3e33281c11050000000000030d18232e38414c57626c76828d99a3acb6c1beb4a89e948a7e72685e54493e33271f150b00000000000000000000000000000000000000000000000000000000000000000000000000050e172029323a424b525a61696f757d83898e9396999c9fa6a0a0a0a69f9c9996918c867f78737f8a96a2adb9c4d0d0c5bab19d92867b6f63584c4135291e120700000007131f2a35414c57626c76818d959fa9b1bac2cfd1c9c1bab6aba7a09c999694939495989b9ea5a9afb6bdc5cecfc4b9afa79c92897e726960554a40362c21170c010000000000000000000104060608080808080808080808080808080808080706050200000000000000000000000000000000000000000000000305070808080808080808080808080808080808070705020000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb1a69a8e828181818181818181818181818181818181818181818181818181817d71655a4e43372b2014090005111c28333e4a555f6876818d99a5aeb8c6cfc4b9afa79b928b80766f6a63605a5a595858595b5a61646b6f787f8a8f8e847d746e68615a5349453e403b352d24170e050000000000000006111d28333f4a55606974808b969faab5c0ccd6cbbfb4a89c91867b7064584f453b3038424c57636e7a84909ca7b3bcc6d0cdc2b8aea59a8f83776c63584d41382e23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63636363636363635f584f453b30251a0f0300000000000009141e28333e48525b65717d88929ca7b2bdc2b7ada49b8f83796e63574b43392f251a0f050000000000000000000000000000000000000000000000000000000000000000000000020c151f273139424b525b626b6f7a80878f939a9ca3a5a8aaafabacabafa9a7a79f9c96918b827a7e8a96a1adb8c4d0d4cab5a99e92867b6f64584c41352a1e1207000004101b26313c46505965707c88919ba6afb9c1cad4cac1b8b1aba29b96918e8a898888898c90949c9fa6adb5bdc6cfc9c0b7aca39b90847a6e635950463b31261a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f757575757575757575757575757575757575757575757575757575716d63584d41362b1f14080006121d2934404c57636e7a85909ca8b3bec8ccc0b5aa9f968d81766f636059565151515151515151575a61686e747f89827b716d635f58515151504f4b453d35271e150c0200000000000007121d2934404c57636e7a84909ba7afb9c4cfcdc2b8aea5998e82766b6157473f352b333f4a55606975808c97a3acb6c1ccd2c8beb3a79d93887d71655a51473d32261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e6357575757575757544f473f352b21160b00000000000000040e19242e38424d58636c77828e9aa3acb7c1beb3a89d93897d72665c53493e33291f150a000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a525b626c707b838c91979da4a7acb1b3b5b9b7b7b7b9b4b3afaaa79f9c928e827f8a96a1adb9c4d0ccc0b5a99e92867b6f64584c41352a1e1207000006111d28343f4b56606a76818d98a2abb6bfc8d2d0c5bab1a8a19c928d86827f7d7c7d7e81848a90959da4adb6bfc8d0c7bcb4a99e948b7f736960554a3f34281d120800000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111110b0b09060200000000000000000000000000000000000000020406071111111111111111111111111111110807060300000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74696969696969696969696969696969696969696969696969696965635c53493e33281d12060008141f2b37424e5965717c88969faab5c0cfcbbfb3a89c91867b6f645f5c5c5c5c5c5c5c5c5c5c5c5c5c575e636f737d786f6a635c5c5c5c5c5c5c5a554e45372f251c1207000000000006121d28333e49535c67727e8a959ea9b7c0c9d3cbbfb4a99e94897d72665b5248372e25303b46505864707c87929ca7b2bec8d2ccc1b6aca3998d81766b61574b40362c22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4c4c4c4c4b4a453f372e251b110700000000000000000a141f28333e49535c66717d89939da8b3bdc1b7ada49a8e83776d63584d42392f24190e04000000000000000000000000000000000000000000000000000000000000000000040d16212c363f48515a626c707c848f939ca1a8adb2b6bcbfc0c3c9c3c8c3c0bfb9b5afaaa29c928e84909ba7b2becad5ccc0b5a99e92867b6f64584c41352a1e1207000006121e2935404c58636f7a85919ca8b3bbc6cfd4ccc1b6aba197918b817c76737171717275797f858f949da6afb9c3cecdc2b8aea59c90847a6f63574c40362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000000000003080d1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1413110e0a050000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5a58534c43392f241a0f04000b16222e3945505c68737f8a96a6afb9c4cec6bbafa4988c81756b686868686868686868686868686868686868686d726e68686868686868686868655e55483f352b21160b00000000030d161f2b36424d58636d78838f9aa5aeb8c7d0d0c5bab1a89b9084796e63574c413829212c363f4c57626b77828e9aa5aeb8c3ced0c6bcb4a89c91867b6f645950463c31251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c40404040403e3b352e271e150b010000000000000000050f19242f39434d58636d78838f9aa4adb7c2bdb2a79c93887d71655c53483e33281e14090000000000000000000000000000000000000000000000000000000000000000010b151e26303b454f58616b707c8490949da3abb1b8bdc1c6cacbced2cecbcac9c9c4c0b9b5aba39c9490949ea9b4bfcad6ccc0b5a99e92867b6f64584c41352a1e120700000a16212d3844505b67727e8a96a0aab5c0cbd7cbc0b6aca39c91877f76706b6766656667696e737c838f959fa9b4bdc7d1c7beb4a99e958a7e73675950463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292222201c18120b0400000000000000000000000000070d13181b1d1e2929292929292929292929292929291f1e1c19150f0801000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5252525252525252525252525252525252525252525252524e4d49433b33291f150b00000d18242f3b47525e6975808c98a3afbac9d3c3b8aca095897e737373737373737373737373737373737373737373737373737373737373737373736f65584f453b30251a0f0300000008121d26323d48525b65717d88939da8b5bec8cbccc1b6aba1978b8074685f554a3e33281c26323d48525b67727e89959ea9b4c1cad4ccc1b5aba0978c80746960554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c403434343433302b251e160e05000000000000000000000a151f29343f49545d67727e89949da8b3bec1b6aca3998e82766c62574c42382e23190e040000000000000000000000000000000000000000000000000000000000000007111b252e373e4a555f696f7b8490959ea5acb6bac1c9ccd0cfcccbc8c3c0bebebebfc1c4bcb3aca59e9b9ea5aeb8c2cdd8ccc0b5a99e92867b6f64584c41352a1e120700040f1b26313c4650596a76818d98a7b0bac4cfd4c9bdb2a79c928b7f746f64625b5a595a585f636c707c85909ca4adb7c1cccec3b8aea59a8e82776960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d0400000000000000000000000810171d222629293434343434343434343434343434342b2a28241f19110a010000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51474747474747474747474747474747474747474747474743413e39332b2219100600000e1a25313c48545f6b76828e99a5b0bcc8d1c5baaea3978c807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f73695f554a3f33281c11050000010c17222c37404c57626b76828d99a3acb7c6bfbfbfbfb4a89c91867b7064584f453b30251a232e38424c57636e7a84909ca8b1bac5bfbfc4bab0a79c90857a6f63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c40342929292825211b150e060000000000000000000000050f1a25303a444b57636e79838f9ba5aeb8c2bcb2a79c92887c70655b52483d32271e1309000000000000000000000000000000000000000000000000000000000000000b16202b353e47535c636e79828f949ea5aeb5bdc5cad1d0cac4c0bfbbb8b4b3b2b2b3b5babebcb5aea9a7a9aeb5bec7d2dcccc0b5a99e92867b6f64584c41352a1e12070006111d28343f4a55606978848f9ba6b2bec9d3ccc1b6aca3998e82786e635f57524f4e4e4f555b626b727e89939da8b3becad2c8beb3a89c91857a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b0200000000000000000007101820272d3134354040404040404040404040404040403635332e29221a11080000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3736332f29221b12090000000f1b26323e4955606c78838f9aa6b2bdc9d4c6bbb0a59a908c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b86796e63574c4034291d12060000040f1b26313c46505964707b86919ca8b4b4b4b4b4b4b8aea5998e82776b6257483f352b21161e28333f4a555f6974808c97a1abb6b4b4b4b4b4b4a99f958a7f73685e54493e33271f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1d1c1a16110b05000000000000000000000000000b162028333e4a545f68737e8a949ea9b4bfc0b6aba2998d81766b62574c41372d23180d030000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636d74808c939da5aeb5bec6d0d4cfc8c0bab5b3afaea9a7a6a7a8aab0b2b4b7b8b4b2b4b8bec5ced7d8ccc0b5a99e92867b6f64584c41352a1e12070006121d2935404c57636f7a86949da8b3bfcad5c9beb2a79c93887c70685e544c48434243454a525b636e79838f9ba6b2bdc9d4ccc0b5aaa096887d71655a4e43372c201409000000000000000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12080000000000000000030d17202930373c404b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413e39322a22190f0500000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454242424242424242424242424242424241403d38312f2b2b28241f19120a02000000101b27333e4a55616d78848f9ba7b2bec9d5c9beb4aaa19a97969696969696969696969696969696969696969696969696969696969696969692877b6f64584d41352a1e1307000006111d28343f4b56606a75808c97a0aba8a8a8a8a8a8a8a99e95897e72665b5248372f251b111a25303b454f5864707c86919ca8a8a8a8a8a8a8a8afa69b8f83796e63574b42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12110f0b07010000000000000000000000000000030f1a25303b454f58636e7a84909ba6afb9c3bcb4a89c91867c70645a51473d32271d1308000000000000000000000000000000000000000000000000000000000005111c28333e49545f68717d87919ca3acb5bec6ced0cac4bbb7b0aaa8a4a59f9c9b9b9ca0a7a7a8adb5b9bebfc2c7ced6ded8ccc0b5a99e92867b6f64584c41352a1e12070008131f2b36424d5965707c8793a4adb7c2cdd4c8bdb1a69a8e83776c62574e453d3837353b4249545e68737f8b96a2adb9c9d3cfc4bab0a7968a7e73675c5045392d22160b00000000000000000000000000000000000000000000000000000000000000000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d020000000000000008131d27303941474b575757575757575757575757575757574e4c48423b32291f150a00000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4c48423a31281f1d1a1510090200000000101c27333f4a56616d7984909ba7b3becad5cec3bab1aaa5a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e93877c7064594d42362a1f130800030e1a25303a454f58636f7a85909c9c9c9c9c9c9c9c9c9c9c9b9084796e63574c4238291e150c16212c363f4c57626b77828e99a59c9c9c9c9c9c9c9c9c9d94897d72665b52483e33271c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206030000000000000000000000000000000000000b16212b353f4a556069737f8b959fa9b4bfc1b6aba0978c81756b61564b40372d22170c020000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f97a1abb4bcc5ced0c8c0bab5aba7a09c989495908f909197969b9ea4aaafb6bdc5cdd6dee6d8ccc0b5a99e92867b6f64584c41352a1e1207000915202c37434f5a66717d8894a0abb7c7d1d1c5b9aea2978b8074685c53473e352e2b2b303a454e5765707c8793a6afb9c4cfd4cabaaea3978c8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c1106000000000000020d18222d3741495156626363636363636363636363636363635957534b42392e24190e03000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5959595959595959595959595959595959595957524a42382e23180f0b06000000000000101c27333f4a56616d7984909ba7b3becad5d3cac1bab4b0aeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaa9f93877c7065594e42362b1f14080005111c28333e49545f68737f8a959191919191919191919191978b8074695f554a3f33281c0e07121c26323d48525b66727e89959191919191919191919191918e82776c62574c41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000007111b25303b465058636f7a85909ca6afb9c4bab0a79c91857b6f645a51473c31261c120800000000000000000000000000000000000000000000000000000006121d28333e49535c67727e89939da8b1bac4cdd4cac0b7b0aaa29b96918d898685848485888b8f949c9fa6adb4bdc5ced8e1d8ccc0b5a99e92867b6f64584c41352a1e1207000a15212c38434f5b66727d8995a0acb7c3cfcfc3b8aca095897e72675b4f44362e251f212b35404c57636f7a86969faab5c0ccd2c6bbafa3988c8175695e52473b2f24180d0000000000000000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b20140900000000000004101b26313c47515a616d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e65625c53483e33281c1106000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686565656565656565656565656565656565656564625b52483d32271c110500000000000000101b27333e4a55616d78848f9ba6b2bec9d5dad2cac3bebbbab4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8b9b9b9b9b9b9b9b9b9b6aa9f93887c7165594e42372b1f14080006111d2934404b57636e79838585858585858585858585858585877c7064584f453b30251a0f020c19232e38424c57636e79848585858585858585858585858585857c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000010b17212c363f4a56606a74808b969faab5c0c1b5aa9f968c80746a60564b40362c22170c02000000000000000000000000000000000000000000000000000008141f2b36414d58636d78838f9aa3acb8c1cad4cfc4bab0a7a09c918d86817d7a797879797c7f848a90969da4adb5bec8d0dad8ccc0b5a99e92867b6f64584c41352a1e1207000a15212d38444f5b67727e8995a1acb8c3cfcec2b7aba094887d71665a4e43372c1e141d28343f4a5560697985919ca8b3bfcad2c7bbafa4988d81756a5e53473b3024190d0000000000000000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b00000000000006121d2934404b56616a777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c62574c41352a1e1307000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747171717171717171717171717171717171717171706b62574c4035291e1207000000000000000f1b26323e4955606c78838f9aa6b1bdc9d4d4cbc2bbb5b1b0a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb2b8c0c5c5c5c5c1b6aa9f93877c7065594d42362b1f13080005111c28333e49545f686e787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776b6257483f352b21160b0009141e28333f4a555f696e797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c62574c41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000007121c26313c465059636f7b85909ca7b0bac4b9afa79c90857a6f635950463b31251b110700000000000000000000000000000000000000000000000000030e1a25303a454f5865717d88939da8b4bdc9d1cfc6beb5aaa097918a817b75726f6a6c686e7074797f858f949da5aeb7c0cad4deccc0b5a99e92867b6f64584c41352a1e1207000a15212c38444f5b66727d8995a0acb7c3cfcec3b7aba094897d72665a4f43362c21181d2934404b57636e7a85919ca8b4bfcbd2c6bbafa3988c8175695e52473b3024180d0000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b00000000000007121e2935414c58636f7b8585858585858585858585858585857c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d2c6baafa3988c807c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7064594d41362a1f1307000000000000000e1925313c48535f6b76828d99a5b0bcc7d3cfc5bbb2aba6a49d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9da1a3a8afb8c2ccd0cec4b9afa693877c7064594d41362a1f130700030e1a25303a454f585f636d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e64625b5248372f251c120700030f1a25303b454f585f636d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e65625b52483e33271c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000020c17222c36404b56616a75808c97a0aab5c1c0b5a99f958b7f746960554a3f352b21160b0100000000000000000000000000000000000000000000000005111c28333e49545f6875818c98a4adb7c4cdd2c8beb6aaa19c91867f76706b666360595e6365696e737c838f949ea7b0bac4cfdaccc0b5a99e92867b6f64584c41352a1e1207000915202c37434f5a66717d8994a0abb7c8d3cfc4b8ada1958a7e7367584f453b302823252b35414c58636f7b8697a0abb6c1ccd1c6baafa3978c8075695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b8691919191919191919191919191877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d2c7bcb0a59a918c88888888888888888888888888888888888888888881766a5e53473c3024190d020000000000000c18242f3b46525d6975808c97a3afbac8d2cabfb5aba29b989191919191919191919191919191919191919195989fa8b2bcc7d7cbc0b5aa9f96867b6f63584c41352a1e120700000b16202b353e474f5457616363636363636363636363636363625957524a4238271e150c0200000b16212b353f484f5557626363636363636363636363636363635957524b42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000008121d26313c47515a64707b86919ca8b1bac3b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000000000000000000006111d2934404b57636e7984909ba7b3bdc6d5cec3b8aea59a908a7f736f64615b5856505457585f636c707b849096a0aab5c0cad4ccc0b5a99e92867b6f64584c41352a1e12070008141f2b37424e5965717c8893a6afb9c3ced2c6bbafa4988c8175695f554a4139322e31353c47515a66727d8994a7b0bac5cfd0c5b9aea2968b7f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929c9c9c9c9c9c9c9c9c9c9c93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d5cabfb4aaa19a9893939393939393939393939393939393939393938d81766a5e53473c3024190d020000000000000a16222d3944505b67737e8a95a5aeb8c3cec8bcb1a69b918d868686868686868686868686868686868686868a8f98a3aeb9c4d6cabfb3a89c9085796a61564b4034291d1206000007111b252e373e45494b555757575757575757575757575757574d4c48423a3128170e0500000007121c252f373f454a4c565757575757575757575757575757574d4c48423b32291f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000030d18222d37414b57616b75818d97a1abb6c1bfb4a99e958a7f73685f554a3e352b20160b00000000000000000000000000000000000000000000000008131f2b36424d5965707c87959ea9b4bfcbd6cbbfb4a99e958c80756e655e57524c4a46494b4f555b626b707c86919ca7b0bac4cfccc0b5a99e92867b6f64584c41352a1e12070007121e2a35414c58636f7b86959fa9b4c0cbd5cabeb3a79b90847a6e635a5149423d383c3f454b56616a75808c98a3afbacad4cfc4b9afa795897e72675b4f44382d21150a0000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da8a8a8a8a8a8a8a8a89f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec4bab1aaa5a39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f988d81766a5e53473c3024190d0200000000000008131f2a36424d5964707c87959ea9b4bfcbc7bbb0a4988d817a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7e8a95a1acb8c3cfc9bdb2a69b8f83786c5a51473c31261b10050000010b151e262e353a3e404a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312a21180600000000020c151e272f353b3f404a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413e38322a22180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000009131d27323d48525b64707c86919ca8b4bcc3b8aea59b9084796e63574e453a2f24190e0300000000000000000000000000000000000000000000000a16222d3944505c67737e8a96a5aeb8c3ced5cabeb3a79c90847a6f635e554b48413f3c3e40454a525a626c75808c97a0aab5c1ccccc0b5a99e92867b6f64584c41352a1e12070006121d2934404b56616a7985909ca7b3bfcad6cbbfb4a99e958a7f736b6159524c4847464a4f545e646f7b85909ca8b3bfcad6ccc0b5aa9f96887c7165594e42372b1f14080000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b4b4b4b4b4b4b4aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0d4cac2bab4b0afababababababababababababababababababa4988d81766a5e53473c3024190d0200000000000006111d2934404b57636e7984909ba7b3bdc6cabeb3a79c90847a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f76818d99a4b0bbc7d2c7bbb0a4988d81766a5e5347372d22180d02000000040d161e252b3033343e4040404040404040404040404040403635322e28211911080000000000050e171e252b3033343f4040404040404040404040404040403635332e29221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000030d18232e38414c57626c76828d99a3acb6c1beb4a89e948a7e72685e54493e332720150b00000000000000000000000000000000000000000000000c18242f3b46525e6975808c98a3afbac8d2cdc2b8aea5968b7f746a60564d453d38343133353b424a525b636f7b86919ca8b3bfcbccc0b5a99e92867b6f64584c41352a1e12070005101b26313c47515a6b77828e99a5b1bcc7d1cdc2b8aea59c90847b6f6a625b5752535055585f636f76818d969faab5c0cbd6cbbfb3a89c91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5bfbfbfbfbfb6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd2cac4bfbcbab6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b0a4988d81766a5e53473c3024190d0200000000000005101c27333e49545e6875818c98a4adb7c1cbc0b4a99e958b7f736c6363636363636363636363636369707c86919ca8b4bfcbccc2b7ada4968a7f73675c5045392d2213090000000000060d151b20252829333434343434343434343434343434342a2927231e18110900000000000000060e151c21252829333434343434343434343434343434342b2a27241f18110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000009141e28333e48525b65717c88929ca7b2bdc2b8aea59b8f83796e63574b43392f251a0f05000000000000000000000000000000000000000000000e1a25313c48545f6b76828e99a5b0bcc7d3cabfb4a99e94877c70645950463d322e2826272b3039424b56616a77828e9aa5b1bcc8ccc0b5a99e92867b6f64584c41352a1e120700020d18222d3746515d6874808b97a5aeb8c2cdd2c8beb4a99e958f837a706b64625b5e596063686e747f8a919ba6afb9c4ced4c8bdb1a59a8e8377695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0cbcbcbc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd4cecac7c6c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2bbb0a4988d81766a5e53473c3024190d02000000000000030e19242f3a454e5765717d88939da8b3bdc6c3b8aea59c90857c706c6360595757575757585c63696f79828e97a0abb6c1cccabeb3a89d93877c7064594d42362a1f1308000000000000040b11161a1c1d272929292929292929292929292929291f1e1c18140e08000000000000000000050c12161a1c1d282929292929292929292929292929291f1e1c19140f080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000040e19242e38424d58636c77828e9aa3acb7c1beb3a89d93897d72665c53493e33291f150a000000000000000000000000000000000000000000000f1b26323e4955606c78838f9aa6b2bdc9d4cabeb2a79b9084786c62574940362d231e1b1c2129313c47515a68747f8b97a2aeb9c5ccc0b5a99e92867b6f64584c41352a1e1207000009131f2b37424e5965717c88949ea8b4c0c9d3cec3b8aea59d938f837c74706b6b6a6a696f7279808a8f99a2abb7bfc9d3ccc1b6aca3968b7f7468584f453b30251a0f040000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd6cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe4ded9d5d2d2cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc7bbb0a4988d81766a5e53473c3024190d02000000000000000b16202b353e4d58636d78838f9aa4adb7c1c8bfb4a99f9590847c736e6965635f58596063666c717a818d939ca7b0bac5cec3b9afa69b8f83786c62574c41352a1e13070000000000000001070b0e11111b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1312110e0904000000000000000000000002070b0f11121c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000a141f28333e49535c66717d89939da8b3bdc2b7ada49a8e83776d63584d42392f24190e04000000000000000000000000000000000000000000101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776c5b52483830261c140f1219222d3744505b67727e8a95a1acb8c4ccc0b5a99e92867b6f64584c41352a1e1207000008131f2a36414d58636c7884909ba6afb9c4cfd2c8beb6aca39d938f86807b78767576777a7e838b9099a0a9b2bbc7d0d2c9beb2a79c93877c7064594d42362c21160c010000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe5dfdad6d3d3cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc7bbb0a4988d81766a5e53473c3024190d020000000000000006111b25333e49535c67727e8a939da8b3bac4c3b9afa69e9490857f7a74706e696c6c6a6f72767c838d929ba3acb8c1cacbc0b5aa9f968b7f74685b52483d33271c11050000000000000000000003050610111111111111111111111111111111070705020000000000000000000000000000000003050610111111111111111111111111111111080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000050f19242f39434d58636d77838f9aa4adb7c2bdb2a79c93887d71655c53483e33281e1409000000000000000000000000000000000000000000101c28333f4a56616d7984909ba7b3becad3c7bcb0a4998d82766b5f5348382b21160b040913202c37434f5a66717d8994a0abb7c3ccc0b5a99e92867b6f64584c41352a1e1207000006111d28333e49535c6874808b969faab5bec8d2cfc6bdb4aca49d96918c87848281828385898f939aa0a9b0b9c2cbd5ccc1b7aca39a8e82776b62574c4035261c1207000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dcd5cfcbc8c7c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4bbb0a4988d81766a5e53473c3024190d0200000000000000010b1a242f39434b57636e79838f9aa1aab4bdc6bfb6aea59e96908a84807c7a787777787a7d82878f939ba2abb3bcc8cdc2b8aea59c90857b6f63584c42382e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000a151f29343f49545d66727e89949da8b3bec1b6aca3998e82776c62584c42382e23190e040000000000000000000000000000000000000000101c27333f4a56616d7984909ba7b2becad3c8bcb0a5998e82766b584f453b30251a0f070a15212c38434f5b66727d8994a0acb7c3ccc0b5a99e92867b6f64584c41352a1e12070000030e19242f39434c58636f7b85919ca5aeb8c3ced4cdc4bdb4ada79f9c97948f8e8d8d8e91969b9da4a9b1b9c1c9d3cdc5bdb3a89d93897e72665b52483d3227150c02000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0dcd3cbc5c0bdbbb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b0a4988d81766a5e53473c3024190d0200000000000000000b151f28333e4a545f68717d88919aa3acb5bec6beb5aea69f9c94908b88858483838486898d91979da3abb2bbc4ccc3bbb4a99e948c80756a61564b4032281f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000050f1a252f3a434b57636e79838f9ba5aeb8c2bcb2a79c92887c70655b52483d32271e13090000000000000000000000000000000000000000101b27333e4a55616c78848f9ba6b2bec9d4c9bdb1a69a8f8377685f544a3e33281f1611141b232d3944505c67737e8a95a1adb8c4ccc0b5a99e92867b6f64584c41352a1e12070000000a151f2934404b56616a75808c959ea9b4bbc4ccd5cdc5bdb7afaaa8a49d9b9998999a9ca0a7a8adb4bac1c9d1cfc6bdb4aaa19a8f83796e63574b42382e23190600000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5cbc3bbb5b1b0acacacacacacacacacacacacacacacacacaca4988d81766a5e53473c3024190d020000000000000000030f1a25303b454f58636d75808c939da5aeb6bec5beb7afaaa59e9b9796918f8e8e8f9197999ca1a8acb4bbc3cec3bbb3aaa19b90847a6f635a51473c3121180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000b162028333e49545f68737e8a949ea9b4bfc0b6aba2998d81766b62574c41372d23180d03000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc8d4cabfb3a79c90857a6e63574b42382f26211e1f242b333e48525b6974808c97a3aebac6ccc0b5a99e92867b6f64584c41352a1e120700000005101b26313c47515a636f7a84909ca1aab3bcc4ccd4cdc7c0b9b5b3ada8a6a5a4a4a6a8aab0b3b7bdc5cad2cfc7beb6ada49b91887d71685f54493e32281e140a00000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4dacfc5bbb2aba6a4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1988d81766a5e53473c3024190d020000000000000000000b16212b353f47535c636e79838f949ea5aeb5bdc4bfb9b5aea9a7a79f9c9b9a9a9b9ca1a8a8abb1b8bdc4c8c3bab2aba29a90897e726a60564941372d22110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000030e1a25303a454f58636e7a84909ba5aeb8c3bcb4a89c91867c70645a51473d32271d1308000000000000000000000000000000000000000e1925303c48535f6a76818d99a4b0bbc7d3cbc0b4a99f95887d71655b52483f37302b2a2a2e333c434c57626c78838f9ba6b2bdc9ccc0b5a99e92867b6f64584c41352a1e1207000000020d18222d37414b56606a727e89919ba3acb4bcc4ced2d0c9c4c0bdb7b3b2b0afb0b1b3b5bac0c2c7cdd4cfc6beb6aea59d948c81756d63584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b5aba29b9995959595959595959595959595959595959595958d81766a5e53473c3024190d0200000000000000000007111b252e37434a556069707b8490959ea5adb4bac2c4beb8b4b2afaaa8a6a6a6a7a8abb1b4b6bac1c9c6bfb9b4aaa29b928c80756e645950463930271d130100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000b16202b353e4a556069737f8b959fa9b4bfc1b6aba0978c81756b61564b40372d22170c020000000000000000000000000000000000000c18232f3a46525d6974808c97a3aebac7d1cec3b9afa6988c80756b62584f47403b353636393e454c545e65707c87939da8b3becaccc0b5a99e92867b6f64584c41352a1e12070000000009131d27313c465059646e75818c929ca4acb3bbc3c8cfd3cfccc7c2bfbebcbbbcbdbfc0c4c9ccd1d0cac4bdb6aea69e958f837a6f635c53473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d3c8bdb1a69b918d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a81766a5e53473c3024190d02000000000000000000010b151e27303b465058616b707c8590949da4aab3b7bdc2c2bfbeb9b5b3b2b1b1b2b4b6babfc1c5c5c1bbb6afa9a19a928d81796e635d544940372920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000007111b25303b465058636f7a85909ca6afb9c4bab0a79c91867b6f645a51473c31261c12080000000000000000000000000000000000000a15212c38444f5b66727e8995a4adb7c1ccd2c8bfb3a89c91867c70695f58514a4542414243484c555c646e76828e99a4adb7c2cdccc0b5a99e92867b6f64584c41352a1e120700000000030d17222d374049545d636e79828e939ca3abb4b8bec4c9cdd1d1cdcac9c8c7c7c8cbcccfd2cecbc8c0bab5aca59e9590847c706960554c43372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bbb0a4998d817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d71655a4e43372b2014090000000000000000000000050e16212c363f48525b626c707c848f939aa1a8adb3b7bdc0c3c4c0bfbdbdbdbebfc1c5c7c2c1bab6b4aba69f9c908c81796e685f554d443930271810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000010b17212c363f4a56606a74808b969faab5c0c1b5aaa0968c80746a60564b40362c22170c02000000000000000000000000000000000007131e2a35414d58646f7b87939da8b3c1cad4ccc0b5aaa0968e82796e68605a544f4e4d4d4e52575e656d727e8a929ca7b4bdc7d1ccc0b5a99e92867b6f64584c41352a1e1207000000000008131d273039444a5560696f7a838e939ba1a9aeb5b9c0c2c7cacbccd0d4ceced2cecbcac8c3c0bcb7b0aaa39d9590857d716b625950463c33261e150b010000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b06060606060607121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747272727272727272727272727272727272727272716d63584d41362b1f140800000000000000000000000007121c262f38414a525b626c707b838c919b9da4a8adb3b5b9bbbdbebfc1c4c0bfbebcbbb7b3b1aba8a29b95908980796e695f584f453c3428201608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000007121c26313c465059636f7b85909ca7b0bac4bab0a79c90857a6f635950463b31251c1207000000000000000000000000000000000006121e2934404b56616b78838f9ba7b0bac5cfcfc4bab0a79c928d81786f6a635f585958595a5b62656e737d86919ca2abb6c5cdd7ccc0b5a99e92867b6f64584c41352a1e12070000000000030d172028303b465058606a6f7a828d919c9ea5aaafb3b7bcbebfc1c5cac3c2c8c3c0bebcb8b4b3aba7a09c938f857d716c635b524940362b23160d04000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22171212121212121212121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686767676767676767676767676767676767676765635c53493e33281d1206000000000000000000000000020c161f27313a424b525b626b707a80888f939b9da4a8aaafb0b1b3b3b5b9b5b3b2b1afada8a8a19c99918d857e756e685f584f483f352c23180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000020c17222c36404b56616a75808c97a0aab5c1c0b5aa9f968b7f746960554a3f352b21160b010000000000000000000000000000000005101b27323d47515a68747f8b97a0abb6c1cad4cac0b7aca39b918d827a736e686665646465686c70767f869196a0aab3bcc5d5deccc0b5a99e92867b6f64584c41352a1e1207000000000000060f18212c363f48515a606a6f7a818a90959c9fa6a8adb0b2b4b6bab7b7b7b6b8b4b3b1aea9a7a29c97918c837c716c635c534b423830261b120600000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e221d1d1d1d1d1d1d1d1d1d1e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58534c43392f241a0f0a05000000000000000000000000050e172129323b424b525b61696f757d838a8f94989c9fa6a4a6a7a8aaafaaa8a7a5a3a49d9b97918e88817b726e635f584f483f372f251c130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000008121d26313c47515a646f7b86919ca8b1bac3b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000020d18232d38414d5964707b86919ca8b1bac5d0d0c8bcb3aba19b928e847e7975727070707174777c818a9196a0a7b0bac3ccd5d8ccc0b5a99e92867b6f64584c41352a1e12070000000000000007121c262f384049515a60696f757e848c91969b9da4a4a7a8abb1abacababaea9a7a5a59f9c98928e868079706b635c534c433a31281f160a0200000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2929292929292929292929292935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5150505050505050505050505050505050504e4d49433b33291f1c19140f08010000000000000000000000061019222a323b424a525960636d71797f83898d909696999a9c9ca0a79f9c9b9a9895948f8c86827d766f6b645d544f473f382f271e150b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000030d18222d37414b57616b75818d97a1abb6c1bfb4a99e958a7f73695f554a3e352b20160b000000000000000000000000000000000009131e2935404c57626b76828d97a1abb6bfc8d2ccc4bbb2aba29c94908a84807d7c7b7c7d7f82868d929ca0a7b0b7c0cad4dcd8ccc0b5a99e92867b6f64584c41352a1e120700000000000000020c161f2730394049515960636e727a80858b8f9496999b9ca1a8a0a0a09fa59f9c9a9795908c87827c756e69625b534b433b332a21170f060000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a353535353535353535353535353535414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454444444444444444444444444444444443413e39332e2b2a28241f18110901000000000000000000000009111a222a323a414850555d63696e73797d8185888b8d8f9091979196918f8e8c8a8784807c77716c64615a544a453f372f271f160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000008131d27323d47515a64707c86919ca8b4bcc3b8aea59b9084796e63574e453a2f24190e030000000000000000000000000000000005111c27323d48525b65717c87919ca6afb9c3ced4cbc2bbb3aba59e9b948f8c89888787888b8e91979ba2aab0b7c0c8d0dae4d8ccc0b5a99e92867b6f64584c41352a1e12070000000000000000050e1720283039404950555e646a6f757b7f84878b8d90919794949494949395908e8b8884817c76706c636058524b433b332b22191107000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514540404040404040404040404040404040414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3939393939393939393939393939393939393939393635332e29221a110800000000000000000000000109111a2229313840464a54585f63686e72767a7d7f81838485868685858482817e7c7874706b65635c56514a443b352e271f170e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000030d18232e38414c57626c76828d99a3acb6c1beb4a89e948a7e72685e54493e332720150b00000000000000000000000000000000020e18232e38424d58636c76818d959fa9b4bac3ccd3cbc3bbb5aea8a49e9b989593929394969a9ca1a8abb5bac0c7d0d8dce4d8ccc0b5a99e92867b6f64584c41352a1e1207000000000000000000060f182028303840464a545a60636a6f74787c7f82848587888889898887868482807d7a75706c65625b555048423a322b221a120901000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454545454545454545454545454545454545454545454542413e39322a22180f0500000000000000000000000109111921282f363b43484f55585f6366696e71747677797a7a7a7a7978777573706c6964625b58534b474139302b251e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000009141e28333d48525b65717c88929ca7b2bdc2b8aea59b8f83796e63574b43392f251a0f050000000000000000000000000000000009141e28333e49535c646f7b85909ca1aab3bcc4ccd3ccc5beb8b4ada8a7a3a09f9e9e9fa2a5a8abb1b8bbbcbdc1c6ccd4dcd8ccc0b5a99e92867b6f64584c41352a1e120700000000000000000000080f18202830363c444951565a6163686c707376787a7b7c7d7d7d7c7c7a797774716e6965625b57524a463f38312a221a120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c575757575757575757575757575757575757575758636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5150505050505050505050505050505050505050505050504d4c48423b32291f140a000000000000000000000000010910171f262c31373f454a4f545759606365686a6c6d696e6f6e686d6b6a6764625b5957524d49433d373129211b150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000040e19242e38424d58636c77828e9aa3acb7c1beb3a89d93897d72665c53493e33291f150a00000000000000000000000000000000040e19242f39434b56616b727e89919aa2abb3bcc3cdd2cec7c2beb7b4b2afacaaa9aaabadb1b4b6bab6b2b1b2b6bcc3ccd6d8ccc0b5a99e92867b6f64584c41352a1e12070000000000000000000000080f171f262c313940474b5156585b6265686a696e707171727171706f6a6b6966635f5857524c48423b362f272119120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746863636363636363636363636363636363636363636363636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5957524b42392e24190e0300000000000000000000000000070f161c21272f353b3e45494b5055575a5c5f60585f6363635f58605e5b5957524d4c48423e39322d272019110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000a141f28333e49535c66717d89939da7b3bdc2b7ada49a8e83776d63584d43392f24190e04000000000000000000000000000000000a151f29323d47515a646e75808c929ca3abb3bac2c8ced2cdc7c2bfbebab7b6b5b6b7b9bcbfbab3aca7a5a7acb3bcc6d0daccc0b5a99e92867b6f64584c41352a1e1207000000000000000000000000070f161c222830373c41474b4c5257595c586063646566666665656360595d5a57554f4c48423e38302c261f17110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686868686868686868686868686868686868686868686868686865625b52483e33281c11060000000000000000000000000000060c12171e252b30353a3e40464a4c4e5153554f55575757554f5452504d4c4842403d38332f29231e1710070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000050f19242f39434d58636d77838f9aa4adb7c2bdb3a79c93887d71655c53493e33281e140a00000000000000000000000000000000050f18232d38414a545d636e79828e929ca2aab4b8bec4c9cdd1cdcac9c6c3c2c1c1c2c8c0bab5a9a39c9a9ca3acb6c1cccbcbc0b5a99e92867b6f64584c41352a1e120700000000000000000000000000060c121820272d31373c4042484c4d51505557595a5a5a5a5a59585650514f4c4a453f3e39332e29211c160e060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2978b7f7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7b87929ea9b5c0ccd8cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747373737373737373737373737373737373737373737373737373706c62574c41352a1e130700000000000000000000000000000002080e151c21252b3033363b3f4043454749454a4c4c4c4a4549474442413d3835322e28241f18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000a151f29343f49545d66727e89949da8b3bec1b6aca3998e82776c62584c42382e23190e040000000000000000000000000000000009131e28313a444a555f686f7a828e929aa1a9aeb5b9bfc2c7c9cacbcecbcac9c6c1bdb7b0aaa09a928e929ca7b2bdbfbfbfbfb5a99e92867b6f64584c41352a1e1207000000000000000000000000000003080f171d22272d3134393e414245464a4c4d4e4e4f4f4e4d4c4b464643403f3b35332e29241f17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d1c6baafa499908b8686868686868686868686868686868686868686868686868686878b95a0abb6c1cdd9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d3c7bcb0a5998d817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7065594d42362b1f13080000000000000000000000000000000000050c12161b2025282c303335373a3c363b3f4040403e3b353b393635332e2a27231e19150f090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000050f1a252f3a434b57636e79838f9ba5aeb8c2bcb2a79c92887c70655b52483d32281e130900000000000000000000000000000000040e172129303b454f5860696f7a828c909b9ea5aaafb4b7bcbdbfc0c3c0bfbdbbb6b2aca7a09c908b828e9aa5b1b4b4b4b4b4b4a99e92867b6f64584c41352a1e120700000000000000000000000000000000060d13171d2226292e333536363b3f4041424343434342403f3c37373433302b25241f19140f070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c9beb3a9a09997919191919191919191919191919191919191919191919191919192959ca5afbac4cfd9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb2a69c928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7e73675c5044392d22160b00000000000000000000000000000000000002070b11161a1c212528292b2e302c303334353433302b302d2a2a27241f1c19140e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000b162028333e49545f68737e8a949ea9b4bfc0b6aca2998d81766b62574c41382d23180d0300000000000000000000000000000000071019212b353f48505960696f79808990949c9fa6a8adb0b2b3b5b9b5b3b2b0aca7a39d97918b807f8a96a1a8a8a8a8a8a8a8a89e92867b6f64584c41352a1e1207000000000000000000000000000000000003080d13181b1f24282a2b2c303334363737383737363534312c2c292825211c19140f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc3b9b1a9a4a29d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea0a5acb5bfc9d3d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b5aba29c9996969696969696969696969696969696969696969696969696968a7e73675c5044392d22160b000000000000000000000000000000000000000001070b0e12171a1d1d20222521252829292928252124221f1e1c1914110e0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636e7984909ba5aeb8c3bcb4a89c91867c70645a51473d32271d1308000000000000000000000000000000000007111b252f374049505960686e757e848c90969b9ea4a4a6a8aaafaaa8a6a4a39c9a938f867f747e8a969c9c9c9c9c9c9c9c9c9c92867b6f64584c41352a1e12070000000000000000000000000000000000000003090d1015191c1e1f212528292a2b2c2c2c2b2b29282622201d1c1a16120c0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d3cac1b9b3afaea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abafb5bdc5cfd9d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4dacfc5bbb3aba6a5a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000003070c0f1112141712161a1c1d1e1d1c1a1611161313110e0a050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a555f69737f8b959fa9b4bfc1b6aba0978c81756b61564b40372d22180c0200000000000000000000000000000000020c151e273038404850585f636d727a80858b8f9496999b9c9fa69f9c9a9996928e89837d73737e8a919191919191919191919191867b6f64584c41352a1e120700000000000000000000000000000000000000000002050a0e111312171a1d1d1f20202020201f1e1d1b171212110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dad1cac3bebab9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b5b6babfc5cdd6dfd9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5ccc3bbb5b2b0adadadadadadadadadadadadadadadadadadadadadadadada1968a7e73675c5044392d22160b0000000000000000000000000000000000000000000000000001040606090b070c0f11121212110f0b070a0807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000007111b25303b454f58636f7a85909ca6afb9c4bab0a79c91867b6f645a51473c31261c12080000000000000000000000000000000000050e161f28303840474f545d646a6f747b8084888b8d8f90969196908f8d8a87827e78716c737f85858585858585858585858585857b6f64584c41352a1e1207000000000000000000000000000000000000000000000000030607070c0f11121314141515141312110f0c0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e2dad3cdc9c6c5c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c1c4c9cfd6dde4d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0dcd3ccc5c0bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8ada1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000000000000000001040506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000010b16212c363f4a55606974808b969faab5c0c1b5aaa0968c80756a61564b40362c22170c020000000000000000000000000000000000060f171f282f373f454a545960636b6f74797c7f8283858586858583817f7b77726e68656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a776a61564b4034291d1206000000000000000000000000000000000000000000000000000000000104060607080909090908060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe3ddd8d4d1d0cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcccdcfd3d9dfe6e4d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4e0e4dcd5cfcbc8c7c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b8ada1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059636f7b85909ca7b0bac4bab0a79c90857b6f635950463b31251c1207000000000000000000000000000000000000070f171f272e353b444950565a6164686e70747678797a7a7a79787673706b66635e5e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6d615a51473d32271b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ebe5dfdad6d4d3d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d1d2d4d8dde3eae4d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8d8d8dad6d4d3d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0c4b8ada1968a7e73675c5044392d22160b00000000000000000000000000000104061111111111111111111111111111110b0a090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406071111111111111111111111111111100f0e0b07020000000000000001040606111111111111111111111111111110060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000020c17222c36404b56616a75808c96a0aab5c1c0b5aa9f968b7f746960554a3f352b21160b01000000000000000000000000000000000000070f161e252b303940464b5156575e6365686a6c686e6f6e686c6a6764625b5754555a5c63636363636363636363636363636256514a41372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070b0d0e0e0d0b070705030000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e4dcd5d0cbc8c8c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c6c9cdd3dae2e4d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc4b8ada1968a7e73675c5044392d22160b00000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120c060000000003080c0f11121d1d1d1d1d1d1d1d1d1d1d1d1d1d1c11100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000008121c26313c47515a646f7b86919ca8b1bac3b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000000000060e151b212830373c41474b4e5457595c5f585f6363635f585f5c5957524b494b4f505757575757575757575757575757574b47413931271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d10121316191a1a19171312110e0904000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dcd3ccc5c0bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9babbbec3cad2dae3d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b8ada1968a7e73675c5044392d22160b0000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e2829292929292929292929292929272624211c1610080100060d12171b1d1e2829292929292929292929292929271d1c1916110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000030d18222d37414b57616b75818d97a1abb6c1bfb4a99e958a7f73695f554a3e352b20160b0000000000000000000000000000000000000000050b111820272d31373d3e45494b4e51534f54575757544f53504d4c48423e4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d37312920170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e14181c1e1f2224252524221f1e1c19140e0a0500000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5ccc3bcb6b2b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafb3bac1cad3ddd9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada1968a7e73675c5044392d22160b00000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c0400000000000000000000000000000000000000000000000000000000000000000000000000070f171d22262929343434343434343434343434343433322f2b2620191108070f161d22262829343434343434343434343434343433292724201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000008131d27323d47515a64707c86919ca8b4bcc3b8aea59b9084796e63574e453a2f24190e03000000000000000000000000000000000000000001070f171d22272d32353a3e40424548454a4b4c4b4a45474541403d383335383940404040404040404040404040403534322d27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191e2327292a2e303131302e2a2927231e19140f08010000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dad0c5bcb3aba7a5a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a4a9b1bac3cdd8d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1968a7e73675c5044392d22160b000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b020000000000000000000000000000000000000000000000000000000000000000000000060f1820272d31343540404040404040404040404040403e3d3a36302921190a0f181f262c3134353f404040404040404040404040403f34332f2b251e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d38414c57626c76828d99a3acb6c1beb4a89e948a7e72685e54493e332720150b00000000000000000000000000000000000000000000060d13171e23252b2f3334363a353b3e4040403e3b35393635322e272a2c2d34343434343434343434343434342a2927231d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030911181e24282e323536393b3d3d3b393635322e28241f1811090300000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b6aba29c999696969696969696969696969696969696969696969696969696979aa0a9b3bec9d4d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e968a7e73675c5044392d22160b0000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120800000000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f404b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403932291a12161f2830363c3f404b4b4b4b4b4b4b4b4b4b4b4b4b4b4a403e3a352e261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d48525b65717c88929ca7b2bcc2b8aea59b8f83796e63574b433a2f251a0f050000000000000000000000000000000000000000000003080e13181b202427292b2e2b303334353433302b2d2a2927231e1f212229292929292929292929292929291e1d1b18130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c131a21282e32383d404145474848474541403d38332e28221a140c04000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb2a79c928e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b909aa4afbbc6d2d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838f939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e73675c5044392d22160b000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d0200000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c57575757575757575757575757575654504a42392b22191d26303840464a4c5757575757575757575757575757564b49453e362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e38424c58636c77828e9aa3acb6c1beb3a89d93897e72665c53493e34291f150a00000000000000000000000000000000000000000000000004090b1116191c1d1f22212528292929282521221f1e1c18141415161d1d1d1d1d1d1d1d1d1d1d1d1d1d1212100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c242a32383d42484c4d5053545453504d4c48423e38322a241c140c040000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d3c8bcb0a5998e827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f808b97a2aebac5d1d9cdc1b6aa9f93877c7065594e42362b1f1408000f1b26323d4955606c77838787878787878787878787878787878787878787878787878787878787878787878787878787878787877e73675c5044392d22160b00000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c11060000000000000000000000000000000000000000000000000000000000000000010c17222d3740495056586263636363636363636363636363615f5a524a3b32291f222c36404950565862636363636363636363636363636157544e473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28333e49535c66717d88939da7b3bdc2b7ada49a8e83776d63584d43392f24190e040000000000000000000000000000000000000000000000000001060b0e10111411161a1c1d1e1d1c1a16111312110e09080a0b1111111111111111111111111111070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d242c343a42484c5257585c5e5f5f5e5c5957524c48423a342c251d140b0200000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74747474747474747474747474747474747474747474747474747b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e120700000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1409000000000000000000000000000000000000000000000000000000000000000004101b26313c46505960636e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a4b43392f2426313c46505960636e6e6e6e6e6e6e6e6e6e6e6e6e6e6d635e574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000050f19242f39434d58636d77838f9aa4adb7c2bdb3a79c93887d71665c53493e33281e140a0000000000000000000000000000000000000000000000000000000003050608070b0f11121212110f0b070707050200000000060606060606060606060606060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131b242d353d444b52575b6264686a6b6b6a6864625b57524b443d352d251b130700000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746868686868686868686868686868686868686868686868686f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080007121e2935404b57616b707070707070707070707070707070707070707070707070707070707070707070707070707070707070706f6a60564b3f34291d12060000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a76797a7a7a7a7a7a7a7a7a7a7a7a7a78736a5c53493e332828343f4a56606a6f797a7a7a7a7a7a7a7a7a7a7a7a7a786e685e54493e33271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29343f49545d66727e89949da8b3bec1b6aca3998e82776c62584c42382e23190e04000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17232c353d454d545b62646b70737576767573706b64625b554d453d352c23170f06000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080005101c27323d48525b616464646464646464646464646464646464646464646464646464646464646464646464646464646464646463605950463c31261b10040000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a868585858585858585858585858584786c62584c41362a2935404c58636f7a868585858585858585858585858584786e63574b4034291d150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a252f3a434b57636e79838f9ba5aeb8c2bcb2a79c92887c70655b52483d32281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27333c454e555d646c70767b7f818282817f7c76706c645e554e453c33281f160c020000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c515151515151515151515151515151515151515158636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800020d18232e38414a5257585959595959595959595959595959595959595959595959595959595959595959595959595959595959595856504940372d22170c010000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000004101b26313c46505967727e8a96919191919191919191919194887c7065594e42382e313b46505967727e8996919191919191919191919194887c71655a4e43392f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152028333e49545f68737e8a949ea9b4bfc0b6aca2998d81766b62574c41382d23180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060607070707070707070707070707060604010000000000000000000007121c262f38434c555e656e727c82878a8d8e8e8d8a87827c726e655e554c44382f261c12080000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514545454545454545454545454545454545454c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d1308000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a76828d999c9c9c9c9c9c9c9c9c9ca4978b8074695b52483d33343f4a55606976818d999c9c9c9c9c9c9c9c9c9ca5978c8075695c53493e33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636e7984909ba5aeb8c3bcb4a89c91867c70645a51473d32271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f11121212121212121212121212121212110f0c080300000000000000010c17212c363f48545d656f737e868d92969899999896928d867e736f655d544840362c22170c0100000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080000040e18212931383d4041424242424242424242424242424242424242424242424242424242424242424242424242424242424242403f3c37302820170d03000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8a8a8a8a8a8a8a8a8a8a69b8f83786c62574c413535404c57636f7a85909ca8a8a8a8a8a8a8a8a8a8a79b8f84786c63584c41362a1f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d12060a0703000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a555f69737f8b959ea9b4bfc1b6aba0978c81756b61564b40372d22180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b17120d06000000000000040f1a25303b465058636d737f8991969ba2a4a5a5a4a29c96918a7f736d635950463b31261a0f0400000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2e2e2e2e2e2e2e2e2e2e2e2e2e35414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000007101921282e3235363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312d2720180f0600000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000040f1b26313c46505967727e8a96a0aab5b4b4b4b4b4b4b4b3a89d94877c7064594d42383b46505966727e89969faab5b4b4b4b4b4b4b4b4a89e94887c7165594e42392f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c4034291d181715120e0903000000000000000000000000000000000000000000000000000000000000000000000000000007111b25303b454f58636f7a84909ca6afb9c4bab0a79c91867b6f645a51473c31261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2126282929292929292929292929292929292826221d160f07000000000006111d28333f4a556069717d86919c9fa7abafb0b0afaba7a09c91877e726960554a3f34281d130800000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2222222222222222222222222935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f070000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000006111d28343f4a56606a76828d99a7b0bac4bfbfbfbfbfc2b7ada4978b7f74685b52483d3f4a55606976818d98a6afb9c4bfbfbfbfbfc2b7ada4978c8074695c53483e33281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c403429242323211d18130c0500000000000000000000000000000000000000000000000000000000000000000000000000010b16212c363f4a55606974808b969faab5b5b5b5aaa0968c80756a61564b40362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c313435353535353535353535353535353534312c2620180f060000000006121d2934404c57636e79849097a0aaafb7bbbcbcbbb7b0aaa09790847a6f63574c40372d22180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22171717171717171717171e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d06000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8b3bfc9d3cbcbcbd1c7bdb1a69a8f83786b62574c40404c57636e7a85909ca7b3bfc9d3cbcbcbd1c7beb2a69b8f84786c62574c41352a1f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c40342f2f2f2e2c28231c150d050000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059636f7b85909ca7b0aaaaaab0a79c90857b6f635950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f4040404040404040404040404040403f3c37302820160d030000040f1b26313c46505968737f8a949ea7b0b9c0c7c8c8c7c0bab0a79e948b7f73685a51473c31261b1004000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b0b0b0b0b0b0b0b121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000004090d1012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131212100c080300000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000040f1b26313c46505967727e89969faab5c0ccd9d6d6d6d5cabeb3a89d93877b7064584d41454f5866727d89959fa9b5c0cbd9d6d6d6d6cabfb3a89d94887c7065594e42392e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c403b3b3b3b3a37322c251e150c03000000000000000000000000000000000000000000000000000000000000000000000000020c17222c36404b56616a75808c96a09e9e9e9e9e9e9f968b7f746960554a3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b46403830261d1208000006111d28343f4a56606a77838e9aa5aeb8c0c9d0d3d3d0c9c1b8aea59a8f83776a61564b3f34291d1206000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000205070708080808080808080808080808080808080808080808080808080808080808080808080808080808080807060401000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000006111d28343f4a55606976828d99a7afb9c4cfdaeae2e3d7ccc1b7aca3968b7f73685a51474a555f6975818d98a6afb9c3ced9e9e2e3d8cdc2b7ada4978b8074695b52483e33281c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e63574c464646464645423c362e251c13090000000000000000000000000000000000000000000000000000000000000000000000000008121c26313c47515a646f7b869193939393939393939390847a6f63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c364048505557585858585858585858585858585856504940372c22170c010006121e2935404c58636f7a86919ca8b4bec8d1d9e0e0d9d1c8beb4a89c91867b6f63584c4135291e1207000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a85909ca8b3bfc9d3dee8ede6dbd1c6bdb1a59a8e83776b61564b4c57636e7a85909ca7b3bfc9d3dde8ede7dcd1c7bdb2a69b8f83786c62574c41352a1e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e6357525252525252504c463e362c23180e03000000000000000000000000000000000000000000000000000000000000000000000000030d18222d37414b57616b75818787878787878787878787877f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b46505960636363636363636363636363636363605950463c31261b0f040008131f2a36424d5964707c8797a0abb6c1ced8e1e9eae1d8ccc1b6aba197877c7065594d42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000000000000000000000000000000000000003050606060503000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000040f1a26313b46505967727e89969faab5c0cbd9e3e4e2e1e2d6cbbfb4a89c91867b6f64584d4f5866717d89959fa9b4c0cbd9e2e1e2e4e1d5cabfb3a89d94877c7065594d42382e24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e635d5d5d5d5d5d5d5b564f463c32281d12070000000000000000000000000000000000000000000000000000000000000000000000000008131d27323d47515a636f7a7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a60564b3f34281d1106000814202b37424e5a65717c8894a7b0bac5cfdae5f1f1e6dbd0c5bab1a894887d71655a4e43372c201409000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000000000000000000000000003050608070b0f11121212110f0b0707060502000001010606060606060606060606060605040200000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000006111d28343f4a55606976818d99a6afb9c4ced9ddd9d6d6d6d8ccc1b6aba1978a7f73675a51545f6875818c98a6afb9c3ced9d6d6d6d9ddd8cdc2b7ada4978b8074685b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857a6e6969696969696969665f564c42372c21150a00000000000000000000000000000000000000000000000000000000000000000000000000030d18232d38414a56606a6f7070707070707070707070706f6b61564b4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6f63584c4035291e12060008131f2a36424d5964707c8797a0abb6c1ccd7e1e9eae3d8ccc1b6aba197877c7065594d42362b1f1408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000000000000000000001070b0f11121412161a1c1d1e1d1c1a16111212100d090a0c0d1111111111111111111111111110100e0b070200000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85909ca8b3bfc9d3d8d2cecbcacbced0c5bab1a8998e82776a615657636e7984909ca7b3bec8d2cecbcacbced2d8d1c7bdb2a69b8f83786c62574c40352a1e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0bfb4a89d91857975757575757575757570665b50453a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313c465059606364646464646464646464646464615a51473d32271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975808686868686868686868686868684786d61564a3f33271c100006121e2935404c58636f7a86919ca8b4bec8d1d9e0e0d9d1c8bfb4a89c91867b6f63584c4135291e1207000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f14080000000000000000000000000000000000000004090b11161a1c1d2023212528292929282521211e1d1b18131618181d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d07000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000040f1a26313b46505966727e89969faab5c0cbd7cfc8c3c0bfc0c3c8cabfb4a89c91867b6f63585866717d88959ea9b4bfcbc8c3c0bfc0c3c8cfd5cabeb3a89d93877c7064594d42382e23190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c6baafa3978c8080808080808080808075695d52463b2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000040e17222c3640495056585959595959595959595959595856514a41382d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c92929292929292929292929084786d61564a3f33271c100006111d28343f4a56606a77838e9aa5aeb8c0c9d0d3d3d0c9c1b8aea59a8f83776a61564b4034291d1206000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2a2926231d21232429292929292929292929292929272724211c1710090100000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000006111d28343f4a55606976818d99a6afb9c4cecec6bfb9b4b3b4b9bfc6c1b5aba0978a7e7367595f6875818c98a5aeb8c3c6bfb9b4b3b4b9bfc6cfccc1b7ada4978b7f74685b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c7bbb0a59a908c8c8c8c8c8c8c8c8c867a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000008121d26303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c989d9d9d9d9d9d9d9d9d9b9084786d61564a3f33271c1000040f1b26313c46505968737f8a949ea7b0b9c0c7c8c8c7c0bab0a79e948b7f73685a51473c31261b1004000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000000000060d13171e23252b303334373a353b3f4040403e3b35393534312d272c2f2f343434343434343434343434343332302c262019110900000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85909ca8b3bfc9cec6beb6afa9a7a9afb6bfc4bab0a7998d82766a60636e7984909ba7b3bec8bfb6afa9a7a9afb6bfc8d1c7bdb2a69a8f83786b62574c4035291e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0cabfb4aaa19a979797979797979791857a6e62574b4034281d11000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4042424242424242424242424241403d38312921170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3a9a9a9a9a9a9a9a79b9084786d61564a3f33271c1000010c17222c36404c57636e7a849097a0aaafb7bbbcbcbbb7b0aaa09790847a6f63574c41372d22180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0ccd7cdc1b6aa9f93877c7065594e42362b1f1408000000000000000000000000000001060f171d22282d32353b3e40424648454a4c4c4b4a45474441403c3733373a3b404040404040404040404040403f3e3b36302922191007000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000040f1a25303b46505966727e89969faab5c0cbc8beb5aea69f9c9fa6afb9c3bfb3a89c91857a6f6365717d88959ea9b4bfc3b9afa69f9c9fa6afb9c3cecabeb3a89d93877b7064594d41382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0cec4bab1aaa5a3a3a3a3a3a3a39c91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262c3134353636363636363636363636363535322d282119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afb4b4b4b4b4b2a79b9084786d61564a3f33271c10000008121d28333f4a556069717d86919c9fa7abafb1b1b0aba7a09c91877e726960554a3f30271d130800000f1b26323d4955606c77838f9aa6b1bdc9cdcdc5b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0cccdcdc1b6aa9f93877c7065594e42362b1f140800000000000000000000000000040b111820272d31383d3f454a4b4e51544f55575857544f53504c4b47413e4245474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d020006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000006111d28333f4a55606976818d98a6afb9c3cdc3b8aea59e9590959fa9b4c0c0b5aaa096897e72676875808c97a5aeb8c3c0b4a99f9590959fa9b4bec7ccc1b7ada4968b7f74685b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5c0c9c9c2bab4b0afafafafafafa89c91857a6e62574b4034281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2927231e1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc0c0c0beb2a79b9084786d61564a3f33271c100000040f1a25303b465059636d737f8a91969ba2a4a5a5a4a29c96918a7f736d635950463b3120170d0300000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1b9aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5c0c1c1c1c1b6aa9f93877c7065594e42362b1f1408000000000000000000000000050d141b202830373c41474b4f54575a5d5f585f6363635f585e5b5856514c494d5152575757575757575757575757575654504a423a30261c12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000006121d2935404c57636e7a85909ca8b3bfc9cbbfb4a99e959085909ca7b3bec4bab0a7998d8176696e7984909ba7b2bec3b9afa69c9085909ca4adb7c2cdc6bdb1a69a8f83776b61574b4035291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b5bdbdbdbdbdbdbdbababababab4a89c91857a6e62574b4034281d11000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6cccabeb2a79b9084786d61564a3f33271c100000010c17212c363f48545d656f737e868d92969899999896928e867e736f655d544840362c2210070000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5aea2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9b5b5b5b5b5b5b5aa9f93877c7065594e42362b1f14080000000000000000000000060e161e252b2f3940474b5156585f6365686b6d696e6f6e686c6a6764615a5853575c5e63636363636363636363636363615f5a534a40362c21160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000040f1a25303b46505866727d89969faab5c0cbcabeb3a79b9084808b97a5aeb8c2bfb3a89c90857a6f717c88949ea9b4bfc0b4a99f958a7f8a949ea8b4bfcac9beb3a79d93877b7064584d41382d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea9b1b1b1b1b1b1b1b1b1b1b1b1b1b1a89c91857a6e62574b4034281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000007121c262f38434c555e656e727c82878a8d8e8e8d8b87827c726e655e554c44382f261c12000000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaa2968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929da9aaaaaaaaaaaaaaaa9f93877c7065594e42362b1f140800000000000000000000060e161e262e353a434951565a6164686e71747678797a7a7a797875736f6a65625c6067696e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000006111d28333f4a55606976818d98a6afb9c3cec5bab0a7988d817d88949ea9b4bfc0b5aa9f96897d7274808c97a5aeb8c2bfb3a79c90857a848f9ba7b2becaccc1b6aca3968b7f73685a51473d32271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929ea6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69c91857a6e62574b4034281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080808080808080808080807070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606050d18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000020c161f27333c454e555e646c70767c7f818282817f7c76706c645e554e453c33281f160c020000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e968b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b86929d9e9e9e9e9e9e9e9e9e9e93877c7065594e42362b1f1408000000000000000000040d161e272f363e4549545a60636b6f74797c808284858686858583817e7b76706c636770757a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b100006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000006121d2934404c57636e7a85909ca7b3bfc9ccc1b6aba097897e7884909ba7b2bec3b9afa6988d817678848f9ba7b2bec4bab0a7988d8176818c98a7b0bac4cfc6bcb1a69a8e83776b61574b4035291e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f11121212110f18242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000050f17232c353d454d545b62646b70737677777673706b65625b554d453d352c23170f06000000000f1b26323d4955606c77838f9393939393939393939393938b7f74685c51453a2e22170b00000000000007121e2935414c58636f7b8692939393939393939393939393877c7065594e42362b1f14080000000000000000010b151e262f373f474e545d636a6f757b8084888b8d8f91969195908f8d8a86817c766f6a75808585858585858585858585858584786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000040f1a25303b454f5866727d89959fa9b4c0cbcbbfb4a89c91867b75808c98a6afb9c3bfb3a79c9085797c88949ea8b4bfc0b5aaa096897e727d8996a0aab5c0cccbbfb4a89c91867b6f64584d41372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f857a6e62574b4034281d11000000000000000000000000000000000005080b0d0e111111111111111111111111110f0f0d0a06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121412161a1c1d1e1d1c1a16242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000007131b242d353d444b52575b6264686a6b6b6a6864625b57524b443d352d251b130700000000000f1b26323d4955606c778387878787878787878787878787877f74685c51453a2e22170b00000000000007121e2935414c58636f7b8687878787878787878787878787877c7065594e42362b1f1408000000000000000007111b252e373f484f575e636d717a80858b909597999b9c9fa69f9c9a9897918d88817a7075818c91919191919191919191919084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd1c5b9aea2978b7f74685d51463a2e231309020506070a0a09080501000000000000000000000000000005111c28333f4a555f6975818d98a6afb9c3cec8bdb1a69a8e8377717d88959fa9b4c0c0b4a99f95897d808b97a4adb7c2bfb3a89c91857a6f7a85919ca8b3bfcbccc1b6aba1978a7f73685a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7a83838383838383838383838383838383838383838382776c6054493d32261a0f000000000000000000000000000000040a0f131719191d1d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070b0e1111121313131212110f0c07080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090b11161a1c1d2023212528292929282521242f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000020b141d242c343a444d54595a5d5d5e5f5f5e5d5d5a58534c433b342c251d140b02000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4135291e120700000000000006121d2934404b57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6e63574c4034291d12060000000000000006111a202b353e474f585f686e747d848c91969b9ea5a5a7a8aaafa9a7a6a7a09c99918d847c75818c989c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd1c6baafa3978c8075695d5246382d23180c0d10121216151513100c070100000000000000000000000006121d2934404c57636e7a85909ca7b3bfc8cec3b8aea5978b7f746e7a85909ca7b3bfc3b9afa6988c81838f9ba6b2bec5bab1a8998e82766a77828e9aa5b1bcc7d0c5bab1a89a8e82776b61564b4034291d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a6f7777777777777777777777777777777777777777777772695e53483c31251a0e0000000000000000000000000000060d141a1e22242529292929292929292929292929272624201b160f0800000000000000000000000000000000000000000000000000000000000000000000000000000104070b0f11121411161a1c1d1e1e1f1e1e1d1d1a17121411100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2f3b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000040c141e29343f4a545d6466696969696969696966635d53493f34291d140c0400000000000007121e2935404b57616b7070707070707070707070707070706f6a61564b3f34291d120600000000000005111c28333e4a545f686e7070707070707070707070707070706e6960554a3f33281d1106000000000000050e16222a303a454f585f686e78808990949c9fa7a9aeb0b2b3b5b9b5b3b1b0aaa8a29b9490857d808c98a3a8a8a8a8a8a8a8a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd3c7bbb0a4998d81766a5a51473d32261c15181b1d1e2121201e1b16110a0300000000000000000000030f1a25303b454f5866727d89959fa9b4c0cbcbbfb4a99e95887c716976818d99a7b0bac4bfb3a89c90858f949da8b3bfc1b6aba1978a7e7368737f8b96a5aeb8c2cdcabfb4a89c91867b6f64584c41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a61636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6962594f44392e23180d00000000000000000000000000060e161d24292d30303434343434343434343434343432312f2b261f181008000000000000000000000000000000000000000000000000000000000000000000000003080c1012161a1c1d202220252829292a2a2a2a29282521221f1d1c1916110b0a050100000000000000000000000000000000000000000000000000000000000000000000060d13171e23252b303334373a353b3f4040403e3b3539353b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000000914202b37424e59646d727575757575757575716d63584d42362b1f14080000000000000005101c27323d48525b6164646464646464646464646464646463615a51473c31261b1004000000000000030f1a25303b454f585f6364646464646464646464646464646463605850463b30251a0f040000000000020c151e27323b4249545f686e79818b909b9ea5aaafb4b8bcbebfc0c3c0bfbdbab5b3aba59e969085828e9aa5b1b4b4b4b4b4b2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd5c9beb2a79b8f84786b61564b3f362c24232326292a2d2d2c2926211a130b0300000000000000000005111c28333f4a555f6975818d98a6afb9c3cecabeb3a79c9084796e67727e8996a0aab5c0c0b5aa9f9690969da4adb7c2bfb4a89c91867b6f65707c87949ea9b4bfcbccc1b6aba0978a7f73675a51473c31261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d374149515658606060606060606060606060606060606060606060605e5951483f352a20150a000000000000000000000000040d161f272e34383b3c404040404040404040404040403e3d3a352f2821180f060000000000000000000000000000000000000000000000000000000000000000050a0d13171b1d212528292b2e2b30333435353636353433302c2e2b292724201b19150f0b060000000000000000000000000000000000000000000000000000000000000001060f171d22282d32353b3e40424648454a4c4c4b4a454744414047525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000000915212c38434f5a66727e80808080808080807d71665a4e43372c20130900000000000000020d18232e38414a52575859595959595959595959595959595856514940372d22180d02000000000000000b16212b353f474f5457595959595959595959595959595959575550483f362c21170c01000000000007111b252f37424b555e636e78818d919aa0a9aeb5b9c0c2c8c9cbcccecbcacac4c1bbb5aea69f95908e939ca7b2bebfbfbfbeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd6cabfb3a89d94877b6f64584f453b332f2f2d32343538383735302a241c130a01000000000000000006121d2934404c57636e7a84909ca7b3bec8d0c5bab1a8988d817668636f7a85919ca8b3bfc4b9afa69f9c9fa6adb4bdc7bdb1a69a8e83776b626c7884909ba7b2becacfc5bab0a79a8e82776a61564b4034291d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303941474b4c55555555555555555555555555555555555555555554534f4841382f251b10060000000000000000000000000a141d272f373e4346484b4b4b4b4b4b4b4b4b4b4b4b4b4948453f3931281f160c010000000000000000000000000000000000000000000000000000000000050a0f15191d2226292b3033343739353a3e404041414141403f3b36393634332f2b25241f1a16100a0500000000000000000000000000000000000000000000000000000000040b111820272d31383d3f454a4b4e51544f55575857544f53504c4b47525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000000030f1a25303b454f586a76818c8c8c8c8c8c8c8c81756a5e5247372d23180d020000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d1308000000000000000007111b252e373f454a4b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a463f382f261c12070000000000000b16212b353f48525b656e75808c919ba2a9b4b8bec4c9cdd1cdcac9c5c3c1c1c1c2c5beb6afa69f9c9a9ca3acb6c1cccbcabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd8cdc2b7ada4968b7f74695f554a443e393b373c40414444433f3a342c241a110700000000000000030f1a25303b454f5866717d89959fa9b4c0cbccc1b6aba1978a7e7267606a77828e99a5b1bcc6bfb7afaaa8aaafb7bdc5c2b7ada4968b7f74685b6a75818c98a7b0bac4cfcabfb4a89c91867b6f64584c41372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930373c40414949494949494949494949494949494949494949494948443f3830281f150b010000000000000000000000050f1a242e3740474d52535757575757575757575757575755534f4941392f261b110600000000000000000000000000000000000000000000000000000003080f14191f24272d3134353b3f4043454745494b4c4d4d4d4c4c4a46474542403e3a35332f29252019150f070100000000000000000000000000000000000000000000000000050d141b202830373c41474b4f54575a5d5f585f6363635f585e5b585651525e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000005111c28333e4a545f6878838f9797979797978e83776b5a51473d32271b100500000000000000040e18212931383d40414242424242424242424242424242413f3c37302820170d030000000000000000010b151e272e353b3e40424242424242424242424242424242403f3b362f271f160c020000000000030f1a25303b454f58626c737f8a919aa2abb2bac2c8cfd1cdc7c2bebdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbdcd1c7bdb2a79b8f84796e635d544c48474647474b4c504f4e4a443d342a21160c0100000000000005111c28333e4a555f6875818c98a5aeb8c3cecbbfb4a89c91867b6f645967737f8a96a3acb6c1c7bfb9b5b3b5b9bfc7cabfb3a89d94877c70645b66727e8997a0aab5c1ccccc1b5aba0978a7e73675a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d3134353d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c39352f2820170e0500000000000000000000000008131e29343e4750575d5f63636363636363636363636363615e5952493f352b20150a0000000000000000000000000000000000000000000000000000060d13181e24292e33373c3f40454a4c4e51534f5457585859585857555053504e4b49453e3e3934302a241f16110b040000000000000000000000000000000000000000000000060e161e252b2f3940474b5156585f6365686b6d696e6f6e686c6a6764615a585e6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000006121d2934404b57636e7a85919ca3a3a3a39c9085796b61564b4034291d1206000000000000000007101921282e32353636363636363636363636363636363534312d272018100600000000000000000000050e161e252b3033343636363636363636363636363636363433302c261f170e0500000000000005111c28333e4a555f68707c86919ca1aab2bbc2cdd2cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7d6cabfb4a89e948b80746d645d57535252525156585b5b59544d443a30261b100500000000000006121d2934404c57636e7984909ca7b3bec8d2c9bdb1a69a8f83776a6158646f7b87939da7b3bec9c9c4c0bfc0c4c9d0c9beb2a69b8f84786c6258636f7a85919ca8b3bfcbcfc4bab0a7998e82776a61564b4034291d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2226292932323232323232323232323232323232323232323232312e2a251f171007000000000000000000000000000b17222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f453a2f24180d020000000000000000000000000000000000000000000000010610171d22282e32393e40464b4c4f55575a5c5e585f6363646464646360585e5c5957544e4c49433f3a332e29201b150d06000000000000000000000000000000000000000000060e161e262e353a434951565a6164686e71747678797a7a7a797875736f6a65625c6975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c1000000000000007131f2a36414d5964707b87969faaafafa99f95867b6f64584c41352a1e13070000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000060e151b212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c160e06000000000000040f1b26313c465059636e79838f96a0aab1bac2cbd3ccc5bdb7b3ada8a6a3a09f9e9e9fa2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7d8cdc2b7ada49c91867d726d65625c5e5d5e5a61646767645d544a3f35291e13080000000000030f1a25303b454f5866717d88959ea9b4c0cbcec3b9afa6978b8074685a56616b77838f9aa6b1bdc7d1cecbcacbced3cec3b8aea5978c8075695b56606a77828e9aa5b1bcc8d2cabfb3a89c91867b6f63584c41372d22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e262626262626262626262626262626262626262626262523201b150e0700000000000000000000000000010d1924303b46525d6771767a7a7a7a7a7a7a7a7a7a7a7a7a7873695e53483d31261a0f0300000000000000000000000000000000000000000000040b111820272d31383d42484c505658585f6365686a6c686e6f6f70706f6e696c6a6865635e5758534e4a443e39302b251e160f0800000000000000000000000000000000000000040d161e272f363e4549545a60636b6f74797c808284858686858583817e7b76706c636975818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000000915202c38434f5a66727d8994a7afb9b9afa694887d71665a4e43372c20140900000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d060000000000000000000000000000050b11161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1a17120c050000000000000006111d28343f4b56606a737f8a939da7b0bac2cad3cbc3bbb4ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7dcd1c7beb5aaa09690867e76706c6b6969696b6a6f72726e64594e43372c201509000000000005111c28333e4a545f6875818c98a5aeb8c3cecbc0b4a99f95887c71655a515a68747f8b97a4adb7c2cdd8d7d6d7d9d6cbbfb4a99e95887d71655a505968747f8b96a5aeb8c2cdccc1b5aaa0978a7e73675950463c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d1012121b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a1a1815100b050000000000000000000000000000020e1925303c48535f6a76818585858585858585858585858583786c6155493e32271b0f04000000000000000000000000000000000000000000050d141b202830373c42484c525759606367696e71737577797a7a7b7b7b7b7a79777573706e6865635c59544c48423a352e26201810080000000000000000000000000000000000010b151e262f373f474e545d636a6f757b8084888b8d8f91969195908f8d8a86817c766f6a75818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000000b17222e3945515c68737f8b96a2adb9b9ada1968a7f73675c5045392d221308000000000000000000000004090d10121313131313131313131313131313131212100d08030000000000000000000000000000000001070b0f111213131313131313131313131313131312110f0c070200000000000000030f1a25303b454f58636f7a84909ca3acb7c0c9d2cbc3bbb3aba49d9b938f8b89878787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7e1d7cfc4bab0a79f969089817c787675757576787b7e7e72675b4f44382d21150a000000000006121d2934404b57636e7984909ca7b3bec8d2cabfb3a79c9085796e63574d5965707c87949da8b3bfcad6e1e2e2e1d6cabeb3a79c9084796e63574e5965707c88959ea9b4bfcbcfc4bab0a7998e82766a60564b3f34291d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0d0a0601000000000000000000000000000000020e1925303c48535f6a76828d91919191919191919191918f83786c6155493e32271b0f040000000000000000000000000000000000000000060d161e252b2f3940474b52575b62656a6f73767a7d7f818385858686878786868483817f7c7975716c66645d575249453e373028201810080000000000000000000000000000000007111b252e373f484f575e636d717a80858b909597999b9c9fa69f9c9a9897918d88817a7075818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c100000000000010d1924303b47525e6a75818c98a4afbbbaafa3988c8075695e5247372d22180d02000000000000000000000000020507070808080808080808080808080808070604020000000000000000000000000000000000000000000305060808080808080808080808080808080606040100000000000000000005111c28333e4a555f68747f8b959ea9b4bdc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7e9ded3c9c0b7afa69f9c918d8884828180818284868a8075695e52463b2f24180d00000000030f1a25303b454f5866717d88959ea9b4bfcbd3c7bbb0a4998d8176685f544c57626c78848f9ba7b2bec8d2dde7e5d9cec4b9afa6988d8175685f544b57636e7984909ba7b3becad4cabfb3a89c91857a6f63584c40362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303c48535f6a76828d999c9c9c9c9c9c9c9c9c9b8f83786c6155493e32271b0f0400000000000000000000000000000000000000060e161e262e353a434951565b62646c70757a7e8285888b8c8e9091979293929295908f8d8a8884817c77726d65625b544f474039312920180f06000000000000000000000000000006111a202b353e474f585f686e747d848c91969b9ea5a5a7a8aaafa9a7a6a7a09c99918d847c75818c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000005101b26313c47515a6b77838e9aa5b1bdbcb1a59a8e82776b5a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba5aeb8c4cdd1c7bdb5aba29b928d837e787471706f707174777c828b9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7e1d9d1cac5bfb7afaaa29b99948f8d8c8c8c8e8f948c8075695e52463b2f24180d0000000005111c28333e4a545f6875818c98a5aeb8c3ceccc1b7ada4958a7e7367584f48525b6975808c97a5aeb8c3ced9e4e2d7cbc0b5aa9f96897d7266584f49545e6875818d98a7b0bac4cfccc0b5aaa0968a7e72675950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090907040100000000000000000000000000000000020e1925303c48535f6a76828d99a4a8a8a8a8a8a8a8a69b8f83786c6155493e32271b0f04000000000000000000000000000000000000050e161e262e363e4549535a61636c70767c81858a8d909696989a9c9ca19e9e9ea59e9c9a989695908c88837e77706c635f5851494139312820170e05000000000000000000000000050e16222a303a454f585f686e78808990949c9fa7a9aeb0b2b3b5b9b5b3b1b0aaa8a29b9490857d808c98a3afbbc6d2cabeb2a79b9084786d61564a3f33271c10000000000006121d2934404b56616a7984909ca7b3bebeb3a79b9084796a61564b3f34291d12060000000000000000000001060a0d0e0f11111111111111111111111111110b0b09060200000000000000000000000000000000010405060f11111111111111111111111111111111110c0c0a070300000000000000030f1a25303b454f5866727d89949ea9b6bec8d5cdc2b7ada49b918d817a726d696665646466686c7077808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7dad1c8c1bab6b4b6b5aba6a49e9b99989798999b988c8075695e52463b2f24180d0000000006121d2934404b57636e7984909ba7b3bec8d2cabeb3a89d93867b6f64584c434e5a65717d88959ea9b4bfcbd6e2e2d6cabfb3a89c90857a6f63574c454e5766727e8997a0abb5c1cccfc4bab0a7998d82766a60564a3f34281d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d1012121616161616161616161616161616161616161616161514120f0b06000000000000000000000000000000020e1925303c48535f6a76828d99a4b0b4b4b4b4b4b2a69b8f83786c6155493e32271b0f040000000000000000000000000000000000020c151e272f373e474e545c636a6f757c82878c9096999c9fa6a4a6a7a8abb1aaaaaea9a7a6a4a59e9b98938f89827c746e68605a514a413930271e150c0200000000000000000000020c151e27323b4249545f686e79818b909b9ea5aaafb4b8bcbebfc0c3c0bfbdbab5b3aba59e969085828e9aa5b1bdc8d4cabeb2a79b9084786d61564a3f33271c10000000000007121e2a35414c58646f7b86959ea9b4c0bfb4a99e95867b6f63584c4135291e1207000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000002070c0f11121a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d181715120e0903000000000005111c28333e4a545f6876818d98a5aeb8c6cfd6cabfb3a89d948d81796f69645d5a5958595a5c62656f747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbdfd4cac1b8b0aba8abb0b8b1ada8a7a4a3a3a3a5a3988c8075695e52463b2f24180d000000030e1a25303a454f5865717d88959ea9b4bfcbd4c9bdb2a69a8f83786b61564b404b57636e7984909ca7b3bec9d3dedacfc5bab0a7998d82766960554a414c58636f7b86919ca8b4bfcbd4cabfb3a89c91857a6f63584c40362c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e21212121212121212121212121212121212121212121201e1a16100a0300000000000000000000000000020e1925303c48535f6a76828d99a4b0bbbfbfbfbdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000000000007111b252f373f474f575e636d717a80868e92989c9fa6a8aaafafb1b3b4b6bab5b5b8b4b3b1afaea9a7a39d9a938e8680786f6a615a514940372f251c12070000000000000000000007111b252f37424b555e636e78818d919aa0a9aeb5b9c0c2c8c9cbcccecbcacac4c1bbb5aea69f95908e939ca7b2bec9d5cabeb2a79b9084786d61564a3f33271c1000000000000914202b37434e5a65717d8894a5aeb8c3c3b8aea594887c71655a4e42372b2014090000000000000000070f151b2023262629292929292929292929292929292222201c18120b0400000000000000000000050c12161a1c1d2629292929292929292929292929292929292323211d18130c050000000006121d2934404b57636e7a85909ca7b3bec7d6ccc1b6aca39b8f837a6f686059544f4e4d4d4e53585f636e78828d969faab5c0cbd5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbdacfc5bab0a7a09ca0a7b0bab7b4b2b0afaeafafa3988c8075695e52463b2f24180d00000005111c28333e49545f6875808c98a5aeb8c3cecec3b9afa6978b8074695a51473e4a545f6875818d98a6afb9c4cfdad7ccc1b6aba0978a7e73675950463f4b56606a77838e9aa5b1bdc8d2ccc0b5aa9f96897e72675950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d222629292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2925201a130b03000000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7cbc9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000000009131b212b353f484f585f686e747d848c91979ca2a8aaafb3b5b9bbbdbebfc1c5cac8c3bfbebdbbb8b4b3aca7a39c97918b827a6f6a615a51483f352b21160f050000000000000000000b16212b353f48525b656e75808c919ba2a9b4b8bec4c9cdd1cdcac9c5c3c1c1c1c2c5beb6afa69f9c9a9ca3acb6c1ccd5cabeb2a79b9084786d61564a3f33271c1000000000000a16222d3944505c67737e8a96a1adb8c8c8b8ada1968a7e73675c5044392d221208000000000000000710181f252a2e313234343434343434343434343434342e2d2b27221c140d040000000000000000060e151c212528293234343434343434343434343434343434342f2e2c28231c150d0500000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243494c545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd7ccc1b6aba0979197a0abb6bcbfbebcbbbabaafa3988c8075695e52463b2f24180d00000006111d2934404b57636e7984909ba7b3bec8d2cbc0b5a99f95887d71655a4e433b454f5866727d89969faab5c0ccd7d6cbbfb4a89c91867b6f64584c413c47515a68747f8b97a5aeb8c3cecfc4b9afa7998d82766960554a3f34281d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d313435383838383838383838383838383838383838383838383734302a231b130a000000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000006101a232b303b454f585f686e787f8690949ca0a7abb3b5b9bfc0c3c9c8cacbccd0d4d2cecbcac9c8c2bfbdb7b3aca7a09c928e837b6f6a60584f453b30291f150a0000000000000000030f1a25303b454f58626c737f8a919aa2abb2bac2c8cfd1cdc7c2bebdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c1000000000010c18232f3b46525d6975808c97a3afbac6c6baafa3978c8075695d5246362c22170c010000000000050f1820282f35393c3d40404040404040404040404040403a3936312c251d140b02000000000000050e171f262c3033343d40404040404040404040404040404040403b3a37322c251e150c0300000a16222d3944505c67737f8a96a6afb9c3ced4c8bdb1a59a8e82776d635950484038363536393e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbd6cbbfb4a89c9185919ca3acb6bfc8c7c6c6baafa3988c8075695e52463b2f24180d0000030e19242f3a454e5765717d88959ea9b4bfcbd6cabfb3a79c90857a6e63574c4035404c57636f7a85919ca8b3bfcad4d4c8bdb1a59a8e83776a61564b4037424e5965717c88959ea9b4bfcbd3c9bfb3a89c90857a6f63574c40362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930373c404144444444444444444444444444444444444444444443423f3a342c231a10060000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000000b16202a333c434a555f686e78818b91979ea5aab0b7bbc0c4c9cbced3d4d6d2d0cecdcdcecfd1d4d2cdcbc6c1bcb7b0aaa29c938f837a6f695f554a42392f24190f050000000000000005111c28333e4a555f68707c86919ca1aab2bbc2cdd2cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c1000000000040f1a26313b4650596b76828e99a5b0bcc8c8bcb0a5998e82776b5950463c31261b0f0400000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12080000000000020c151f272f363b3f40494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645423c362e251c130900000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2f353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4c0cbcbc7bcb0a4998d828d929ca6afb7bfc6ccc6baafa3988c8075695e52463b2f24180d000005101c27333e49545e6875808c98a5aeb8c2cdcbc7bcb0a4998d8276695f554a3f343f4a55606976828d99a7b0bac5cfcdc2b7ada4968b7f73685a51473c34404b57636e7984909ca7b3becad4cbc0b5aa9f96897e72665950463b31261a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303941474b4c5050505050505050505050505050505050505050504f4e4a443c342a20160b0100000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000040f1a252f3a434c555e636e79818d919ca0a7aeb5bac0c8cbced3d7d2cecbcac7c4c2c2c1c2c3c6cacbcdd2d0ccc8c0bab5aba49d938e82796e635c53483e33291f150a000000000000040f1b26313c465059636e79838f96a0aab1bac2cbd3ccc5bdb7b3ada8a6a3a09f9e9e9fa2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c100000000006111d28343f4a55606978848f9ba7b2bec9cabeb2a79b9084786a60564a3f34281d11060000000006111b252f3841494f53555757575757575757575757575757514f4b453e352c22180d020000000007121c262f383f454a4c54575757575757575757575757575757575752504c463e362c23180e03000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1f252e36414c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f828e969fa7afb6bcc1c6baafa3988c8075695e52463b2f24180d000006111d2934404b57636e7984909ba7b2bec8bfbfc2b7ada4968a7e7367584f453b313c46505967737e8a97a0abb6c1bfbfbfb3a89d93877c7064594d4137333e49545e6876818d98a7b0bac5bfbfc4b9afa6998d81766960554a3f34281d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d3741495156585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b59544d443a30251a0f0400000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000007121d29343f49545d656f76818d919ba1abb0b8bec4cad0d7d5d0cbc8c3bfbebbb9b7b6b6b6b8babebfc2c7ced2d0cac4bcb4ada49c928b80746c62584c43392f241a0c02000000000006111d28343f4b56606a737f8a939da7b0bac2cad3cbc3bbb4ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c100000000006121d2935404c57636f7a86919ca8b4bfcbcabfb4a99e94867a6f63584c4035291e1206000000000a15202a353f4951595e6063636363636363636363636363635c5b554e453c31271c110600000009121b212c363f484f55576063636363636363636363636363636363635d5b564f463c32281d1207000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4033281f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f7c8590969fa6acb2b6b9baafa3988c8075695e52463b2f24180d00030e19242f3a454e5765717d88949ea9b4b4b4b4b4b4b3a89d93877b6f64584d41352c36414c58646f7b86919ca8b4b4b4b4b4b2a69b8f83786b62574c40352f3a454e5767727e8997a0abb6b4b4b4b4b4b3a89c90857a6f63574c40362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a616367676767676767676767676767676767676767676766645d544a3f34291e120700000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000814202b36424d58636d747f8b919ba2aab5bac0c8cfd4d6d0ccc5c0beb8b4b3afadabaaaaabacafb2b4b8bec3c8cfd4cfc4bdb4aca39c91867c70655c53493e33261c120700000000030f1a25303b454f58636f7a84909ca3acb7c0c9d2cbc3bbb3aba49d9b938f8b89878787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c100000000008141f2b36424e5965707c8797a1abb6c1cccdc2b8aea593887c7165594e42372b1f1408000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b2014090000071019222b303b454f585f636b6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564c42372c21150a00101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d3223180f060d16242e3846525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f737d8690959ca3a7acaeaeaea3988c8075695e52463b2f24180d0005101c27333e49545e6875808c97a5aea8a8a8a8a8a8a8a69b8f83786b61574b40352934404b56616a77838e9aa5a8a8a8a8a8aea5978b8074695b52483d322b35414c58636f7b86919ca8a8a8a8a8a8a8a8aa9f96897e72665850463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a6f727272727272727272727272727272727272727272726d64594e42372b20140900000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000915202c37434f5a66717d86919ca2abb2bac4cad1d8d4cfc6c1bcb6b2aea9a7a4a1a09f9f9fa1a3a7a9aeb4b8bec6ced5cdc5bcb5aaa0978e82776c63584d3f362c21170c0100000005111c28333e4a555f68747f8b959ea9b4bdc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a8b1bac5d0d2c7b7aca094897d72665b4f43382c211509000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f44392d22160b00060f172129333b434a555f696e777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7570665b50453a2e23170c00101c28333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d231309000a14232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73717d858e929a9ca3a2a3a3a2988c8075695e52463b2f24180d0006111d2934404b57636e7984909b9c9c9c9c9c9c9c9c9ca6978c8074695a51473d3227323c47515a68737f8b96a49c9c9c9c9c9c9e95887c71655a4e42382e2934404b56616a77838e9a9c9c9c9c9c9c9c9c9ca6988d81766960554a3f33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e72665b4f43382c21150900000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000914202b37434e5a65717d848f939ca2aab5bac0c8cfcac4bdb7b3aca7a59e9c98969493939495989b9ea5a9aeb6bec5ced5cfc4bab0a79c92887d71655950463b30251a0f0400000006121d2934404c57636e7984909ba5aeb8c4cdd1c7bdb5aba29b928d837e787471706f707174777c828b9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7cad4cec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c778385858585858585858585858585857f74685c51453a2e22170b020c161f28313a434c555e636e798285858585858585858585858585858585858075695d52463b2f23180c00101c27333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d23180d020517232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a869191919191919191919191918b7f736d717c82898e929596979796958c8075695e52463b2f24180d000814202b37424e5a65717c8894919191919191919191919196887d71665a4e43382e232d37424d5964707c879491919191919191919084796e63574b40342926313c47515a6874808b91919191919191919191919190857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88898989898989898989898989898989898989898983786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000008141f2b36414d58636d717c838e929aa1abb0b8bfc7c0bab5aca7a39c9995908d8a888887888a8c90949c9ea5aeb5bec7d1d4cac0b7aca2988d81756960554a3f33281d11060000030f1a25303b454f5866727d89949ea9b6bec8d5cdc2b7ada49b918d817a726d696665646466686c7077808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9191919191919191919191918b7f74685c51453a2e22170b08121c262f38414a535c656e75818c9391919191919191919191919191948e82796e63574b4034291d120600101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d32271b10060d161e2f3b46525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c100006121e2935404c57636f7a85858585858585858585858585857f73686b70777e8286898b8c8c8b8a888075695e52463b2f24180d000c18232f3b46525d697580858585858585858585858585858585796e63574c4034291d2a35404c57626b7883858585858585858585858075685f54493e3328222d37424e5a65717d8585858585858585858585858585857d72665a4f43382c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939595959595959595959595959595959595958f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000006121d28333e49535c636b707a828c919ca0a7afb6beb7b0aaa39d9a928e8984817f7d7c7c7c7e80848a90959ea5aeb8c2cdd6d0c8bcb3a89c90857a6e63574c4035291d1206000005111c28333e4a545f6876818d98a5aeb8c6cfd6cabfb3a89d948d81796f69645d5a5958595a5c62656f747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c968b7f74685c51453a2e221709131b212c364048515a636d737f8a919ba39c9c9c9c9c9c9c9c9c9c9f968f847a6f685f544a3e33281c1105000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4034291f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c100006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f6562646e72777b7e7f80807f7e7c796e63574c4035291d1206000c17232e3a45505b6670757a7a7a7a7a7a7a7a7a7a7a7a7a7a796e6960554a3f33281d27323d48525b6973787a7a7a7a7a7a7a7a7a7a757067584f453a30251f2a36414d58636c717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a726d64594d42372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000040f1a242f39434c535b626a6f79808a91979fa6adb5aea7a09c938f88827d797673717070717275797e8490949ea8b4bdc6d1d7cbc0b5aa9f96887d71665a4e43372c201409000006121d2934404b57636e7a85909ca7b3bec7d6ccc1b6aca39b8f837a6f686059544f4e4d4d4e53585f636e78828d969faab5c0cbd5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a2968b7f74685c51453a2e22171119232b313b465059616b717d86919ca1aaa8a8a8a8a8a8a8a8aaa19c90857c706a61584f453b30251a0f03000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1e252e363e4c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c1000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e575d64666a6f727474747473706e6960554a3f33281d1106000a15212c37424c565f66696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e63605850463b30251a232e38424b5962696c6e6e6e6e6e6e6e6e6e6e6a676057473e352b201d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e66645d544a3f34291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabacacacacacacacacacacacacacaca69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000000b151f29333b434a525960686e757f8690959ea4aca59e97918b837d77716e68676665656567686e727c84909ba4adb7c1ccd7cec4b9afa6978b8074685d51463a2e23170c000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243494c545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4aea2968b7f74685c51453a2e221718212a333c434a5560696f7b849096a0aab2b4b4b4b4b4b4b5aca29a90897e726c625a51473f352b21160b00000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2e353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c1000010c17222c36404950556263636363636363636363636363635c5a554c54595a61646668696968676563605950463b30251a0f040007121d28323c464f565b5d636363636363636363636363636362575550483f362c21171e28323a4952595f61636363636363636363635e5c574f47372e251b19242f39434c53585a6363636363636363636363636363635a59544c443a30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b8b8b8b8b8b8b8b8b8b8b8b8b2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f04000000000000000000000000000000061019222b333a424950585f636f737d858f949ca39e9590867f79716c66635f585a59595a585f636b717d88939da8b3becad5d3c9bbb0a4998d81766a5f53473c3025190e02000a16222d3944505c67737f8a96a6afb9c3ced4c8bdb1a59a8e82776d635950484038363536393e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfb9aea2968b7f74685c51453a2e22161f28313a434c555e636f7a838f959ea7b0bac2bfbfc9bfb6ada49c928c80746e645b524941372e251b110700000a16222d3944505c67737f8a96a5aeb8c3ced1c7bdb1a59a8e83776d635950484038363636363e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c10000008121c26303840464a575757575757575757575757575757514f4b454a4e5156585b5c5d5d5c5b59575550483f362c21170c0100030e18232c363e464c50525757575757575757575757575757564c4a463f382f261c1218212a3942494f54555757575757575757575752514d473f36261e15151f29333b43494d4e5757575757575757575757575757574f4d4a443c332a20160b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb4b4b4b4b4b7b8bbc1c3c3c3beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000000009121b222a313940484f555e656d717c848e939b9590847d736e68635c57554f4e4e4d4e4f545b636d78838f9aa6b2bdc9d4d4c9bdb1a69a8f83776c6055493d32261b0f04000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2f353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbc5b9aea2968b7f74685c51453a2e221e263038424a545d656f76818d939da5aeb7c0cacbcec3b9afa69d948e82796e635d544b423930271e150b01000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243474e545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c100000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b3f41474b4c4f51525251504e4c4a463f382f261c120700000009131c252e363c4245464b4b4b4b4b4b4b4b4b4b4b4b4b4b4b403f3b362f271f160c11192931394045484a4b4b4b4b4b4b4b4b4b4b4746423d362e26160d0f19222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332c231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a8a8a8a8a8abacb1b7bfc7c9beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000000020a1219212830373f454a555d636c707b828d9190847c716d635f58534c4a45434242424549535c6a76818d98a4b0bbc7d2d5c9beb2a79b8f84786d61554a3e33271b1004000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1f252e36414c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e22252e364049525b636d737f8b919ba3acb6bec8d0ccc3bcb5aa9f968f837a6f685f544d443b322920160e0500000006121d2934404b57636e7a84909ca7b3bec7d2ccc1b6aca39b8f837a6f686059544f4e4d4d4e53575e636e78828e969faab5c0ced5cabeb2a79b9084786d61564a3f33271c10000000060f171f262c31344040404040404040404040404040403938363134373d404144454646454442403f3b362f271f160c02000000030c151e252c32373a3b40404040404040404040404040403f3433302c261f170e050918212930353a3d3e404040404040404040403b3a37332d261e160609121a22292f333637404040404040404040404040404040383734302a231b130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939d9d9d9d9d9d9d9fa1a7aeb7c1c9beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000000000209111820272f353b454c545b626a6f79818b857c706c635c544f47433e3b3536363c4349545f6876828d99a4b0bcc7d3d6cabeb3a79c9084796d62564a3f33281c1005000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4033281f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e202b353e475059626b717d87919ca2abb4bdc6cfcec5bcb3aaa19c90857c706a61584f453d342a221810060000000005111c28333e4a545f6876818d98a5aeb8c2cdd0c6bcb3a89d948d81796f69645d5a5958595a5c62686e747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c1000000000070f161c2226283434343434343434343434343434342e2d2b27272d323435383a3b3a3a39373533302c261f170f050000000000050d151c23282c2e2f343434343434343434343434343434292825211c160e06000810181f262b2f323234343434343434343434302f2c28231d160e05020a12191f24282a2b3434343434343434343434343434342c2b2925201a130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191919194979ea7b1bbc9beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0400000000000000000000000000000000000000070f161e252b303c444b525a61696e767f7e726c625b534a453f373333373c40464a535b636e7984909ba7b2becad5d6cabeb3a79c9084796d62564a3f33281c100500101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d3223180f060d16242e3846525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e2a2f3a454e57606a707c859097a0abb2bbc4cdcfc7bdb5aba29a90897e726c625a51473f352c241a11080000000000030f1a25303b454f5866727d89949ea9b4bec8d2cdc2b7ada49b918d817a726d696665646566686c7078808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c100000000000060d12171b1d29292929292929292929292929292922221f1c1d2327292a2c2e2f2f2e2d2b292825211c160f0700000000000000050c13181d2123232929292929292929292929292929281d1d1a17120c05000000080f161c20242627292929292929292929292423211e19130d05000002090f15191d1f2029292929292929292929292929292920201e1a16100a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c858585858585858585888d97a1acb8c9beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f040000000000000000000000000000000000000000060e151b212c333a4249515860636f74726e645c534b433b35353a3e40474b50555c626b727e89949ea9b4bfcbd6d5c9beb2a79b9084786d61564a3e33271c100400101c28333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d231309000a14232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a2e323a4249545e686f7a838f959fa7b0bac2cbd3c9bfb6ada49c928b80746e645b524940372e251c130a010000000000000b16212b35404c57636e7984909ba5aeb8c3ced1c7bdb5aba29b928d837e787472706f707174777c828c9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c1000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1716140e13181b1d1e2122232323211f1d1d1a17120c0500000000000000000003090e121517181d1d1d1d1d1d1d1d1d1d1d1d1d1d1c12110f0c07020000000000060c1115191b1b1d1d1d1d1d1d1d1d1d1d181816130e09030000000000050a0e1213141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c71797a7a7a7a7a7a7a7a7d88949fabb7c2beb2a69b8f84786d61554a3e33271b1000000000000000000000020e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f04010100000000000000000000000000000000000000050c111b232a3239414850555f656867645d544b423b393e3e45494b51565960636c707c84909ba5aeb8c2cdd8d4c8bdb1a69a8e83776c6055493d32261b0f0300101c27333f4a56616d7984909ba7b3becad3c7bcb0a5998d82766b5f5348372d23180d020517232e3a45515d68747f8b97a2aeb9c5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3039424b545d636e78818d939da5aeb8c1cad3cec3b9afa69d948e82786e635d544b423930271e150b030000000000000007111c28333e4a555f68747f8b959ea9b4bcc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c1000000000000000000104061111111111111111111111111111110b0a0904090d1012121517181817161412110f0c070200000000000000000000000003070a0c0c11111111111111111111111111111106060401000000000000000002060a0d0f10111111111111111111110d0c0b080400000000000000000003060808111111111111111111111111111111090907040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63686e6e6e6e6e6e6e6e717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000305070e1925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b0f0d0d0d08070503000000000000000000000000000000000207131a222930383f464a565b5d5b59544d443e4143494d4f54575a6063696f747c8490959ea9b5bec8d2dcd3c7bbb0a4998d81766a5f53483c3025190e0200101b27333e4a55616d78848f9ba7b2bec9d4c8bdb1a59a8e83776b5a51473d32271b10060d161e2f3b46525e6975808c98a3afbac6cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a374049525b646d74808b929ba4adb6bfc8d1ccc3bbb5aa9f968f837a6f685f544d443b322820160e050000000000000000030f1a25303b454f58636f7a84909ca3acb7c0c9d3cbc3bbb3aba49d9b938f8c89888787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c1000000000000000000000000006060606060606060606060606060000000000020506070a0b0c0c0b0a080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c53585f6363636363636365717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000040a0e1113131925303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e32271b181818181313110e0a040000000000000000000000000000000209111820272f363b454c50514f4e4a4442484c4d5358585f63666a6f747a808690949ea5aeb8c6ced8d9cec3b9afa6978b7f74685d51453a2e23170b00000f1b26323e4955606c78838f9aa6b2bdc9d4c9beb2a79b8f84786b61564b4034291f1613141e26323d48525b6a76818d99a4b0bbc7cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145353f47515a626c727e87919ca2abb4bdc6cfcec5bbb3a9a09c90857c706a60584f453c342a22181006000000000000000000000b16212b353f4a56606a737f8a939da7afb9c4cfd3cbc3bbb5ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43484f555757575757575a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000001080e14191c1e1f2425303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e322724242424241f1e1c19140e08010000000000000000000000000000010810171f262c303c4144454440464b4c5257595c6365686e71757a7f848b91969ea5aeb5bec8d6dfd7cbc0b4a99f95887d71655a4e43372c20140900000e1a25313c48545f6b76818d99a5b0bcc7d3cabfb3a89d94867b6f64584d433830271f1e1e252e363e4c57626c7984909ba7b3becacabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453b454f58606a707c859097a1abb2bbc5cdcfc7bdb4aba29a90897e726c625a51473e352c231a1108000000000000000000000007111b25313c465059636e79838f969faab5bac2d0d4ccc5bdb7b3ada8a6a3a09f9e9fa0a2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33373f454a4c4c4c4c4c4e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000010911181e23272a2a2f2f303c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e322f2f2f2f2f2f2a2a27231e18110901000000000000000000000000000000070f161c212830373c41474b5056585b6265696c7175797d81858b90959ca0a7aeb5bec6cfd8d9d0c7bfb3a79c90857a6e63574c4034291d120600000c18242f3b46525e6975808c98a3afbac8d2cdc2b7ada495897e72675c534940372f2b2a2b2e353e47515a64707c87949ea9b4bfcbcabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145434a545f686f7a838f969fa8b1bac3cbd1c9bfb6ada49c928b80746e645b524940372e251c1309010000000000000000000000020c17222c36404a545f68707c86919ca1aab2bbc5cad1cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22272f353b3e40404040424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000008111921282e3235363b3b3b3c48535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c6155493e3b3b3b3b3b3b3b3635322e282119110800000000000000000000000000000810171f262c303840464b5156596063686c7074787c8084888d90969b9ea5aab0b7bec5ced6ded3c9c0b7aba2988c8175695f554a3f33281c110500000a16222d3944505c67737f8a96a5aeb8c3ced1c7bdb1a59a8e83776d635950484038363636363e454e57616a75808c98a5aeb8c2cdcabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cecec3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454b545d636e79828e949da6afb8c1cad4cac1b8afa69d948e82786e635d544b423930261e150b030000000000000000000000000008121d26303b454f58626c737e8a909aa1abb6bac1c9cfd1cdc7c2bfbdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12161e252b303334343437424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000040e18212a32383d40424646464648535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c615549464646464646464642403d38322a21180e0400000000000000000000000008101820272f363b444950565a61646a6f73787c8084888c9094989c9fa6a9aeb5bac0c7ced6dcd4cfc4b9afa79c92887c7065584f453b30251a0f04000008141f2b36424e5965707c87959fa9b4c0cbd5c9beb2a79c93887d716a605850484442414243474e545e686f7b85909ca8b3bec8d2cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c3cdcdc3b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514a535c646e74808c929ca4adb6bfc9d1d0c5bab1a89f968f837a6f685f544d443b322820160d040000000000000000000000000000030d16212b353f47525b646e75808c919ba1abb1b8bec4c9cdd1cdcac9c6c3c2c1c1cac5beb6afa69f9c9a9ca3acb6c1cccbcabeb2a79b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060e151b21252829292b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000a141e28323a42484c4d5252525252535f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c61555252525252525252524d4c48423a32281e140a0000000000000000000000071019202930383f464a545960636b6f757a7f83878c8f94979b9ea5a8aaafb4b8bec4c9d0d8dcd3ccc3bcb5aa9f968d82766c6257483f362c21160c01000006121d2934404b57636e7a84909ca7b3bec7d2ccc1b6aca39b8f837a6f686059544f4e4d4d4e53575e636e78828e969faab5c0ced5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb7c1c1c1c1b7aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51515a626c727e89909aa2abb5bdc7cfcdc5bdb6aba19790857c706a60584f453c342a22180f060000000000000000000000000000000007111b252e37424b555e636e78818d919ca1a8aeb5b9c0c2c8c9cacccecbcacac4c1bab6aea69f95908e939ca7b2bebfbfbfbeb2a79b9084786d61564a3f33271c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161a1c1d202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000030e19232e38424b5257595e5e5e5e5e5e5f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c615e5e5e5e5e5e5e5e5e5e5957524b42382e23190e03000000000000000000060f1820293139414850555d646a6f747b80858a8f93979b9ea4a7a9aeb3b5b9bfc2c8cfd3d9d8d2cdc3bbb3aba29c91867c70645c5348382f261c120700000005111c28333e4a545f6876818d98a5aeb8c2cdd0c6bcb3a89d948d81796f69645d5a5958595a5c62686e747f8b929ca6afb9c4ced5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0abb5b5b5b5b5b5aca095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c4f58616a707c85909ca1aab3bcc5cecfc7bdb4aba29c91877e726c625950473e352c231a11080000000000000000000000000000000000010b151e27323b4449545f686e79818b91979ea5aaafb4b8bcbebfc0c3c0bfbdbab5b1aba59e969085828e9aa5b1b4b4b4b4b4b2a79b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1114202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100005111c27323d48525b6264696969696969696a76828d99a4b0bbc7d3c9bdb2a69b8f83786c696969696969696969696964625b52483d32271c11050000000000000000030d161f2831394149515960636d727a80868c90969a9da4a7a8adb2b4b8bec0c4c9cdd2d8dad4cfc8c2bab3aba39b918a7f736b62574b4239271f150c02000000030f1a25303b454f5866727d89949ea9b4bec8d2cdc2b7ada49b918d817a726d696665646566686c7078808b9099a2abb7bfc9d3d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d8994a0aaaaaaaaaaaaaaaaa095897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c555f696f7b8490969faab1bac3ccd1c9bfb6ada49c928b80746d645b524940372e251c130901000000000000000000000000000000000000050e16222a303a454f585f686e757f8790949c9fa6a9aeb0b2b3b5b9b4b3b1b0aaa8a19c9490857d808c98a3a8a8a8a8a8a8a8a79b9084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100007131e2a35404c57626b70757575757575757576818d99a4b0bbc7d3c9bdb2a69b8f8378757575757575757575757575706b62574c40352a1e1307000000000000000008121d263038414a515a61696e757e848b91969c9fa6a8adb2b4b7bebfc2c8cbced3d9dad4cfcac4beb8b4aaa29c928d81786e635b52483b3229170e0500000000000b16212b35404c57636e7984909ba5aeb8c3ced1c7bdb5aba29b928d837e787472706f707174777c828c9099a0a9b3bbc7d0d9d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d89949e9e9e9e9e9e9e9e9e9e95897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5e636e79828e949ea6afb9c1cad4cac1b8afa69d948d81786e635d544b423930261e150b03000000000000000000000000000000000000000006111a202b353e474f585f636f747d848c91969b9ea5a5a6a8aaafa9a7a6a7a09c97918d847c75818c989c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100008131f2a36424d5964707c808080808080808080838f9ba6b2bec9d5cabeb3a79c9085808080808080808080808080807c7064594d42362a1f130800000000000000060f17222c364049515a616a6f79818990949c9fa7aaafb3b7bdbfc2c7cbcdd2d7d9d7d2cdcac4c0bab5aea9a19a928e82796e685e544b42382a22190600000000000007111c28333e4a555f68747f8b959ea9b4bcc7d0cec5bbb2aba29c948f8983807d7c7b7c7d7f83878e929aa1a9b1b9c3ccd7e0d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d89939393939393939393939393897d72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c656e75808c929ca5aeb7bfc9d2d0c5bab1a89f958f837a6f685f544d443a322820160d040000000000000000000000000000000000000000000107111b252e373f474f545f666d717a80858b909497999b9c9fa69f9c9a9896918d87817a7075818c91919191919191919191919084786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d888c8c8c8c8c8c8c8c8f949da8b3bfcad6cbc0b4a99e95908c8c8c8c8c8c8c8c8c8c8c8c887d71665a4e43372c201409000000000000030d161f28313c465059616a6f7b828c919b9ea5aaafb5b9bfc1c6cacdd1d6d8d7d3cecbc8c2c0bab5b0aaa59e9b908c82796f6960574e453a31281a1208000000000000030f1a25303b454f58636f7a84909ca3acb7c0c9d3cbc3bbb3aba49d9b938f8c89888787888b8e91979ca3aab1b9c1cad3dce1d5cabeb2a79b9084786d61564a3f33271c10000000000915202c37434f5a66717d87878787878787878787878787877e72665b4f43382c211509000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468636c737f8a919aa3acb5bec7d0cdc5bdb6aba19790857c706a60584f453c342a21180f060000000000000000000000000000000000000000000000010b151e262e373f454a565d636a6f747b8084888b8d8f91969195908f8d8a85817c756f6a75808585858585858585858585858584786d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894989898989898989b9da4adb7c2cdd8cec3b8aea59e9c989898989898989898989894887d71665a4e43372c20140900000000000008121c263038404a56606a6f7b838e939ba1a9aeb5b9c0c3c9ccd1d6d8dad4cfccc9c4c0beb8b4b0aaa7a09c95908980796f69605950473e352a21180a01000000000000000b16212b353f4a56606a737f8a939da7afb9c4cfd3cbc3bbb5ada8a49d9b979493929394969a9ca1a8acb3bac1ccd0d6dde1d5cabeb2a79b9084786d61564a3f33271c100000000006121d2935404c57636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291e1206000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686b717d86919ca1aab3bcc5cecfc7bdb4aba29c91877e726c625950473e352c231a110700000000000000000000000000000000000000000000000000040d161e272e353b454c535960636b6f74797c7f8284858586858583817e7b76706c636770757a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0a3a3a3a3a3a3a6a8adb5bdc7d1dcd2c8bfb6aea9a7a3a3a3a3a3a3a3a3a3a3a094887d71665a4e43372c2014090000000000010c17222c364049545e636f7a838f949ca3aab4b8bec4c9ced3d9dad7d1cdcac5c1bfb9b5b3aea9a7a09c96918c847d756e68605950483f362e25191108000000000000000007111b25313c465059636e79838f969faab5bac2d0d4ccc5bdb7b3ada8a6a3a09f9e9fa0a2a5a8abb1b8bcbdbec1c6ccd4ddd5cabeb2a79b9084786d61564a3f33271c100000000006111d28343f4a5560696f70707070707070707070707070706f6960554a3f34281d1106000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74696f7b849096a0aab1bac4ccd1c9bfb6ada49b928b80746d645b524940372e251b1309010000000000000000000000000000000000000000000000000000060e161e252b303c434950565a6164686e71747678797a7a7a797775726f6a65625c6067696e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0abafafafafafb2b3b7bdc5ced7e1d8cfc6bfb8b4b3afafafafafafafafafaba094887d71665a4e43372c2014090000000000040f1b26313c465059646e76818d939da4acb4bac2c8cfd3d9dad4cfccc7c2c1bab6b4afaaa8a59e9b96918d86807a726d635f58504840382f261e1409010000000000000000020c17222c36404a545f68707c86919ca1aab2bbc5cad1cec7c2bdb7b3b2aeabaaa9aaabaeb1b4b6b9b4b3b1b2b6bcc4ccd6d5cabeb2a79b9084786d61564a3f33271c1000000000040f1b26313c4650596063646464646464646464646464646463605950463c31261b0f04000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746e79828f959ea7b0bac2cbd4cac1b8afa69d948d81786e635d544b423930261e150b0300000000000000000000000000000000000000000000000000000000060e151b212b333940464b5156585f6365686b6c686e6f6e686c6a6763615a5853575c5e63636363636363636363636363615f5a534a40362c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0abb7bababababebfc2c7ced5dee7dfd7cfc8c3c0bebabababababababab7aba094887d71665a4e43372c201409000000000006111d28343f4a556069727e8a929ba4adb4bcc4cdd2d8dad4cfcac4c1bdb7b3b0aba8a69f9c9994908b86817c756f6a635d544f4740382f271f160d040000000000000000000008121d26303b454f58626c737e8a909aa1abb6bac1c9cfd1cdc7c2bfbdbab7b6b5b6b7b9bdbfb6afa9a7a5a7acb3bcc6d0d5cabeb2a79b9084786d61564a3f33271c1000000000010c17222c36404950555759595959595959595959595959595755504940362c22170c01000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7878818d939da5aeb7c0c9d2d0c5bab1a89f958f837a6f685e544d443a322820160f07000000000000000000000000000000000000000000000000000000000000050b111b232830373c41474b4f54575a5d5f585f6363635f585e5b5856514c494d5152575757575757575757575757575654504a423a30261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0abb7c2c6c6c6c9cacdd1d7dee6eee7dfd8d2cecbcac6c6c6c6c6c6c6c2b7aba094887d71665a4e43372c20140900000000030f1a25303b454f58636f7a84909ca2abb4bdc5cdd4dcd8d0cac4c0bab5b3ada8a7a09c9996908d8984807b75706b636059544a453f372f281f170f050000000000000000000000030d16212b353f47525b646e75808c919ba1abb1b8bec4c9cdd1cdcac9c6c3c2c1c1cac5beb6afa69f9c9a9ca3acb6c1cccbcabeb2a79b9084786d61564a3f33271c10000000000008121c26303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261c120800000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabfb3a79c908584848d919ba3acb5bec7d0d8ccc1b6aba19790857c706a60574e47433b302c261f170f060000000000000000000000000000000000000000000000000000000000000107121820272d31383d3f454a4b4e51534f55575757544f53504c4b47413e4245474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0abb7bfbfbfbfc7c8cbcfd5dce3ece5ddd7d1cccac9bfbfbfbfbfbfbfbfb7aba094887d71665a4e43372c2014090000000005111c28333e4a545f68747f8b959ea9b2bbc4cdd5dcd4ccc8c0bab5b0aaa8a49d9b97918e8a85817d79746f6b64625b565049443b352e271f170f070000000000000000000000000007111b252e37424b555e636e78818d919ca1a8aeb5b9c0c2c8c9cacccecbcacac4c1bab6aea69f95908e939ca7b2bebfbfbfbeb2a79b9084786d61564a3f33271c100000000000030c161f2830363c3f404242424242424242424242424242403f3c3630281f160d0300000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b4a99f95908f90949ba1abb4bcc6ced8d6cbbfb4a89c91867d726e68635e57534b453b362f271f160e0500000000000000000000000000000000000000000000000000000000000002070f171d22282d32353b3e40424648454a4c4c4b4945474441403c3733373a3b404040404040404040404040403f3e3b36302922191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0abb4b4b4b4b4bbbdc0c5cbd3dce5ddd5cdc7c1bebdb4b4b4b4b4b4b4b4b4aba094887d71665a4e43372c2014090000000006121d2934404b57636e7984909ba5aeb8c3cbd5dcd3cbc4bcb7b0aaa7a09c99938f8b86827e7a76726e6864615a57524b464039302b251e160f070000000000000000000000000000010b151e27323b4449545f686e79818b91979ea5aaafb4b8bcbebfc0c3c0bfbdbab5b1aba59e969085828e9aa5b1b4b4b4b4b4b2a79b9084786d61564a3f33271c10000000000000060f171f262c31343536363636363636363636363636363534312c261f170f060000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec3b9afa69f9c9b9b9ea5abb2bbc4cdd6dfd6cbbfb4a89c9187817d79726e68635c554a463f382f271e150b0100000000000000000000000000000000000000000000000000000000000000060d13171e23252b303334373a353b3e4040403e3a35393534312d272c2f2f343434343434343434343434343332302c262019110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8894a0a8a8a8a8a8a8b0b1b5bbc3cbd5dfd7cdc5bdb7b3b2a8a8a8a8a8a8a8a8a8a8a094887d71665a4e43372c201409000000000914202b37434e5a65717d88949ea8b6bec8d3dcd6cbc3bbb3aca7a09c97918d88837f7b77726f6a66635f5856514c48423c373028211b150e0600000000000000000000000000000000050e16222a303a454f585f686e757f8790949c9fa6a9aeb0b2b3b5b9b4b3b1b0aaa8a19c9490857d808c98a3a8a8a8a8a8a8a8a79b9084786d61564a3f33271c1000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221c160f07000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4ddd2c8bfb6afa9a7a7a7a8aeb5bbc2cbd4dde3d7ccc1b6aba097918d88837e78716c655e5550483f372e251b1107000000000000000000000000000000000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2a2926221d21232429292929292929292929292929272724211c1710090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d88949c9c9c9c9c9c9ca4a6abb2bbc5cfdad1c7bdb4ada8a69c9c9c9c9c9c9c9c9c9c9c94887d71665a4e43372c201409000000000c18232f3a46525d6974808b97a5aeb8c6cfd8d8cfc6bbb2aba39c96918c86817d78746f6b6763605957544f4b47413d38312c272018110b0500000000000000000000000000000000000006111a202b353e474f585f636f747d848c91969b9ea5a5a6a8aaafa9a7a6a7a09c97918d847c75818c989c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c100000000000000000060c12171b1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17120d0600000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d8cfc6bfb9b4b3b2b2b4b8bec5cbd3dbe5e5dacfc5bab0a7a09c99948f89827d736f63605950473f352b21180f0600000000000000000000000000000000000000000000000000000000000000000004090b11161a1c1d2023212528292929282520211e1d1b18131618181d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d889191919191919191999ba2abb5c0cbd6ccc1b7ada49d92919191919191919191919191887d71665a4e43372c201409000000040f1a25303b4650586b77828e9aa5b1bcc7d4dcd2c8beb5aba29b928e86807b76716d6864615a5856504b4a45404443403b342d251d150701000000000000000000000000000000000000000107111b252e373f474f545f666d717a80858b909497999b9c9fa69f9c9a9896918d87817a7075818c91919191919191919191919084786d61564a3f33271c1000000000000000000003080c0f1112131313131313131313131313131312110f0c08030000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dfd7cfc8c3c0bfbebebfc2c7ced6dbd8d8d9dfd4cac1b8b0aba8a49d9b938e867f766e6960584f453b30281f160d030000000000000000000000000000000000000000000000000000000000000000000001070b0f11121411161a1c1d1e1d1c1a16111212100d090a0c0d1111111111111111111111111110100e0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000914202c37434e5a66717d8585858585858585858d919ba6b1bdc8d3cabeb3a89d9388858585858585858585858585857d71665a4e43372c20140900000006111d28333f4a5560697984909ca7b3becad5d9cec3b8aea59b928d827c75706b65635c5856514c4a4640454a4c504e4a443d352e251d140c0300000000000000000000000000000000000000010b151e262e373f454a565d636a6f747b8084888b8d8f91969195908f8d8a85817c756f6a75808585858585858585858585858584786d61564a3f33271c1000000000000000000000000104060608080808080808080808080808080606040100000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e7dfd8d2cecbcac9cacacdd2cccccccccccdcfd2d1c8c1bab6b4ada8a39c97918b81796e685f544a443830261d12080000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f11121211110e0b0707060502000001010606060606060606060606060605040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100008141f2b36424d58636d717a7a7a7a7a7a7a7a7a818d99a4b0bbc7d3c9bdb2a69b8f837a7a7a7a7a7a7a7a7a7a7a7a7a716d63584d42362b1f140800000006121d2934404c57636e7a86959ea9b4bfcbd6d6cbbfb4a99e958d8179706c64615b58534d4b47413f3f484f55575b5a554d463e352d251c140b0300000000000000000000000000000000000000040d161e272e353b454c535960636b6f74797c7f8284858586858583817e7b76706c636770757a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e2dad3cdc9c6c5c0c0c0c0c0c0c0c0c0c1c1c3c6cacbcac5c1bdb7b3aca7a09c918d81796e635d544940362c22170b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100007121d29343f49535d63666e6e6e6e6e6e6e6e76828d99a4b0bbc7d3c9bdb2a69b8f83786e6e6e6e6e6e6e6e6e6e6e6e66635d53493f34291d120700000007121e2a35414c58636f7b8692a5aeb8c3ced9d5cabeb3a79b90847a6f69625b57524d4943403d3840474f585f6367645e564e463e352d241c130b0300000000000000000000000000000000000000060e161e252b303c434950565a6164686e71747678797a7a7a797775726f6a65625c6067696e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dad2cac3bebbbab5b5b5b5b5b5b5b5b5b5b6b8bbbfc0c3c9ccc7c2bcb8b0aba29b928c80756d645950463c31251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000040f1a252f3a434c53585a636363636363636a76828d99a4b0bbc7d3c9bdb2a69b8f83786c63636363636363636363635a58534c433a2f251a0f0400000007131e2a35414c58646f7b86929eb1bac5d0dbd1c6baafa3978c80756a6058524b48413e39383d424850585f686e736e665f564e453d342c241b130b0200000000000000000000000000000000000000060e151b212b333940464b5156585f6365686b6c686e6f6e686c6a6763615a5853575c5e63636363636363636363636363615f5a534a40362c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d3cac1bab4afaea9a9a9a9a9a9a9a9a9a9aaacafb3b5b9bfc7cbcdc8c0bab5aba29a91897e726a60564a3e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000b15202a333c43494d4e5757575757575f6a76828d99a4b0bbc7d3c9bdb2a69b8f83786c574e5757575757575757574e4d49433c332a20150b0000000006121e2935404c58636f7a8697a1abb6c1ccd8cfc4b8ada1968a7e736759504842403f404143484c535960686e797e746f665e554e453d342c231b120a0200000000000000000000000000000000000000050b111b232830373c41474b4f54575a5d5f585f6363635f585e5b5856514c494d5152575757575757575757575757575654504a423a30261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc3bab1a9a4a29e9e9e9e9e9e9e9e9e9e9fa0a4a8aaafb6bbc2cad1cac4bbb2aaa19b90847a6f63584f453a30251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12141517171717171717171717171717171717171413110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000006101a232b333a3f42434b4b4b4b4b535f6a76828d99a4b0bbc7d3cabeb2a79b908478685e54494b4b4b4b4b4b4b4b43423f3a332b231a10060000000006121d2934404b57636e7a85919ca8b4bfcbd6d0c4b9ada2968a7f73685e56514d4c4a4c4d4e52575c62696f78818a80746f655e554d443c342b231a120a01000000000000000000000000000000000000000107121820272d31383d3f454a4b4e51534f55575757544f53504c4b47413e4245474b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c9beb4a9a09a97929292929292929292929395989c9fa6abb2bac2cad4cfc3bab4a99e948b7f74685f54493e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1e202022222222222222222222222222222222221f1e1c19150f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000009121b232a2f3436374040404047535f6a76818d99a4b0bbc7d3cabfb3a89c9085796e63574b40374040363b3f40403f3c3630281f160d030000000005111c28333e4a545f687884909ba7b2becad5d3c8bcb1a5998e82776e63605a59575557585a5b62646c707a818d908b7f736e655d544d443c332b221a1209010000000000000000000000000000000000000002070f171d22282d32353b3e40424648454a4c4c4b4945474441403c3733373a3b404040404040404040404040403f3e3b363029221910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d2c6bbafa49a908b8686868686868686868787898c90969ba2aab1bac4cdd3cdc2b8aea59b8f84796e63574b4034291d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292b2c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2b2a28241f19110a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000020b121a2025292b2c3434343b47535e6a75818d98a4afbbc7d2cbc0b5aa9f96877c706458504745454445464a4c4c4a46403830261d120800000000030f1a25303b454f586b77828e9aa5b1bcc9d3d4c9bdb2a79c928a7e756f6a66646360636466686b70757c838d9299908a7f736e645d544c433b332a221a1109000000000000000000000000000000000000000000060d13171e23252b303334373a353b3e4040403e3a35393534312d272c2f2f343434343434343434343434343332302c2620191109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d1c5baaea2978b807b7b7b7b7b7b7b7b7b7b7c7e81858d919aa1aab4bcc6d0d2c7beb4a89e94897d71665a4f43352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131b232a3034373739393939393939393939393939393939393635332e29221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000020910151a1d1f2029292f3b46525e6975808c97a3afbac6d1cec4b9afa6968a7f7369605853515050515055575856504940362c22170c01000000000b16212b3546525d6975808c97a6afb9c3ced6cbc0b6aca29c9187807a7572706f696e6f7174777c81868f939ba09c91877e726d645d534c433b322a2119100700000000000000000000000000000000000000000003080e13181b212528292b2e2b303334353433302b2d2a2926221d21232429292929292929292929292929272724211c17100901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746f6f6f6f6f6f6f6f6f7072757b818c909aa3acb6c1ccd7cdc2b7ada4978c807469574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c333a3f4243454545454545454545454545454545454542413e39322a22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000060b0f1214141d222e3945515c68737f8b96a2adb9c7d1d3c9beb2a69b8f83796e68625c5d5c5c5c59606363605950463c31261b0f04000000000711212c38434f5a66727d89969faab5c0cbd7d0c5bcb6aba197918c85817e7c7a7a7a7b7d7f83878c91979da4aba09791867e726d635c534b423a322921180e040000000000000000000000000000000000000000000004090b11161a1c1d2023212528292929282520211e1d1b18131618181d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468646464646464646465666a6f76808c939da7b3bec9d5d1c7bdb1a59a8e8377685e54493e33271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343c44494d4f51515151515151515151515151515151514e4c48423b32291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000407080915212c38434f5b66727d8994a4adb7c2cdd6cabfb3a89d948c8078706c6a6867676869696f6f6a60564a3f34281d11060000000006121d2935404c57636f7a85909ca8b3bbc7d0d5d0c5bab1a8a19c96908d898786858687888b8e93989ca0a7adb0a7a09791867d716c635c534b423a31281e140900000000000000000000000000000000000000000000000001070b0f11121411161a1c1d1e1d1c1a16111212100d090a0c0d1111111111111111111111111110100e0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c58585858585858595a61636e79838f9aa6b1bdcad4d6cabfb3a89c9185796e63574b4034291d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444c54585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5957534b42392e24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000007131e2a35414c58646f7b86949da8b3c1cad4cdc2b7ada49b918c827c78757473737375777a7a6f63584c4035291e12060000000006111d28343f4a55606976818d98a2abb7bfc9d3d4cac1b8b1aba69f9c9895939791979294969a9ca3a8abb0b8b8b0a79f9690857d716c625b524a41382e23180d02000000000000000000000000000000000000000000000000000003050608070b0f11121211110e0b07070605020000010106060606060606060606060606050402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514c4c4c4c4c4d4d51565f68727e8995a7b0bac5cfd7ccc0b5aa9f96867a6f63584c4035291e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545d6366686868686868686868686868686868686865625c53483e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000006121d2934404b56616b78848f9ba8b1bac5d0d1c7bdb5aaa19b928e8883817f7f7e7f8082857d71665a4e43372c20140900000000040f1b26313c46505965707c88929ca6afb9c4ced3d1c9c1bab6afaaa8a4a0a8a19ca19e9fa2a5a7acb4b6bac1c0b7afa79f9690857c706c625b52483d32271c10050000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145414141414142474f58646f7b8697a0abb6c1ccd7cfc4b9afa692877b7064584d41362a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646d717373737373737373737373737373737373706c62574c41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000005101b27323d47515a6974808b97a1abb6c0cad4cec5bab2aaa29c99938f8d8b8a8a8b8c8e887d71665a4e43372c20140900000000010c17222c36404c58626c76828d969faab5bbc3cfd4d1cac5bfb9b5b3afacb1aba8abb1abaeb1b2b6bcc1c5cac8c0b7afa69f9590847c706b61574b4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3535353537404b57636e7a85919ca8b4bfcbd6d3c9b6aa9f93877c7065594d42362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7065594e42362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000000000000000020d18232d37424d5964707c86919ca7b0bac4cfd5cbc2bab3aca7a49d9b98979696969794887d71665a4e43372c201409000000000008121c26333e49535c64707c85909ca1aab2bbc4cad0d4d0c9c3c0bfbbb8bab6b4b6bab7b9bdbec1c6cccfd2cec7bfb6afa69e9590847b7064584d41362a1e130700000000000000000000040709090b0b0b0b0b0b0b0b0b0b0b0808060300000000000000000000000000000000000000000000030506080c0d0e0e0d0a07060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453e3e3e373d40444c58636f7a8697a0abb6c1ccd7cfc4bab0a793877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e868b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b81796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000009131e2a35414c57626c76828e97a0abb5bcc5cdd2cbc3bcb6b2ada8a6a4a2a1a1a2a094887d71665a4e43372c2014090000000000030c19242f39434c57626b737f8a919ba2abb5bac0c8cdd1d3cecbcac6cac5c1bfc1c5cac5c8c9ccd0d2cec8c3bcb7b0aaa19b928e827a6f63574c4035291d12060000000000000000060b0f12141517171717171717171717171413110e0a05000000000000000000000000000000000001070b0e11111417191a1918161212100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514a4a4a4a4a474b4c545d65717d8894a7b0bac5cfd7ccc1b5aba097877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197969696969696969696969696918d81796e685f554a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000005111c27323d48525b65707c86919ca3acb5bdc5ced3ccc5c0bdb7b3b2afaeadadaba094887d71665a4e43372c2014090000000000000a151f29323d48525b656f75818d929ba2aab0b7bcc2c7cccfd4d6d2d4d0cccbccd0d4d0d4d4cfccc8c3bfb8b4aca7a09c918d827a6f6960554a3f34281d1106000000000000020a10161a1d202022222222222222222222221f1f1d19150f09010000000000000000000000000000040b11161a1c1d202325262524211e1d1b18130d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5555555555555156585d646d75818c98a4afbbcad4d6cbbfb4a89c91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7a2a2a2a2a2a2a2a2a29b918d81796e685f584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000030e19242e38424c57626c75808c939ca4adb4bcc3c9ced0cbc7c2bebdbbb9b9b7aba094887d71665a4e43372c201409000000000000050f19232e38424a555e636e79818d919ca0a7acb3b7bdc1c4cacacbced3cececed2cdcbcacac4c1bfb8b4aea9a39d96918a81796f69605950463c31261b0f040000000000020b131a2025292b2c2e2e2e2e2e2e2e2e2e2e2e2b2a28241f19120a01000000000000000000000002070d151b202528292b2f3031312f2d292926221d17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468616161616161615a6164676e727d87919ca8b4bfcbd6d5c9beb2a79b8f8478685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0adadadadadadaba29b918d81796e685f584f483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000a141e28333e48525b636e79828e949da4abb5b9bfc4c9cccfcdcac9c6c5c2b7aba094887d71665a4e43372c2014090000000000000009141e28313a454a555f696e79818a91979da3a8adb3b5babdbfc0c3c9c2c3c2c8c2bfbebcbab5b3aea9a59f9c938f867f756e696059504940362c22170c0100000000000a131b232a2f34373739393939393939393939393736332f29221a120900000000000000000000050c12161e252b303334373a3c3d3c3b383534312d27221d170f08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746d6d6d6d6d6d6d6d6d6b6f72777e869097a1abb6c1ccd8d0c5bab1a8998d81766a584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8b9b9b9b9b2aba29b918d81796e685f584f483f372f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000050f19242e39424a555f696f7b838f939ca2a9afb5b9bfc0c4c9c5c6c6c5c2b7aba094887d71665a4e43372c20140900000000000000040e18212a303b454f585f686e767f868f939b9da4a8aab0b1b3b5b9b6b7b7b7b6b8b4b3b1b0aaa8a59e9c95908a837c736e6360585048403830261c1208000000000006101a232c333a3f4243454545454545454545454542413e39322b22190f050000000000000000060e151c21262e353a3e4042464748484744413f3c37312d272018110a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f78787878787878787878797b7e828990969fa8b1bac5d0d8ccc1b6aba1978a7f73675c5045352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000a141f29303b454f58616a6f7b838e929c9fa6aaafb3b5b9b9babababab9b7aba094887d71665a4e43372c2014090000000000000000081119212c363f484f585f636f737c838a8f94999ca0a7a5a8aaafababacababaea9a7a5a7a09c9995908b857f79706c655e555048403830281f160c0300000000000b16202a333c43494d4f51515151515151515151514e4c49433b32291f150a00000000000000060e171e252b30373e45494b4e51535453524f4c4b47403c373028221a120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabeb3a79c9085848484848484848484848586898e929c9fa6afb8c1cad4d6cbbfb4a89c91867b6f64584d41352a1e1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000000000000000000000050f16212c363f48515a616b6f7a828a90959c9fa6a8aaafaeaeafaeaeaeadafa094887d71665a4e43372c20140900000000000000000007121c262f383f484f555e656c70797e83898d9197989a9c9fa69fa0a0a09fa59e9b9a9797918d89847f7a736e68625c554a463f382f281f170f060000000000040f1a252f3a434c54585a5c5c5c5c5c5c5c5c5c5c5c5958534b43392f24190e030000000000050e161e272f353b44474f54575a5d5f605f5e5b5856514b474039322a221a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbbfb4a99e95908f8f8f8f8f8f8f8f8f8f9095959a9ca3aaafb7bfc9d1d5ccc1b7ada49a8e82776b61564b4035291e12020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000007121c262f38414a515a616a6f787f858c9096999c9fa6a2a3a3a3a3a2a1a69f94887d71665a4e43372c201409000000000000000000020c151f272f373f454a555c62686e72797d8286898c8e90969394949494939394908e8c8985827e7a746f6a635f58534b453b362f271f170f0700000000000007121d29343f49545d6366686868686868686868686865635c53493e33281d110600000000010b151e272f373f454a54585f6365686a6b6b696763615a565149423b322b221910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d9cec3b8aea59e9c9b9b9b9b9b9b9b9b9b9b9c9fa6a5a7acb5b9bfc7d0d6cdc4bdb3a89d93897d72665a51473d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000020c151f273139414a515a60686e737b80858a8e91969596979797979695949590887d71665a4e43372c20140900000000000000000000050e171f272f353b454b53585f63686e72767a7d8083858687888989888887868482807d7a76726e69636059544f47423b302c261f170f07000000000000000914202b37424d58636d717373737373737373737373716c63584c41362a1f13080000000007111b252e373f484f555d64686e717476777675726f6a63605a524b433b322921170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4ddd2c8beb6aea9a7a6a6a6a6a6a6a6a6a6a7a7a9afb1b2b6bcc4c9d0d6cec5bdb4aaa19a8f83786e63574b41382d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000000050e172029313a414951575e636a6f757a7f828588898b8b8c8c8b8b8a898785827c7064594d41362a1f13070000000000000000000000060e161e252b303b42474f54585f63666a6f727577797a7c7d7d7d7d7c7c7a797774716f6a6663605956504a453f37322a211c160e0600000000000000000915202c37434f5a66717d7f7f7f7f7f7f7f7f7f7f7f7d7165594e42372b1f1408000000000b16212b353f474f585f636d72797c80818282817e7b756f6a625b534b433a31281e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d8cfc6beb8b4b3b2b2b2b2b2b2b2b2b2b2b3b4b9bcbec1c6ced3d4d0c5beb5aca39a91887d71685e54493e31281e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b918d81796e685f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000000000610192129313940474e545a61646a6f73777a7c7e7f808080807f7e7d7b7976706b62574c4035291e1207000000000000000000000000060e151b212a32373f454a4f555759606366696b6a6f707171727171706f696b69666360595755504b46403b352e27221a120c050000000000000000000d1924303b47535e6a75818b8b8b8b8b8b8b8b8b8b8b7f74685c51453a2e22170b000000030f1a25303b454f585f696e757e83888b8d8e8d8c8985807a706c635c534a41382d23180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dfd6cfc8c3bfbebebebebebebebebebebebfc0c3c8c9ccd0d7d1cac5bdb5ada49d938c80756d63574e453a2f21170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000081019212830363e454951565a606367696e70727474757574747371706e6864625b52483d32271c110500000000000000000000000000050c111a22272e353b3f454a4c5056585b5e5a6063656566666665646360595d5a5856504c4a463f3c37302b251e16120702000000000000000000000d1924303b47535e6a75818d9696969696969696968b7f74685c51453a2e22170b0000030d172029333e4a545f686e7981898f93979999999896918c847c716c635a51473d32291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8dfd8d2cecbcac9c9c9c9c9c9c9c9c9c9cacbced3d5d3cfccc9c1bab6aca49e948f83796e635c53473e352b2010070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000000000000000000000000000000009101820262e353a41474b515658585f636567686969696968676664635e5757524b42382e23190e030000000000000000000000000000020712161e252b30353b3e40464b4c4f52515658595a5a5a5a5959575550524f4c4a46403f3b36312c26211b150e060100000000000000000000000d1924303b47535e6a75818d98a2a2a2a2a2a2a2968b7f74685c51453a2e22170b000008131d27333e49535c636e79818c919b9da4a4a5a5a79f9c9490857d716b61564b42392e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdd2cecbcac9c4c0bcb8b1aba39d948f847b6f6960554c43362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000000000000000000000000000000000080f161e252b2f373c40474b4c4f5557595b5c5d5e5d5d5c5b5a5857544e4c48423a31281e14090000000000000000000000000000000001060e151b21252b3033373c3f404346474b4c4d4e4f4f4e4e4d4c4a464643403f3c3633302c26221d16110b05000000000000000000000000000d1924303b47535e6a75818d98a4adadadadada2968b7f74685c51453a2e22170b00020d18222d37414c58636c75808c929ba1a8adb0b1b0afaaa59e9690847b6f645b52483e33281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c8c3bfbebdb9b5b3aca8a19c938f847c706b615850463b33261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000000000050d141b20272d32373c3f41454a4c4e4f515252525151504f4d4b49453e3d38312a21180e04000000000000000000000000000000000000050b11161b2125282c31343538373c3f4142434343434242403f3c36383534312c2825211c17120d070100000000000000000000000000000d1924303b47535e6a75818d98a4afb9b9b9aea2968b7f74685c51453a2e22170b0004101b26313c47515a65717c88909aa2aab3b7bbbcbcb9b5aea69e948d81766c62574c41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8b4b3b1afaaa8a39c97918c837b706b625a51483f362b22160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000000000000000000040b11161d23272d3134353b3f404244454646464645444341403e3a35322e2821191108000000000000000000000000000000000000000001070c11161a1d222628292c2d313435363737383737363534312c2c292826221d1a17120c0803000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0006121d2934404b56616a77828e99a1aab3bac2c7c8c9c4beb6aea59c91867c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaea9a7a6a79f9c99938e8780796f6b625b524a41382f261b1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000000000000001060d13181d2226292b30333437383a3a3b3b3a3a39373634332f2b25231e181109010000000000000000000000000000000000000000000002070b0f12171b1d1e21222629292b2b2c2c2c2b2a29282622201e1d1b17120f0c07020000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0007121e2935414c58636f7b86919ca8b4bac3cdd1d3d3cfc7beb6aba1978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea59e9c9a9796918d88837d756e69615a524a423931271f160a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000003090d13171b1d212528292b2d2e2f2f2f2f2e2d2c2a292724201b19140e0801000000000000000000000000000000000000000000000000000003080c0f111213171b1d1e1f202020201f1f1d1d1b171212110f0c08040100000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000a15212d38444f5b66727e8997a0abb6c1cad3dbdfded7d0c5bab1a89a8e83776c6054493d32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f93939393939393939393939393939393939393939393939393929295908e8c8985827d77716c636058514a423a312920170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e685f584f483f372f271e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000000000000000000000000000003080d1012161a1c1d1f2122232423232221201e1d1c1916110b090400000000000000000000000000000000000000000000000000000000000001040606080d1012121314151514141312110f0c080606040100000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000b17222e3945515c68737f8b96a7b0bac5cfdbe4ebe8dfd4cabeb3a79b9084796d61564a3f33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c778387878787878787878787878787878787878787878787878787878786868483807e7a76716d65635c5550484139312a21191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202a343d444d545e646e727e879197a0a7b0b8c1c8c3bbb2aba29b928d81796e695f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000000000000000000000000000000000000000000000000104070b0f1112141517181818171716151311100e0b060100000000000000000000000000000000000000000000000000000000000000000000000000010406070809090909080806060401000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000c17232f3a46515d6974808b97a3aebacad4dfe9f4eee2d6cbbfb3a89c9185796e62574b3f34281d1100000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a797775726f6a66635c58534a463f383129211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303a444d545e646e727e879197a0a7b0b8c1c8c5bbb3aba29b928d81796e695f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000000000000000000000000000000000030506080a0b0c0c0c0c0b0a090706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000b17222e3945515c68737f8b96a7b0bac5cfdae5ebe8e0d5cabeb3a79b9084796d61564a3f33271c1000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b707070707070707070707070707070707070707070707070707070706f6f696c696663605958534d49433b362f2720191109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29343f4a545d646e727e879197a0a7b0b8c1c8cbc0b5aba29b928d81796e695f584f483f372f271e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000a15212d38444f5b66727e8997a0abb6c1ccd3dcdfded7d0c5bab1a89a8e83776c6054493d32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b6164646464646464646464646464646464646464646464646464646464646360595e5b5856504d49433e39302c261f1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e59646e727e879197a0a7b0b8c1c8d1c8bdb2a69c928d81796e695f584f483f372f271e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000000000105080a0a1111111111110b0a090b0c111111110a0a080502000000000000000000000000000000000000010507090a11111111111111111111111111111111111111111111111111111111111111111111111111111111110a0a08050100000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0007121e2a35414c58636f7b86919ca8b4bac3cdd1d4d3cfc7bfb6aba1978b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414a52575859595959595959595959595959595959595959595959595959595958575550524f4c4b46403e3a332f29211c160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e869197a0a7b0b8c1c8d1d3c7bcb0a5998d82796e695f584f483f372f271e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070914202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000000001070c101315161c1c1c1c1c1c17161516171c1c1c1c161513100c0701000000000000000000000000000001070c101315151c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c161513100c07010000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0006121d2934404b56616a77828e99a1aab3bac2c7c8c9c4beb6aea59c91867c7065594d42362b1f14080000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4c4a464644403f3c37342f2a241f17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c8490949ea5aeb5bec6ced5c9beb2a79b90847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d10121318202b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000030a11171b1f212128282828282822212022232828282822211f1b17110b03000000000000000000000000030a11161b1e2021282828282828282828282828282828282828282828282828282828282828282828282828282828282821211f1b17110a0300000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0005101b26313c47515a65717c88909aa2aab3b7bbbcbcbab5aea69e948d81766c62574c41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212931383d404142424242424242424242424242424242424242424242424242424141403f3b36383534312c26252019150f070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b707c8490949ea5aeb5bec6cecabfb4a89e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14181c1e1e24242b37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000030c141b21262a2c2d3333333333332e2d2b2d2e333333332d2c2a26211b140c0300000000000000000000030b131a2025292c2c33333333333333333333333333333333333333333333333333333333333333333333333333333333332d2c2a26211b140c03000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b00020d18222d37414c58636c75808c929ba1a8adb0b1b0b0aaa59e9690847b6f645b52483e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921282e323536363636363636363636363636363636363636363636363636363636353534312c2c292826221d1a15100a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b626b707c8490949ea5aeb5bec6cdc2b8aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000910181e2327292a2f2f2f37424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000010a141c242b313538393f3f3f3f3f3f393836393a3f3f3f3f393835312b241c1406000000000000000000010a131c232a303437383f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f393835312b241c140a010000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000009131d27333e49535c636e79818c919b9da4a4a5a5a7a09c9490857d716b61564b42392e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29282622211e1d1b17120d0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424b525b626b707c8490949ea5aeb5bec6c7beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921282e3235363b3b3b3b424e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000007111b242c343b4043444a4a4a4a4a4a45444144454a4a4a4a4443403b342d24160e05000000000000000007111a232c343a3f43444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342c241b11070000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0000030d19242f39434a545f686e7981898f9497999a999896918c847c716c635a51473b32291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1d1a171212110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a424b525b626b707c8490949ea5aeb5bec6c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212931383d404146464646464e5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000010c17212b343d444a4e50565656565656514f4c505156565656504f4b453d34271e150b01000000000000010c16202a343c444a4e4f5656565656565656565656565656565656565656565656565656565656565656565656565656565656504e4a443d342b21170c0100000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0000000a151f29303b454f585f696e757e83888b8d8e8e8c8a85807a706c635c534a41382a22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131313131313131313131313131313131313131313131313131313131212110f0c0806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a323a424b525b626b707c8490949ea5aeb5bec6c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a41484b4d5252525252525a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100005101b26313b444d555a5b6262626262625c5a565b5d626262625c5a554d45372e251b110700000000000005101b25303a444d54595b62626262626262626262626262626262626262626262626262626262626262626262626262626262625b5a554d443b31261b100500000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b000000050f16212b353f474f585f636d72797c80818282817e7b756f6a625b534b433a31281a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070808080808080808080808080808080808080808080808080808070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119212a323a424b525b626b707c8490949ea5aeb5bec6c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414a5257585d5d5d5d5d5d5d65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100008131f2a35404a555e64676d6d6d6d6d6d68655f66686d6d6d6d67655e55473f352b21160b00000000000007131e29343f4a545d64666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d67645e554a40352a1f130800000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b0000000007111b252e373f484f555d64686e717476777675726f6a63615a524b433b322921170a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091119212a323a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b61646969696969696969717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000a15212c38434e5a646e73797979797979736f666f7479797979736e65584f453b30251a0f0300000000000915202c37434e59646e727979797979797979797979797979797979797979797979797979797979797979797979797979797979736e645a4e43382c21150a00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c51453a2e22170b00000000010b151e272f373f454a54585f6365696a6b6b6a6763615a565149423b322b221910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1011111111111111111111111111110c0b0a07030000000000000000000000000000000000000001091119212a323a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a21191109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b707575757575757575757d88949fabb6c2beb2a69b8f84786d61554a3e33271b10000a16212d3944505b67737e8584848484847f736d747f848484847f73685f544a3e332820150b00000000000a15212c38444f5b66727e85858585858585858585858585858585858585858585858585858585858585858585858585858585857e73675b5044392d21160a00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afbbc1b9aea2968b7f74685c51453a2e22170b0000000000050e161e272f353b44474f54575a5d5f605f5e5b5856514b474039322a221a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e13171a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d181715120e090200000000000000000000000000000000000001091119212a323a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a211911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b808080808080808080818d99a4b0bbc7beb2a69b8f84786d61554a3e33271b100006121d2935404c57636f7a8490909090908479717d879090908f84796e63574b433a2f251a0f05000000000a16212d3844505b67727e899090909090909090909090909090909090909090909090909090909090909090909090909090908a7e73675c5044392d22160b00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afb5b5b5aea2968b7f74685c51453a2e22170b000000000000060e171e252b30373e45494b4e5153545452504c4b47413c373028221a120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181d22252728292929292929292929292929292322201d18120c0500000000000000000000000000000000000001091119212a323a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a211911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c888c8c8c8c8c8c8c8c8d919ba6b1bcc9beb2a69b8f84786d61554a3e33271b100006111d28343f4a55606974808b969c9c948a7e7b8490979c9c94897e72665c53493f34291f150a000000000a16212d3844505b67727e89959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4aaaaaaaaaaa2968b7f74685c51453a2e22170b00000000000000060e151c21262e353a3e404246474848474441403c37312d272018110a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a22282d313334343434343434343434343434342f2e2b28221c150d0500000000000000000000000000000000000001091119212a313a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c889397979797979797999ba2abb5c0c9beb2a69b8f84786d61554a3e33271b1000040f1a26313b465059636f7b85909ca59a8f83818d949ea7a49a8f83776d63584d42392e24190e040000000a16212d3844505b67727e8995a1a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a1968a7e73675c5044392d22160b00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d989e9e9e9e9e9e9e968b7f74685c51453a2e22170b0000000000000000050c12161e252b303334373a3c3d3c3b383534312d27221d1710080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b32373c3e3f404040404040404040404040403a3937322c251d150c0200000000000000000000000000000000000001091119212a313a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a21191109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa3a3a3a3a3a3a4a6abb2bbc5c9beb2a69b8f84786d61554a3e33271b1000010c17222c36404b56616a75808c97a09d938f8d929ba5a9a79d93887d71665c53483e33281e14090000000a16212d3844505b67727e8995a1acb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3ada1968a7e73675c5044392d22160b00000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d9393939393939393938b7f74685c51453a2e22170b00000000000000000002070d151b202528292b2f303131302d292926221d18130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b333b42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645413c362e251c12090000000000000000000000000000000000000001091119212a313a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a211911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabafafafafafb0b1b5bbc3c9c9beb2a69b8f84786d61554a3e33271b10000008121c26313c47515a64707b86919ca49d9a999b9f9c9fa5a3998e82776c62574c41382e23180d0300000a16212d3844505b67727e8995a1acb8bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8ada1968a7e73675c5044392d22160b00000000000000000000000000000000000000000000000000000d1924303b47535e6a758187878787878787878787877f74685c51453a2e22170b0000000000000000000000040b11161a1c1d202325262524211e1d1b18130d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d28323b444b5155565757575757575757575757575752504c463e362c22180e030000000000000000000000000000000000000001091119212a313a424b525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a2119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6bababababbbdbdbdbdbdbdbdb2a69b8f84786d61554a3e33271b100000020c18222d37414c57626b76818d99a2a8a6a79f9590959da49c92877c70655b52483d32271d130800000a16212d3844505b67727e8995a1acb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ada1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000007131e2a35414c58646f7b7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e120700000000000000000000000001070b0e11111417191a1a18161212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d37424b545b6062636363636363636363636363635d5b564f463c32281d1207000000000000000000000000000000000000000001091119212a313a424a525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a21191109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb1b1b1b1b1b1b1b1b1b1b1b1b1b1a69b8f84786d61554a3e33271b1000000008131d27323d48525b65707c88929ca7aaa09690848f949da2988d81766b61574b41372d22180d02000a16212d3844505b67727e8995a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a1968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000006121d2934404b56616b6f70707070707070707070706f6a61564b3f34291d1206000000000000000000000000000000030506080c0e0f0e0d0a070604020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25313c47515b656b6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564c41372b20150a00000000000000000000000000000000000000000001091119212a313a424a525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a211911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8f84786d61554a3e33271b10000000030d18232e38424c58626c77828e99a3a39c91867c838f9ba59c91867b70645a51473c31261b1004000a16212d3844505b67727e89959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b000000000000000000000000000000000000000000000000000005101b27323d47515a6164646464646464646464646463615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e4a55606b75797a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5045392e22170b0000000000000000000000000000000000000000000001091119212a313a424a525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a2119110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8f84786d61554a3e33271b100000000009141e28333e48535c66717d88939797928b7f747f8a959797978c80756a61564b4034291d1206000a16212d3844505b67727e899191919191919191919191919191919191919191919191919191919191919191919191919191918a7e73675c5044392d22160b0000000000000000000000000000000000000000000000000000020d18232d37414a51565859595959595959595959595856514940372d22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0e0e1111111111111111111111111111070705020000000000000000000000000000000000000000010508090a11111111111111111111111111110b0b090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28343f4b56626e7985858585858585858585858585858074695d52463a2f23180c000000000000000000000000000000000000000000000001091119212a313a424a525b626b707c8490949ea5aeb5bec5c5beb5aea59e9490847c706b625b524a423a312a21180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d888f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84786d61554a3e33271b1000000000040e19242f39424d58636d77838b8b8b8b82786f7a858b8b8b8b8b857b6f63584c4135291e1207000a16212d3844505b67727e85858585858585858585858585858585858585858585858585858585858585858585858585858585857f73675c5044392d22160b00000000000000000000000000000000000000000000000000000009131e27313941474b4c4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101417191a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1312100d09040000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28343f4b56626e79859091919191919191919191918b8074695d52463a2f23180c00000000000000000000000000000000000000000000000001091119212a313a424a525b626b707c8490949ea5aeb5b5b5b5b5b5aea59e9490847c706b625b524a423a31281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c83838383838383838383838383838383838383838381766a5f53483c3125190e00000000000a151f29343f49535d65717d808080807b7069727e8080808080807c7065594e42362b1f1408000915202c37434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43382c21150a000000000000000000000000000000000000000000000000000000040e17202931373d40414242424242424242424242413f3c37302820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1f23252629292929292929292929292929281e1e1c18130e070000000000000000000000000000030a11161b1e202129292929292929292929292929292222201c18120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28343f4b56626e7985909c9c9c9c9c9c9c9c9c9c978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000091119212a313a424a525b626b707c8490949ea5aeaaaaaaaaaaaaaea59e9490847c706b625b524a42382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707777777777777777777777777777777777777777777671685d52473b3024190d0000000000050f1a252f3a434d58636c7174747474706b646d72747474747474706c62574c41352a1f13070008131e2a35404a545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f14080000000000000000000000000000000000000000000000000000000007101920272d32343536363636363636363636363534312d27201810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e252a2e303134343434343434343434343434342a2927231e171008000000000000000000000000030c131a21262a2c2d34343434343434343434343434342e2d2b27221c140d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28343f4b56626e7985909ca8a8a8a8a8a8a8a8a3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000091119212a313a424a525b626b707c8490949ea59e9e9e9e9e9e9e9ea59e9490847c706b625b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a6860584e43382d22170b0000000000000b15202a333e49535c63656868686864615d646668686868686865625c53483e33281c11060005101b26303b444d54595b63636363636363636363636363636363636363636363636363636363636363636363636363636363635c5a554e453b31261b110500000000000000000000000000000000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a292926221d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006171f272e34393c3d40404040404040404040404040403535322d282119100700000000000000000000010a131c242b3035373840404040404040404040404040403a3936312c251d140b0200000000000000000000000000000000000000000000000000010406060808080808080808080808080808080808080808080808111c28343f4b56626e7985909ca8b3b4b4b4b4b4aea3978b8074695d52463a2f23180c04010000000000000000000000000000000000000000000000000000091119212a313a424a525b626b707c8490949292929292929292929292929490847c706b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b5257596060606060606060606060606060606060606060605f5d5850473e34291e140900000000000006101a242f39434c53585a5d5d5d5d585754595b5d5d5d5d5d5d5957534b42392f24190e0300010c16212b343d444a4e505757575757575757575757575757575757575757575757575757575757575757575757575757575757504f4b453d342b21170c02000000000000000000000000000000000000000000000000000000000000070e13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e162730383e4447484b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312921170e0400000000000000000007111a242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c1208000000000000000000000000000000000000000000000003080c0f11121414141414141414141414141414141414141414141414141c28343f4b56626e7985909ca8b3bfbfbfbfbaaea3978b8074695d52463a2f2318110f0c080300000000000000000000000000000000000000000000000000091119212a313a424a525b626b707c8487878787878787878787878787878787847b7064584d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b42484c4d55555555555555555555555555555555555555555553524e4740372e241a0f05000000000000000a151f29333b43494d4e515151514d4b4a4e4f5151515151514e4c48423b32291f150a00000007111a242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b1107000000000000000000000000000000000000000000000000000000000000000004090d10121313131313131313131313131212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273840484e525457575757575757575757575757574d4b47413a31281e13090000000000000000010c16212b343d444a4e505757575757575757575757575757514f4b453e352c22180d02000000000000000000000000000000000000000000060d12171b1d1e2020202020202020202020202020202020202020202020202028343f4b56626e7985909ca8b3bfcacbc5baaea3978b8074695d52463a2f231e1d1b17120d0600000000000000000000000000000000000000000000000000091119212a313a424a525b626b707a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6f63584c4135291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a32383e41424949494949494949494949494949494949494949494847433e372f271e140a0000000000000000050f19222b33393e41424646464641403f424346464646464642413e39322a22190f05000000010a131c242b303537384040404040404040404040404040404040404040404040404040404040404040404040404040404040393835312b241c140b010000000000000000000000000000000000000000000000000000000000000000000002050607080808080808080808080807060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f374851585e6063636363636363636363636363625856514a41382d23180c020000000000000005101b26303b444d54595b63636363636363636363636363635c5b554e453c31271c0b010000000000000000000000000000000000000000070f161d222628292b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b343f4b56626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f2b292826221d160f0700000000000000000000000000000000000000000000000000091119212a313a424a525b626a6f70707070707070707070707070707070706f6a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22292e3335363d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c3b38342e271f160d0400000000000000000009121b22292f3336373a3a3a3a36353437383a3a3a3a3a3a3635332f29221a12080000000000030c131a21262a2c2d34343434343434343434343434343434343434343434343434343434343434343434343434343434342d2c2a26211b140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f485861686b6e6e6e6e6e6e6e6e6e6e6e6e6e6e64615a51473d32261c12080000000000000008131e2a35404a545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6e68655f554b4136251b110600000000000000000000000000000000000000060f1820262c3134353737373737373737373737373737373737373737373737373737373f4b56626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a37373534312c2620180f0600000000000000000000000000000000000000000000000000091119212a313a424a52596063646464646464646464646464646464646463615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f24272a2b32323232323232323232323232323232323232323231302d29241e160e0600000000000000000000020a12191f24282a2b2e2e2e2e2a29292b2c2e2e2e2e2e2e2b2a28241f19120a01000000000000030a11161b1e2021292929292929292929292929292929292929292929292929292929292929292929292929292929292922211f1b17110b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586871777a7a7a7a7a7a7a7a7a7a7a7a7a7a6f6b61564b40362c21170c010000000000000715202c37434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655b4f3e352b20160b000000000000000000000000000000000000030d16202830373c3f40424242424242424242424242424242424242424242424242424242424b56626e7985909ca8b3bfcad1c5baaea3978b8074695d5246424242403f3c37302820160d0300000000000000000000000000000000000000000000000000091119212a313a424950565858585858585858585858585858585858585856514940372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f2626262626262626262626262626262626262626262524221e1a140d0600000000000000000000000002090f151a1d1f20232323231e1e1e20212323232323231f1f1c19150f0801000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161514110c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607090c080c0f11121212110f0b070b080605030000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68778285858585858585858585858585867b6f645950463b31261a0f04000000000006121d28333e49535c67727e85858585858585858585858585857f7468574e453a2f24190e03000000000000000000000000000000000008121d26303840464b4c4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e56626e7985909ca8b3bfcad1c5baaea3978b8074695d524e4e4e4e4c4b46403830261d12080000000000000000000000000000000000000000000000000000091119212a313940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b191917140f0a04000000000000000000000000000000050a0f1213141717171713121314151717171717171413110e0a05000000000000000000000000010508090a11111111111111111111111111111111111111111111111111111111111111111111111111111111110b0a0805020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d101212151712171a1d1d1e1d1c1a1611161411100e0b06010000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85909191919191919191919191978b80746960554a3f342820150b00000000020c161f2a36414d58636c77838f9191919191919191919191918e8276685e54493e33271c100500000000000000000000000000000000010c17222c374049505658595959595959595959595959595959595959595959595959595959595959626e7985909ca8b3bfcad1c5baaea3978b8074695d59595959595856504940372c22170c010000000000000000000000000000000000000000000000000000091119212830373c3f404141414141414141414141414141414141413f3c37302820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0d0b090500000000000000000000000000000000000000040608080c0c0c0c07070709090c0c0c0c0c0c0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f13181b1d1e21232521262829292928252124221f1d1c1916110b0a05000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965707c88969f9c9c9c9c9c9c9c9c9c9c9c90847a6f63574c433a2f251a0e0400000008121c26323d47515a65717d88939d9c9c9c9c9c9c9c9c9c9c9c9085796e63574b4034291d110600000000000000000000000000000000040f1b26313c4650596063656565656565656565656565656565656565656565656565656565656565656e7985909ca8b3bfcad1c5baaea3978b80746965656565656563605950463c31261b0f0400000000000000000000000000000000000000000000000000000009111820272c31343536363636363636363636363636363636363534312d27201810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a090602000000000000000000000000000000000000000000000003080c12171b1d222629292c2f312c313435353433302b302d2b292724201b19150f0b060000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a6afa8a8a8a8a8a8a8a8a99e958a7e73675d53493f34281e14090000010c17222c36404b57616b76818d99a3aca8a8a8a8a8a8a8a8a99f95877c7065594d42362b1f13090000000000000000000000000000000006111d28343f4b56606a6f71717171717171717171717171717171717171717171717171717171717171717985909ca8b3bfcad1c5baaea3978b8074717171717171716f6a60564b3f34281d110600000000000000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040708090b0b0b0b09080704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010405060606050300000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000000000000000000000000060d13171c2226282d313435383a3c363b3f4040403e3b353b393634332f2b25241f1a1510090400000000000000000000000000000000000000000000000000000000000005101c27323d48525b6a76818d99a4b0b4b4b4b4b4b4b4b8aea59b8f83786d63584d42382e23190d0300040f1a26313b465059646f7b86919ca8b3b4b4b4b4b4b4b4b9afa6968a7e73675c5044372d23180d0200000000000000000000000000000006121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85909ca8b3bfcad2c7bbafa4988d817c7c7c7c7c7c7c7c7a6f63584c4035291e12060000000000000000000000000000000000000000000000000000000000060d13171b1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b18130d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121414171717171514120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506080b070c0f11121212110f0b070b0806050300000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000000000000000000000000000000000003080f161d22262c3134373c404143464849464a4c4c4c4a4549474542403e3a35332f29252018140e07000000000000000000000000000000000000000000000000000000000007121e2935404c57626b7984909ba7b2bebfbfbfbfbfc8beb3a89d93887d71665b52483d32271d13080006111d28343f4a55606974808b97a0aab5c1bfbfbfbfbfc8bbafa4988d81766a5a51473d32271b10050000000000000000000000000000000914202c37434e5a66717d88888888888888888888888888888888888888888888888888888888888888888890969faab5c0cbd3c8bcb1a69b918d88888888888888887d71665a4e43372c20140900000000000000000000000000000000000000000000000000000000000003080c10111213131313131313131313131313131313131212100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2022222222201f1d1a15100902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c0f1112141712161a1c1d1e1d1c1a1611161411110e0b0701000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c04000000000000000000000000000000060d131820272c31363c3f41474b4c4f5153555055575857554f5453504e4b49453e3e39342f2a231e1810090300000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87949ea9b4bfcbcbcbcbcbccc1b7ada4998d82766b62574c40372c22170b0107121d2935404c57636f7a84909ca7b0bac4cfcbcbcbcbc9beb2a79b8f84786b61564b4034291d12060000000000000000000000000000000914202c37434e5a66717d8893939393939393939393939393939393939393939393939393939393939393939c9fa6afb9c4ced5cabfb5aba19b9893939393939393887d71665a4e43372c2014090000000000000000000000000000000000000000000000000000000000000000010406060707070707070707070707070707070707070604020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b12192025282b2c2e2e2e2e2c2b2925201a130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f12161a1c1d20222521252829292928252124221f1d1c1a16110b0a05000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b0200000000000000000000000000070f171d222830373c40464a4c5156585a5d5f6159606363635f58605e5c5957544e4c49433f3a322e282119130b0400000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a5aeb8c2cdd8d6d6dbd1c7bdb4a89c91867c70645950463c31251b1107121d29343f49545d67737e8a959ea9b7c0cad4ded6d6d6cabfb3a89d94867b6f64584d41352a1e12080000000000000000000000000000000914202c37434e5a66717d88949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa8aaafb7bfc9d3d9cfc4bbb2aba6a49f9f9f9f9f9f94887d71665a4e43372c201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232a2f343637393939393736342f2a231b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b11161a1c212528292b2e302c303334353433302b302e2b292825201b19150f0b06000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120800000000000000000000000109101820272d313940464b5055575a616366696b6c6d696f6f6e686d6b6a6765635e5758534d49433d383129231b150d0500000000000000000000000000000000000000000000000004101b26313c4650596975818c98a3afbbc8d2dce7ebe0d8ccc1b6aba1978c80756a60564b3e352b20160b141f2b36424d58636d78838f9ba5aeb8c8d0dae4e2e3d8cdc2b7ada495897e72665b4f44362c22170c0100000000000000000000000000000914202c37434e5a66717d8894a0ababababababababababababababababababababababababababababababb3b5b9bfc7d0d9ded4cbc2bbb5b1afabababababa094887d71665a4e43372c20140900000000000000000000000000000000000000000001040709090b0b0b0b0b0b0b0b0b0b0b0a0907050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b333a3f42434545454543423f3a332b231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161b2125282c303334373a3c363b3f4040403e3b353b39363433302b25241f1a16100a040000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d0200000000000000000001091119212830373c44495056596063676a6f72747678797a7a7a7a7978777573706e6865625c58534b47413a342c251d150d05000000000000000000000000000000000000000000000006111d28343f4b56606a78838f9aa6b2bdc9d4e0ecf1e6dbd0c5bab1a89c90857a6f63584f453a30251a111c27323d48525b66717d88939da8b6bfc8d8e1eaf3e7dcd1c7baafa3978c8075695950463c31261b0f0400000000000000000000000000000914202c37434e5a66717d8894a0abb6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6bfc0c4c9d0d7e0e4dbd3cbc4bfbcbbb6b6b6b6aba094887d71665a4e43372c2014090000000000000000000000000000000000000000060b0f1214151616161616161616161616151413100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a333c43494d4e515151514f4d49433c332a20150b0000000000000000000000000000000000000000000000000000000000000000000000000002070e151c21252b3033363b3f4042454749454a4c4c4c4a4549474542403e3a35332f29252019140e080100000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c11060000000000000000000811192129313940464b55596063696f73777b7d8082838585868685858483817f7c7975706c66635d57514a443c352d251e150d040000000000000000000000000000000000000000000006121e2935404c58636f7a86919ca8b4bfcbd6e2eef4e9dfd4cac1b5aa9f968a7f73685f54493e33281f151e2935404c57626b76828e99a4adb7c6cfd8e9f1f6ebe0d4c9bdb1a69a8f83776960554a3f34281d110600000000000000000000000000000914202c37434e5a66717d8894a0abb7c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2cacbced3d9e0e8ece3dbd4cfcac8c7c2c2c2b7aba094887d71665a4e43372c201409000000000000000000000000000000000000020a10161a1e2020222222222222222222222221201e1b16100a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3a434c53585a5c5c5c5c5a58544c433a2f251a0f040000000000000000000000000000000000000000000000000000000000000000000000050c12171f262c30353b3e40454a4c4e5153554f55575857554f5453504e4b49453e3e3934302a231e18110802000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f14090000000000000000061018212a323a414950565e646a6f747a7e8286898b8d8f909197919691908e8d8a8884807c77716d64615a544d453e362e251d140b030000000000000000000000000000000000000000000915202c37434f5a66717d8997a0abb6c1ccd7e3eef9eee4dacec3b9afa69b8f84796e63574b42392e241b26313c46505964707c86919ca8b4bdc7d6dfe8f9f9ede2d6cbbfb4a89c91857a6f63574c4035291e110700000000000000000000000000000914202c37434e5a66717d8894a0abb7c2cdcdcdcdcdcdcdcdcdcdcdcdcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbd6d7d9dde3e9f0f3ebe4ddd8d4d2d1cbcbc2b7aba094887d71665a4e43372c2014090000000000000000000000000000000000020b131a2025292b2c2d2d2d2d2d2d2d2d2d2d2d2c2b2925201a130b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28343f49535c63666868686866635d54493f34291d120700000000000000000000000000000000000000000000000000000000000000000000070f161c21272f363b3f454a4b4f55575a5c5f60585f6363635f58605e5c5957544f4d49433f3a322e282119120c06000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a00000000000000050e172029323a424a525960636e737a80858a8e919797999b9c9ca19da09c9b9a989694908c88827d766f6b645d564e463e362d251c13090000000000000000000000000000000000000000030f1a25303b454f586974808b97a7b0bac5cfdae5f1fcf4e8ddd3c9bfb3a89d94897d72665b52483e33271d28343f4b56606a75808c97a1abb6c1ccd8e3eff9faeee3d7ccc1b5aba097887d71665a4e43352b21160b00000000000000000000000000000914202c37434e5a66717d8894a0abb7c2ced9d9d9d9d9ddd6d0ccc9c8c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0cacbced3d9e0e8ebe2dad4cec9c7c6c0c0c0b7aba094887d71665a4e43372c20140900000000000000000000000000000000000a131b232a303437383939393939393939393939383734302a231c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d7173737373716d63584d42362b1f14090502000000000000000000000000000000000000000000000000000000000000010910171f262c30383f454a4f5457585f6365686a6c6d696e6f6e686d6b6a6865635f5858534d4a443d38322a211c160f070000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b000000000000020c151e273139424b525b616a6f767e848b90959a9ca0a7a5a6a7a8abb0aaa8a7a5a4a59e9b98928e88827b726d655f564f463e352c231910070000000000000000000000000000000000000005111c28333e4a555f6877828e9aa5b1bccad4dfe9f4fff7ede3d9cdc2b7ada49a8e82776c62574c41372d25303a454f58636f7a85909ca8b1bac5d0dbe6f1fffcf0e5dacfc4bab0a7978b7f7468584f453b30251a0f03000000000000000000000000000914202c37434e5a66717d8894a0abb7cad4dee4e5e6ddd4ccc6c1bebdb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bfc0c3c9cfd7e0e4dad2cac4bebbbab4b4b4b4aba094887d71665a4e43372c2014090000000000000000000000000000000006101a232c333a3f4243454545454545454545454543423f3a342c231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e12202c37434e5a66717d7f7f7f7f7d71665a4f43372c201813100d09040000000000000000000000000000000000000000000000000000000109111921272f363b43484f55585f6366696e71747677797a7a7a7a7979777573706e6865635c59544c48423a312c261f170f0700000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b00000000000007121c252f37414a525b626b707a818a90959c9fa5a8abb0b0b2b3b4b6bab5b3b2b1afaea9a7a39c9a928d857e746f665f564e453c342921180e0400000000000000000000000000000000000006121d2934404c57636e7a85909ca8b3bfcad6e2eef8fffcf2e7dcd1c7bdb2a79c92877c70655a51473c3128333e49545f68737f8a969faab8c1cad4dfe9f4fffff4e9ded4cabcb1a5998e8277685f544a3e33281c1105000000000000000000000000000914202c37434e5a66717d8894a7b0bac4cfd4dce6e0d6ccc4bcb6b2b1a9a8a8a8a8a8a8a8a8a8a8a8a8a8a8b3b5b9bfc7cfd9ddd4cac1bab4b0aea8a8a8a8a8a094887d71665a4e43372c201409000000000000000000000000000000010b16202a333c444a4d4f50505050505050505050504f4e4a443c342a20160b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b11161a1c212f3b46525e6975808b8b8b8b81756a5e52473b3026231e1c18140e0a0400000000000000000000000000000000000000000000000001091119212931383f464a53585f63686e72767a7c7f81838485868685858483817f7c7975716c66635d57524b453b362f281f170f07000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b0000000000040d16212b353f48515a626b707b838d929c9ea5a9aeb4b5babcbdbfbfc1c4c0bfbebdbbb8b4b2aca7a29b9590897f7570665f554d443a31281e140900000000000000000000000000000000000008141f2b37424e5965717c88969faab5c0cbd7e2eefef7f6f6ebe1d7ccc1b6aca3988c81756a61564b3f362c34404b57636e79848f9ba6afb9c9d1dae4eef9f6f7f8eee1d6cabfb3a79c90857a6e63574b4034291d1206000000000000000000000000000914202c37434e5a66717d8897a0abb5bac3ccd5dedbd0c6bcb3aca7a69d9d9d9d9d9d9d9d9d9d9d9d9d9d9da8aaafb6bfc9d3d8cec4bab1aaa5a39d9d9d9d9d9d94887d71665a4e43372c201409000000000000000000000000000000040f1a25303a444c54595a5c5c5c5c5c5c5c5c5c5c5c5b59544d443a30251b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161b2025282b303b46525e6975808c96968c81756a5e52473b34312d2927231e19140e070200000000000000000000000000000000000000000000081119212a323a414850555c63696e73797d8185888b8d8f909197919691908e8d8a8784807c77726d64625b554a46403830281f170f060000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b00000000010b141e26303b454f58616a707c848f949ba2a9aeb4b8bfc1c4cac9cacbcccfcccbcac8c8c2bfbcb6b2aba59f9c908b80756f655d544a41382e23160d0400000000000000000000000000000000000b16222e3945505c68737f8a96a6afb9c4ced9e5f0efeceaeaeae5dad0c6bcb3a89c91857b6f64584f453b333e48525b66727e89949da8b6bfc9d9e1ebeaeaeaecefeee2d7cbc0b5a99f95887c7065594e42362b1f14090000000000000000000000000008131f2b36424d5965707c86919ca1aab3bcc5ced7d7ccc1b6aca39c9a9291919191919191919191919191919c9fa6afb9c3ced4c9beb4aaa19a9791919191919191887d71665a4e43372c20140900000000000000000000000000000007121e29343f4a545d6466676767676767676767676766645d544a3f34291e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b21252b3033353b3f46525e6975808c98988c81756a5e524741403c3735322d28231e17120c050000000000000000000000000000000000000000061018212a323a424a525960636d71797e83898d909696999a9c9ca09da09c9b9a989695908c88827d77706b655e555048403830281f160d0400000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b0000000006111b252e363e4a555f696f7b848f949da4abb4b8bec3c8cccfd4d0cccbcacacacccfd3d2cdcbc6c1bbb6aea9a099908b7f746e645a51473d32261e140b0100000000000000000000000000000005101c27323d48525b6a76818d99a4b0bbc9d3dde8e9e4e1dfdedfe1e0d7ccc0b5aa9f968b7f74695f554a3f35414c57626c77828e9aa4adb7c7cfd9e9e1dfdedfe1e4e9e4d9cec3b9afa6968a7f73675c5045382e23180d0200000000000000000000000007131e2a35414c57626c737f8a919aa3acb5bdc6cfd5c9beb2a79c938e86868686868686868686868686868690969faab5c0cbd2c7bbb0a59a908c86868686868686867d71665a4e43372c2014090000000000000000000000000000000914202b37424d59646d727373737373737373737373726d64594e42372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161e252b30353a3e40454a4c525e6975808c98988c81756a5e524f4c4b4741403d38322e28211c160e06000000000000000000000000000000000000050e162029323a424b525b61696e757d838a8f94989c9fa6a4a6a7a8aab0aaa8a7a5a4a59e9c98938e89827c736f6360595049403830261e150b01000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b000000000b16202b353e47535c636e79828e949da5adb4bbc3c8ced2cecbcac5c1bfbebebfc0c4c9caccd1d0ccc6bfb8b4a9a19c91877e726b61574b44362e251b110600000000000000000000000000000007121e2935404c57626b7984909ba7b3becad5e1e5ded9d6d3d2d3d6d9dacfc4b9afa79b9084796e63574c433c47515a65707c87929ca7b5bdc7d7e0d9d6d3d2d3d6d9dee8ddd3c9bbb0a4998d81766a5b52483d32271c100500000000000000000000000006111c27333e48525b656f75808c929ca4adb6bfc8d1c8bdb1a69a8e837a7a7a7a7a7a7a7a7a7a7a7a7a7a7985909ca8b3bfcad1c6baaea3978c807a7a7a7a7a7a7a7a796e63574b4034291d11060000000000000000000000000000000915202c38434f5a66727e7f7f7f7f7f7f7f7f7f7f7f7e72665b4f43382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b20272f353b3e45494b4f55575a5e6975808c98988c81756a5f5d5b5856514d4b47413d38302c261f17110901000000000000000000000000000000020c151e273039424b525b626b707981888f949b9da4a8aaafb0b1b3b3b5bab5b3b3b1afaea9a7a39c9a928e867f766f696059504940372e251b1107000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b000000030e19242f3a454e57636c74808c939ca4adb5bdc5ced2cfc9c3c0bfbab6b4b3b2b3b5b9bdbec2c7cfd4cfc8c3b9b6aba19790857b6f645d54473e352b20160b00000000000000000000000000000007131f2a36414d5864707b87949ea9b4bfcbd6e2dbd5cfcac8c7c8cacfd5d3c9c0b4a99e95897e72675c5349404b56616a75818d98a3acb6c5ced7d5cfcac8c7c8cacfd5dbe1d5cabeb2a79b9084786b61574b4035291e1207000000000000000000000000030e19242e38424b555e636e79828e949da6afb8c0cac9beb2a79c938c81756e6e6e6e6e6e6e6e6e6e6e6e7985909ca8b3bfcad1c5baaea3978b80746e6e6e6e6e6e6e6e685f54493e33281c11050000000000000000000000000000030e1a25313d48545f6b76828a8a8a8a8a8a8a8a8a8a8a82776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b2f373f454a4f5457585f6365686a75808c98988c81756c6a696664615a5857514c48423b362f272119120a01000000000000000000000000000007111b252f374149525b626b707b838c919b9da4a8adb3b5b9bbbdbebfc1c4c0bfbebdbbb8b4b3aca7a39c96918a81796f69605950473e352b20180f060000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000005101c27333e49545e68717d87919ca3acb5bdc5cdd3cbc7bfb9b5b3b1aba8a7a7a8aaafb2b3b7bdc4cad0d2cec5bab1a89f958e82776d64574e453a2f24190e0300000000000000000000000000000a16212d3844505b67727e8a95a5aeb8c2cdd8dbd3cbc5c0bcbbbcc0c5cbd3cdc2b8aea59a8f83776c63584d454f58636f7b85919ca8b3bcc6d6d3cbc5c0bcbbbcc0c5cbd3dbd6cbbfb4a99e94877b7064584d41362a1e1308000000000000000000000000000a141f29323b454a555f696f7a838f959fa7b0bac4ccc1b6aca39b918b7f736d6363636363636363636e7985909ca8b3bfcad1c5baaea3978b807469636363636363635f584f453a30251a0e030000000000000000000000000000030e1a25313d48545f6b76828e9696969696969696968e83776b6054493d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f262e353a43484f55585f6366696e71737577808c98988c8178777674726f6a6864615a57524a463f38312a221a120901000000000000000000000000000b16212b353f48515a626b707c848f939ba1a8adb3b7bdc0c3c9c8cacbcccfcccbcac8c8c3bfbcb6b2aca79f9c918d827a6f6960584f453a302820160d0300000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000006111d2934404b57636e78828e97a0abb4bcc5ced2cac3bbb6afaaa8a8a19c9c9b9c9fa6a6a8adb5bac0c8cfd4cac1b8afa69c92897d72685e54493e33271d13080000000000000000000000000004101b26313c4650596975818c98a3afbbc8d2dcd7cbc2bbb5b1b0b1b5bbc2cbd2c8beb3a79d93887d71655a514a555f69747f8b969faab5c0ccd6cbc2bbb5b1b0b1b5bbc2cbd5d8cdc2b8aea595897e72675b4f44372c22170c01000000000000000000000000050f18222a303b454f58616a707c859097a0abb5bac3c6bcb3aaa19c91877e726c625a5757575757626e7985909ca8b3bfcad1c5baaea3978b8074695d575757575757544f473e352b20160b000000000000000000000000000000030e1a25313d48545f6b76828e99a1a1a1a1a1a1a19a8e83776b6054493d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f272f363e454953585f63686e71767a7c7f818285909c9c9186848382807e7b78746f6b64625b555048423a322a22191107000000000000000000000000030f1a25303b454f58616a707c8490949da3aab3b7bdc2c7cbced3d4d2d0cfcecfd0d2d4d2cecbc6c1bcb7afaaa29b928e827a6f685f5449433930271d130800000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000005111c27333d48525b66727d89939ca7b0bac4cdd4cac2bab2aba69f9c97979190909196969b9da4aab0b7bfc7cfd1c9bfb6aca29b8f83786e63574b40372c22170c0100000000000000000000000006121d29343f4b56606a78838f9aa6b2bdc9d4d8cfc6bbb2aba6a4a6abb2bbc7d0ccc1b6aca3998d81766b61574c57636e7984909ba7afb9c4cfcec5bbb2aba6a4a6abb2bbc5cfd9d2c7baafa3988c8175695950463c31261b10040000000000000000000000000008111a212b353f48515a626c717d86919ca1aab3bcc5c4bbb6aba09790857c706a6158504c4c56626e7985909ca8b3bfcad1c5baaea3978b8074695d524c4c4c4c4b49453e372e251b11070000000000000000010507090a0c0c0c0e1a25313d48545f6b76828e99a5adadadadada59a8e83776b6054493d31261a0f0c0c0c0a090805010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f272f383f474e545c63686e73797d8185888a8c8e90959fa09691908f8d8b8986837f7b76706b636058524a423b322a21170f060000000000000000000006101a232c333e4a555f686f7b838f959ea5acb4bac2c7cdd1d2cdcbcac6c4c3c2c3c4c7cacbced3d0ccc7c0b9b5aba39c938d81786e635d534940372c22170e04000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000007131e2a35414c57626c77828e9aa3acb8c1cad4ccc3bab1aaa29b96908c8886848485878a8f939ca0a7afb6bfc9d3cfc6bcb3a89d93897d71665950463c31261b100400000000000000000000000007121e2935404c58636f7a86919ca8b4bfcbd6d2c8bfb6aba29b989ba2abb7c0c9d0c6bcb4a89c91867b6f6459535c67727e89949ea9b7c0c9d1c7beb5aba29b989ba2abb5c0cad7d4c9bdb2a69a8f83786a60564b3f34281d1106000000000000000000000000000107121c252f374049525b636d737f8a919aa3acb4bdc6c5bab0a79f968f847b6f6960554a4b56626e7985909ca8b3bfcad1c5baaea3978b8074695d5246404040403e3a352e261e150b0100000000000000060b10131415171717171a25313d48545f6b76828e99a5b0b9b9b9b1a59a8e83776b6054493d31261a17171717151513100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f484f575e636c71797e84898d909596989a9c9fa5a7a09c9b9a999795938f8b86817c746e69625b534b423a32281f160d030000000000000000010b16202a333e49535c636e79828e949da5aeb5bdc4cdd1d1ccc8c2bfbebbb9b7b7b8b9bbbfc0c3c8cdd2d0c9c4bbb3aca39c928c80746d635950463c31281e1409000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000008131f2a36424d5964707c87929ca7b3bcc8d1d0c7bcb3aaa19a928d85807d7a7978797b7f838a91969fa6afb9c3ced7ccc2b7ada4998d82766a60564b3f34281d11060000000000000000000000000915202c37434f5a66717d8997a1abb6c1ccd8cec3b8aea59b918d919ba7b0bac4cfccc1b5aba0978c8074696058636c77838f9aa5aeb8c7d0cdc2b7ada49b918d919ba6b1bec7d2d6cbbfb4a89c91867a6f63584c4035291e12070000000000000000000000000000020c151e273039424b545d656e75808c929ca4adb6bfc8c1b8afa69e948e82796e635f554d56626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a35353433302b251e160d04000000000000030a10161b1e2021232323232325313d48545f6b76828e99a5b0bcc4bdb1a59a8e83776b6054493d3126232323232321201e1b16110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119212c363f484f585f686e747d838a8f94999c9fa6a4a5a7a9aeb0aaa8a7a6a4a2a49d9a97918d868079706b625c534b423830261c1208000000000000000005101b25303a414c58626c74808b939ca4adb5bec5cdd5cdc6c1beb8b4b2afadacabacadb0b3b4b9bfc2c8ced3cfc4bcb3aba29c91877d716a60564b41382e23180d030000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00040f1b26313c4650596874808b97a3acb6c4ccd3c9c0b7aca39a918c817b75716e696d6b7073797f8690969faab5bbc8d1d1c7bdb3a89c91857a6f63584c4035291e12060000000000000000000000030f1a25303b454f586974808b97a8b1bac5d0d6cbc0b4a99e958d818d96a0aab5c0cccfc4bab0a79c90857a6f635a65717d88939da7b5bec8d6cabfb4a89e948d818d98a5aeb8c2cdd7ccc1b6aba097897d71665a4f43352b21160b000000000000000000000000000000050e172028323a434c555e636e79828e949da6afb7c0c8bfb6ada49c938d81766f655d5456626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f29292825201b150d06000000000000030b131a2025292b2c2e2e2e2e2e2e313d48545f6b76828e99a5b0bcc8bdb1a59a8e83776b6054493d312e2e2e2e2e2e2d2c2926201a130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a303b454f585f696e7880878f939b9ea4a7a9afafb1b3b4b8bab5b3b2b1b0aeada8a7a09c96918c837c706c625b524940362c22170f050000000000000007131e29343f4a545d65707c86919ca3acb5bdc6ced1cac4bdb7b3aea9a7a3a1a0a0a0a2a4a7a9afb4b8bec6ccd3ccc4bbb6aba19790847a6f635a51473d32261c12080000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0006111d28343f4a56606a78838f9aa6b1bcc6d4cfc4bab0a79c928c80786f6a65635f5b6164686e737d85909ca2abb8c1cad4ccc0b5aaa096897e72665b4f44382d211308000000000000000000000005111c28333f4a555f6977828e9aa5b1bccad4d6cabeb3a79c90847b86919ca8b3bcc6d0cac0b4a99f958a7e7368616b76818d99a3acb6c6cecec4b9afa69b8f847b87949ea9b4bfcbd6cfc5bab0a7978b807469584f453b30251a0f03000000000000000000000000000000061018212a333c454a555f686f7a838f959fa7b0bac4c7beb5aca39b918b7f746d645c53626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f231d1c1a16110b04000000000000000a131c232a303437383a3a3a3a3a3a3a3d48545f6b76828e99a5b0bcc8bdb1a59a8e83776b6054493d3a3a3a3a3a3a3a383734302a241c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a424a555f696e79818b91979da4a8adb3b4b9bbbcbec0c3c4c0bfbebdbbbab7b3b0aaa7a09c938f847c706b625950463c31291f150a000000000000000914202b37424e59646d77828e97a0aab3bcc5ced1c9c1b9b4ada8a59e9b989695949596999c9fa6a9aeb5bbc3cbd3d0c5bab1a89e948b80746b61574b40362c22170c0100000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c58636f7a86919ca8b4bfcbd6ccc0b5aaa0968e82796e68615a57555257585f636d727e89919ba7b0bac5cfcfc4bab0a7988c8075695e5246372d22180d020000000000000000000006121d2934404c57636e7a85909ca8b3bfcad6d3c8bcb0a5998e8276818d98a3acb6c1cccec3b8aea59b8f83796e646f7b86919ca8b3bcc6d6cbc0b5aa9f968b7f7884909ba7b2becad5d4cabcb1a59a8e8277695f554a3f33281c11050000000000000000000000000000000008111a232b303b454f58606a707c859097a0aab5bac3c5bcb3aba29c91877e726c625a626e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f2318110e0b07010000000000000006101a232c343a3f4243464646464646464648545f6b76828e99a5b0bcc8bdb1a59a8e83776b605449464646464646464644433f3a342c241a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424b555e636e79828d929ca0a7adb4b7bec0c3c8c8cacbcecfcccbc9c9c7c6c1c0bab5b0aaa49d9590847c706960554a43392f24190f05000000000006121d28333e49535c66727e89939ca7b0bac4ccd2c9c0b9b1a9a49d9a94908c8a8988898a8d90959b9ea5abb3bbc2cbd4cac1b8aea59c91857b6f645950463c31261b0f0400000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000914202c37434e5a66717d8897a0abb6c1ccd6cbbfb3a89c91867b6f685f58514c4a484b4f545c646e76818d97a0abb6c1ccd3c9bdb1a69a8f83776c5a51473c31261b10040000000000000000000008141f2b37424e5965717c88969faab5c0cbd7d1c5b9aea2978b7f747c88939ca7b2bec7d2c8bfb3a89d93897d716974808b97a0aab5c1ccd6cabfb3a89c90857a76818d99a4b0bbcad4d6cabfb3a89c90857a6e63574c4034291d1206000000000000000000000000000000000109131b212b353f48515a626b717d86919ca1aab3bcc5c4bbb6aba19790857c706a61596e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c03000000000000000000010b16202a343c444a4e4f515151515151515151545f6b76828e99a5b0bcc8bdb1a59a8e83776b60545151515151515151514f4e4a443d342a20160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b656f76818d929ba2abb0b8bdc2c7cbced3d3d4d4d7d5d3d2cdd1d3d1cccac4c0bab5ada59e958f837a6f635c53493e33291f150a000000000008131f2a36414d58636c77838f9aa3acb7c0cad4cbc2b9b0a8a099938f8884817f7e7d7e7f81858a90959ca2abb2bbc4cdd1c9beb5aa9f968c80756960554a3f34281d120800000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000b16222d3945505c67737f8a96a7b0bac5cfd2c6bbafa4988c81756b61584f47413f3d3f454a545d64707c86919ca8b4bfcbd6cabfb3a89c9085796a61564b4034291d1206000000000000000000000b17222e3945505c68737f8a96a6afb9c4ced8cdc2b7ada494897d7177838e9aa5aeb8c2cdcdc2b7ada4998e82766f7a84909ca7b0bac4cfcbc0b6aca2988c8175737f8b96a7b0bac4cfd7cbc0b5aa9f96887c7165594e42372b1f140900000000000000000000000000000000000207111b252f374049525b636d737f8a919aa3acb4bdc6c5bab1a89f9690847b6f69606e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c0000000000000000000005101b25303a444d54595b5d5d5d5d5d5d5d5d5d5d5f6b76828e99a5b0bcc8bdb1a59a8e83776b605d5d5d5d5d5d5d5d5d5d5b59544d443a30261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35404c57626b737f8a919ba2abb6bac1c8cdd1cfcccbc7c8c9cccac7c6c2c6cacbced3cfcac4bdb5aea59d948d81756c63584d42392f24190e03000000030f1a25303b454f5865717d88939da8b3bcc8d0cec5bab2a8a099908b837d7975737271727376797e848d929ba2abb4bdc8d1cfc4b9afa69c90857a6f63574c40362c22170c01000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000c18232f3a46525d6974808c97a3aebacad4cec3b9afa694897d71665a51473f373332353b444c57626b77838e9aa6b1bdc8d4cbc0b5aa9f96867b6f63584c4135291e120700000000000000000005111c27323d48525b6a76818d99a4b0bbc9d3d6cabfb3a89d94867b6f727e89949ea9b4c0c9d1c7bdb4a89c91867c737e8a959ea9b7c0cad4c9bdb2a79c92877c70717d8897a0abb5c1ccd7cec4b9afa6968a7f73685c5145382e23190e030000000000000000000000000000000000020c151e273039424b535d656e75808c929ca4adb6bfc8c1b8afa69e948e82796e636e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c0000000000000000000007131e29343f4a545d646668686868686868686868686b76828e99a5b0bcc8bdb1a59a8e83776b686868686868686868686867645d544a3f34291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c64707c86919ca2abb3bbc5cad1d1cac4c1bfbbbcbdc1bfbcbbb6babfc0c3c9cfd4cfc6beb6ada49b91887d71655c53483e33281c110600000005111c28333e4a555f6875818d98a3acb7c4ccd1c7beb5aaa1998f8a8079716d6a6766666668696e737a818d919ba4adb8c1cad3c9c0b4a99f958a7e73675950463c31261b0f04000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000d1924303c47535e6a76818d98a4b0bbc7d2cbc0b4a99f95867a6f63574c41372e28252b323d48525b6974808b97a3aebac5d1cec3b9afa693877c7065594d42362b1f130800000000000000000007121e2935404c57626b7984909ba7b3becad5d5c9beb2a69b8f84786a6e7984909ba7afb9c4cfccc1b6aba1978c8078838f9ba5aeb8c8d0cdc2b7ada4998e82776c6f7a85919ca8b4bfcbd6d3c9bcb0a4998d82766a5b52483d32271c1105000000000000000000000000000000000000050e162028323a434c555e636e79828e949da5aeb7c0c9bfb6aea59c938d81766f6e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000914202b37424e59646d7274747474747474747474747476828e99a5b0bcc8bdb1a59a8e8377747474747474747474747474726e64594e43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c76828d969faab2bbc3cfd4cdc8c0bab5b4b0b1b2b6b5b1afaaafb3b5b9bfc7ccd4cec6bdb5aaa19a8e82776c62574c41352a1f130900000006121d2934404c57636e7984909ca7b3bdc6d6cdc2b7ada49b918a7f746e68635d5c5b5a5b585f636a6f79818d939da7b0bac5cfcec3b9afa6998e82766a60564a3f34281d1106000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000e1925313c48535f6b76828d99a4b0bcc7d3cabfb3a79c9085796960554a3f31271e1b232e3845505c67737f8a96a1adb8c4d0d3c9b6ab9f93887c7165594e42372b1f140800000000000000000007131f2a36414d5964707b87959ea9b4bfcbd6d2c7bbafa4988d81766a69747f8b969faab5c0ccd0c5bab1a89c90857e89939da8b6bfc8d6cabfb3a89d94897d72666978838f9aa6b2bdc9d4d5cabeb3a79b9084796b62574c4035291e120700000000000000000000000000000000000000060f18212a333c454a555f686f7a838f959fa7b0bac4c7beb5aca39b918b7f746e7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000a15212c38434f5b66727d80808080808080808080808080838f9ba6b2bec9beb2a79b9084808080808080808080808080807e72675b4f44382d21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505965717d88929ca6afb9c2cbd4cdc4bcb8b0aba8a4a5a7acaaa5a49fa3a8aaafb6bcc4ccd5cec5bbb2a79c92887c7065594e42382d23180d0200000914202c37434e5a66717d88959fa9b4c0cbd6cabfb4a89e948c81756e635f5853504f4e4f4f555960686e79838f97a0abb6c1ccd3c8bfb3a89c91857a6f63584c4035291e1206000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000e1a25313d48545f6b77828e99a5b0bcc8d3c9beb2a79b9084786d5950463c31261b14212d38444f5b67727e8995a1acb8c3cfcec2b7ab9f94887d71655a4e43372b2014090000000000000000000a16212d3844505b67727e8a95a5aeb8c2cdd8cfc4b9afa6968a7f7367636f7b85919ca8b3bcc6d0cac1b5aa9f969085909ca4adb7c6cfcec3b9afa69b8f83796e636975818c98a3afbbc8d3d6cbbfb4a99e95877b7064594d41362a1f13080000000000000000000000000000000000000000081119232b303b454f58606a707c859097a0aab5bac3c5bcb3aba29c91877e727985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818b8b8b8b8b8b8b8b8b8b8b8b8b8f949da8b3bfcabfb4a89e94908b8b8b8b8b8b8b8b8b8b8b8b8b81766b5f53483c3125190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a76818d99a2abb7c0c9d3cdc4bcb4aca7a09c999a9ca3a19b9893979c9fa6acb3bcc4cdd5ccc1b6aca3978c8075695a51473d32271b100500000c17232f3a46515d6974808b97a5aeb8c3cecec3b9afa69b8f847a6f635e544f4745444344454a50586069707c86919ca8b4bfc9d3ccc0b5aaa096887d71665a4f43372c201509000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000e1a25313c48545f6b76828e99a5b0bcc7d3cabfb3a79c9085796a60564b3f34281f1d212d3945505c67737f8a96a1adb9c4d0cdc2b6ab9f94887c71655a4e42372b201408000000000000000004101b26313c47515a6975818c98a3afbbc8d2d7ccc0b5aa9f96887c7065616a75818d98a3acb6c1cccec3b9afa69f9690969faab4bdc7d7cbc0b5a99f958a7f73685e67737e8a95a6afb9c3ced9cec3b8aea5958a7e72675b5044372d22180d02000000000000000000000000000000000000000109121b212b353f48515a626b717d86919ca1aab3bcc5c4bbb6aba19790867d7985909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d9797979797979797979797979b9da4adb7c2cdc2b8aea59e9b9797979797979797979797978d82766b5f53483c3125190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8b3bbc7d0d0c8bcb4aca39d97918d8e929c9b918c888c90969ca3acb4bdc6d1d0c6bcb2a79b8f84786b61564b4034291e12060004101b26313c4650596b77828e99a5b1bcc8d2cbc0b5aa9f968a7f7369605549453e373837353b40485058626c76828d99a6afb9c3cecfc4bab0a7978b7f74685d51453a2e231208000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000d1925303c47535e6a76818d98a4b0bbc7d2cbc0b4a99f95867a6f63584c42382f29282c333e48525b6974808c97a3aebac6d1cfc4b9afa693877c7065594e42362b1f1408000000000000000006121d29343f4b56606a78838f9ba6b2bdc9d4d6cabfb3a89c91857a6e635a65707c88929ca7b2bec7d2c9bfb6afa69f9c9fa6afb9c5cdd0c5bab1a89c90857a6f635764707c87959fa9b4c0cbd7d2c8bbafa4988c81756a5a51473c31261b100400000000000000000000000000000000000000000207111b252f374049525b636d737f8a919aa2acb4bdc6c5bab1a89f9690847b85909ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a2a2a2a2a2a2a2a2a2a2a2a6a8adb5bdc7d1c7beb5aea8a7a2a2a2a2a2a2a2a2a2a2a2998d82766b5f53483c3125190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5b67727e8996a0aab5c0ccd4cac0b7aca39c938f8681828e9a988c817c80858e929ca4adb7c1ccd6cabfb3a89d94877b6f64584d41352a1e13070006121d29343f4b56606a7984909ca7b3becad6cabfb3a89c90857a6f635950463a352e2c2c2b30373f48525b65717d88959fa9b5c0cbd3c9bcb0a4998d82766b5f5348362c22170c010006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000c18232f3a46515d6974808b97a3aebac7d1cec3b9afa694897d72665b52483f383434363b444c57626c78838f9aa6b1bdc9d4ccc0b5aa9f96867b6f64584c41352a1e1307000000000000000007121e2935414c58636f7b86919ca8b4bfcbd6d4c8bdb1a59a8e8377695f57626c77828e9aa5aeb8c2cdcfc7bfb7afaaa8aaafb7bfc9d5ccc1b6aba1978c80756a6057636e7985909ca7b3bfcad6d5c9bdb2a69b8f83786a61564b4034291d1206000000000000000000000000000000000000000000020c151e273039424b535d656e75808c929ca4adb6bfc8c1b8afa69e948f8386919ca8b3bfcad1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4aeaeaeaeaeaeaeaeaeaeb2b3b7bdc5ced7cec5beb8b4b2aeaeaeaeaeaeaeaeaeaea4998d82766b5f53483c3125190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586a75818c98a7b0bac4c1c1c4bab0a79c938e837c76808c98988c8175757b828e939da8b3bfc9d3cdc2b7ada495897d72665b4f43382c2115090007121e2935404c58636f7a86959ea9b4c0cbd3c8bcb0a5998e82766a60564940362b251e2021272f38424b57636e7985909ca7b3bfcad4c9bdb2a69a8f83786c5950463c31261b0f040006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000a16212d3844505b67727e8995a4adb7c2cdd3c8bbafa4988d81766b62584f4842403f40464a555e65707c86919ca8b4bfcbd6cabfb3a89c9185786e63574b4034291d110600000000000000000915202c38434f5a66727d8997a1abb6c1ccd8d1c6baafa3978c80756958535c66727e89949ea8b4bfc9d3cfc7bfb9b5b3b5b9bfc7d0d6cbbfb4a89c91867c706459545e6877828e99a5b1bcc8d3d5cabfb3a89d93867b6f63584c4135291e120700000000000000000000000000000000000000000000050e162028323a434c555e636e79828e949da5aeb7c0c9bfb7aea59d938f91969faab5c0ccd1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4b0b9b9b9b9b9b9b9b9b9bebfc2c7ced5ded6cec7c2bfbeb9b9b9b9b9b9b9b9b9b0a4998d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6878838f9ba6b2b5b5b5b5b5b5aaa0978e827a7075808c98988c81756b6f79838f9aa6afb9c3ced1c7b9ada2968b7f73685c5145392e22170b0008141f2b36424d5965707c8793a5aeb8c3ced1c5b9aea2978b7f74685950463830261b1512161f28333e49545f6877828e99a5b1bcc8d3cabfb3a79c9085796960554a3f34281d11060006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0007131f2a36414d5964707b87949da8b3c0cad4cbbfb4a89c91867c70695f58524c4b4a4c50555d646e76818d97a1abb6c1ccd4c9bdb1a69a8f8377685e54493e33271c100500000000000000030f1a25303b454f586974808b97a8b1bac5d0d9cec3b8aea595897e72675b4f57636e7984909ba6afb9c4ced7d0c9c4c0bfc0c4c9d0d7ccc2b7ada4998d82766b62574e576974808b97a3aebac7d1d8cdc2b7ada494897d72665a4f43362c21170c0100000000000000000000000000000000000000000000060f18212a333c454a555f686f7a838f959fa7b0bac4c7beb5aca39d9a9c9fa6afb9c4cfd1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4b0bbc5c5c5c5c5c5c5c5c9cacdd1d7dee6ded7d2cdcacac5c5c5c5c5c5c5c5bcb0a4998d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985919ca8aaaaaaaaaaaaaaa89c91867c706975808c98988c81756a69717d88969faab5c0cbd1c6baafa3978c8075695e52463b2f24180c000915202c37434f5a66717d8994a0abb7c8d2cec3b7aca094897d72665a4f43372c1f160b070e1a25303a454f586974808c97a3aebac5d1cbc0b4a99f95867a6f63574c4035291e12060006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0007121e2935404c57626b78838f9ba7b0bac4cfccc1b5aba0978e82796e69625b585756585960636d737e8a929ba8b1bac5d0cec3b9afa6988c807569574e453a2f24190e030000000000000005111c28333f4a555f6977828e9aa5b1bccad4d6cbbfb4a99e95877b7064584d545f68747f8b969faab5c0cbd7d9d3cecbcacbced3d9d5cabeb3a89d93887d71665b524f5a66727d8994a4adb7c2cdd8d1c7baaea3978c8074695950463b30251a0f040000000000000000000000000000000000000000000000081119232b303b454f58606a707c859097a0aab5bac3c6bcb4aca7a6a8aaafb7c0c9d3d1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4b0bbc0c0c0c0c0c0c0c0c8c9cbd0d5dce4ddd6d0ccc9c8c0c0c0c0c0c0c0c0bcb0a4998d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b8796a09e9e9e9e9e9e9e9e9e998d82766b6975808c98988c81756a636e7a85909ca8b3bfcad2c6bbafa4988d81756a5e53473b3024190d000a15212c38444f5b66727e8995a0acb7c3cfcdc2b6ab9f93887c7165594e42372b201408000b16202b3545515c68737f8b96a2adb9c5d0cec3b9afa692867b6f64584c41352a1e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0005111c27323d48525b6874808b97a0abb5c1cacfc4bab0a79c938d8179706b666463606365696f747e86919ca2abb8c1cad4cbc0b5aa9f96897d72665b4f43352b20160b000000000000000006121d2934404c57636e7a85909ca8b3bfcad6d5cabeb3a79b9084796b61574b4f58636f7b85909ca8b3bcc6d0daddd9d7d6d7d9ddd9cec3b8aea59b8f83786d63584a4c58646f7b86949ea8b4bfcad6d4c8bdb1a59a8e83776960554a3f33281d110600000000000000000000000000000000000000000000000109121b212b353f485059626b717d86919ca1aab3bcc5c4bcb6b3b1b3b5b9c0c7d0d9d1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4b0b5b5b5b5b5b5b5b5b5bcbdc1c5ccd4dcd4cdc6c1bebdb5b5b5b5b5b5b5b5b5b0a4998d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c879393939393939393939393938a7f73676975808c98988c81756a5f6878848f9ba6b2bec9d2c7bbb0a4998d81766a5f53473c3025190d000a16212d3844505b67727e8a95a1acb8c4cfcdc1b5aa9e93877b7064594d42362a1f1308000711222d3944505c67737e8a95a1adb8c4cfd3c8b5aa9e92877b7064584d41362a1e13070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00020e18232e38424d58646f7b86919ca8b1bac5d0cac0b8aca39b918d827c75726f6e6a6f71747a80879196a0aab2bbc9d1d0c5bab1a89c90857a6e63574c4035291d1106000000000000000008141f2b37424e5965717c88969faab5c0cbd7d3c7bcb0a5998d82766b5b52484b56616a75818c98a3acb6c1ccd7e1e5e2e2e2e5e2d6cbc0b4a99f958a7e73675d53494b56616a78848f9ba7b2bec9d5d6cbbfb3a89c91857a6e63574c4035291d11060000000000000000000000000000000000000000000000000207111b252f374049525b636d737f8a919aa2acb4bdc6c6c1bebdbfc0c4c9d0d8e0d1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d98a4a9a9a9a9a9a9a9a9a9a9b1b2b6bcc3ccd5cdc4bcb6b2b1a9a9a9a9a9a9a9a9a9a9a4998d82766b5f53483c3125190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717d87878787878787878787878787877d71666975808c98988c81756a616b7984909ba7b3becad2c7bbb0a4988d81766a5e53473c3024190d000a16212d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877b7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000009141e2935404b56616b76828d97a1abb6bfc9d1c8bcb3aba29b928e86817e7b7a797a7c7f848b9197a0a7b0bac3cbd2ccc1b6aba1978c81756960554a3f33281d110100000000000000000b17222e3945515c68737f8a96a6afb9c4ced9d0c5bab1a8968b7f74685d514547515a65707c87929ca7b2bec7d1dce7eeedeee5dacfc4bab0a79c90857a6f63574c4347515a6a76818d99a4b0bbcad4d7ccc0b5aaa096887c71655a4e42352b20160b00000000000000000000000000000000000000000000000000020c151e273039424b535c656e75808c929ca4adb6bfc8ccc9c9cacccfd3d9e0ddd1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d989d9d9d9d9d9d9d9d9d9d9da5a7acb3bcc5d0c6bcb3aca7a69d9d9d9d9d9d9d9d9d9d9d998d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c796f636975808c98988c81756a64707b87959ea9b4bfcbd2c6bbafa4988c81756a5e52473b3024180d000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000005101c27323d47515a65707c87919ca6afb9c3cecdc4bbb2aba39c97918d8986858586888b90949ca0a7b0b7c0c9d2cec3b9afa69c91877c70645950463b30251a0f040000000000000005111c27323d48525b6a76828d99a4b0bcc9d3d8ccc1b6aba197887d71665a4e43404c57626c77828e9aa4adb7c2cdd9e3edf7eee3d7ccc1b5aba0978c80746960554a3f45505c68737f8a96a7b0bac4cfdacfc4bab0a7968b7f7468574e453a2f24190e0300000000000000000000000000000000000000000000000000050e162028313a434c555e636e79828e949da5aeb7c0cad4d4d6d7dadee3e9ddd1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a76818d929292929292929292929292999ca3acb6c1cbc1b6aca39c9a9292929292929292929292928d82766b5f53483c3125190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f70707070707070707070707070706f69606975808c98988c81756a6c74808c97a5aeb8c2cdd1c5baaea3978b8074695d51463a2f23170c000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000020d18232d38414c58626c76818d969faab5bcc7d0cbc2bbb3aca7a09c98959791919693979b9ea5abb0b8c0c7d0cfc2bab4a99f958d81756c6257483f362c21170c010000000000000007121e2935404c57626b7984909ba7b3becad5d6cbbfb4a89c91867a6f63584c403e48525b66727e89949ea8b4bfc9d3dde8f3ede2d6cbbfb4a89c91867b6f645950463b424e5a65717c8896a0aab5c0ccd7d3c9bcb0a5998d8276685e54493e33271c10050000000000000000000000000000000000000000000000000000060f18212a333c454a545f686f7a838f959ea7b0bac4cfd4dce2e5e8ede8ddd1c5baaea3978b8074695d52463a2f23180c000000000000000000000d1924303c47535e6a7681868686868686868686868686868e929ca7b2bdc9beb2a79c938e8686868686868686868686868682766b5f53483c3125190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b465059606364646464646464646464646464646360596975808c98988c81756c717d86919ca8b3bec8d2cfc5bab0a7968a7f73675c5045392d22160b000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000009131e28333e49535c64707b85909ca3acb7bfc9d3cbc4bcb7b0aaa8a4a7a09c9c9fa6a2a7a9aeb6bac1c8d0c9c4bab2aaa19c90857b6f645b5248382f261c1207000000000000000007131f2a36414d5964707b87959ea9b4bfcbd6d5c9bdb2a69b8f83786a60564b3f39424b57636e79848f9ba6afb9c3ced9e4eee3d7ccc1b7aca3998d81766b6157484036404c57636e7a85919ca8b3bfcbd6d6cabeb3a79c9084796e63574b4034291d1106000000000000000000000000000000000000000000000000000000071119232b303b454f58606a707c859097a0aab5bac3ccd5dee7eff8e8ddd1c5baaea3978b8074695d52463a2f23180c0000000000000000000006121e2935404c57636f7a7b7b7b7b7b7b7b7b7b7b7b7b7b828e99a5b1bcc8bdb1a69a8e827b7b7b7b7b7b7b7b7b7b7b7b7b7a6f63584c4035291e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c364048505557595959595959595959595959595957555e6975808c98988c8175737d859097a0aab5c1ced7ccc1b6aba097887d71655a4e43372b201409000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000040e19242f39434b57616b737f8a939ca6afb9c4ced4ccc8c0bab5b3afb0aba8a8aaafaeb2b4b8bec5cacec7c0bab5aaa19a90897e726a61564b4238271f160c0200000000000000000a16212d3844505b67727e8a95a5aeb8c3cdd9d2c6bbafa4988c81756a5950463c333e49545f68737f8b969faab5c0cbd7dfeae0d5cabeb3a89d93887d71655a514738333f4a55606977838f9aa6b1bdc8d4d6cbc0b4a99e95877c7064594d42362a1f13090000000000000000000000000000000000000000000000000000000109121b212b353f475059626b717d86919ca1aab3bcc5cdd7dfe8f1e8ddd1c5baaea3978b8074695d52463a2f23180c0000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f76828e99a5b0bcc8bdb1a59a8e83776f6f6f6f6f6f6f6f6f6f6f6f6f6a60564a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c525e6975808c98988c81797f8690959fa7b0bac4cfd6cbbfb4a89c91867a6f63584c4035291e1207000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000a151f29323d48525b636e78828e969faab5bcc7cfd8d0cac4c1bfbbbab6b4b3b5b9b9bebfc2c7cec9c3bdb7b0aaa19a918b80746d645a51473a3228170f05000000000000000004101b26313c47515a6a75818c98a3afbbc8d2d9cec4b9afa6968a7e73675c504437303a454f58636f7a85909ca8b3bcc5d0dae4d9cec3b8aea59a8f83776d63584a4138303b4650596975808c98a3afbac8d2d9cec3b8aea5968a7e73675c5044372d23180d020000000000000000000000000000000000000000000000000000000207111b252e374049525b636d737f8a919aa2abb4bdc6cfd8e1eae8ddd1c5baaea3978b8074695d52463a2f23180c00000000000000000000040f1b26313c465059606363636363636363636363636b76828e99a5b0bcc8bdb1a59a8e83776b636363636363636363636363605950463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f404242424242424242424242464a4c5358586975808c989a8f83838b91969fa5aeb7c0cad4d0c5bab1a89a8f83776a60564b3f34291d1206000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000050f18232e384149545f68707c85909ca3acb6bfc9d3dad4cfcccbcac5c1bfbfc0c4c9cacbcac8c3bfb9b5ada7a09c908c80756f665d544a41372a21180700000000000000000006121d29343f4b56606a78838f9ba6b2bdc9d5d7cbc0b5aa9f96877c7065594e42362b353e4b56606a75818c98a2acb6c0cbd7e1d6cbbfb4a99e958a7e72675c53493a312c3644505b67727e8a95a5aeb8c3ced9d2c8bbafa4988d81756a5a51473d32271b100500000000000000000000000000000000000000000000000000000000010b151e273039424a535c656e75808c929ca4adb6bfc8d0dae3edddd1c5baaea3978b8074695d52463a2f23180c00000000000000000000010c17222c364049505557585858585858585858585f6b76828e99a5b0bcc8bdb1a59a8e83776b60585858585858585858585856504940362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c313435363636363636363b40474b5056585c63656875808c989d938f8f939c9fa7aeb6bfc8d0d5ccc1b6aba1978b7f74685950463c31261b1004000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000009141e28303a454f58626b737f8a929ca6afb9c3ced6dedad7d6d4cfcccbcaccccc9c7c2bfbeb8b4afaaa49d96918a80786e635f564d443931271a110800000000000000000007121e2935414c58636f7b86919ca8b4bfcbd6d6cabfb3a89c90857a6e63574b403429313c46505964707c87929ca7b2bdc7d1dacfc4bab0a79b90847a6e63574c4339292a36414d5964707b87959ea9b4c0cbd6d5c9beb2a79b8f84786b61564b4034291d12060000000000000000000000000000000000000000000000000000000000050e162028313a434c555e636e79828e939da5aeb7c0cad4dee4ddd1c5baaea3978b8074695d52463a2f23180c000000000000000000000008121c26303840464a4c4c4c4c4c4c4c4c4c4c545f6b76828e99a5b0bcc8bdb1a59a8e83776b60544c4c4c4c4c4c4c4c4c4c4a46403830261d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212628292a2a2a2b2f383f454a5156596063676c717579818d98a39d9a9b9da4aaafb7bfc6cfd6cfc4bab0a79c91867b7064584d41372d22170c01000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000040e16202b353e47525b636e78828e959fa9b5bbc6ced8e2e3e2dfdad7d6cdc6c1bebdb7b3b2aea9a69f9c938f867f756e685e544f463c3429201709010000000000000000000915202c38434f5a66727d8997a1abb6c1ccd8d4c8bcb1a59a8e8277685f544a3e33282d37404c57626c77828e99a4adb7c2cdd7ccc0b5aaa0968b80746960554a3f33282a35404c57626b7984909ca7b3becad6d6cabfb3a89d94867b6f64584c41352a1e1208000000000000000000000000000000000000000000000000000000000000060f18212a333c454a545f686f7a838f959ea7b0bac4cfd3dcd8d1c5baaea3978b8074695d52463a2f23180c0000000000000000000000030d161f2830363c3f40414141414141414148545f6b76828e99a5b0bcc8bdb1a59a8e83776b6054494141414141414141403f3c3630281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1f262e353a43484f555a61636a6f73787c80848d919ba6a7a6a6a8adb5b9c0c7cfd6cec5beb5aba0978d81766b62574c4035271d130800000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000007111b252e374249545e68707b85909ca2abb5bec8d2dce5eee9e0d6cdc4bcb6b3b1ada8a7a59e9c96908b837d736e635e574e453e362c23181007000000000000000000040f1a25303b454f586974808b97a8b1bac5d0dbd1c6baaea3978c807469584f453b302527333d48525b66727d89949da8b3bfc9d3cbbfb3a89c91867b6f645850463b302527323d48525b6b76828e99a5b0bcc8d3d8cdc2b7ada495897e72665b4f44362c22170c01000000000000000000000000000000000000000000000000000000000000071119232b303b454f58606a707c859096a0aab5bac3cccdcdcdc5baaea3978b8074695d52463a2f23180c000000000000000000000000060f171f262c313435353535353535353d48545f6b76828e99a5b0bcc8bdb1a59a8e83776b6054493d353535353535353534312c261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f171f282f363e454953585f636a6f747a7f83888c90959ba2abb3b1b2b3b7bdc4c9d0d5cec6beb5ada49c91867c70655b52483d3227170d0300000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000010b151e262f3a454e57616b737e8a929ba5aeb8c2cdd5dee8e6dbd0c6bcb4aca7a6a49d9b9895908b857f79716c655e544e473e352e251c13080000000000000000000005111c28333f4a555f6977828e9aa5b1bccad4d8cdc2b8aea595897e72665b4f44352b21242e38424b57636e79838f9ba6afb9c3ccc1b6aca3988d81766b6156483f362c21232e3846515d6874808b97a2aeb9c7d1dcd1c7baafa3978c8075695950463c31261b0f040000000000000000000000000000000000000000000000000000000000000009121b212b353f475059626b717d86919ca1aab3bcc5c1c1c1c1baaea3978b8074695d52463a2f23180c00000000000000000000000000070f161c22262829292929292929313d48545f6b76828e99a5b0bcc8bdb1a59a8e83776b6054493d31292929292929292826221d160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f28303840474e545c63696e747a80858a8f93979b9ea5abb2bbbdbdbfc2c7cfd3d3cec5bdb5aea59d938c80756c62574a42382e2318060000000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000040d16202b353e47525b646e76818d959ea9b4bac5cdd8e1e2d7ccc1b6aca39d9a93948f8c8984807b746e69635c5549453e362e251d150b030000000000000000000006121d2934404c57636e7a85919ca8b3bfcad6d6cbbfb4a99e94877b6f64584d41352a1e1f28333e49545f68737f8a969faab5c1cabeb2a79c93887c71655a5147382f261c202c37434f5a66717d8994a4adb7c2cdd8d4c8bdb1a69a8f83776960554a3f34281d1106000000000000000000000000000000000000000000000000000000000000000207111b252e374049525b636d737f8a909aa2abb4b5b5b5b5b5b5aea3978b8074695d52463a2f23180c0000000000000000000000000000060d12171b1d1e1e1e1e1e1e25313d48545f6b76828e99a5b0bcbfbdb1a59a8e83776b6054493d31261e1e1e1e1e1e1d1b17120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273038404850575e636c71797f858b90959a9da4a7a9aeb5bbc2c9c9cacdd1d7d0c9c4bbb5ada59e948f837a6f635b52483a31281e14090000000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000006111b252e36414a555e636f7b84909ba1aab4bdc8d0dae0d5c9beb3a79d938f888684817d7a746f6a636058534b453a352e261e140d0500000000000000000000000814202b37424e5965717c88969faab5c0ccd7d5cabeb2a79b9084796b61564b4035291e1a25303a454f58636f7a85909ca8b1bac2b8aea59a8e83776c63584a4137271f161e2935414c58636f7b86949da8b3bfcad6d6cbbfb3a89c91857a6f63574c4035291d11070000000000000000000000000000000000000000000000000000000000000000010b151e273039424a535c656e75808c929ca4adaaaaaaaaaaaaaaa3978b8074695d52463a2f23180c00000000000000000000000000000003080c0f1112121212121a25313d48545f6b76828e99a5b0b4b4b4b1a59a8e83776b6054493d31261a1212121212110f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f374049505960686e747d838b90959c9fa6a8adb3b4b8bec6cbd4d5d5d7d0ccc7bfb9b5aba49d9490847b706960554b42392a21180e040000000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000010b141e26313a444b56616a717d89919aa4adb7c0cad4ded4c8bdb1a69a8f837d7b7875726e6964615a555048433b2f2b251e160d040000000000000000000000000b17222e3945515c68737f8b96a6afb9c4cfdad3c7bcb0a4998d82766a5a51473d32271c16202b353e4b56606a75808c97a1abb6bfb4a99e94897e72675c534939312717121d29343f4b56616a78848f9ba6b2bec9d5d7ccc1b5aaa097887d71665a4e43352b21160b000000000000000000000000000000000000000000000000000000000000000000050e162028313a434c555e636e79828e939da59e9e9e9e9e9e9e9e978b8074695d52463a2f23180c0000000000000000000000000000000000010406060707070e1a25313d48545f6b76828e99a5a8a8a8a8a8a59a8e83776b6054493d31261a0f0707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212b353f48505960696f787f868f939c9fa6a9afb3b7bdbfc3c8ced6d9d3cfccc6c1bbb7afaaa29b948f847c706b615950463b3229191108000000000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000040d162129313c47515a636d75808c939da7b0bac4cfd7d5c9beb3a79d93897d716a6a6663605856514a463f38322b201b140d0500000000000000000000000005111c27323d48525b6a76828d99a4b0bcc9d3dacfc4bab0a7968b7f73685c5145382d2318111b25313c46505964707c86919ca8b4b9afa69b9084796e63574c4339292017101b26313c47515a6a76818d98a4afbbc9d3dacfc4bab0a7978b7f7468584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000060f18212a333c454a545f686f7a838f95939393939393939393938b8074695d52463a2f23180c0000000000000000000000000000000000000000000000030e1a25313d48545f6b76828e999c9c9c9c9c9c9c9a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27303b454f5860696f79818b91979da4a9afb4b9bfc1c7cbcdd2d6d0ccc9c4c0bcb6b2aba69f9c928d837c706b625b524840362a22190900000000000a16222d3944505b67737e8a95a1adb8c4cfccc1b5a99e92877b6f64584d41352a1e1307000a15212d38444f5b67727e8995a0acb8c3cfcdc1b5aa9e93877c7064594d42362a1f13080006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000051119222d374149545d636f7a838f96a0aab5bcc6cfd8ccc1b6aca39b90847b6f635e5755504b47413b362f27221a110b040000000000000000000000000007121e2935404c57626b7984909ba7b3becad5d7ccc1b5aba097887d71655a4e43372b20130b17222c37404c57626b76828e99a4adb5aa9f968b7f74695f554a3f33281c100d18222d3745505c67737f8a96a7afb9c4cfdad4cabcb0a5998e8277685f544a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000071119232b303b454f58606a707c848787878787878787878787878074695d52463a2f23180c0000000000000000000000000000000000000000000000030e1a25313d48545f6b76828e9191919191919191918e83776b6054493d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f4a555f686f7a828d929ca0a7adb4b9bfc3c8ccd1d6d6d0ccc6c1c0bab5b3aca7a29b96908b817a706b625b524a41382f261a110800000000000a16212d3844505b67727e8a95a1acb8c4cfccc1b5aa9e92877b7064594d41362a1f1307000a16212d3944505b67727e8a95a1acb8c4cfccc1b5aa9e92877b7064594d41362a1f13070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000008131d273039434a556069707c86919ca3acb6bfc8d3d0c6bcb4a99e958d81766e645b52473f3c37302c261f17120601000000000000000000000000000007131f2a36414d5964707b87959ea9b4bfcbd6d6cbbfb4a89c91857a6f63574c4035291d1208121d26323d48525b66717d89949da8b3a89c91857b6f63584f453b30251a0f08131f2b37424e5965717c88969faab5c0ccd7d6cabfb3a79c90857a6e63574b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000009121b212b353f475059626b707b7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c41352a1e12070000000000000000000000000000000000000000000000030e1a25313d48545f6b7682858585858585858585858582776b6054493d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f48535d636e79828e929ba2abb0b8bdc3c8ced2d6d5d4ccc6c1bdb7b3b0aaa8a39c9a918d857f786f6a625b524a423a31281f160a0100000000000a15212c38444f5b66727e8995a0acb8c3cfcdc2b6aa9f93887c7065594e42372b1f1107000b17222e3945515c68737f8a96a2adb9c4d0cfc4b9afa792867b6f64584c41352a1e13070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000030d172029313b465059626c747f8b929ca6afb9c3ced6cdc2b8aea59b928a7e736b62584f453b3028211c160e06010000000000000000000000000000000a16212d3944505b67727e8a95a5aeb8c3ced9d4c9bdb2a69a8f83786960554a3f34281d11060d19232e38424b57636e79838f9ba6aca3988c81756a6156483f352b21160b06121d2934404c57636e7a85919ca8b3bfcbd6d7cbc0b5a99f95877c7065594e42362b1f140900000000000000000000000000000000000000000000000000000000000000000000000207111b252e374049525b626a6f7070707070707070707070706f6a61564b4034291d12060000000000000000000000000000000000000000000000020e1925303c47525d6871767a7a7a7a7a7a7a7a7a7a7a7772685e53473c31251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465058636d75808c929ca3abb5bac0c8ced3d2cdcbcac9c4bcb6b2aca7a7a09c98928e88817b736e686059524b423a312921170f060000000000000915202c38434f5a66727d8994a0acb7c9d3cec2b7aba094887d71665a4e43352b21160b060a17232f3a46515d6874808b97a2aebac5d1ccc0b5aa9f96867a6f63584c4035291e12060006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000071018212c364048535c636e78828e959fa9b4bbc5ced2c8beb5aba29c90857c70685f544a433830261c12080000000000000000000000000000000004101b26313c47515a6a75818c98a4afbbc8d2dcd2c6bbafa3988c81756a5950463c31261b0f040a141e27333e49545e68737f8a959fa79c92877c70655a5147372f251c120705111c28333f4a555f6977838e9aa6b1bdc8d4d9cec3b9afa6968a7f73675c5045382e23180d020000000000000000000000000000000000000000000000000000000000000000000000010b151e273039424a525a616464646464646464646464646463615a51473c31261b10050000000000000000000000000000000000000000000000000c17222e39434e5861686b6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a556069717d87919ca2abb3bbc4cad1d3cfc8c2bfbebdbcb3aca7a39d9a96918d88827d766f6b635e575049423a322a211911070000000000000008141f2b37424e5965717c8893a6afb9c4ced0c4b9ada2968a7f7368584f453b30251b1311141c27323d48525b6a76828d99a4b0bcc7d3cbbfb3a89c9185796e63574b4034291d11060006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000008121c262f384249545f68707b85909ca2abb5bec9d1cec6bbb5aa9f968e82796e635c534940362c2218100700000000000000000000000000000006121d29343f4b56616a78838f9ba6b2bdc9cdcdcec3b9afa6958a7e73675b5044362c22170c01030e19242f3a454e57636f7a85909ca49a8e82776c6257494137271e150c02030f1a25303b454f586975808c97a3afbac8d2cdd3c9bbb0a4988d81766a5a51473d32271c1005000000000000000000000000000000000000000000000000000000000000000000000000050e162028313a424a5156585959595959595959595959595856514941372d22180d0200000000000000000000000000000000000000000000000009141f2a343e4850585d5f6363636363636363636363605e5851483f352a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e79838f97a1abb3bbc3cfd4d0c9c4beb8b4b3b2b3aca39c9a938f8b85817c77716d64615a544e474039322a21191109000000000000000007121e2a35414c58646f7b86969faab5c0cbd3c7bbb0a4998d8176685f544a3e352b221e1d1e232d35404c57626c7984909ba7b3becad5c9beb2a69b8f8478685e54493e33271c10050006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000020c161f28303a454f58616b727e8a919ba5aeb8c1cad4cec3b9afa69c938b7f746c635950463c312920170d03000000000000000000000000000007121e2935414c58636f7b86919ca8b4bfc1c1c1c1c0b5a99f95877c7064594d42362b1f120800000b16202b353e4a55606975808c979e94897e72665b5248393027170e0500000b16212b35444f5b67727e8995a5aeb8c3c1c1c1c1beb2a79b9084786b61574b4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000060f18212a313941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d13090000000000000000000000000000000000000000000000000005101a242e3740484e5254575757575757575757575754534e4841382f251b1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8a949da8b1bac3ccd4cfc7c0bab5aea9a7a6a8a79c928e87837f7b75706c65635c575149453e3630282119110c07010000000000000006111d2934404b57636e7985909ca8b3bfcad5cabeb3a79b9084796e63574e453a312d29292a2e323c47515a64707c87949ea9b4bfcbd3c8bcb1a5998e82776b574e453a2f24190e030006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000060f17202b353e47525b646e76818d949ea8b1bac5d0d3c9bfb6aca39c91867d716960554a443931271d130901000000000000000000000000000915202c38434f5a66727d8997a1abb6b5b5b5b5b5b5b3a79c9085796e63574b4034291d1106000006111b25313c46505964707c86919b8f84796e63574b42392920170600000007121e2a36414d5864707b87959ea9b4b5b5b5b5b5b5b4a99e94877b6f64584d41362a1e13080000000000000000000000000000000000000000000000000000000000000000000000000000071119212931373c404142424242424242424242424241403c37302920170d0300000000000000000000000000000000000000000000000000000a141e2730373e4347484b4b4b4b4b4b4b4b4b4b4b4947443f3830281e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79848f9ba4adb8c1cad3cfc6bfb7b0aaa59e9b9a9da49a8e827c77736f6a65625c58534b47413a352e2620211f1b17110b0300000000000005101c27333e49545e6877838e9aa6b1bdc9d3cbbfb4a99e95897e72685e5449433c37353435383d454b56616a75808c98a5aeb8c2cdd0c5bab1a8978c8074695d5246352b20160b000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000007111b252e37414a545e636f7a849097a1abb6bdc7d0cfc7bcb5aaa0978f837a6f635d544a41372d23191106000000000000000000000000040f1a25303b454f586974808b97a8b1aaaaaaaaaaaaaaaaa5998e8277685f54493e33281c11050000010b17222c36404c57626b76828d968b7f73685f544a3e33281c100700000007121e2935404c57626b7984909ba7aaaaaaaaaaaaaaaaaea595897e72675b4f44372c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000009111820272d3234353636363636363636363636363534312d2720181007000000000000000000000000000000000000000000000000000000040e171f272e34393c3d40404040404040404040403d3c39352f2820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d88949da8b5bdc9d1d0c8bfb6aea7a09c94908f939d988c81756b6864615a57534d49433d382f2b2e2e2d2c2a26211b140c030000000000030e19242f3a454e576975808c97a7b0bac4cfcdc2b8aea59a8e82786e635c534b474241404142484c555e636f7b85909ca8b3bec8d2ccc1b6aba197897e72665b4f44382c211106000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000010b151e26313a444b56606a717d87919ca4adb7c0c9d3cfc4bab0a79d948c80756d645a51473c322a21160e05000000000000000000000005111c28333f4a555f6977838e9a9e9e9e9e9e9e9e9e9e9e9e978b807469584f453a30251a0e0300000008121c26323d48525b66717d8890857a6f63584f453b30251a0f0000000005101c27323d48525b6b76828d999e9e9e9e9e9e9e9e9e9e9e988c8075695950463c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a2a2a2a2926221d1710080000000000000000000000000000000000000000000000000000000000060f171e242a2e3031343434343434343434343431312e2a251e170f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596975808c98a4adb7c5ced4cac0b7aea59e96918b84838f9a988c81756a5b5856514c48423e393a3a3a3a3a3a393835312b241c140b0100000000000b16202b35444f5b66727e8996a0aab5c0ccd2c8beb2a79c938a7f736c635d56514d4c4b4c4d52575e656e76818d969faab5c0ced6cbbfb4a89c91867b6f64584c41352a1e1307000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000040d162129313c47515a636d75808c939da7afb9c4cfd4cac0b7ada49a91897e726a61564b453a32271e150c020000000000000000000006121d2934404c57636e7a859193939393939393939393939393897d72665a4f43352b20160b00000000030d18232e38424d58636d78838c81756a6056473f352b21160b00000000020d18232e3845515d68747f8b939393939393939393939393938f83786a60564b3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0700000000000000000000000000000000000000000000000000000000000000060e141a1f22252529292929292929292929292625231f1b150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606978838f9ba6b2bdc7d5cfc4bab0a79e9590867f7a808c98988c81756a5e524b4745454545454545454545454443403b342d241b1107000000000006111e2935404c58636f7a85919ca8b3bec7d2ccc1b6aca39c91867d716d63615a59585758595b62646f747f8a929ba6afb9c3cecfc4bab0a79a8e83776b61564b4034291d1206000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000061019222d374049535c636e79838f969faab5bcc6cfd0c8bdb4aaa19c90847b6f645e554b42372f251b1107000000000000000000000814202b37424e5a65717c878787878787878787878787878787867b6f64584c41352a1e1107000000000009141e28343f49535d67737f877c7064595046372e251b110700000000000914202c37434e5a66717d878787878787878787878787878787877a6f63584c4035291e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012121313131313131313131313131212100d0903000000000000000000000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1d1d1d1d1d1a1a1814100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8b4bfcbd6ccc1b5aaa09790857d7475808c98988c81756a5e5251515151515151515151515151504e4b453d342b21170c010000000006111d28343f4b56606a76828e99a5aeb8c2cdd0c6bcb5aa9f9690857d756f6a666463636365676b70767f8a8f99a2abb6bfc9d3ccc1b5aaa0978b7f74685a51473d32271b1005000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000008131d273039434a556069707c86919ca2acb6bfc8d2cec5bab4a99e958d82766e655b52483f352b21180f0600000000000000000006121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c776a61564b4034291d12010000000000040e1a252f3a434c57636f7a81766c6257494037271e150b01000000000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607080808080808080808080808070605020000000000000000000000000000000000000000000000000000000000000000000000000005090c0e0e11111111111111111111110f0e0c09060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c8797a0abb6c1ccd6cbbfb3a89c91867d716c75808c98988c81756a5e5b5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a554d453b31261b100500000000040f1b26313c46505966727e89949ea9b4bec7d1cfc4b9afa69f969086807b7672706f6e6f7073767c828b9099a0a9b2bbc7cfd0c7bfb3a89c91867b6f64584d41372d23180d02000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000030d172028303b465058626c737f8a929ca5aeb8c3ced5cec3b8aea59c928a7f736b62584f453b30281f160d03000000000000000006111d28343f4b56606a6f707070707070707070707070707070706b615a51473c32261b10050000000000000b152028343f4a5560696f7a6f635b5248393027160e0500000000000005111c28333f4a555f696e707070707070707070707070707070706e6960554a3f33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a7b0bac5cfd2c6bbafa3988c81756c6975808c98988c81756a64666868686868686868686868686867645e554b40352a1f130800000000010c17222c37404c57636e7984909ba4adb7c2cdd3c9c0b7afa69f97918c85817e7c7a7a7b7c7e82868d9299a0a9b0b9c3cbd3c9bfb7aba2998d81766b61564b4035271e130900000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000060f18212c363f48525b636e78828e959fa9b4bbc5ced2c8beb6aba29c90857c70685f554a433830261d12080000000000000000040f1b26313c465059606364646464646464646464646464646464625b514a41372d23180d02000000000000040f1a26313b46505960696f6960554b42382820170600000000000000030f1a25303b454f585f636464646464646464646464646464646463605850463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606070707070707070707070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507080b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0909070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a0acb8cad4cec2b7aba094887d71666975808c98988c81756a6e7274747474747474747474747474736e645a4e43382c21150a000000000008121d28333e4a555f68737f8b949ea8b4bbc5ced0c7bfb6afa7a09c95908d8987868586878a8d91969ca2a9b0b9c0c9d3cec4b9afa69b91887c71655a51473d3227170e0400000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000007121c262f384249545e686f7b85909ca1abb5bec8d1cfc6bbb5aa9f968f83796e635c534940362c2219100500000000000000010c17222c3740495056585959595959595959595959595959595957524b413931271d130900000000000000010c17222c36404850596063605950463a3228180f0600000000000000000b16212b353f484f555759595959595959595959595959595959575550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c101112121212121212121212121212121212110f0c08020000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131317171717171717171717171717171717171514120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a1acb8c3cfcdc1b6aa9e93877c70646975808c98988c817569727e7f7f7f7f7f7f7f7f7f7f7f7f7f7e73675b5044392d21160a0000000000030f1a25303b454f58636e79848f9ba2abb5bec7cfcfc7bfb7b0aaa69f9c9895939291929396999ca0a7abb3b9c1c9d1cdc5bdb5aa9f968d81766c63584a41382d2318070000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000020c161f272f3a454e57616b727e89919ba4adb8c1cad4cec4b9afa69d938b80746c635950463c312920160d040000000000000008121d26303840464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a312920170d03000000000000000008121c262f38404850555755504840362a21180700000000000000000007121c252f373f454a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1d1a17120c06000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f222222222222222222222222222222222221201e1a16100a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb7cad4cdc2b6ab9f94887c71656975808c98988c81756e79858b8b8b8b8b8b8b8b8b8b8b8b8b83776c6055493d32261b0f0300000000000b16212b353f4a556069727e89919ba5aeb6bfc8d0cfc8c0bab5afa9a7a4a09e9d9d9d9ea1a5a8aab0b7bbc3c9d1cec6bdb4aba29c90857c70645c53493a31281e13090000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000050e17202b353e47515a646e75818d949ea7b0bac5c1c1c9bfb7aca39c91867d716a60564a443931261e140b01000000000000030d16202830373c3f4042424242424242424242424242424241403d38322a20181007000000000000000000020c161f282f3840464a4c4a4640382f261a1108000000000000000000020c151e272f353b3f4042424242424242424242424242424242403f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161d222628292929292929292929292929292929292826221c160f07000000000000000000000000000000000000000000000000000000000000000000000000010911181f24272a2a2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c2b2925201a130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a7b0bac4cfd0c5b9ada2968b7f746a6975808c98988c8175727e899596969696969696969696968e82776b5f54483d31251a0e03000000000007111b25303b465058646e76818d949ea6afb7c0c7cfd0cac4bfb9b4b3b0acaaa9a8a9aaadb0b3b5bac0c8ccd3cdc5beb5ada49c928a7f736b62574b43392921170e040000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000006111b252e36414a545d636f7a848f97a0abb6b5b5b5b5b5b5b5aba0978f837a6f635d544a41362e251b110600000000000000060f1820262c3134353636363636363636363636363636363635322e28211910080000000000000000000000060f171f282f363b3f403f3b362f281f16090100000000000000000000050e171e252b303334363636363636363636363636363636363433302c261f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820272c31343535353535353535353535353535353534312c261f170f06000000000000000000000000000000000000000000000000000000000000000000000008111a21282e3335363939393939393939393939393939393939383734302a231b140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b8797a0aab5c1ccd5cabeb2a79b90847a6f6a75808c98988c81757a848f9ba6a2a2a2a2a2a2a2a2a2988c81756a5e52473b3024180d010000000000020c17212c363f48545d636f7a8490969fa7b0b7bfc6cfd3cfc8c3c0bfbbb8b5b4b4b5b6b8bcbfc0c4cad0d2cec5bdb5aea59d938e82786e635b52483b3229191007000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000010b141e26313a444b56606a717d87919ca3acaaaaaaaaaaaaaab0a79d948c81756d645a51473e352b20160b0000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27231e18110900000000000000000000000000070f171f262c31343534312c261f170f06000000000000000000000000060e151c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16202830373c3f404040404040404040404040404040403f3b362f281f160d04000000000000000000000000000000000000000000000000000000000000000000050f18212a32383d4142454545454545454545454545454545454543423f3a332c241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b3bfcbd6cbbfb4a99e948e827a7375808c98988c817a828e949ea8aeaeaeaeaeaeaeada4968a7f73675c5045392d22160b0000000000000007121c262f38444b56616a707c859097a0a7aeb6bdc4c9cfd3cecbcac7c3c1c0bfc0c1c4c7cbcccfd3cec8c3bbb4ada59e958f837a6f685e544a42382b22190800000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000040d162129313c465059636d74808b939da69e9e9e9e9e9e9e9e9ea49b91897e726b61574e453a2f24190e030000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e08010000000000000000000000000000070f161c222628292826221c160f070000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a4640382f261e150b0100000000000000000000000000000000000000000000000000000000000000000a141f28323a42484c4d51515151515151515151515151515151514f4e4a443c342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a55606977838f9aa6b1bdc7d2cdc2b8aea59c928e847f7b808c989a8e82838e929ca4adb7b9b9b9b9b9b4a89e94877c7065594d42362b1f140800000000000000020c161f27313c47515a626c727e8691969fa5acb5b9c0c4cacdd2d5d2cfcdcccbcccdcfd3d5d1ccc9c3beb8b4aba49d9490847c706a60574e453a31281a120900000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000051019222c374049535c636e79838f969393939393939393939393939390847b6f685e54493e33271c100500000000000000000003080c0f11121313131313131313131313131313131312110e0a040000000000000000000000000000000000060c12171a1d1d1d1a17120c060000000000000000000000000000000002070b0f11121313131313131313131313131313131312110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404950565858585858585858585858585858585755504840372e251b110700000000000000000000000000000000000000000000000000000000000000030e19242e38424b5257595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a59544d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b4650586975808c97a5aeb8c2cdd2c7beb5aca39c94908a8585909c9c938e8f939ca2acb5bec7c5c5c4bab0a79b8f84786c62574c41352a1e13070000000000000000050e17222d374149535c646d727e8690959da3aaafb5bac0c2c7cacbcdd2ceced4cfcccbc9c6c1bfb9b5aea9a29b938f847c706b625950473e352a21180a0100000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000008121d263038434a555f69707c8587878787878787878787878787878787827a6e63574b4034291d110600000000000000000000000104060608080808080808080808080808080808070503000000000000000000000000000000000000000002080c0f1112110f0c0802000000000000000000000000000000000000000003050608080808080808080808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596063636363636363636363636363636363605950473e352b20160b0000000000000000000000000000000000000000000000000000000000000005111c27333d48525b6264686868686868686868686868686868686866645d554e453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36434e5a65717d88949ea8b4bec8d2cec5bcb3aca59e9b979190959fa39c9a9b9da4acb3bcc5ced1c9c1b5aaa0968b8074695b52483e33281c110600000000000000000008131d273039424b545d646d727d858f939c9fa7abb0b4b8bcbebfc2c8c2c3cac5c1bfbebbb7b3afa9a59e9b918d837c706b625b524940362e251911080000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000030d162028303b454f58626b707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6960584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707373737373737373737373737373737373726d655e554e453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2934404b57636e7984909ba5aeb8c3cdd5ccc3bcb5aea9a7a09c9c9fa6aca7a5a6a8adb4bcc3ccd4cac1b8aea59c91867b6f64584c42392e24190e03000000000000000000030d172029323b444c545d646d717c838b91969ca0a7a8aeb0b3b4b8b6b7b7b7bab6b4b2b0ada8a69f9c959089817a706b625b524a423930261e1409000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000060f18212b353f48525b626b6f70707070707070707070707070707070706e695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6f685f54493e33281f150a00000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d736e655e554e453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68747f8b959ea9b4bbc4cdd4ccc6beb8b4b0aba8a7a9afb6b2b1b2b3b7bdc5ccd4cfc5bab1a89e958c80756b61564b4032291f150a0000000000000000000000071018222a333c444d545d636b70797f868d91979b9ea5a5a7a9aeababacabb0aba8a7a4a49d9a95908c847e766f69625b524b423a312820160d04000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000007121c252f37424b525a61646464646464646464646464646464646464635f584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060606060606060606060606060500000000000000000000000000000000000000000000000000000000000000030506080b0c0e0e0f0e0d0c090706040100000000000000000000000000000000000000000000000000000000000000030f1a26323d4954606c7782868686868686868686868686868683786e63574b42392e24190d03000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79818b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b877f736e655e554e453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a84909ba2abb4bdc5cfd4cec8c2c0bab5b4b3b4b9bfbebdbdbec2c7cdd1cac5bbb6aba19790847a6f635a51473d3222190f0500000000000000000000000008121a232c333c444c535b62696e747c81868c909496999b9ea59fa0a0a0a7a09c9b9996938f8b85807a726e636059524a423a322a21180f0500000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000020c151e27323a424a515658595959595959595959595959595959595957554f483f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060f11111111111111111111111111110706050200000000000000000000000000000000000000000000000001060b0e1011131618191a1a1a1917151212100d08030000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8994929292929292929292929294897d72665c53483e33271d1309000000000000000000000000000000000000000000000000000000000005111c28333e49545f686e78818d919696969696969696969696969791877f736e655e554e453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069727e8a929ba4adb4bcc5cad1d2cdcac4c1bfbfc0c3c8c9c8c9cacdd1cec8c1bab6aaa19c91877d716a60564a41372d23110800000000000000000000000000010a131b232c333c434a525860636b70767b8084888b8e909493949494949397918f8d8a87837f7a746f6a645d555049423a322a211911070000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000050e17212a323a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121b1d1d1d1d1d1d1d1d1d1d1d1d1d1c1312100d0904000000000000000000000000000000000000000004090b1116191c1d1f2224252526252423201e1d1b17130f0b070200000000000000000000000000000000000000000000000000000006121d2934404b57636e7984909ba69d9d9d9d9d9d9d9da49a8e82776c62574c41372d23180c0200000000000000000000000000000000000000000000000000000000030e1a25303a454f585f686e78818d919ba1a2a2a2a2a2a2a2a2a8a19791877f736e655e554e453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c465059646e76818d939da4acb6bac1c8cbced3cfcccbcacbced3d5d4d5d1ccc8c3beb8b0aba19b918b80746d635950463931271e13010000000000000000000000000000020b131b232b333a424850555b62646b7074797c7f828486878888898888878584817f7c78746f6a63605a544a464038312a21191109000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000061119212931383d40414242424242424242424242424242424242403f3b352f271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1c1d2629292929292929292929292929281e1e1b18130e07000000000000000000000000000000000004090e14191b202427292b2d2f30313131302e2c292926221d1a16120c05000000000000000000000000000000000000000000000000000005111c28333e4a545f68737f8b969faaa9a9a9a9a9a9a9a79c92877c70655a51473c32261c120700000000000000000000000000000000000000000000000000000000000b16202b353e474f585f686e78818d919ba1abadadadadadadb1a8a19791877f736e655e554d453d342d241c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222c364049555e636f7a838f949ca3abb0b8bcc0c3c9cacbced2d3d4d0cccbc9c6c1bfb9b4ada7a09c918d81786e635d544940372920170e04000000000000000000000000000000020b131b232a31383f464a52575b6264686e717476797a7c7c7d7d7d7c7b7a787673706c6863605a565149443c3630282119110901000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a00000000000000000000000000000000000000000000000000000000000109111921282d32353536363636363636363636363636363636363433302b251e170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b212528293234343434343434343434343434342a2927231e171008000000000000000000000000000000070e14181e23252b2f333436393b3c3d3d3c3c3a383534312d2825211c150e0904000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca8b1bab4b4b4b4b6aca3988d81756a61564b3f362c21170c010000000000000000000000000000000000000000000000000000000007111b252e373e474f585f686e78818d919ba1abb2b9b9b9b9b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038444b56606a6f7b838e939ca0a7acb3b5b9bcbebfc3c8c8cac5c1bfbebcb7b3afa9a49e97918b81786e685e544c433930271910070000000000000000000000000000000000020b121921272f363b42484c5257575e6365686b696f707171727171706e696a6864625b5856514b474039312c261f17110901000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1409000000000000000000000000000000000000000000000000000000000000010810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252b3033343e404040404040404040404040403f3534322d2821191007000000000000000000000000020710181e23282e32353a3e4042444648484848474643413f3c3733302b251e17130e070000000000000000000000000000000000000000000000000b16212b353f4b56606a75808c97a1abb6c1c0c0c6bcb3a89c91867b6f645850463b30251a0f0400000000000000000000000000000000000000000000000000000000010b151e262e373e474f585f686e78818d919ba1abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313c465059616b6f7b828c91979ca3a8aaafb1b3b4b8bbbcc1bab6b4b2b0ada8a69f9c948f877f756e685f574e453c332820170800000000000000000000000000000000000000020911171f262c30383d42484c4e54575a5c59606364656666666564635f585c5957524c4b47403c373028221c160f070000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c11060000000000000000000000000000000000000000000000000000000000000000070e13181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272e353b3e40494b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312921170e0400000000000000000000050c121921282d32383d3e45494b4d50525354545453514f4c4b47403f3b352f27231e171008020000000000000000000000000000000000000000000007111b25313c46505964707c86919ca8b4bdc7d1ccc0b5aaa0968b80746960554a3f332820150b0000000000000000000000000000000000000000000000000000000000040d161e262e373e474f585f686e78818d919ba1abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17222c374049515a616a6f7980868e92989c9fa6a5a7a9aeb0b1b8b1aba8a7a4a49d9a95908b847d746f635f584f473e352c23180f06000000000000000000000000000000000000000000060e161c21282e32383d3e45494b4e51505557595a5a5a5a595957554f504d4c48423f3c37312d272018120d060000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d0200000000000000000000000000000000000000000000000000000000000000000004090d101213131313131313131313131313131313131312110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f454a4b5557575757575757575757575757564d4b47413a31281e1309000000000000000000060e161c212931383d42484c4e5457595c5d5f5f605f5e5d5a5856514c4a453f37322d282119120a03000000000000000000000000000000000000000000010b17222d37404c57626b76828e99a4adb7c2cccfc4bab0a79b90847a6e63574c433a2f251a0e040000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba1abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039414a515a61696e747c82888d9096979a9b9ea5a4a6aba8a19c9b9996938f8a857f7a716d655f544f473e362e251b13070000000000000000000000000000000000000000000000050c12171e23282e32353a3e404245464a4c4d4e4e4f4e4e4d4c4a454542413e3834312d27221d170f08030000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b12080000000000000000000000000000000000000000000000000000000000000000000000000205070708080808080808080808080808080808080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f474f54576063636363636363636363636363625856514a41382d23180f0600000000000000070f171f262c303a41474b5257575e636567696a6b6b6b6a686663605a57554f48443d383129231b130b0300000000000000000000000000000000000000000008131d27323d48525b66717d88939da8b3bec8d2c9c0b4a99e958a7e73675c53493e34281e1409000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba1abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028313a414951585f636c70777c8185898c8e909592999ba2a197918f8d8a87837f7a746f69635c5649453e372e261e140b0200000000000000000000000000000000000000000000000002070e14191e23252b2f333437363b3f4042424343434241403f3b363635332e2926221d17130d060000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f636c6e6e6e6e6e6e6e6e6e6e6e6e6e6d64615a51473d322820160d030000000000060f171f272f363b454a51575b6264686e707375767777767574726f6a67635f58544b47413a332b231c130b020000000000000000000000000000000000000000030d19232e38424d58636d78838f9ba5aeb8c3cecec3b8aea59a8f83786d63584d42382e23190d03000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f182129313941484f555c62656c71767a7d80828486878d919b9c918784827f7c78736f6a636059534c453a352e261e160d0400000000000000000000000000000000000000000000000000000004090e14181b202427292b2c313435363737383737363433302c2b2a27241f1b17130d080300000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060607070707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f686e777a7a7a7a7a7a7a7a7a7a7a7a7a796f6b61564b443830261d120800000000050e171f2830383f464a555a61646b7075797c7e8082828282817f7d7b77726e69645e56514a433c342c231b13090100000000000000000000000000000000000000000a141e28343f49545d67737e8a959ea9b4c0cad2c8beb3a89d93887d71665b52483d32271d130800000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019212930373f454a53575c6365696f717477797a7c818d99988c81787673706c68636059555048433b302b251e160d0500000000000000000000000000000000000000000000000000000000000004090b1116191c1d20222628292a2b2c2c2c2b2a292825211f1e1c1914100d080300000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080c0f1112131313131211100c0809060504010000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7a8385858585858585858585858585857b6f645d544940372c22170e050000020c151e273038404850555e656b6f767c8084878a8c8d8e8e8e8d8b8986827e79726e64615a534c443c342c231a11070000000000000000000000000000000000000000040e1a252f3a434c57636f7a84909ca7b0bac4cfccc1b7ada4998d82766b62574c40372c22170b0100000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820272f353b42484c535859606366696b696f75808c98988c81756a6864625b5856504a464038332b201b150d0600000000000000000000000000000000000000000000000000000000000000000001060b0e101112171a1d1d1f20202020201f1d1c1a161213110e0a04010000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050a0e11131312171b1d1e1e1f1f1e1e1d1b17131412110f0c0703000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68707c869191919191919191919191958d81766d645950463c31271e150c020007121c252f374049505860636e737b81868c9094969799999a99989797918e8a847e776f6b635c544d443c332a22170f0600000000000000000000000000000000000000000b152028343f4a55606974808b97a0aab5c1ccd1c6bdb4a89c91867c70645950463c31251b11070000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e252b30393e43494d5055575a5d59606975808c98988c81756a5e5957524c4b46403b362f28231b110b0400000000000000000000000000000000000000000000000000000000000000000000000000030506080c0f11121314151514141312110f0c070706030000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1014191c1e1f22222628292a2a2a2a2928262223201d1c1a16120e0b06010000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58626c75808c949e9c9c9c9c9c9c9ca69b92897e726a60564b43372f251c1207071018212b353f48505960696e767f858d91979b9ea5a3a4a5a5a5a4a7a09c9994908a827b716d645d544c443b32281f160c0300000000000000000000000000000000000000040f1a26313b465059646f7b86919ca8b3bcc6d0ccc1b6aba0978c80756a60564b3f352b21160b000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21292f33393e40464a4c4f52505e6975808c98988c81756a5e524c48423f3c37312c261f1712070100000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080809090908080605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13181c1e24272a2a2e2c313435353636353534312c2e2c292825211c1916110b0601000000000000000000000000000000000000000000000000000000000000000b16212b353f47535c636f7a848f9ba2aba8a8a8a8a8aba29b90847a6f635c53483f352b21160d0d172029303b454f5860696f79818a90969ca0a7a9aeafb0b1b1b0afb0aba8a59e9b928e857d726e645d544b423830261c120800000000000000000000000000000000000000010c17212c36404b56616b76818d98a3acb6c1cccfc5bab0a79c90857a6f63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161f24292f33363b3f404346525e6975808c98988c81756a5e52473d3834312c26211c160f0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070707070707070707070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e14181e2327292e32353639363c3f4041414141403f3c373a373433302c2724201b16110b0400000000000000000000000000000000000000000000000000000000000007111b252e37434a556069717d89919ba5aeb8b4b4b4b4a99e948c80756c63584f453b30261e14131d273039414a555f696f7a828d919c9fa6abb0b4b8babcbcbcbcbbbab6b4aea8a39c9590867e726d635b524940362c22170e040000000000000000000000000000000000000008121c26323d47515a65717c88939ca7b2bec7d2cac1b5aa9f968b7f73685f544a3e33281f150a00000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070f15191f24262c3134353b46525e6975808c98988c81756a5e52473b2e2826221d17120c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a0906020000000000000000000204060711111111111111111111111111110b0a0806020000000000000000000000000003080c1012121212121212121212121212121212110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161e23282d3235383d40424547464a4c4d4d4d4d4c4b46484643403f3b36332f2b25201b140d060100000000000000000000000000000000000000000000000000000000010b151e27313c465059636d76818d959fa9b4bcc7c2b8aea59c91877d71695f554a42362e251b18222d374149545d636e79828e929ba2aaafb6bac1c2c8c6c4c3c5cac5c1beb8b4aca59e9691867d716c625950463c31281e140900000000000000000000000000000000000000020c18232d38414c58636c77838e9aa5aeb8c2cdcec3b9afa69b8f84796e63574b43392f24190e0400000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f15191c2126282f3b46525e6975808c8c8c8c81756a5e52473b30241b17120d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000003080d1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d161614110d070100000000000000000000060d13171b1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1d1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21282e32383d4042484c4d50535055575859595858565053514e4c4a45403e3a352f2b251e16110b0400000000000000000000000000000000000000000000000000000000050e16222c364049545d646f7b85909ca3acb7c0c8beb6aba1978f83796e635b52473e352b201b26313c47515a646e75818c929ca3abb5b9bfc5c3bfbebab8b8b9bcbfc1c5c2bcb6aea79f9790857c706960554a42382e23180d030000000000000000000000000000000000000009131e28333e49535c66727e89949ea8b4bfc9d3c9bfb4a89e94897e72665c53493e33271e13090000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e78818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342d241c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12171a212d38444f5b67727e818181817e72675b5044382d21160c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000000070d13181b1d1e292929292929292929292929292922211f1c17110b040000000000000000070f171d2226292929292929292929292929292929292825211c160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010810161e252b30383d41474b4d5257595c5e596063646464646360595f5d5a57554f4b49453e3a352e26201b140d050000000000000000000000000000000000000000000000000000000008121c263038444b56616a737e8a929ca7afb9c4c5bab1a89d938b7f746b62574e453a2f271d2934404b56616a727e89919ba2acb3bbc3c6beb8b4b3afadacadb0b4b6bac1c6beb7afa79f968f837a6f635b52483d32261d120800000000000000000000000000000000000000040e19242f39434c57636e7984909ba6afb9c4cecdc2b7ada49a8e82776c63584c41372d23180c020000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e79818d919ba2abb2bbc2c9c1b8b1a8a19791877f736e655e554d453d342c241b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c15202c37434e59646e7275757575726e64594e43382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c04000810171d2226292934343434343434343434343434342d2d2a26211b140c04000000000000070f1820272d313435353535353535353535353535353433302c261f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a111921272f353b41474b5156585b6264676a6c696f6f70706f6f6a6c6a6865635f5857544e49453e362f2b251e160e06000000000000000000000000000000000000000000000000000000030c161f28323c47515a646e77828e969faab5bdc8c1b8ada49c91867c70685e544941372d26313c47515a636f7b84909ca1aab3bcc3c1bab5aea9a7a3a1a1a2a5a8abb1b8bdc5c0b7afa69d948c80746b62574c40362c22170c01000000000000000000000000000000000000000a151f28333e4a555f68747f8b969faab5c0cbd1c7beb2a79c93887c71655a51473d32261c1208000000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e79818d919ba2abb2bbc3c9c1b8b1a8a19791877f736e655e554d453d342b21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29353f4a545d64676a6a6a6a67645e544a40352a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040404040393836312b251d140b07101820272d3134354040404040404040404040404040393835312b241c140b0100000000060f17202830373c3f4040404040404040404040404040403f3b362f271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121a222931373f454a51575a6164686c70737578797a7b7b7b7b7a79787674716e6966635e57544e47433a352e261f170e06000000000000000000000000000000000000000000000000000000060f17232d37414a555e64707c86919ca4adb8c1c9bdb5aa9f968e82786e635a51473c322934404b56616a75808c959ea9b2bac3c0b9b1aaa59e9b98969596999ca1a8adb4bdc5bfb7ada49c91867c70645950463c31261b0f0400000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bfcad6ccc1b6aca3988d81766b61564b40362c21170b01000000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373e474f585f686e79818d919ba2abb2bbc5c9c1b8b1a8a19791877f736e655e554d443b30261b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303a444d54595b5e5e5e5e5b59544d443b30261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120d17202930373c404b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544403b352d241b1107000000030d161f28303940464b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a222a323a41484f555a61646b6f74787c7f8183858686878787868584827f7d7a76716e68635e575349453e362f271f160e0500000000000000000000000000000000000000000000000000000009131d273139454c57626b747f8b939da7b0bac5c4b9afa79c928a7e736a61564b44383035414c58636f7b85909ca5aeb8c2c2b9b0a9a19a95908c8a898b8e91979da4adb4bdc7bdb5aaa0978c81756a60564a3f34281d110600000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3afbbc6d2d0c6bcb3a89c91867b6f645950463b31251b110600000000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373f474f585f686e79818d919ba2abb5c0cbc9c1b8b1a8a19791877f736e655e544a40352a1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212a343d444a4e4f52525252504e4a443d342b21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b453e352b2217131d27303941474b575757575757575757575757575757504f4b453d352b21170d02000008121c263038404950565858585858585858585858585858575550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a323b424a51585f636b6f757b7f84878a8d8f90959293939296908f8d8b8885817d79726e68625c544e473f382f271e150b010000000000000000000000000000000000000000000000000000030d172029323d48525b636e79838f97a0abb6bec7c0b7aca39c90857b6f645d544940363c47515a68737f8b969faab6bec8bbb2a9a099908c84807e7e7f82878f949da4adb7c0c4bab0a79c90857a6f63584c4035291e1207000000000000000000000000000000000000000007111b25313c47515a65707c87939faab6c1cdd7ccc0b5aaa0968b80746960554a3e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000060d161e262e373f474f585f686e79818d919ba6b1bcc8d1c9c1b8b1a8a19791877f736e64594e43382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343a3f4344474747474443403b342c241b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c18222d37414951566263636363636363636363636363635c5a554e453b31261c110600010c17222c364049505960636363636363636363636363636363605850463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029323b424b525a61686e747b81868b8f9496989a9c9fa69e9ea69f9c9b999796908d89837e78706c635e574f483f372e251b1107000000000000000000000000000000000000000000000000000000071018232e38424a555f69717d87919ca5aeb8c2c7bcb4a99f958d81766d635950463c3f4b56616a77838f9aa6afb9c6c1b8aba1998f8a807a75737273777c838f939da7b0bac4c0b5aa9f968a7e72675b5044352b21160b000000000000000000000000000000000000000006121d28333e49535c67727e8995a1acb8c3cfdacfc4bab0a79c90847a6f63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000060d161e272e373f474f585f686e79818d99a4b0bbc7d3d1c9c1b8b1a8a19791867e72675b5044382d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242a303537383b3b3b3b383835302b241c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1b26313c47515a616d6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f140800040f1b26313c465059606a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139424b535b626b6f797f858c91969b9da4a4a6a7a9afaaaaafaaa8a6a4a69f9c98938f8a837c746e685f584f473f352b21170e050000000000000000000000000000000000000000000000000000000a141e28303b454f58636c75808c949ea9b4bbc7c3b8aea59b91897d716960554a43414c58636f7b86919ca8b4bfc5bab0a79b918a7f746f696767686c707a838f97a0aab5c1c4b9afa6988d81756a584f453b30251a0f030000000000000000000000000000000000000006131f2a36414d58636c77838e9aa6b1bdc8d4ded4cac0b4a99e958a7e73685e54493e33271e140a00000000000000000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f9ba6b2bec9d5cec6beb5aea59e9590847c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2126292c2d303030302d2c2a26211b130c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d221d2934404b56616a777a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f44382d21160a0006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000050e16232d37414a535c626c707b828b90969ca0a7a8adafb2b3b4b9b5b5b9b5b3b2b0afaaa8a49d9b938f867f786e695f584f453b30271f150c020000000000000000000000000000000000000000000000000000040e16212b353f48535c636f7a84909ba2abb6bfc8bfb6aba29b8f847a6f635c5348434f5a66717d8997a1abb6c1c1b6aba0978d81756e6360595b5c626a707c86919ca8b3bfc9beb2a69b8f8478695f554a3f33281c110500000000000000000000000000000000000005101c27323d48525b65717d88939ca7b3bec9d5e0dacec3b8aea59b8f83796e63574b42382e24190d030000000000000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da8b3bfcacec6beb5aea59e9590847c706c62574c41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161b1e20212424242421211e1b17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e221e2935414c58636f7b85858585858585858585858585857f73675c5045392d22160b0006121e2935404c57636f7a86868686868686868686868686867f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27323d47515a626c707c848e939c9fa6aab0b3b7bbbdbfc0c3c8c9c4c0bfbebcb9b5b3ada8a39d96918b81796e685f544a43382f261c120700000000000000000000000000000000000000000000000000000007121c252f37434b56606a727e89929ba6afb9c3c6bbb4a89e948c80756c62584f45505c68737f8a96a8b1bac5bfb4a89c91867b6f645e55504f535a626c75818d98a4afbbc6bfb4a89c91857a6e63574c4034291d12060000000000000000000000000000000000010b151e2935404b57616b76818d99a3acb6c1ccd7e2ddd2c8beb3a89d93897d71665b52483d32271d130800000000000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb7c2cdc6beb5aea59e9590847c706c625b52483d33271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013151518181818161513100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e221e2935414c58636f7b869191919191919191919191918a7f73675c5045392d22160b0006121e2935404c57636f7a869192929292929292929292928b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f373f4b56616a707c8590959ca3aaafb5bac0c2c7c9cacbced3d3cecbcac9c9c3c0bdb7b3aca7a09c918d81796e635d54483f362c21160c010000000000000000000000000000000000000000000000000000020c151e27313c465059646d76818d959fa9b4bcc8c2b7ada49c91867c70685f554a525d6974808c97a3aebacabdb1a59a8e83776b61574a464449525b66727d8994a0acb7c3c1b5aba097877b7064584d41362a1e1307000000000000000000000000000000000007111b25313c46505964707b86919ca8b4bcc6d0dbe6e2d8ccc2b7ada4998e82766c62574c40372d22180c020000000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc7c6beb5aea59e9590847c706c625b524b42382e24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010508090a0d0d0d0d0a0a080501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e221e2935414c58636f7b86929c9c9c9c9c9c9c9c9c9c968a7f73675c5045392d22160b0006121e2935404c57636f7a86919d9d9d9d9d9d9d9d9d9d968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48545e646f7b8490959ea5acb5b9bfc4cacdd1d4d4d0cdcccccdd0d5d5d3cecbc7c2bcb7b0aaa29b928c80756d63584f453b30251a0f04000000000000000000000000000000000000000000000000000000050e17222c374049545d646f7b85909ca3acb7c0c7beb5aba0978f83796e635b52525e6975818c98a3afbbc6bbafa4988c81756a5a51473c39424d5964707b87939eaab5c1c4bab0a793877c7065594d42362b1f130800000000000000000000000000000000000b16212b353f4b56606a75808c97a0abb5c1cdd6e0eae6dbd1c7bdb4a89c91867c70645a51473c31251b110700000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a32281f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e221e2935414c58636f7b86929da8a8a8a8a8a8a8a8a1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9a9a9a9a9a9a9a9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58646e77828e949ea5aeb5bcc4c9cfd4d1cccac9c4c2c0c0c2c4c9caccd1d7d1cdc8c0bab5aba29a90897d71695f554a3f33281f150a0000000000000000000000000000000000000000000000000000000008121d263038444b56616b737f8a939ca7b0bac4c4bab0a79d938b7f736b6257525e6a75818c98a4afbbc6bbafa3988c8175695950463b36414d5864707b87929eaab5c1cab6aa9f93877c7065594d42362b1f140800000000000000000000000000000000030f1a25303b454f58636f7a85909ca7b0bac4cfdde6ecebe0d8ccc1b6aba1978c81756a61564b3f352b21160b000000000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a21180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060607070707070606050300000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b4b4b4b4b4b4ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68727e8a929ca5aeb6bec6ced3d4cfc6c1bebdb9b6b5b5b6b9bdbec2c7cfd4d8d0cac4bbb3aaa19b9084796e63574c43392f24190e03000000000000000000000000000000000000000000000000000000030d162028323d47515a636e78828e96a0aab5bdc9c0b8aca39c90857c70645d545e6975808c97a3afbac6bcb0a5998e82766960554a434146505965717d88949fabb6c2c3b8aea592877b7064594d41362a1f13070000000000000000000000000000000005111c28333e4a545f68737f8a959fa9b8c0cad4dee1e0e1e3dbd0c5bab1a89c90857b6f63584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b080c0f111212131313121212110f0b070a08060504010000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5bfbfbfbfb9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0c0c0c0b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e79848f9ba2acb5bec6ced6d0cac4bdb7b3b2adaaa9a9aaadb2b3b7bdc4cad0d8d4cfc3bab4a89e948a7f73675c53493e33281d110600000000000000000000000000000000000000000000000000000000060f18232d374149545e68707c86919ca4adb8c1c8bdb5aa9f968e82776e645a5d68747f8b96a2aeb9c8bfb3a89c90857a6f635c534d4c5056606a74808b97a2aebac5bfb4a99e95867a6f63584c4035291e12060000000000000000000000000000000007121d2934404b57636e79848f9ba6afb9c8d1dad8d5d4d5d8dbd4cac1b5aa9f968b7f74685f554a3e33281f150a000000000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070b0f1112141612171a1d1d1e1e1f1e1e1e1d1c1a1611161412110f0c0705030000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0cbcbc4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbccc5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a67727e89949ea8b3bcc5ced7d0c8c0bab5ada8a6a19f9e9e9fa2a6a8adb5bac0c8d0dad3cdc2b8aea59b8f83786c63584c41362a1f13080000000000000000000000000000000000000000000001040506090b0d09131e272f3a454e57626c74808b949da8b1bac5c4b9afa69c92897e726a615b66727e8995a5aeb8c2c0b5aa9f968b7f746c635d58585960636f7a84909ca7b3becabeb3a79b9084796a60564a3f34281d110600000000000000000000000000000006111d28333e49535c66727e89949ea8b6bfc8d8d1cccac9caccd1d6cec4b9afa69b9084796e63574c43392f24190e0400000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1012161a1c1d1f222421262829292a2a2a2a292928252124221f1d1c1a1612110f0b07030000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e99a4adb7c3ccd6d4cac0b7b0aaa49d9a9693929293969b9da4aab0b7c0cad4dcd1c7beb3a89d94887c7165594e42372b1f1308000000000000000000000000000000000000000002070c0f11121417191b1b16202b353e47525b636e79838f97a1abb6bec8bfb7aca29c90847b6f635c64707b87949ea9b4bfc3b9afa69c91867d716d66646365696f76818d959ea9b4bfc8bcb0a5998e82766b5950463c31261b0f040000000000000000000000000000030c161f2a36414c58636c77828e9aa4adb7c7cfcdc7c1bebdbec1c7cdd3c9bfb4a99e94897e72675c53493e33281e1409000000000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f14181c1e212528292b2e302c3134353536363635353433302b2f2d2b292825211d1c1a16110e0b06010000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b0506060605030000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86919ca8b4bec7d6d6cfc4bab0a7a09c938f8a888686888a8f939ca0a7b0bac4cfd5d7cdc2b7ada4978b8074685d5146372d22170c010000000000000000000000000000000000050a0c12161a1c1d20232526272727252e36424a556069717d87919ca5aeb8c3c7bcb4a99e958d81756d63626b7984909ba7b2bcc9bfb5aa9f9690857d7672706f70737a818d919ba5aeb8c3c1b6aca3968b7f73685c5145362c22170c01000000000000000000000000000008121c26323d47515a65717c88939ca7b5bec7cdc4bdb7b3b2b3b7bdc4cdcdc2b8aea59a8e83776c63584d41382e23180c0300000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c12171b1e2327292b30333437393b363b3f40414141414140403e3b353b39373433302c292825211c1916110b0803000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170f11121212110f0b0708070603000000000000000000000000000000000000000000000000000a15212d38444f5b66727e8997a0abb5c1cbcbcbcbc0b5aaa096918a837f7c7b7b7c7f838a9197a0aab5bbc5cfdad1c7bcb1a5998e82776b5950463c31261b100400000000000000000000000000000004090f14191c212528292b2e30323233323230303b465058636d75818c959ea9b4bbc7c3b8aea59b91887d7169606975808c98a3acb8c1c4b9afa69f959088817d7b7b7c7f848d919ba2abb6bec7c0b2a79c92877b7064594d41362a1f12080000000000000000000000000000010c17222c36404b56616b76818d98a3acb6c5cec7bdb4ada8a6a8adb4bcc4cdc7beb3a79c93887c71655a51473d32261c1208000000000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13181c2226282e3235353b3f4042454748464a4c4c4d4d4d4c4c4b4a4548464442403f3b363433302b2724201b17130d070200000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22161a1c1d1e1d1c1a16111413110e0a0401000000000000000000000000000000000000000000010c18242f3b46525d6975808c97a7b0babfbfbfbfbfb6aca39c91867f7873706f6f7073787f86919ca2abb5c0cbd6d6cabeb3a79c9084796a60564b3f34291d12060000000000000000000000000000070e13181f24262c303334373a3c3d3e3e3e3d3c3a363f48535c636f7a84909ba2abb6bfc8beb6aba19b8f837a6f6365707c88929ca8b1bac5c0b7afa69f9c928d898786878a90949ba2abb2bbc6c0b7aca39a8e82776b62574c4035291e12030000000000000000000000000000040f1b26313c465059646f7b86919ca8b3bcc6ccc1b7ada49d9a9da4acb4bcc6ccc1b6aca3998d81766b61574b40362c22170b0100000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171e23262c3134383d4041454a4c4e50525450555758585958585757544f5352504e4c4a4543403e3b35332f2b25221d16120c05000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22212528292929282521221f1e1c1915100d080300000000000000000000000000000000000000030e1a26313d4854606b77828e99a5b1b3b3b3b3b3b3b3a79c928a7e736e6865646465686e737e89929ba6b1bdc8d4d6cbc0b4a99f95867a6f63584c4035291e1207000000000000000000000000010710171e23282e33363b3f40434547494a4a4a4947454340434b56606a727e89929ca6afb9c3c6bbb3a89d948b80746c626c77828e97a1abb6bdc6bfb6afa9a29b9994929293969b9ea5abb2bbc3c4b9afa69c92897d71665b52483d32271c1105000000000000000000000000000006111d28343f4a55606974808b97a0aab5c1cccabeb3a89d938f939da3acb6c1ccc6bcb4a89c91867b6f645950463c31251b1106000000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080f161c21272d32363c3f41484b4d4f5557595c5e5f596063636464646463635f585f5e5c5957554f4e4b4a45403e3a35312c27211c150e070200000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2d2b303334353433302b2e2b2a28241f1b17130d07020000000000000000000000000000000000040f1a25303b454f586d78848f9ba7a8a8a8a8a8a8a8a8a5998e82776e655e595858575e636e76828d99a5b0bccad4d9cec3b8aea593877c7064594d42362b1f13080000000000000000000000050b111921282d32383d3f454a4c4e5153545556555453514e4c4a47515a646e76828e969faab5bcc8c2b7ada49c91867c706865717c87919ca4adb5bec6bfb9b4aba6a4a09e9d9fa2a7a8aeb5bbc2c2bbb5aa9f968e82776d63594a42382e23180e0200000000000000000000000000030e19242f3a454e57636f7a85909ca7b0bac4cdc2b7ada49a8f838f939da7b3bfc9ccc1b5aba0978c80746960554a3e352b20160b0000000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171f262c31373d40464a4c525758585f636568696b6c696f6f6f70706f6f6e686c6b696765635f585a57544f4b49453e3c37302c261f17120c05000000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145393539353b3e4040403e3b353a3635332e2926221d17120c050000000000000000000000000000000005111c28333f4a555f697985919c9c9c9c9c9c9c9c9c9c9c95897e72665e554e4c4c4e545d66727d8994a7b0bac5cfdad2c8b6ab9f93887c7165594e42372b1f140800000000000000000000060e151b212931383d42484c4f55575a5d5f60616161605f5d5a57554f4c545d64707b85909ca3acb7c0c7bdb5aaa0978e82786e636c75808c939da5aeb6bec5c3bbb5b1b0aca9a9aaadb2b4b8bec5c3bab2aaa19c91867c70645d54493a31281e1409000000000000000000000000000005101c27333e49545e68737f8a959fa9b7c0cacabfb4a89e94897d828f9aa6afb9c3cec4bab0a79c90857a6f63574e453a2f24190e03000000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161c22282f363b41474b5055575b616468696e7173757778797a7b7b7b7b7b7a7a7977767573706e696965635f5857544e4b46403b362f27211c150e060000000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c514540414447454a4b4c4b4a45484542413e3934312d27211c160e0601000000000000000000000000000006121d2934404c57636e7a8691919191919191919191919191877b6f64584d454141454c58636f7b8697a0abb6c1ccd7cec2b7ab9f94887d71655a4e43372c201409000000000000000000060e161e252b303a41474b5257585f6365686a6c6c6d6c6c6a6865635f58575257616b737f8a939da7b0bac4c4bab0a79c938a7f736b636f7a838f959ea5aeb5bbc3c5c0bdbcb7b5b5b6b9bebfc2c7bfb9b5aaa19a918a7f736c62574c443a2a21180e04000000000000000000000000000007111d2934404b57636e79838f9ba5aeb8c8cfc4bab0a79b8f84787e8a959fa9b5c0cbcac0b4a99f958a7f73685e54493e33271f140a0000000000000000000000000000000810192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12171f262c313840464a5156596063676b7073777a7c7f818284858686878787868685848382807e7c7a7774716e6866635e5756504a453f38302c261f17100800000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51474b4d50534f54575857544f53514e4c48423f3c37302c261f17110a030000000000000000000000000006121e2935404c58636f7a868585858585858585858585858586796e63574c403535404b57636e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000000000000050e171e272e353b444a51565b6264696e71747677787878777674716e6864625b565b636e79838f97a0aab5bdc7c0b7aca39c90857b6f6469707c8490959ea5abb4b8bec2c7c7c3c1c0c1c4c9c4c0bbb6afa9a19a918c80756e655b52483c332a191108000000000000000000000000000005111c28333e48525b66727d89949da8b6bfc8ccc1b5aaa0978b7f747a85909ca7b3bdc6cec3b9afa69b8f83796e63574b42392e24190d03000000000000000000000000000710192129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b131a222830363c444850555a6164696f73777b7f8285888a8c8e8f919692929392929195908f8d8c8a888583807d7976716e68636059554f48443b362f2721191109000000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c515156585b5e585f6363635f585f5c5957534c4b47403b362f27221a130c0400000000000000000000000006111d28343f4b56606a6f79797979797979797979797979797975695f554a3f33333e49545f687a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000000000040d161e272f373f454a555a61646c70757a7d7f818384848483817f7d7975706b64615a5f68707c86919ca4adb7c2c8bcb5aa9f968d82766e646b707c8590949ca2a9aeb3b7bcbebfc0c3c0bebdb9b5b3aba69f9c908c81786e635e554b42382c231a090000000000000000000000000000020c161e2a35414c57626c77828e99a4adb7c6cfcbbfb3a89c91867b6f75818c98a3acb7c1ccc8bfb3a89d94897d72665b52483e33271d1309000000000000000000000000040e172129313a414a515a616b6f7b838f949da4adb5bdc5c6beb5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b232a323840464a545960636b6f747a7f83878b8e91969698999b9ca0a79e9e9e9da59e9c9a99979696918f8c8884817d79736f6a635f58544a453f383129211911090000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c585a6164676a6c686e6f6e686c6a6865625c5856514a463f38322a241c150d04000000000000000000000004101b26313c46505960636e6e6e6e6e6e6e6e6e6e6e6e6e6e6e635f584f453b30303a454f626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000000000010b141e262f373f474f545e646b6f767c8184888b8d8e8f908f8e8d8b8884807c756f6a645d626c74808c949da8b3bbc6c3b9afa69c92897e726a626c707c848e929b9ea5a8adb0b2b3b5b8b4b3b1afaaa8a29b95908980786e685e544d453a32281b130a000000000000000000000000000007121c26323c47515a65707c87929ca7b4bdc7cdc2b7ada4998d81766b707c88939da7b3bfc9cdc2b7ada4998e82776c62574c41372d22180c02000000000000000000000009131e28313a414a515a616b6f7b838f949da4adb5b5b5b5b5b5aea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c242c333b424950555d64696f747b80858a8f93969a9c9fa6a3a5a6a8aab0a9aaa9a9aea9a7a6a4a3a7a09c9a9795908d88837f7a736e69635d554f48413a31292119110800000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c63656b6f737678797a7a7a79787673706c6863605a555048423b342c251d150d0400000000000000000000010c17222c37404950565862626262626262626262626262626257554f483f352b2b354b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000000006111b252e363f484f585f636e727b81868c909597999a9b9b9b9a989695908c86817b726e635e636f7a838f9ba2abb6bec8bfb6aba29b90847a6f63626c707b828a90959b9da4a5a6a8aaaea9a7a6a79f9c99928d857e746e685e574e453d342a21180b0200000000000000000000000000010c17212c36404b56616a75818d98a3acb6c5cdcabfb3a89d94887d71666c77838f9aa6afb9c3cec7bdb2a79c92877c70655a51473c31261c120700000000000000000000020d18232d38414a515a616b6f7b838f949da4adaaaaaaaaaaaaaea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141d252d343c444b535960636d727a7f858b90959a9da3a5a8aaafafb1b2b3b5bab5b5b5b5b8b4b3b1b0afb0aaa8a6a59f9c98948f8b847f79726d635f58514a413a312a21180e04000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7368646d71767b7e8183858586858583827f7c78736f6a636058534b443d352e251d150c040000000000000000000008131d27303940464b4c5757575757575757575757575757574c4a453f372f2534404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000000050e17202b353e474f585f686e757e858d91979c9fa5a4a6a6a7a6a6a4a59e9c97918d857e746e686069717d88919ba5aeb8c3c7bbb4a99e958c81756d63626a6f767e848a8f9496999b9ca0a59e9c9a9896918d88817b726e635e574e473e352d241a11080000000000000000000000000000040f1a25303b465059646f7b85919ca8b3bcc5cfc4bab0a79b8f84796e6367737e8a969faab5c0cbcbc0b6aca3988c81756a61564b3f362c21160c0100000000000000000005101c27323d47515a616b6f7b838f949da49e9e9e9e9e9e9e9ea59e9590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141c252d353d454c545c62696f757e848b90969c9fa5a7acb1b3b5b9bbbcbebfc0c4c9c1c1c8c3bfbebdbcbabab5b3b1aea9a7a49d9b95908a837d756e69615a524a423a31281e1409000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736b70767d82868a8d8f90969196908f8d8b87837f7a746e69625c544d463e352e251c140a02000000000000000000030d16202830373c3f404b4b4b4b4b4b4b4b4b4b4b4b4b4b4b403f3b352f271e34404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000020c151e272f3a454e575f696e79808a90969ca1a8a9aeb0b1b2b2b2b1b0aea9a7a09c95908980786e68636d76818d959ea9b4bcc7c2b8aea59c91877d71696061636e727a7f83888b8d8f91969195908e8c8985817c766f6b645d544e473e362e251c140901000000000000000000000000000006111d28333f4a55606974808b969faab5c0ccccc0b5aaa0968b7f74685e636f7a85909ca8b3bdc6d0c5bcb3a89c91857b6f63584f453b30251a0f0400000000000000000007121e2935404b56616b6f7b838f949292929292929292929292929590847c706c625b524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242d353d454e555d636c707a818990949c9fa6a9aeb3b6bcbfc0c4c9c8c9cbcccfd3cdccd2cecbcac9c7c9c4c0bfbdb8b4b3ada8a59e9c948f8980796f6b615b524a42382e23180d020006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73727c82888d9197989a9c9fa69f9c9b9996948f8b857f79706c645e564e463e352d241b120800000000000000000000060f1820272c3134353f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3433302b251e2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000007121c252f373f49545e686e79818c919c9fa6abb1b4b8bbbdbebebebdbbb8b4b0aba59f9c908c81786e63636f7b84909ca3acb7bfc8beb6aba1978f83796e635b5e64696f73787c7f8284858686858483817e7a76706c64615a5449453e362e261e140c0300000000000000000000000000000008121d2935404c57636e7a84909ca7afb9c4cfcbbfb3a89c91867b6f6457606a75818c98a4adb7c1ccccc0b5aa9f968b7f74695f554a3f33281f150b00000000000000000007131e2a35414d58646f7b8487878787878787878787878787878787847c706c625b524b423a322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343d454e555e656d727c838c919b9ea5aaafb4b8bfc1c6cacccfd3d3d5d5d4d3d2d2d2d3d4d4d6d4d3d3cfcccbc8c3c0bdb7b3aea9a49d9b908c837b706b625b52483d32271c10050006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f737e858d92999ca0a7a6a8aaafaaa8a6a4a49d9b95908b837c726e665f564e463d352b2318100700000000000000000000070f161d22262829343434343434343434343434343434292825211c152834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000000b16212b353f48535c636e78818d929aa1aaafb6bac1c3c8c5c3c2c3c5c8c3c0bab5aea9a19a918c80756f656a727e8a929ca6afb9c4c5bab1a89d938b80746c6257596063686c70747678797a7a7a797775726f6a65625c57514a443a352e261e160d0400000000000000000000000000000007121d29343f49545d67737e8a959ea9b7c0c9cdc2b7ada4998d81766a61565965717c88939da8b3bfc9cfc4b9afa69b9084796e63574c43392f241a0e04000000000000000007121e2935414c58636f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a706c625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a343d454d555e656e737e858f949ba1a8aeb5b9bfc3c8ccd0d6d6d4cfcccbcac8c7c7c7c7c7c8c9cacbced3d5d5d6d2cecbc7c2bfb8b4ada8a19a938f847b706b62574c4035291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f74685c51453a2e221e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7f8990969ca2a8abb0b2b3b5b9b5b3b2b0ada8a69f9c938f867e746f665f564e453c332920170d0300000000000000000000060d13171b1d1e2828282828282828282828282828281d1c1a16121d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000030f1a25303b454f58636d747f8b919ba2aab5b9bfc5c2bfbebab7b6b7babebfc2c4bfb8b4aaa19a918b7f736c646e77828e969faab5bdc8c1b8ada49c91867c70685e5455575c6265686b6c696e6f6e686c696763605958534b47413a2f2b251e160d05000000000000000000000000000000030d171f2b36424d58636d78838f9ba5aeb8c7d0cabfb3a89d94887d71665a5158636c78838f9aa6afb9c4cec9c0b4a99e958a7e72675c53493e33281e1409000000000000000006121d29343f4b56606a6f70707070707070707070707070707070706f6a625b524b423a322a211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172028323b444d555e656f737f8690969da4aab4b8bec3c9ced2d4cfcccbcac5c1bfbebdbcbbbbbbbcbcbdbfc0c3c9c9cacdd1d7d6d1cdc8c3bdb7b3aaa39d948f847c7064584d41362a1f13070006121e2935404c57636f7a86919da9b4c0cbd1c5baaea2978b8074695d51463a2f231e2935414c58636f7b86929da9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd4c8bcb1a59a8e8287919c9fa6abb4b6babdbfc0c3c0bfbdbcb7b3afa9a49d96918a80746f665e554c433930271d1309000000000000000000000003080c1011121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d12110f0b071d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000005111c28333f4a555f69717d86919ca2abb2bac3c5bdb7b3b2aeababacaeb3b4b8bec6c3bab2aaa19c91867d716864707c85909ca4adb8c1c9bdb5aaa0968e82786e635a514c5358595c5f585f6363635f585e5b5856504c49433d383129201b140d050000000000000000000000000000000008131d27323d48525b66717d88939da8b6bec8cfc4bab0a79b8f84796e63574b535c67737f8a969faab5c0cbcdc2b8aea59a8f83776d63584d42382e23180d030000000000000004101b26313c47515a60636464646464646464646464646464646464636059524b423a322a211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039424b545d656e737f8a91979fa6adb5bbc2c7ced3d2cecac5c1bfbdbab6b4b2b1b0b0afb0b0b1b2b3b5b9babdbec2c7cccfd4d8d2cec7c2bab4aca49d948b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd2c6baafa3988c8075695e5246372d221e2a35414c58646f7b86929ea9b5c0ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd4c9bdb2a79c928e9197a1aaafb6bbc1c5cacacbcecbcac9c7c2bfb9b4ada7a09c908b80746e655c534941372d22160d040000000000000000000000000104060611111111111111111111111111111106050300111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000030f1a25303b454f58636e79838f97a0abb2bbc3c1bab6ada8a7a2a09fa0a3a7a9aeb5bac2c2bab5aaa0978f83796e636b747f8b939da7b0bac5c4bab0a79c938a7f736b61564b494c4e51534f55575757544f524f4c4b46403e39322d282119110b0400000000000000000000000000000000020d18222d37414c57626c76828e99a4adb7c6cfccc0b5aaa0968b7f74685e54494c58636f7a85909ca8b3bdc6d1c8beb3a89d93887d71655b52483d32261d120800000000000000010d17222d374049515658585858585858585858585858585858585858565049423a322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17222d374049525b646e737f8a8f9ca0a7afb6bdc5cdd2d3cfc8c3c1bab6b4b1b0aba8a7a5a5a4a4a4a4a5a6a8aaafaeb2b3b7bdc1c5cad1d9d7d1cdc4bdb5ada5968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd3c7bbb0a4998d82766a5a51473c31261f2a36414d5964707b87939eaab5c1ccd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbd7ccc1b6aca39c9a9ca1a8b1b9bfc7c2c1c1c2c3c6cacacdd1cdc8c3bdb7b0aaa099908a7f736d635a51473c31261e150b0100000000000000000000000000000005050505050505050505050505050500000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000005111c28333e4a545f68737f8a939da7b0bac2c1b8b1aba49d9b97949394979b9ea5aab2bac2c4bab0a79d938a7f7368636e79838f97a0abb6bec7c0b7aca39c90857b6f645d544940424548454a4c4c4b49454744403f3c37332f29231e18100601000000000000000000000000000000000004101b26313c47515a64707c86919ca8b4bdc7d6cbbfb3a89c91867b6f64574e454b56606a75818d98a4adb7c1ccccc1b7aca3998d82766b62574c40372c22170b010000000000000008131d27303940474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b464039322a211a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313c465059626c727e87919ca0abb0b8bfc7ced5d0c9c4beb8b4b0aba8a5a7a09c9b9a99989898999a9b9c9fa6a3a6a8adb4b6bac1c8cdd5dcd5cdc5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd5c9beb2a79b8f84786a61564b3f3429202b36424e5965707c88939faab6c2cdd0c4b9ada1968a7f73675c5045392d22160b0006121e2935404c57636f7a86919da9b4c0cbdad0c6bcb3aca7a5a8abb1b8bfbcb9b7b5b5b6b7babebfc2c7ced2cec7c0bab5a9a09c91867d716a61564b44372e251b110700000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000006121d2934404b57636e79848f9ba4adb8c0c5bab1a8a19c948f8b8988898b90959ba1aab1bac5c0b7ada49b8f84796e6368717d87919ca5aeb8c2c7bcb4a99f958d81766d645950463c3a363b3f4040403e3a35383534312d27241f18140e070000000000000000000000000000000000000006121d2934404b56616a75818c97a1abb6c1cdcdc2b7ada4998d81766a6156473e46505965717c88939da8b3bfc9d0c6bdb4a89c91867b70645950463c31251b110700000000000000030d17202830373c3f414141414141414141414141414141414141403f3c373028211a11090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038404b56606a707c859097a0abb5bac0c8cfd5cdc7c0b9b5aea9a7a09c9a969791908e8d8d8d8d8d8e8f909694979b9da4a8abb0b8bdc5cdd7ddd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd6cabfb3a89d94867b6f63584c4439312a2c38444f5b66727e8995a0acb7c3cfcfc4b8ada1958a7e73675c5044392d22160a0006121e2935404c57636f7a86919da9b4c0cbd7d6ccc4bcb6b2b1b4b6bab5b3b0adabaaa9aaacafb2b4b8bec3c8cfd0c9c4b9b5aaa09790847b6f635d54473e352b20160b00000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000915202c37434f5a66717d89949ea8b4bdc8c1b6aba197918b84807d7c7d80848c919aa1aab4bdc8bdb4a89e94897d7166636c75808c949ea8b4bbc6c3b9afa69b91897e726a60564a43372f303334353433302b2d292926221d19150f090400000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b1bac5d0cabfb3a89d94887d71665a514736404d58636c78838f9aa6afb9c4ceccc1b6aba0978c80756a60564b3e352b20160b0000000000000000060f1820272d31343536363636363636363636363636363636363534312d272018110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c364049545d636f7a838f969fa7b0bac4cad1d3cbc4bdb7afaaa59e9c97918e8b88858483828181818282838587898c8f93989ca0a7adb4bdc7d1dbd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd8cdc2b7ada4958a7e73675d544a413936363d47515a68747f8b97a2aeb9c5d1cfc3b8aca195897e72675b5044382d21160a0006121e2935404c57636f7a86919da9b4c0cbd7dcd4ccc6c1bdbcbbb7b0aaa8a5a19f9e9e9fa0a3a7a8aeb4b8bec6cdd3cfc4bab0a79e958d81766d63584f453a30251a0e03000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090005101b26323c47515a6a75818d98a4adb7c5c0b6aba29c9187807974717172747a818c919aa4adb7c1c2b7ada4988d81756a5c636f7a84909ba2abb6bfc8bfb6aba29b90847a6f635c53483f352b28292929282520211e1d1b17130d0a0500000000000000000000000000000000000000000005111c28333f4a555f69747f8b969faab8c1cacfc4bab0a79b8f83796e63574b41373e49535c67737f8a969faab5c0cbcfc5bab0a79c90857a6f63584f453a30251a0e030000000000000000080f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059646d76818d949da6afb8c1cad4d3cbc3bbb4ada69f9c95908b86827f7c7a787776767576767778797b7d8083888d91979da4adb7c1ccd8d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbdcd1c7bdb1a69a8e83776d645a514a444241444b56616b77828e9aa5b1bdc8d4cec3b7aca094897d72665a4f43382c2015090006121e2935404c57636f7a86919da9b4c0cbd7e4dcd9d0c8c0bab5aba7a09c99969493929395989b9ea5a9aeb5bdc4cdd4cac0b7aea59b91897d71685f54493e33281f140a000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090006121d2934404b56616a7884909ba7b2bec7bdb2a79c928a7f746e69666566696f75808c939da8b3c1c7beb2a79b9084786b616069727d89919ba6afb9c3c6bbb4a99e948c80756c63584f453b30281d1e1d1c1a16111212100c0803000000000000000000000000000000000000000000000007121d2934404c57636e7984909ba6afb9c9d1ccc0b5aaa0968b7f73685e54493e3039434c58636f7a85909ca8b3bdc7d1cac1b4a99f958a7f73685f54493e33281f150a000000000000000000060d13171b1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069727e89919ba4adb7bfc8d1d3cbc2bbb2aba49d96918b84807b7773716f696b6b6a6a6a6a6b6c6b6f7274787c81868f939da8b3becad5d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7d5c9beb3a79c93897e726a615a544e4d4d4e545d646f7b86919ca8b4bfcbd6cdc2b8aea593887c7065594e42362b1f14080006121e2935404c57636f7a86919da9b4c0cbd7e4dad1c9c0b7b0aaa29b96918e8a88878788898c90949b9ea5acb4bcc4cdd0c8beb5aba29a8f83796e63574b42382e24190e030000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090007121e2a35414c58646f7b86949ea8b4bfc3b9afa6998e82766f635f585a5960636e79838f9ba8b1bac5bfb4a89e94867b6f6459636d76818d959fa9b4bcc7c2b8aea59c91877d71695f554a42382e231811110e0b070706040100000000000000000000000000000000000000000000000006121d28333e49535c67727e8a949ea9b7bfc9d6cbbfb3a89c91857b6f63574e453a2f343f4b56606a75818d98a4adb7c2cccec3b9afa69b8f84796e63574b42392f24190e0400000000000000000003080d10121213131313131313131313131313131313131212100c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a636f7a84909ba2abb5bdc7d0d5cbc3bbb2aaa29b938f86807a746f6b68656360595f5f5e5f5f605a616466696c70767c838f9ba6b2bdc9d4d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7d7ccc1b6aca39b90847b6f6b645d5a5958595d646d75818c97a1abb6c1ccd6cabfb4a99e94867b6f63584c4135291e12070006121e2935404c57636f7a86919da9b4c0cbd7dfd4cac1b8b0a7a09c918d86827f7d7c7b7c7d80848a90959da3acb4bcc6cfcfc6bbb3a89d93897e72665b52483d33271c11050000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000914202b37434e5a65717c8894a5aeb8c2c0b4a99f95887d71655e554f4e50555f68727e8997a1abb6c1c2b8aea594887d71655a5d646f7b85909ca3acb7c0c7beb6aba0978f83796e635b52483d322920170d030000000000000000000000000000000000000000000000000000000000030d161f2b36424d58636d77838f9aa5aeb8c7d0cdc2b7ada4988d81766a6156473e352b313c46505965717d88939da8b3c0c9d3c8bfb3a89d94897d72665c53483e33271d1309000000000000000000000001040607070707070707070707070707070707070707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a74808b949ea9b2bbc5ced7cdc5bbb2aaa19b928d837c746f6a64615a5a5755505353535353545156585a5c62656c737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7dbd0c6bcb4a99e958f837b726e6865646465686e727e87919ca8b1bac5d0d5cabeb2a79b9084786a61564b3f34291d12060006121e2935404c57636f7a86919da9b4c0cbd7dbd0c5bab1a8a097918a817b7773717070707275797e848f939da3acb6bfc8d3ccc1b7ada49a8e82776c62574c41352a1e12080000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000a15212c38444f5b66727e8995a0acb8c7bfb3a79c9085796e63574b4542464f58636f7a86919ca8b4bfc7b8aca195897e72675b56616a737e8a929ca7b0bac4c5bab0a79d938b7f746b62574c443930271d1309000000000000000000000000000000000000000000000000000000000008131d27323d48525b65717d88939da8b5bec8d5cabfb3a89d94887d71655a5147362e252d37404d58636d78838f9ba6afb9c4cfcdc2b7ada49a8e82776c62574c41372d23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465058636f7a85909ca5aeb8c3cbd5d0c7bdb4aba29b918c8179706c63605956514e4c4a46484747474848474b4d4f53585c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7e0d6cdc3b8aea59d938f847e78747170707173777e869097a0abb8c1cad4d3c7bcb0a5998d82766b5a51473c31261b10040006121e2935404c57636f7a86919da9b4c0cbe0d7ccc1b6aba19791867e76706b676564646566686e737b838f939da6afb9c3ced1c6bdb2a79c92877c7064594d42362c22170c0100000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000a16212d3944505b67737e8a95a1adb8c4bdb2a69a8f8378685f54493e363f4b56606a7984909ca7b3bec4b8ada1958a7e73675c515a636e78828e96a0aab5bdc9c1b8ada49c91867c70645e554941372d22170f06000000000000000000000000000000000000000000000000000000010c17222c37404c57626b76828d99a3acb7c6cecfc4b9afa79b8f83786d6358494137261e27333e49535c68737f8a969faab5c0ccd1c7bdb2a79c92887c70655a51473d32261c12070000000000000000000000000000000000000000000000000000000001040607111111111111111111111111111111111111111111111111111111111111111111111111111111110c0c0a07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a55606974808b959fa9b5bec7d3d3c9c0b7ada49b928c81786e69625b56504b4742403f3b363c3b3c3c383d40414349505c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7e7dcd2c8beb5ada49d949089837f7d7c7b7c7f838990969fa7b0bac9d1daccc1b6aca3968a7f73675c5045372d22180d020006121e2935404c57636f7a86919da9b4c0cbd9cdc2b7ada49c91877e736e64625b5a595859585f636a6f7a828f959fa9b4bec8d2ccc1b6aca3978b7f74685950463c31261b0f0400000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000a16212d3944505b67737e8a95a1adb8c4bdb2a69a8f8378685f54493e363f4b56606a7984909ca7b3bec4b8ada1968a7e73675c50545e68707c86919ca4adb8c1c8bdb5aa9f968e82776e645a51473c31281f160c02000000000000000000000000000000000000000000000000000004101b26313c46505964707c86919ca8b4bdc6cbccc0b5aa9f968b7f73685c534939302716242f39434c58636f7b85919ca8b3bdc7d1ccc1b6aca3988d81756a61564b3f362c21170c010000000000000000000000000000000000000000000000000003080c1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d181715120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a84909ca6afb9c5ced7cfc4bab0a79d938d81796e686059524a46403d383534313033343535353535353945505c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7ece2d8cec6bdb4ada59e9b938f8b888787888a8e939c9fa6afb8c1cad9d4c9beb2a79c93877b7064594d41362a1f1308000006121e2935404c57636f7a86919da9b4c0cbd3c9bfb3a89d948c80746d645e57524e4d4d4e4f545a616a707b85909ca5aeb8c2cdd0c6bcb1a69a8f83776a60564a3f34281d110600000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000a15212d38444f5b66727e8995a0acb8c8bfb3a79c9085796e63574b4542464f58636f7a86919ca8b4bfc3b8aca195897e72675b4f4e57626c747f8b939da8b1bac5c4b9afa69c928a7e726a61564b43382f261c1208000000000000000000000000000000000000000000000000000006111d28343f4b56606a75808c97a0abb6c1bfbfbfbfb3a89c91857b6f63584c43392920171f29343f4b56616a76818d98a4adb7c2bfbfc6bcb3a89c91867b6f645950463b30251a0f04000000000000000000000000000000000000000000000000060d13171b1d1e292929292929292929292929292929292929292929292929292929292929292929292929292929292323201d18130c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505966727e89959ea9b6bfc9d6d7ccc0b5aaa0968f837a6f685f585048423c36322d292f363b3f404040404040404045505c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7e4dcd5cfcbc5bdb5aea9a39d9a9794939293969a9ca3aaafb7bfc8d1d6cdc2b7ada49a8e83776b62574c4035291e1203000006121e2935404c57636f7a86919da9b4c0cbcec4b9afa69b8f83796e635d554c4843424142454a5159626b737f8a959ea9b4bfcbd6cbbfb4a89c91867a6f63584c4035291e120600000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000914202b37434e5a65717d8894a5aeb8c2c0b4a99f95887c71655e554f4e50555f68727e8997a1abb6c1c2b8aea594887d71655a4e47525b636e79838f97a1abb6bec8c0b7aca39c90857b6f635d544840362c22160e05000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca7b0bab4b4b4b4b7ada4988d81766a61564b4034291d101b26313c47515a65717d88939da8b3b4b4b4b4b4b5aaa0968b80746960554a3f332820150b0000000000000000000000000000000000000000000000070f171d22262934343434343434343434343434343434343434343434343434343434343434343434343434343434342f2e2c28231c150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a76828d99a5aeb8c7cfd9cec3b8aea59c91867c706960584f473f38312c26262f383f454a4c4c4c4c4c4c4c4c4c505c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7dcd3ccc5c0bdbcbeb8b4aca8a6a29f9e9e9fa2a6a7acb5b9bfc7d0d7cec6beb4a89e948a7e72675b52483d32271c1105000006121e2935404c57636f7a86919da9b4c0cbcbc0b5aa9f968a7e73695f554d443d383636353b4149525b636e7a84909ba7b3becad4ccc1b6aba097887d71655a4e43372c20140900000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090007131e2a35414d58646f7b86949ea9b4bfc3b9afa6998d82766e635f58595960636e79838f9aa8b1bac5bfb4a99e94877b6f64584d424a555f69717d87919ca5aeb8c2c7bcb4a99e958d81766d635950463b31271e150b01000000000000000000000000000000000000000000000005111c28333e4a545f68737f8b969faaa8a8a8a8a8a8a8a89d93887d71655a51473c31261b1018222d37404d58636d78838f9ba7afa8a8a8a8a8a8b0a79c90847a6e63574c433a2f251a0f04000000000000000000000000000000000000000000060f1820272d313440404040404040404040404040404040404040404040404040404040404040404040404040404040403b3a37322c251e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8b3bfc8d6d6cbbfb4a99e958b80746c625950473f372f2722212c363f484f55575757575757575757575c68737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd7d5ccc3bbb5b2b0b3b5bab7b3b1aeabaaaaabadb1b2b6bcc4c9d0d7cfc7beb5aca29b8f84796e63574c42382e23190e03000006121e2935404c57636f7a86919da9b4c0cbcabfb3a89c90857a6f63584f453c322e2a2a2b3038424a55606974808b97a8b1bac5d0cfc5bab0a7968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090006121d2934404b56616b7984909ba7b2bec8bfb2a69c928a7f746e68666566696f75808c939da8b8c1cabeb3a79b9084796b61564b40454f58636d75808c949ea9b4bbc7c3b8aea59b91897d716960554a42372e251b1107000000000000000000000000000000000000000000000006121d2934404b57636e7984909ba69c9c9c9c9c9c9c9c9c9b8f83786d63584941372d22180d131d27333e49535c68737f8b969f9c9c9c9c9c9c9c9c9c9e958a7e73675c53493f34281d12070000000000000000000000000000000000000000030d17202830373c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645423c362e251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8996a0aab5c0ccd7d0c5bab1a89c90847a6f635b524840372e261f1a25303b454f585f636363636363636363636368737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbdacfc5bbb3aba6a5a8aab0b7c0bdb9b7b5b5b6b9bdbec1c6ced3d4cfc7bfb6aea59c92897e72685f554a3e31281e140900000006121e2935404c57636f7a86919da9b4c0cbc8bcb1a5998e8277696055483f352c231f1e2128303b46505866717d8897a1abb6c1ccd4cabaafa3978c8075695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090005101b27323d47515a6a76818d98a5aeb8c2c0b5aba29c91877f7974717071747a808c909aa4adb7c9c2b8aea5988d81766a5a51473d3f48535c636f7a84909ba2abb6bfc8bfb6aba29b8f847a6f635c53473f352b21160e04000000000000000000000000000000000000000000000a15212c38444f5b66727e89949191919191919191919191968a7f73685c53493930271d13080d1a252f39434c58636f7b85919191919191919191919191918f83786d63584d42362b1f1408000000000000000000000000000000000000000008131d27303940464b575757575757575757575757575757575757575757575757575757575757575757575757575757575752504c463e362c23180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576974808c97a7b0bac4cfd8ccc1b6aba1978b80746960554b42382f271e161c28333f4a555f696e6e6e6e6e6e6e6e6e6e6e6e737f8a96a2adb9c4d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd6cbc0b5aba29c999ca0a7b0bac0c8c2c1c1c2c4c8c9ccd0d3cecac4beb6afa69e958e82776e64584f453b3021180e0400000006121e2935404c57636f7a86919da9b4c0cbc5baaea2978b807468595046372f251c141118212c36404c57636f7a86919ca8b4bfcbd3c7bbb0a4998d81766a5f53483c3025190e00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900020d18232d37434f5b66727d89959ea9b4bec5bbb6aba197918b837f7d7c7d80848c919aa1aab4bdc9c1b4a99e94897d72665b4f433838434b56606a727e89929ba6afb9c3c6bbb4a89e948c80746c62584f453b30281e1409000000000000000000000000000000000000000000000f1a26323d4954606c77828585858585858585858585858585867a6f63584c43392920170d030b151f2934404b56616a76818585858585858585858585858585857d71665a4e43372c20140900000000000000000000000000000000000000010c17222d374049505662636363636363636363636363636363636363636363636363636363636363636363636363636363635d5b564f463c32281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6877838e9aa6b1bdcad4d6cbbfb4a89c91867b6f645950463a32281f16121d2934404c57636e797a7a7a7a7a7a7a7a7a7a7a7a7f8b96a2adb9c5d0d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd4c8bdb2a69c928d9197a0aab0b7bdc1c6c9cacbcecccbcac9c3c0bab5ada69f9690847b6f645d54483f352b2111080000000006121e2935404c57636f7a86919da9b4c0cbc4b8ada1968a7e73675c5044362d1e150907121d28343f4a5560697985909ca7b3becad3c8bcb0a5998e82766b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000009131d2934404c57636e7a84909ba4adb7c2c5bab1a8a19c948f8b8888888b90949aa1aab1bac4c1b8ada49b90847a6e63574c4034313c465059646e76818d959fa9b5bcc8c2b7ada49c91867c70685f544a41382e231810060000000000000000000000000000000000000000000e1a25313c48535e6872777a7a7a7a7a7a7a7a7a7a7a7a7a7a796f6a61564b3f34291d10070004101b26313c47515a6770767a7a7a7a7a7a7a7a7a7a7a7a7a7a7a716d63584d42362b1f14080000000000000000000000000000000000000004101b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564c42372c20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985919ca8b3bfcad6d4c8bdb1a59a8e82776b61564940362a22170f1a26323d4954606c77828686868686868686868686868b9099a4afbac5d1d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd3c7bcb0a5998d8286919ca0a7adb3b7bbbdbfc0c3c1bfbebcb9b5b0aba49e9690857d716a61564d44372f251b11000000000006121e2935404c57636f7a86919da9b4c0cbc3b8aca095897e72665b4f44382c21150a040f1a26313b4650596c78848f9ba6b2bec9d4c8bcb1a59a8e83776b6054493d31261a0f00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000005111c28333f4a555f69737f8b949ea8b4bac3c1b8b1aba49d9b96949394979b9ea5aab1bac2c5bab1a89d948b7f73695f554a3f332c374049545d646f7b85909ca3acb7c0c7beb5aba0978f83796e635b52483d322820170d0300000000000000000000000000000000000000000c18232e39444f5961686c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e63615a51473c31261b100000020d18222d3741495760676a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e66635c53493f34281d12070000000000000000000000000000000000000006121d29343f4b56606a777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7470665b50453a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87969faab5c0ccd7d0c5b9aea2978b7f74685a51473830261a11071a26323d4954606c77838e91919191919191919191919699a0a9b3bdc8d3d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7f8a91969da4a8adb0b2b3b5b9b5b4b2b1afa9a7a09c948f857d716c635a51473d34271e150c020000000006121e2935404c57636f7a86919da9b4c0cbc3b8aca095897e72665b4f44382c211208040f1a26313b4650596c78848f9ba6b2bec9d4c8bcb1a59a8e83776b6054493d31261a0f00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000040f1a25303b454f58636f7a848f9ba1aab3bbc3c1bab6ada8a6a2a09fa0a2a7a8aeb5bac2c3bbb6aba1978f837a6e63584f453b30273039444b56616b737f8a939ca7b0bac4c4bab0a79d938b7f736b61574b443930271d130800000000000000000000000000000000000000000a15202a353f4851595e606363636363636363636363636363625856514940372d22180d02000008131d2730394750575d5f6363636363636363636363636363635a58534c433a2f251a0f040000000000000000000000000000000000000007121e2935404c58636f7a858585858585858585858585858585858585858585858585858585858585858585858585858585858074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a6afb9c4cfd9cec3b9afa694887d71655a4e43382c1f16090f1a26323d4954606c77838e9a9d9d9d9d9d9d9d9d9d9da2a4a9b0b9c3cdd7d0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f737f868f939a9da4a4a6a8aaafaba8a7a5a69f9c97918c847c716d635c534a41372c24160e05000000000006121e2935404c57636f7a86919da9b4c0cbc4b8ada1968a7e73675c5044362c21170c07111d28343f4a5560697985909ca7b3becad3c8bcb0a5998e82766b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000010c16212c363f4a556069717d89909aa2abb3bbc4c5bdb7b3b2aeabaaabaeb2b4b8bec5c3bab3aba29c91877d71696055483f362c2128323d47515a636e78828e96a0aab5bdc7c0b8aca39c90857b70645d544940372d22170f050000000000000000000000000000000000000006101b252f3841484f53545757575757575757575757575757574c4b47403930271d1308000000030d172029373f474d51535757575757575757575757575757574e4d49433c332a20150b000000000000000000000000000000000000000007121e2935404c58636f7a8691919191919191919191919191919191919191919191919191919191919191919191919191918c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1acb8c9d3d7cbc0b5aa9f96867b6f64584c41352a1e12070f1a26323d4954606c77838e9aa6a8a8a8a8a8a8a8a8a8adafb3b9c1c9d3dcd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73737d838a8f9396999a9c9fa6a09c9b9a9795908c86807a706c635d534c433931271c130600000000000006121e2935404c57636f7a86919da9b4c0cbc5baaea2978b8074685950463b31251c1411181f2935404c57636f7a86919ca8b4bfcbd3c7bbb0a4998d81766a5f53483c3025190e00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000007121c26313b465059636d75808c929ca3abb5b9c0c7c2bfbdb9b7b6b7babebfc2c5bfb9b5aaa29b918b80746d63595046382f261c232d384149545f68707c86919ca4adb7c2c8bdb5aa9f968e82766e645a51473c31271f160c02000000000000000000000000000000000000010b151f2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b413f3c37302820170d0300000000071018262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332b23191006000000000000000000000000000000000000000007121e2935404c58636f7a86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a2adb9c4d0d6cabfb3a89c9085796a61564b4034291d12060f1a26323d4954606c77838e9aa6b1b4b4b4b4b4b4b4b4b9babdc3c9d1dadcd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f736c71797e83878a8d8f9096919791908e8c8985817c756f6a625b534c433b332920170b0300000000000006121e2935404c57636f7a86919da9b4c0cbc8bcb1a5998e82776960554a3f352b231f1e2128303b46505866717d8897a1abb6c1ccd1c6baafa3978c8075695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000020c17212c364048545d636e79818d929ba2aaafb7bbc0c3c9c5c2c2c2c5c8c3c1bab6afaaa19b928d81786e635d53483f36271f151e28303a454f58626c74808b949da8b3bbc6c4b9afa69c92897e726a61564b43382f261c120700000000000000000000000000000000000000050e1720282f35393c3d40404040404040404040404040403f3534312d272018100600000000000008161f262d33383b3c4040404040404040404040404040403736342f2a231b120900000000000000000000000000000000000000000007121e2935404c58636f7a86929da8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515c68747f8b96a2aeb9c5d0d5c9beb2a79b8f84786d5a51473c31261b10050f1a26323d4954606c77838e9aa6b1bdc0c0c0c0c0c0c0c5c5c8cdd3dae1dcd0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f7368686e73787c7f818385858686858482807d7a75706b636059524b433c332b221910070000000000000006121e2935404c57636f7a86919da9b4c0cbcabfb3a89c91857a6f63584f453b322e2a2a2b3038404a55606974808b97a8b1bac5d0cfc5bab0a7968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000008121c262f38444a555f686f79828d919c9fa7abb3b5b9bcbdbebebebdbcb9b4b1aba69f9c918c81796e685f544c43382f26170e16202b353e47525b636e79838f9ba1aab6b5b5b5b7aba29b90847a6f635c53483f362c21170c01000000000000000000000000000000000000000710171f252a2e3132343434343434343434343434343434292926221d17100800000000000000060e161d24292d2f303434343434343434343434343434342c2b28252019120b0200000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a46515d6974808b97a3aebac5d1d5c9bdb2a69b8f83786c615549372d23180d020f1a26323d4954606c77838e9aa6b1bdc8cbcbcbcbcbcbd0d1d3d7dadadadad0c5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685f63676c70737678797a7a7a7a787775726f6964625b565049423b332b231a1208000000000000000006121e2935404c57636f7a86919da9b4c0cbccc0b5aa9f968a7e73695f554a443d383636353b4149525b636e7a84909ba7b3becad4ccc1b6aba097887d71655a4e43372c20140900000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000020c161f28303b454f5860696f79818a91969ca2a8aaafb0b2b2b3b2b1b0afa9a8a19c96908a80796e695f584f453c33271f1607111b252e37424a556069717d88919ba5aeaaaaaaaaaaa99e958c81756d635950463b30251a0f040000000000000000000000000000000000000000070e151b202325262929292929292929292929292929281e1d1b18130d06000000000000000000060d14191e222425292929292929292929292929292929201f1d1a151009020000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbaaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46515d6974808b97a3aebac5d1d4c9bdb2a69b8f83786c615549372d22180d020f1a26323d4954606c77838e9aa6b1bdc8cececececececececececececececec5b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c575b6265686a6c686e6f6e696d6b696663605957524a464038322a231b120a02000000000000000006121e2935404c57636f7a86919da9b4c0cbcfc4b9afa69b8f83796e635d554c4843424142454a5159626b737f8a959ea9b4bfcbd6cbbfb4a89c91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000000060f17212b353f48505960696e767f868e92989c9fa6a4a6a7a7a7a6a4a69f9c97918d857e756e685f584f473e352b23170f050b151e26303b465059636d75818d959e9e9e9e9e9e9e9ea59b91887d716960554a3f33281d1106000000000000000000000000000000000000000000050b1015181a1a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1212100d08030000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1414120f0b0600000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c0cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc6baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b97a2aeb9c5d0d5c9beb2a79b8f84786d5a51473c31261b10050f1a26323d4954606c77838e9aa6b1bdc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b9ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c515257595c5f585f6363636058605d5b5755504c48423c363028221a120b0200000000000000000006121e2935404c57636f7a86919da9b4c0cbd3c9c0b3a89d948c80746d645e57524e4d4d4e4f545a616a707b85909ca5aeb8c2cdd4c9bdb1a69a8f83776960554a3f34281d110600000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000000007111b252f37404850585f636e737c82888d909697999a9b9b9b9a999795908c86817b736e635f584f483f372e251b120700040d16212c363f48535c636f7a849093939393939393939393938f83796e63574c4035291d12060000000000000000000000000000000000000000000001060a0c0e0f1111111111111111111111111111110706040200000000000000000000000000000004080b0d0d11111111111111111111111111111109080704000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c0ccdfd6d6d6d6d6e0d9d3cfcccac2c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0baaea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945505c68737f8a96a2adb9c4d0d6cabfb3a89c9085796a61564b4034291d12060f1a26323d4954606c77838e9aa6b1b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7ada2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51484c4d50534f54575757555054524f4c4a46403d38312c261f18110a020000000000000000000006121e2935404c57636f7a86919da9b4c0cbd9cdc2b7ada49c91877e736e64625b5a595859585f636a6f7a828f959fa9b5bec8d2ccc1b6aca3978b7f74685950463c31261b0f0400000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000000000020c151e272f3840484f555e656b70767c8185898b8d8f8f908f8f8d8b8885817c766f6b645e544f473f382f261e150b02000007121c262f38434b56616a727e87878787878787878787878787878074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c6ced7dfe8e2e9e0d8d0c9c4c0bfb7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a95a1adb8cad4d7cbc0b5aa9f96867b6f63584c41352a1e14090f1a26323d4954606c77838e9aa6abababababababababababababababababababababa2968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c51454142454845494b4c4c4a46484643403f3b36322e28221d160f0701000000000000000000000006121e2935404c57636f7a86919da9b4c0cbdcd1c7bdb6aba19791867e76706b676564646566686e737b838f939da6afb9c6ced3c9beb2a79c92877c7064594d42362c22170c0100000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000000000050e161f282f383f454a555b62646c70767a7d8082838484848382807d7a75706c64615a554a453f372f271f160d04000000020c161f27313c47515a646e727c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060809111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110a090805010000000000000007121e2935404c58636f7a8692a4adb5bec7cfd8e0e9e3d9d0c7c0b9b5b3aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a3978c8074695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8994a7b0bac4cfd9cec3b9afa694887d71655a4e43382d23180d0f1a26323d4954606c77838e9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0968b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145393639353a3e4040403f3b363b383534312c26231e17120d060000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7d7d0c5bab1a8a097918a817b7773717070717275797f848f939da3acb6bfc8d6ccc1b7aca39a8e82776c62574c4135261c12080000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c2014090000000000000000060f171f272f363b454a52575c6265696f71747678787978787674716e6965625b57514a443b352e271f170e060000000000050f17222d374049545d646b7070707070707070707070707070706b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161513100c0701000000000007121e2935404c58636f7a86939da5aeb6bfc7d0d9e1ded3c9c0b7afaaa89f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c8797a0abb5c1ccd7d3c9b9aea2978b7f74685a51473d32261d12081a26323d4954606c77838e949494949494949494949494949494949494949494949494948b7f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2e2b303334353433302c2f2c292826221c19140e0803000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7dfd4cac1b8b0a7a09c918d86827f7d7c7b7c7d80848a90959da3acb4bcc7cfcec6beb3a89d93897e72665b52483d3227160d030000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c201409000000000000000000070f171f262c303a42484c535859606366696a6c6d6d6d6c6a686663605957524b47413a302b251e160e060000000000000008131d273039444d545b62646464646464646464646464646464625b52483d32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f202929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292921201e1b16110a030000000006121d2934404c57636e79838f949ea6afb7c0c9d1dadacfc4b9afa69f9c94929292929292929292929292929292929292928c8074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7985919ca8b4bfcbd6d4c8bdb1a59a8e83776b61574b40362c22170f1a26323d4954606c77828989898989898989898989898989898989898989898989898989897f73685c5145392e22170b0006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e2220252829292928252123211d1d1a17120c0a040000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7e4dad1c9c0b8b0aba29b96918e8a88878788898c90949b9ea5acb4bcc4cdd0c8beb5aba29a8f83786e63574b42382e241906000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbd6cec2b7aba094887d71665a4e43372c20140900000000000000000000060e151c212a31383d43494c5055575a5d5f60616161605f5d5a5755504c48423d383129211b150e060000000000000000030d172028343d444b525759595959595959595959595959595957524a42382e23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000020a12192025282b2b343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434342d2c2a26211a130c0300000005111c28333f4a555f696f7b8490959fa7b0b8c1cad4d7ccc0b5aa9f96918886868686868686868686868686868686868686868074695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6978838f9ba6b2bdc9d5d6cbbfb4a89c91867b6f645950463c31281f1614202b37424e5965717d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b7064584d41362a1e13070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22161a1c1d1e1d1d1a17121512110f0c080200000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7e4dcd9d1c8c0bab5aba7a09c99969493929395989b9ea5a9aeb5bdc4cdd4cac0b7aea59b91897d71685e54493e32281e140a000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfcbcdcdc2b7aba094887d71665a4e43372c2014090000000000000000000000050c121921282e32393e40464a4c4f5153555656555553514e4c4a463f3e39322d282119110b0500000000000000000000061018242c343a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f33363740404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040383735302b241c130a010000030f1a25303b454f58616b707c859096a0a8b1bac5d0d6cabfb3a89c91857d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586a75818c98a4afbbc6d0d8ccc1b6aba1978b80746a60564a42382f261e151f2a36414d58636c71717171717171717171717171717171717171717171717171717171706b61574b4035291e12070006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170e11111212110f0c070906060401000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7dcd4ccc6c1bdbcbbb7b0aaa8a5a19f9e9e9fa0a3a7a8aeb4b8bec6cdd3cfc4bab0a79e958d81766d63574e453a2f21180f05000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4bfc1c1c1c1b7aba094887d71665a4e43372c201409000000000000000000000000020711181e23292f33363b3f40434648494a4a4a49484643403f3b36332e29231e1810070100000000000000000000000008131c242a32383d40424242424242424242424242424241403d38312a21180e04000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342c241a11070000000b16212b353f48515a626c717d869197a1abb6bac3cbccc0b5aa9f9690847b706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b3544505b67727e8a95a3acb6c1ccdad0c5bab1a89c90857a6f635b524840362e251e1d28333e49535c636566666666666666666666666666666666666666666666666666666664615b52483d32271c10050006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b05060606060401000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbd7d6ccc4bcb6b2b1b4b6bab5b3b1adabaaa9aaacafb2b4b8bec3c8cfd0c9c4b9b5aaa09690847b6f635d54473e352b20110800000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8b4b5b5b5b5b5b5aba094887d71665a4e43372c2014090000000000000000000000000000080e14191f24262c313435373a3c3e3e3f3e3e3c3a373533302c26241f18140e070000000000000000000000000000030b131921282e323536363636363636363636363636363635322e2821191108000000000000000000000000000000000000000000000000000000000000000000000000000000000b152029333c43494d4e57575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757504e4a443d342b21160c01000007121c252f37414a525b636d727e87919ca1aab2bbc4cfc4b9afa69e958f837b6f696363636363636363636363636363636363605950463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a36414d58646f7b87939ca7b3c0cad4d4cac1b4a99f958c80746c625950473e352e2620242f39434c5358595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5d5a5a5a5a5a5a5a5a5a5a5a5857524a41382e23180d020006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbdad0c6bcb3aca7a5a8abb1b8bfbcb9b7b6b5b6b7babebfc2c7ced2cec7c0b9b5a9a09c91867d716a61564c43362e251b110100000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919ca8aaaaaaaaaaaaaaaaa094887d71665a4e43372c20140900000000000000000000000000000004090f15191c222628292c2f303233333332302e2c292825211c19140f090400000000000000000000000000000000030911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18110900000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635b59544d443b30261b10050000020c151e27313a424b535c646e737f8b909aa2abb3bcc5c9c0b7aea59d948e827a6f685f5858585858585858585858585858575550483f362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b77838e9aa7b0bac4cfdacec3b8aea59c91867c706960574e453e3730292529333b43494d4e4f4f4f4f4f4f4f4f4f4f4f5058606369636059504f4f4f4f4f4f4f4d4b48413a31281e1409000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4c0cbcbccc1b6aca39c9a9ca1a8b1b9bfc7c2c1c1c2c3c6cacacdd1cdc8c3bdb7afaaa099908a7f736d635a51473c33261e140b0100000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a85919c9e9e9e9e9e9e9e9e9e9e94887d71665a4e43372c2014090000000000000000000000000000000000050a0c12171a1d1d20232526272827262523201d1d1a17120c0a050000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c18140e08000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645d544a40352a1e1308000000050e172129323b434c545d656f75808c919ba3acb4bdc5c7beb5ada49c938d81796e635f564c4c4c4c4c4c4c4c4c4c4c4c4c4a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a68737f8a97a0abb5c1ccd7d2c8bfb5aaa0968f837a6f685e544f474139342f292b33393e41424343434343434343444a515960696e746f6a60595149434343434341403d38312921180e04000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4bfbfbfbfbdb2a79c928e9197a1a9afb6bbc1c5cacacbcecbcac9c7c2bfb8b4ada79f9c908b7f746e655c534941372b23160d040000000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a8591939393939393939393939393887d71665a4e43372c2014090000000000000000000000000000000000000002080c0f11121517191b1c1c1c1b19171512110f0c07020000000000000000000000000000000000000000000000040a0e111313131313131313131313131313131312110e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a726e64594e43372c20150900000000061019222a333c444d555e636e78818d929ca4adb5bec6c6bdb4aca39c928c80756f665e554d44404040404040404040403f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414c58646f7b86919ca8b4bcc8d0d8cfc4bab0a79d938d81786e635f585149443f3a3433302f33363737373737383e41484b545a61696f79807a6f6a615a5149413937373635322e282119110800000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4b1a59a8e8287919c9fa6abb4b6babdbfc0c3c0bfbdbbb7b3aea9a49d9691897f746f655e554c433930271b1305000000000000000000000000000000000000000000000000000000000000000000000006111d2834404b57626e7a8687878787878787878787878787877d71665a4e43372c20140900000000000000000000000000000000000000000001040606090c0e0f1010100f0e0c090606040100000000000000000000000000000000000000000000000000000003050708080808080808080808080808080707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857e72675b5044382d21160a000000000009111a232b343d4549545f686e79828e939da5aeb6bfc7c5bcb3aba29b918b80746e655d544c433a353535353535353533302c261f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2934404b56616b76818d98a2abb7c0cad4d3c9c0b7ada49b918c80756e68615a544d4943403e3b353a3a3a353b3e4042484c52575d646b6f79828b827a6f6a615a514a413a312a2927231e1811090000000006121e2935404c57636f7a86919da9b4c0cbd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f7f8990959ca2a8abb0b1b3b5b9b5b3b2b0ada8a59f9c938f867e746f655f564e453b332920170b0200000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d889191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191897e72675b5044382d21160a0000000000010a121b242c303a454f5860696f7a838f949ea6afb7c0c9c4bbb3aaa199908a7f736d645c534b4239312929292929292825211c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a65707c87929ca7b0bac4cfd9d0c7bdb4aba29a908c80786f6a645d58544e4c4a454646454646454a4c4e52575b61646d727b838e928e837a6f6a615a514a413a312a2119140e08000000000006121e2935404c57636f7a86919da9b4c0cbcbc5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f737e858d92999ca0a7a6a8aaafaaa8a6a4a49d9b95908b837c726e655f564e453d342b221810070000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35404c57626b7070707070707070707070707070706f6960554a3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060809111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110f0e0d0a06010000000000000914202b37434e5a65717d88949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c95897e72675b5044382d21160a000000000000020b131c202b353e475058606a6f7b8490959fa7b0b8c1cac3bab2a9a09c91867e726c635b524a413830271f1e1e1d1d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414c57626c76828e97a0aab5bec8d1d8cdc5bbb2aaa19a918c827b726e66635d5957554f52515151524f5557595b62646b70767e848f939c938f837b6f6a615a514a423a312a211a1108000000000006121e2935404c57636f7a86919da9b4bfbfbfbfb9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a869191919191919191919191918b7f73727c82888d9197989a9c9fa69f9c9b9996948f8b857f79706c645d564e453e352d241b1208000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6264646464646464646464646464646463605950463b31261a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a1a1815100b0500000000000914202b37434e5a65717d88949fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a195897e72675b5044382d21160a000000000000000307111b252e373f485059616b707c859096a0a8b1bac5d0c2bab5aba09790867d716c625a514940382f261e1412110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27333e48535c65707c86919ca5aeb8c1cad4d5cbc3bab1aaa19a928e847e77716d6865635f585d5d5d5d5e585f6365686c70757b818990959da39d938f837b6f6b615a524a423a322a211810070000000006121e2935404c57636f7a86919da9b4b4b4b4b4b4ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a85858585858585858585858585857f736b70767d82868a8d8f90969196908f8d8b87837f7a736e69625b544d453e352d251c140a020000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424b52575959595959595959595959595959595755504840362c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2029292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929262523201b150e07000000000914202b37434e5a65717d88949fabb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aca195897e72675b5044382d21160a0000000000000000010b151e262f384049515a626c717d869197a1abb6bac2cfc4bab0a79f9690857c706b615950483f362e251b11060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424c57626c75808c949ea7b0bac5cfd4d3cac2bab2aaa29c949089827d7874716e686a69686869696a686e7174787c81868d929c9ea5aca49d938f837b6f6b625b524b423a322920170d0300000006121e2935404c57636f7a86919da8a8a8a8a8a8a8a8a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f65646d71767b7e8183858586858583817f7c78736f6a635f58524b443d352d251d150c04000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a4640382f261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12192025282b2b3434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343432312e2a251f1710070000000914202b37434e5a65717d88949fabb7bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8aca195897e72675b5044382d21160a000000000000000000040d161f273039414a525b636d727e87919ca1aab2bbc3cac0b8afa69e958f847b6f6a60584f473e352b201c130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333e48525b636f7a849097a0abb6bcc4cdd5d2cac2bab3aba59e9b928e8983807c7a7776747474747576787a7c7f83878c91979ba2a9aeb4ada49d948f837b706b625b524b423930271d130900000006121e2935404c57636f7a86919c9c9c9c9c9c9c9c9c9c968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e5c63656b6f737678797a7a7a79787673706c68636059554f48423b342c251d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a32383d40424242424242424242424242424242403f3b362f281f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f333637404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403d3c39352f2820170e0500000914202b37434e5a65717d88949fabb7c2cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc3b8aca195897e72675b5044382d21160a0000000000000003080c0f11172028313a424b535c646e737f8b909aa2abb3bcc4c8bfb7aea59e948f837a6f695f574e453a2f2c241b120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19242e38424b56606a717d87919ca2abb4bcc5cdd5d2cbc3bcb5aea9a39c9a948f8b8885838180807f8080828385888b8f93989ca0a7abb4b8bdb4ada49d948f847b706b625b524a41372d23180d02000006121e2935404c57636f7a869191919191919191919191918b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000010c17222c36404950556263636363636363636363636363635c5a5553585a6164676a6c686e6f6e686c6a6865625b5856504a453f38322a241c150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e32353636363636363636363636363636363534312c261f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3830281f150b01000914202b37434e5a65717d88949fabb7cad4ded6d6d6d6d6d6d6d6d6dbd7d5d4d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2cfc3b8aca195897e72675b5044382d21160a000000000000060d12171b1d1e1e2129323b434c545d656f75808c919ba3acb4bdc5c7bfb6ada49d938e82796e685e5449453d342b231a1109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29313c465059636d74808b929ca3acb5bdc5cdd4d4ccc6beb8b4aca7a49d9b9796908e8d8c8b8b8b8c8d8f9096969a9da3a8aab0b7bbc3c5bdb4ada49d948f847c706c625a51473c31261b1005000006121e2935404c57636f7a85858585858585858585858585857f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a575757575757575757575757575757514f4b494d5156585b5e585f6363635f585f5c5957524c4b46403b362f27221a130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152029333c43494d4e5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575754534f4841382f251b1006000914202b37434e5a65717d8894a7b0bac4cfd7dfe8e2e2e2e2e5ddd6d1cccac9c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c3b8aca195897e72675b5044382d21160a0000000000070f161c2226282929292929333c444d555e636e78818d929ca4adb5bec6c6beb5ada49c928d81786e635e554d443c332a22191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17222c374049535c636e78828e939da4adb4bcc4cfd4d6cec8c2bcb6b2ada8a6a69f9c9a989797969797999a9c9fa6a6a8acb3b5bac0c8cecdc5bdb5ada49e9490847c706a61564b4034291d1206000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a00000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413e41474b4c50534f54575757544f53514d4c48423f3c37302c261f171109030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1a17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a63636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363605e5951483f352a20150a000914202b37434e5a65717d8897a0abb5bcc6cfd8e2ecf7f0e6ddd5cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8aca195897e72675b5044382d21160a00000000060f171f262c3134353535353535353d4549545e686e79828e939da5aeb6bfc7c5bdb4aca39b918c80756f655d544c433b32292118100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d2630384349545f686f7a838f949da4acb4bbc4cad0d8d2cdc6c1bdb7b3b2afaaa8a6a4a3a2a2a3a3a4a6a8aaafb1b3b7bdc1c4cad0d8d4cfc5bdb5ada59e9490847b6f64584c41352a1e12070000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f14090000000000000000000000000000000000000000000000000000000000000000000000060f171f262c313440404040404040404040404040404039383633373d40414447454a4b4c4b4a45484542413e3934312d27211c150e060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e111313131313131313131313131313131312110f0c0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d0008131f2a36424d5964707c86919ca3acb6bfc8d2dde5eeeae0d6cdc4bdb7b3b1afafafafafafafafafafafafafafafafafafafafafafafafafafafaca195897e72675b5044382d21160a000000030d161f2830363c3f404040404040404040454e5760696f7a838f949ea6afb7c0c8c4bcb3aba29a908a7f736e645c534b423a312920170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028303a454f5860696f7b838f939ca3abb5bac0c8ced3d6d0ccc7c2bfbeb9b5b3b1b0aeaeaeaeafb0b2b3b5b9bdbec1c6cccfd4d8d0cac4bdb6afa8a19c908b80746a61564b4034291d12060000010c17222c36404950556263636363636363636363636363635c5a554e453b31271c1106000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434343434342e2d2b272d32343539353b3e4040403e3b35393635332e2926221d16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507080808080808080808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31251a0e0007131e2a35414c57626c74808b929ca5aeb8c3ced5dee8e6dbd1c6bdb4aca8a6a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a195897e72675b5044382d21160a00000008121c26303840464a4c4c4c4c4c4c4c4c4c4c4c5058606a6f7b8490959fa7afb8c1cac3bbb2aaa19c91877e726d635c534a413930281f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18202b353e475059616a6f7b838e939ba2aab0b7bdc3c8ced3d7d1cdcac9c3c0bfbdbbbabab9bababbbdbfc0c4c9caccd1d7d7d0ccc8c0bab5ada69f97918b80746f665a51473c31261b100500000008121c26303840464a575757575757575757575757575757514f4b453e352b22170d0200000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292929292922221f1e2327292a2d2b303334353433302b2e2b2a28241f1b17130d070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d8585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858582776c6054493d32261a0f0005111c27323d48525b636e79828e959fa9b4bac5cdd8e0e3d7ccc1b7aca39d9a989898989898989898989898989898989898989898989898989898989895897e72675b5044382d21160a0000010c17222c36404950555758585858585858585858585859616b707c8590969fa7b0bac5cfc2bab6aba19791867d716c625b524941382f261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e374049515a616b6f7b828d929ca0a7adb4b9bfc3c9cdd2d6d5d3cecbcac8c7c6c5c5c5c6c7c9cacbced3d5d6d3cecbc6c1bcb7b0aaa49d9590877f746f665f564a41372d23180d02000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b120800000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d17161413181b1d1e21212528292929282521221f1e1c1914100c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506090c0e0e0e0c0906060401000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d8891919191919191919191919191919191919191919191919191919191919191919191919191919191919191918e83776c6054493d32261a0f00030e19242e38424a545f686f7b85909ca1aab4bdc7d0d9e1d5cabeb3a89d938f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c897e72675b5044382d21160a0000040f1b26313c46505960636363636363636363636363636363636c717d869197a0abb6c1ccd0c5bab1a8a09690857c706b615a514840362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e263038414a515a616a6f7a818a91969da4a9afb5b9bfc2c7cacdd2d4d5d6d4d2d1d1d0d1d1d3d4d6d5d3d2cecbc9c3c0bcb6b2aca7a09c938f857e746f665f564e463930271d13090000000000060f171f262c3134404040404040404040404040404040393836312b251d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111111111110b0a09090d10121311161a1c1d1e1d1c1a16111313110e0a040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f11121518191a19181512110f0c080200000000000000000000000000000000000000000000000000000914202b37434e5a65717d88949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8e83776c6054493d32261a0f00000a141e28303b454f58616b727e89919aa4adb7c0c9d3ded4c9bdb1a69a8f83808181818181818181818181818181818181818181818181818181818181817d7165594e42372b1f1408000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727e87919ca8b4bfcbd4cac1b8b0a79f9590847b706a615950463b31261a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f283039414a515a61696f767f868f939c9fa6aaafb4b8bebfc2c7c8cacbcccfd4cececed4cfcccbc9c8c8c3bfbeb9b5b3aca7a39c96918b837c726d655f564e463e352920170d03000000000000070f161c2226283434343434343434343434343434342e2d2b27221b140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006060606060606060606060606060000000002050607070b0f11121212110f0b07080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12161a1c1d202325262524211d1d1a17120c07020000000000000000000000000000000000000000000000000914202b37434e5a65717d88949fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a69a8e83776c6054493d32261a0f0000050f16212b353f47515a646d75808c939da6afb9c4cfd6d6cabeb3a79c90847b757575757575757575757575757575757575757575757575757575757575716c63584c41362a1f1308000006121e2935404c57636f7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7f8b97a2aeb9c5d1d1c9c0b7afa69e948f837a6f6960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f172029313a4149515960636f737d838a90959c9fa6a8aeb2b4b8babcbebfc1c5cac2c3c2cac5c1bfbebcbbb8b4b3afa9a7a39c9a928e868079706c645d554e463e352e251810070000000000000000060d12171b1d29292929292929292929292929292922221f1c17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161c212528292c2f3031302f2c292826221c17120c0500000000000000000000000000000000000000000000000914202b37434e5a65717d88949fabb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b1a69a8e83776c6054493d32261a0f00000007111b252e37414a545d636f7a838f969faab5bbc5ced6cbc0b4a99f958e82796e6969696969696969696969696969696969696969696969696969696965635c53493e33281d110600030f1a26323d4954606c7782868686868686868686868686868686868686868b9099a4afbbc6d1d9d0c7bfb6aea59d948e82796f63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101821293139414950555e656c71797f858c90969b9ea5a7a8aeafb1b2b4b6bab6b7b7b7b6bab6b4b2b1afaea9a7a69f9c98928e88827c746e69625b544c453e352e251d15080000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21262c303334373b3c3d3c3b383534312c26211c160e06000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6c9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbdb1a69a8e83776c6054493d32261a0f000000010b151e27313a444a556069707c86919ca2abb5bec8d1cec3b8aea59c928b80746d635a5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5958534b43392f24190e0300030f1a26323d4954606c77838e9292929292929292929292929292929292929799a0a9b3bec9d4e0d8cfc7beb5ada49c938d81756a5e53473b3024190d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810192129303840464a555c63686e737b80858b9094979b9ea5a3a5a7a8abb0ababacababb0aba8a7a5a4a59e9c9995908d88827d77706c636058524b443c352d251d150d040000000000000000000000000104061111111111111111111111111111110b0a09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104050606060604010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b30363b3f4043464848484643403f3b36302c261f17100800000000000000000000000000000000000000000008131f2b36424d5964707c8793a6afb9c4cfcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc8bdb1a69a8e83776c6054493d32261a0f00000000050e162129313b465059626c737f8a929ba5aeb8c1cad2c8bfb6aca39c91877d716a61565252525252525252525252525252525252525252525252524e4c49433b32291f150a0000030f1a26323d4954606c77838e9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9da2a4a9b1b9c3cdd8e8dfd7cec6bdb4aca39a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081018202830363c454b53585f636a6f757a7f84888c909495989a9b9ca0a79fa0a09f9fa7a09c9b9a989595908d8985817d77716d64625b555048423a332c251d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080b070c0f11121212110f0c070c0a07070502000000000000000000000000000000000000000000000000000000000000000000000000000000070f1820272e353b3f454a4c4e52535453524f4c4a46403b362f2720191008000000000000000000000000000000000000000007131e2a35414d58646f7b87969faab5c0ccd7d6d6d6d6d6d6d6d6d6d9d5d2d2cececececececececececececececececececec8bdb1a69a8e83776c6054493d32261a0f0000000000061019212c364048525b656e76818d949ea7b0bac5cfcfc6bcb6aba09790847a6f635e554b4747474747474747474747474747474747474747474742413e39322b22190f050000030f1a26323d4954606c77838e9aa6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aeafb3b9c1cad3dde7e7dfd6cdc5bcb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c313b43484f555a61646a6f74797c808487898c8e9091979394949494939397918f8e8c8a8784817e7a75716c66635c57524a463f38322a231b140d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060707070707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a0e1113131612161a1c1d1e1d1d1a171218151312100d0905020000000000000000000000000000000000000000000000000000000000000000000000060f18202830373f454a4f55575a5d5f605f5e5a5755504a463f383129211910070000000000000000000000000000000000000006111d2934404b57636e7885919ca8b3bfcad6e2e2e2e2e2e2e3dbd4cecac7c6c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3bdb1a69a8e83776c6054493d32261a0f00000000000008121c262f38424b555e636f7a849097a0abb6bcc6cfcfc5bab0a79e948d81766e655b524840363b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3736332f29221a1209000000030f1a26323d4954606c77838e9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b9bbbec3cad1dae3e2e2e6ded4c8bdb1a69a8e83776c6054493d32261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222b32373f454a51565a6063686e7175787b7e80828485878788888988888787858482817e7c7976726e6965635c58534c48423b362f27211a130b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104050608070c0f1112121313131212110f0c0708060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1114191c1e1f22242125282929292825212523211e1e1c1814110e09040000000000000000000000000000000000000000000000000000000000000000040d162028303940474f54585f6366696a6b6a69666360595550484139312921170f0600000000000000000000000000000000000005111c28333e49545f6878838f9aa6b2bdc9d4e0ebf5eeeee4dbd2cbc4bfbcbab7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b1a69a8e83776c6054493d32261a0f000000000000020c161f28323b454b56616a717d87919ca3acb6bfc8d2cac1b8aea59b928a7f736c625950463b312f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b2a28241f19120a01000000030f1a26323d4954606c77838e9aa6b1bdc0c0c0c0c0c0c0c0c0c0c0c0c0c0c5c6c9cdd3dad6d6d6d6d6d6d4c8bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d121a22272f353b41474b5156575e6365696b70727577787a7b7c7c7d7d7d7c7c7b7a78777573706c6a6663605958534d49433e38302c261f171109020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c0f11121412171a1d1d1e1e1f1e1e1d1d1a17121412110f0b070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f14191c1f24282a2b2d302c303334353533302c312f2d2a2927231e1c18140e0a050000000000000000000000000000000000000000000000000000000000010b151e263039404950585f63696e717476777675726f69636058514a413a31281f160c020000000000000000000000000000000000030e1a25303a454f586a75818d98a4afbbc7d1dbe6f3f3e8ded4cbc2bab4b0afacacacacacacacacacacacacacacacacacacacacacaca69a8e83776c6054493d32261a0f00000000000000060f17222a313c47515a636d74808b939ca6afb9c3ced1c8beb5aba29c91867c706960554a443a31271e2424242424242424242424242424241f1f1d19150f090100000000030f1a26323d4954606c77838e9aa6b1bdc8cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc8bdb1a69a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030812161e252b30373d40474b4e54575a5b616467696b696e7070717172717170706e696b6a6764625b5b5755504d49433f3a332e28211c160e0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f12161a1c1d2022212528292a2a2a2a2929282521221f1d1c1a16110e0b07010000000000000000000000000000000000000000000000000000000000000000000000000000050a10151a1f24282a2e333536393b363b3f4040403f3b363c3b383635322e2927231e19150f090300000000000000000000000000000000000000000000000000000007111b252e374049505960686e73797d80818282807d7a736e69615a514a41382f261c12080000000000000000000000000000000000000b16202b3544505b67737e8a95a4adb7c1ccd9e3edeee3d9cec4bab1aaa5a3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8e83776c6054493d32261a0f000000000000000007111a222d374049535c636e79828e959fa9b4bac5cdcec5bbb5aa9f968f837a6f635d544a41372f251b11181818181818181818181818181413110e0a05000000000000030f1a26323d4954606c77838e9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b21272d32373c3e45494b4e5257585b5e585f63646565666666656564635f585e5b5957524f4c4a463f3e39342f2a241f17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c12161a1c212528292b2e2c30333535363636353433302c2e2b292825211c1a16110b08030000000000000000000000000000000000000000000000000000000000000000000001070f14192025292e3335393e4142444749454a4c4c4c4a464948464441403d3835322e28241f18130d0700000000000000000000000000000000000000000000000000000b16202b353e475059606a6f797e84888c8d8e8d8c89857f796f6b615a514840362c21170d03000000000000000000000000000000000007111f2a36414d5864707b87939da8b3bfc9d3dee8ebe0d5cabfb4aaa19a989494949494949494949494949494949494949494949494948e83776c6054493d32261a0f00000000000000000108131d273039434a545f68707b85909ca1aab4bdc7d0cfc4b9afa69d938c81756e645b52483f352b2118100d0d0d0d0d0d0d0d0d0d0d0d080806030000000000000000030f1a26323d4954606c77838e9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b1a69a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161d23272d31353a3e4042484b4d4f524f555758595a5a5a5a59595857554f52504d4c4844403f3b36332f29252019140f07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070d13171c2125282c3033343739363b3f404141414141403f3b3639373433302b2825201b17120c060100000000000000000000000000000000000000000000000000000000000000050b11161f242a2f34393e4142484c4d5052544f5557585755505554524f4d4b4841403d38332f29231d171008030000000000000000000000000000000000000000000000030e1a25303a454f58606a6f7a828a909497999a999895908b827b6f6b615950463b31271d1308000000000000000000000000000000000007121e2935404c57626b78838f9aa6afb9c4ced7e1ecded2c7bcb0a59a918c8989898989898989898989898989898989898989898989898982776c6054493d32261a0f000000000000000000030d172028303b454f58616b727e89919ba4adb7c0c9d3c9c0b7ada49a91897e726b61584f453b302920170d0301010101010101010101000000000000000000000000030f1a26323d4954606c77838e9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e13181d22252b2f3334383d40414447454a4c4d4e4e4f4f4e4e4d4d4c4a45474442403d383533302c26241f1a15100a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161d22252b3033363b3f40424547464a4c4c4d4d4d4c4c4a46474542403e3b3533302b25221c16110b040000000000000000000000000000000000000000000000000000000000060e151b21282e333a3f42484c4d5257595c5e60585f6363636059615f5d5b5857524d4c48423e39322d272018130b040000000000000000000000000000000000000000000005111c28333e49545f686f7a838e929b9ea5a4a5a4a59f9c938e847b6f6960554a40372c22170c010000000000000000000000000000000005101c27323d48525b68747f8b969faab5bec7d2dce4ddd2c6baafa3988c807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d71655a4e42372b20140800000000000000000000061018212b353f47525b646e75818c939da7afb9c4cfd0c7bdb4aaa19c90857b70685f554a433930271d130801000000000000000000000000000000000000000000030f1a26323d4954606c77838e9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8e83776c6054493d32261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d13171b202427292e32353638363b3f40414242434343424241403f3b35393635322e292825211c1a150f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b21272d31353b3f40454a4c4e5153505557585859585857555053504e4c4a45403e3a35312c26201b140d050000000000000000000000000000000000000000000000000000010810161e252b30383e43494d5257595b6265676a6b6d696e6f6e696d6c6b696764615b5957524c49433c373129231b150d050000000000000000000000000000000000000000030f1a25303b454f58636e78828e939ca2a9aeb0b1b0aea9a39c948f837a6f635950463c31261b100400000000000000000000000000000000020d18232e38424c58646f7b85909ca5aeb8c2cdd4dce1d5cabeb3a79c90847b727272727272727272727272727272727272727272727272716c63584d41362a1f1308000000000000000000000007111b252e37414a545d636f7a838f969faab5bbc6cecdc5bab4a99f958e82796e635c534941372d221a1107000000000000000000000000000000000000000000030f1a26323d4954606c77838e9191919191919191919191919191919191919191919191919191919191919191919191918e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b1116191c1d2327292a2d2c3033343636373738373736363433302b2d2a2a27241d1d1a17120c0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010611161e252b30373c3f454a4c4f55575a5c5f59606363646464636360585e5c5957554f4b49453e3c362f2b251e1611090300000000000000000000000000000000000000000000000109111920272e353b42484c54585b6265696c70737577787a7a7a7a7a7978767472706b6964625b58534b474139342c251d150d050000000000000000000000000000000000000005111c28333e4a545f68727e8a929ca4abb4b8bbbcbcb8b4aca59d938b7f746a60564b3f34281d1106000000000000000000000000000000000009141e2934404b56616a75808c949ea9b4bac3ccd6ded6cbbfb4a99e958f837b706c66666666666666666666666666666666666666666665635c53493e33281d12060000000000000000000000010b151e27313a444a556069707c86919ca2abb5bec8d1cec3b9afa69c938b80746d635a51473c312a22170f060000000000000000000000000000000000000000030f1a26323d4954606c7782858585858585858585858585858585858585858585858585858585858585858585858585858582776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1014181c1e1e21212528292a2b2b2c2c2c2b2b2a29282521221f1e1c1914110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111a22272f353b40474b4f5557585f6365686a6c696e6f70706f6f6e696c6a6765635f5857544f4a46403a352e262119130b04000000000000000000000000000000000000000000010a121a222931373f454a52575d63666c7075787c7e8183848586868685858382807e7b7874706b65635c56514a443c352d251e150d0400000000000000000000000000000000000006121d2934404b57636e7984909ba2abb4bcc2c8c8c8c3bcb5aca39c90857a6f63584c4035291e1206000000000000000000000000000000000005101b27323d47515a636f7a84909ba1aab3bcc5ced7d9cec3b8aea59d938f837c726d6360595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58534c43392f241a0f04000000000000000000000000050e162129313b465059626c737f8a929ca5aeb8c1cad2c8bfb6aca39c91877d716a61564b453b32281f160c0200000000000000000000000000000000000000030e1a25313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090d10121312161a1c1d1f1f202020201f1f1e1d1c1a16121313110e0a0604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202a32373f454a5156585f6366696e71737677797a7b7b7b7b7b7a79777673716e6866635f58555049453e36312a241c150d05000000000000000000000000000000000000000109121a222a323941474f545b62646d71777c8084878a8c8e909197919791908f8e8c898783807b76716c64615a544d453e362e251d150b0200000000000000000000000000000000000914202b37434e5a65717d88949ea8b3bcc4cdd2d3d2cec5bcb4a99f95897e72675b4f44382d21150a0000000000000000000000000000000000020d18232d37414b56606a717d89909aa3acb5bec6cfd7d2c8beb6ada49d948f857e756f69635c55504f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4d49433b33291f150a0000000000000000000000000000061019222c364048525b656f76818d949ea7b0bac5cfcfc6bcb6aba09790847a6f635e554b42382f261c120800000000000000000000000000000000000000010d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707070c0f111213141415151414131312110f0b07080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b2f3a42484f555a6063696e72767a7c7f818384868687878786868483817f7c7a75716e68636059544e47423a342c251d150d0500000000000000000000000000000000000007111a222b323b424a51585f636c70777d82878c909496989a9b9ca09da19c9c9b999795938f8b86827c766f6a645d564e463e362e251b130800000000000000000000000000000000000c17232f3a46515d6874808b97a5aeb8c3ccd5dcdfddd6cec3b9afa6988c81756a5e52473b3024190d01000000000000000000000000000000000009131d27313c47515a636d74808c929ca4adb6bfc7ced6cfc6bdb4ada49d959089807a716c636059534b46434343434343434343434342413e39332b22190f0500000000000000000000000000000008121c262f38424b555e636f7b849097a0abb6bcc7cfcfc5bab0a79e948d81766e655b524840362c22191106000000000000000000000000000000000000000a15202a353f4851595e606363636363636363636363636363636363636363636363636363636363636363636363636363605e5951483f352a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104050607080809090908080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e262e353a454b52585f636a6f74797d8185888b8d8f9095929293929295908e8d8a8884817d79736f69635e57524a443d352d261e150d0500000000000000000000000000000000060f18212a323b434b525a61686e747c82888e92979b9ea5a4a5a7a8aab0aba8a7a6a5a3a49d9b97918e88817b726d655f564f463e352c23181007000000000000000000000000000000020d1924303b47535e6a75818d98a4afbbc7d2dce5ece6ddd3c8bcb1a5998e82776b5f54483d31251a0e030000000000000000000000000000000000040e17222d374049545d636e79828e949ea6afb6bec6cdd4cdc5bdb5ada69f9c918c837d746e69635c565049423b38383838383838383736332f29221b120900000000000000000000000000000000020c161f28323b454b56616a717d87919ca3acb6bfc8d3cac1b8aea59b928a7f736c625950463b312a21160e0500000000000000000000000000000000000006101b252f3841484f5354575757575757575757575757575757575757575757575757575757575757575757575757575754534f4841382f251b1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272e363e4549555b62686e737a7f84898d909596999a9c9ea59e9e9ea59e9b9a989695908d89847f7a726e68625b544d453e362e261d150c040000000000000000000000000000030d162028323a434b535b626b6f7980868e929a9ca3a7a8aeafb1b2b3b5bab6b4b3b2b0aeada8a8a19c99918d847e746f665f564e463c332920170d030000000000000000000000000000020e1925313c48535f6b76828d99a5b0bcc7d3dfecf6ede0d4c9bdb1a69a8f83776c6055493d32261b0f0400000000000000000000000000000000000008131d273039434a545f686f7b848f959fa6aeb5bcc4cfd3cdc5bdb6afa9a19a938f868079716d636059534b443b352e2c2c2c2c2c2b2a28241f19120a020000000000000000000000000000000000060f17222a313c47515a636d74808b939ca6afb9c3ced1c8beb5aba29c91867c706960554a443a31271e150c020000000000000000000000000000000000010b151f2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3830281f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606060605040100000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f474e545e656c70797f858b9094989c9fa6a4a6a7a9aea9aaa9aea9a7a6a4a59e9c98948f8a847e78706b645d564e463f362e251c140a010000000000000000000000000008121d263038424b535c636c707b828b91969ca3a7acb2b4b8bbbdbebfc1c4c1bfbfbdbcbab7b3b1aba8a29b9590877f7570665f564c443930271d13090000000000000000000000000000020d1924303b47535e6a75818d98a4afbbc7d2dce5ece6ded3c8bcb1a5998e82776b5f54483d31251a0e03000000000000000000000000000000000000030d172028303b454f58616a707c8590959ea5acb4bbc4c9d0cec7bfb9b4aaa49d97918c837d756f6a625c554a453f373028202020201f1d1a150f09020000000000000000000000000000000000000007111a222d374149535c636e79828e959fa9b4bbc5cdcec5bbb5aa9f968f837a6f635d544a42372f251b1107000000000000000000000000000000000000050e1720282f35393c3d40404040404040404040404040404040404040404040404040404040404040404040404040403d3c39352f2820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070b0f1112121211100e0b060a0807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090c070c0f11121212110f0c070b09060504010000000000000000000000000000000000000000000000000000000000000008121b212b353f474f575e636e737c838a90959b9ea5a7a9afb0b1b3b4b8b5b5b5b8b4b3b1b0aea9a7a49d9b94908a827b726e655f564f463e362d241a1207000000000000000000000000050e16222c374049525b636c717c848e929ca0a7acb2b6bcbfc2c7c8cacbcccfcccbcac9c8c7c1c1bab6b4aba59e97918b80756f665d544941372d22180f0500000000000000000000000000000c17232f3a46515d6874808b97a5aeb8c2cdd5dcdfddd6cec3b9afa6988c81756a5e52473b3024190d0100000000000000000000000000000000000000060f18212b353f47515a626c717d8590949da3abb5bac0c7cecfc8c3bab4ada7a09c948f87807a706c645e544f474038302920181413120f0a050000000000000000000000000000000000000000000108131d273039434a555f68707b85909ca1aab4bdc7d0cfc4b9afa79d938c81756e645b52483f352b211810050000000000000000000000000000000000000710171f252a2e3132343434343434343434343434343434343434343434343434343434343434343434343434343432312e2a251f17100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e1111141611161a1c1d1e1d1d1c191611161312110e0a06030000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080c101112151712171a1d1d1e1d1c1a1612171412110f0c070300000000000000000000000000000000000000000000000000000000071018232b303b454f585f686e757f858f939c9ea5a9aeb3b5b9bbbdbebfc3c8c1c8c3bfbebdbbb8b4b3ada8a59e9b938e857e746f665f564f463d352b22170f0600000000000000000000020c151e27313c465059626c717d8590949ca3aab0b7bcc1c6cacdd1d4d3d0cfcecfd0d2d5d3d1cccac5c1bbb6aea8a19c908b7f746d635a51473c31281f140a00000000000000000000000000000914202b37434e5a65717d88949ea9b4bcc4cdd2d4d2cec5beb5a99f95897e72675b4f44382d21150a00000000000000000000000000000000000000000007111b252e374149525b636c717c848f939ba1aab0b7bdc5ced2cec5bdb8b0aba49d97918c837c726e635f5850494139312920180f0604000000000000000000000000000000000000000000000000030d172029303b454f58626b727e89919ba4adb7c0c9d3c9c0b7ada49b91897e726b62584f453b302920160d04000000000000000000000000000000000000070e151b202325262929292929292929292929292929292929292929292929292929292929292929292929292929262523201b150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e11161a1c1d1f22242125282929292927242024211f1e1c1914110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f13171b1d1e2023252125282929292825212522201d1c1a16120f0b0701000000000000000000000000000000000000000000000000030d172029333c434a545f686e78808a90969da4a9aeb4b8bec0c3c9c9cacbced2cdd2cecbcac8c8c3c0bdb7b3aea9a39c9590897f7570665f564e453b32281f160d0300000000000000000007111b252f373f4b56606a707c8590959ea5acb5bac0c8ccd0d3cecbcac7c4c3c2c3c4c6cacbcdd2d4d0ccc6beb8b1aba19c91877e726a61564b42382e24190d030000000000000000000000000006121d2934404b57636e7984909ba2abb4bcc2c8c8c8c3bcb5aca39c90857a6f63584c4035291e1206000000000000000000000000000000000000000000010b151e273039424b535c636c707b838d919ca0a7adb5bbc3c8cfcdc8c0bab5ada8a19c948f867e756e68605951494139312820160d0400000000000000000000000000000000000000000000000000071018212b353f48525b646e75818d949da7b0bac4cfd0c7bdb4aaa19c90857b70685f554a433930261e140b01000000000000000000000000000000000000050b1015181a1a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a1a1815100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b1116191c202528292b2d302b303334353534332f2b2f2d2a2a27231e1c19150f0b060000000000000000000000000000000000000000000000000000000000000000000003090d12171b1d222628292c2e312c303335353433302c302e2b292825211c1a16110b07020000000000000000000000000000000000000000000009131d273039434c565f636e79818c909c9fa6adb4b8bfc2c7cbced3d4d6d5d4d3d2d3d4d6d5d4d2cecbc7c2beb8b4aca69f9c908b80756f665e554b433830261c12080000000000000000000b16212b353f48545d636f7a838f959ea6aeb5bcc4cad0d3cec9c3c0bfbbb9b7b7b7b8bbbebfc2c7cdd2d6cfc9c1bab6aba19790857b6f635b52483e33271d13080000000000000000000000000005111c28333e4a545f68737e8a929ca4abb4b8bcbcbcb9b4aca59d938b7f746a60564b3f34281d110600000000000000000000000000000000000000000000050e162029323b434c535c626b6f79818a91969da4abb4b8bfc6cfd1cac4bdb8b1aba49d96918a80796f69615a514a413930261e150b010000000000000000000000000000000000000000000000000007111b252f37424a545d636f7a838f96a0aab5bbc6cecdc5bab4a99f958e82796e635c534941362e251b11060000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111111111111111111111111111111111111111111111111111110f0e0d0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161b2024272b30333437393b353b3e404040403e3a353b393635322e2a28241f1a16100a0500000000000000000000000000000000000000000000000000000000000002070d13181c2226282c313435383a3c363b3f4040403f3b363c39373433302c2825211b17120c050000000000000000000000000000000000000000020d18222d374149535d666f75808c919aa1aaafb7bdc3c8cdd2d7d6d2cdcbcac8c7c7c7c8cacbced2d6d6d1cdc8c2bcb6afa9a099918b80746e655c534940362c22170e0400000000000000030f1a25303b454f58636d76818d949da5aeb6bec5cfd4cfc9c3bfb9b5b3b0adacabacadafb2b4b8bec2c7ced6d1cac5bab1a89e958c81756c62574c40372c22170c01000000000000000000000000030f1a25303b454f58636e78828e939ca2a9aeb0b1b0afa9a39d948f837a6f635950463c31261b10040000000000000000000000000000000000000000000000061018222a333b434b535a61696e757f868f949ba1a9aeb6bcc4c9d0cfc9c1bab6ada69f9c908c817a6f6a615a514940372e251b110700000000000000000000000000000000000000000000000000020c151e27313a444a556069707c86919ca2abb5bec9d1cec3b9afa69c938b80746d635a51473e352b20170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e151c21252b2f33353a3e4042454749454a4c4c4c4b494548464441403d3835332e29252019140f0601000000000000000000000000000000000000000000000000000000050c12161d23262c3134373c3f4043464849464a4c4c4c4a4549474543403f3b3633302b25211c160f090300000000000000000000000000000000000005101b26313c47515a636d74808b919ba2aab5b9bfc7ced2d7d1cdcac8c3bfbebdbcbbbcbdbebfc3c8cbcdd2d8d2cdc7bfb9b4a9a19a908a7f736c635950463c31281e14090000000000000005111c28333e4a555f68727d89919ba4adb6bec6ced5cdc7bfb9b5afaaa8a4a2a0a0a0a1a4a7a9aeb4b8bec5ccd4d4cac1b8aea59c91877c70645950463c31261b1004000000000000000000000000000b16212b353f49545f686f7a838e929b9ea5a4a5a5a69f9c938f847b6f6960554940372c22170c0100000000000000000000000000000000000000000000000008111a222b333b424a515960636e737d838d919c9fa5acb5b9c0c7cdd1cac5bdb7afaaa19a928e827b6f6a615950473e352b20160f0500000000000000000000000000000000000000000000000000050e16212a313c465059626c737f8a929ca5aeb8c1cad3c8bfb6aca39c91877d716a61574e453a2f281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14171f262c30353a3e4045494b4e5053544f5557585757544e5452504d4c4842413e3934302a241f16110b0400000000000000000000000000000000000000000000000001060e151c21272d32363c3f40464b4c4f5153555055575857554f5553514e4c4a45403e3b35302c261f17130d0700000000000000000000000000000000050f18212a34404b56616a717d87919ca1aab2bac4c9d0d7d3cec7c2bfbeb8b4b3b1b0b0b0b1b3b4b8bebfc2c8cfd3d7cfc8c3b9b1aaa09c91867d716960554a42382e23190e0400000000000006121d2934404c57636e79838f9ba2abb5bdc6cfd4cdc4bdb6afaaa69f9c999695949596989b9ea5a8aeb5bcc4ccd5d1c9bfb6aba1978c81756a60564b3f34281d11060000000000000000000000000007111b25303a454f58606a6f7a828a909497999a999895908b837b6f6b615950463930271d1308000000000000000000000000000000000000000000000000000109121a222a323a414850555e656c717a818990959ca3aaafb7bdc5ced3d0c7c0b9b5aaa29c938f837b6f6a60584f453a30291f140a0000000000000000000000000000000000000000000000000000061119222c364049535c636e78828e959ea8b1bac5d0cfc6bcb6aba09790847b6f685e5449423830261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020911181e23272f363b3e45494b4f5457595c5e60585f636363635e575f5e5b5957524d4c48423f3a332e29201b140d0500000000000000000000000000000000000000000000030a12171f262c30373c40464a4c5056585a5d5f6059606363635f58605f5c5a57554f4b4a453f3b362f27231d1710080100000000000000000000000000000a141e28333e48535c636f7b849097a1abb2bac2ced3d7cfc8c3beb7b4b2aea9a7a6a5a4a5a6a7a9aeb3b4b8bec4c9d0d8d3cec2bab5aaa0968f837a6f635b52483d32271e1309000000000005101c27323d47515a66727e89949da8b2bbc5ced6cdc4bcb4aca69f9c96908d8a8988898a8d90949b9ea5acb3bcc5ced9d0c5bab1a89c91857a6f63584c4035291e130900000000000000000000000000010b16202b353e475059606a6f797e84898c8d8e8d8c89857f796f6b615a514840362820160d030000000000000000000000000000000000000000000000000000020a121a222931383f464a555c636a6f757e858e929c9fa7adb4bac4c9d0d0c9c4bab3aba39d938f837a6f685f544942392e24191006000000000000000000000000000000000000000000000000000008121c2630384249545e686f7b849097a1abb6bcc7cfcfc5bab0a79e948d82786e635c534940362c22191106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b131921282e32383f454a4e5457585f6365676a6b6d686e6f6f6e686c6b696764625b5957524d4a443e382f2b251e160f070000000000000000000000000000000000000000040c131a22272f363b41474b50555759606366686a6c6d696e6f6e696d6c6a6865635f5857544f4a463f38312d272018120a02000000000000000000000000030e19242e38414c58626c75818c959ea8b1bac2cbd3d5cec7bfb9b4ada8a7a59e9b9a9998999a9c9ea5a7a9aeb5b9c0c7ced6d2cfc4bab0a79d948b80746b62574c41372d23180d020000000007121e2935404b57616b77838e9aa4adb7c2cbcdcfc7bcb4aca39d96908b85817f7d7d7d7e81848a90949ca3acb5bdc7d1d4cac1b5aaa0968a7e72675b5044382d23180d020000000000000000000000000007111b252e374049505960686e737a7d80828282807d7a736e69615a514a41382f26180f0600000000000000000000000000000000000000000000000000000000020a111921272f363b454b535960636e727b828a91969da4aab5b9bfc7ced3cfc3bbb4aca49d938e82786e635b52483e332a20160b010000000000000000000000010507090a0b0b0b0b0b0b0b0b0b0b0c161f282f3a454e57616a717d87919ca3acb6bfc9d3cac1b8aea59c928a7f736c625950463c312a21170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b232931383d44484f55575e6366686e7173757778797a7a7a7a7978777572706b6965625b59544c48423a352e2620181008000000000000000000000000000000000000040d151c242a32383f454a5156596063676a6f72747678797a7a7a7a7a79777673716e6966635f58555048443c373029221a130b02000000000000000000000005111c27323d48525b65707c86919ca5aeb8c1cad2d5cec5bdb6afa9a49e9b9695908e8d8d8e8e9095969b9ea5aaafb7bec5ced6d4cac0b7ada49c91867c70645a51473d32271b10050000000007131e2a36414d58646f7b87939ca7b4bdc7c1c1c9bfb6aca39d938f857f7a76737271727375797e848e939ca4adb7c2cdd5cfc4bab0a7998d81766a5a51473d32271b100500000000000000000000000000010b151e263039404950585f63696e717576777675726f69636058514a413a31281f1607000000000000000000000000000000000000000000000000000000000000010810171f262c303b434950565d646b6f787f868f939ba1aaafb7bec6cdd3ccc4bcb4ada49c928b7f746c62574c443a30251a100600000000000000000001070c1013151516161616161616161616161617202b353e47515a636d74808c939ca6afb9c3ced1c8beb5aba29c91867c706960554a443a31271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d252c333a41484b54585f63686e7175797c7f8183848585868685858482807e7c7875706c66635d575249453e3630282018100700000000000000000000000000000000040d151d252c343b42484f555a6164696f73777a7d8082838485868686858483817f7d7a76726e68636059544b474139322b231b130b020000000000000000000007131e2a35404c57626c76828e97a0abb5bec9d1d7cec5bdb5ada69f9c948f8b8784838281828384888b90959c9fa6aeb5bec6cfd8d0c8bdb5aaa0968d81766b61564b4034291f140a000000000b16222d3945505c67737f8a96a3acb6b5b5b5b5b5b9afa69d938f837b736f6a6866666667686e727b828e949da8b3bcc5d0d3c9beb2a79b9084796b61564b4034291e12060000000000000000000000000000040d162028353e45474f5458606366696a6b6b6966636059555048473f372a211811070100000000000000000000000000000000000000000000000000000000000000070f161c212b323840464a545a61686e737c838c919c9fa6aeb5bdc4cdd4cdc5bdb4aca29c91867c70655d544a3f342920150b0000000000000000030a11161b1e20212222222222222222222222222222252e364149535d636e79828e959fa9b5bbc5cecec6bbb5aaa0968f837a6f635d544a42372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151e252d353c444a52575d64696e73797d8184888a8d8e909196919195908f8e8c8a8784807c77726d65625b544e474038302820170f050000000000000000000000000000030c151d252d353d444b53585f636a6f757a7e8285898b8d8f909197919791908e8d8b8885817d79736e69645d56514a433b332c231b130a010000000000000000030f1a25303b454f5864707c86919ca7b0bac6ced9d0c7bdb5ada49d95908a847f7c797776767677797c7f848b91969ea5aeb5bec8d0d8cfc4bab0a79c91867b6f64584d42392e24190e030000020d1925303c47535e6a76818d98a4aaaaaaaaaaaaaaaaa99f958f837a6f6b6360595b5a5b585f636a6f7a838f9ba2acb6c0cbd6cbbfb4a99e94877b6f64584d41352a1e1307000000000000000000000000000006111c27323c454e565b5d606060606060606060606060605f5d5750473a32282119110b0500000000000000000000000000000000000000000000000000000000000000050c121a222830363c444a51575e636c707a818990969ea5adb4bdc4cdd5cdc5bcb5aaa0968e82776d64594d43392f251a0d03000000000000030b131a2026292c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e3039434a555f69707c85909ca1abb4bdc7d0cfc4bab0a79d948d81756e645b52483f352b211810050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141d252e363e454d545b61646e72797f84888d909596989a9b9ca09da69f9c9b999795948f8c87837d77706c635e575049403930281f160d04000000000000000000000000020a141c252e353e454d545c62696e747b80858a8e919697999a9c9ca09da09c9b9a989695908d89847f7a726e64615a534b443c332c231a1208000000000000000005111c28333e4a545f6875808c97a1abb8c1cad6d3c9bfb7ada49d948f857f7973706c6c6b6a6b686e70747a7f8690949ea5aeb7c0cad4d3c9c0b5aaa0968b8074685b52483e33281c1106000004101b26313c47515a6c78838f9b9e9e9e9e9e9e9e9e9ea79c90857b6f69615a56504f4e4f4f545a616a717d88929ca7b2bdc9d4cdc2b8aea594887d71655a4e43372b20140900000000000000000000000000000914202b36414b565f65686b6b6b6b6b6b6b6b6b6b6b6b6b6a6760574b4239312a211b150e0600000000000000000000000000000000000000000000000000000000000000020712181f262c313a41474e545b62696f757e8590949da4acb4bdc5cdd5cfc4bab0a79c92897d72665c53493e33261c12080000000000010a131c242a303437383939393939393939393939393939393939393b454f58626b727e89919ba4adb7c0c9d3c9c0b7ada49b91897e726b62584f453b302920160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131b252d363e464e555d646b70777e848a8f94989c9ea5a4a5a7a8aab0afa9a7a6a5a3a49d9b97938e89827c746e6860595149403830261e140b01000000000000000000000007121a242d353e464e565d646c707980858c9095999ca0a7a4a6a7a8abb0aba8a7a6a4a69f9c9994908a847e766f6a625c544c443c332b221810070000000000000006121d2934404b57636e7984909ca8b1bac8d1dacec4b9afa69d948f837c736e6965625b5f5e575e6365696f737d8490959ea7b0bac4cfd9cfc4bab0a79b8f84786c62574c41352a1e1307000006121d29343f4b56606a7985919393939393939393939393978b7f746b6159514b46434343454a5159636c77828e99a5b1bcc8d3d2c8b8aca1958a7e73675b5044392d21160a00000000000000000000000000000b16222d3944505b656f74777777777777777777777777777671675b5249423a302b251e1610070100000000000000000000000000000000000000000307090b0c0c0c0c0c0c0c070f161d222931363e4549525960636e727c848f939da3acb4bdc6ced4cac0b7aca39a8e83776d63584d40362c22170c010000000007111a242c343a3f4344454545454545454545454545454545454545454548525b646e75818d949da7b0bac4cfd0c7bdb4aaa19c90857c70695f554a433930261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232c353e464f565e656d727b828990949b9da4a7a9aeafb1b2b3b5bab9b5b3b2b1afada8a7a39c9a938e867f786f6a615a514940362e251b110600000000000000000000050f17222b343d464e565f656e727c838b90969c9fa6a8aab0b0b2b3b4b6bab5b4b3b1b0afa9a7a59e9b949089817b706c635d544c443b322920170d030000000000000914202b37434e5a65717d88959ea9b8c1cad9d7cbc0b5aa9f968f847b706c635f58575253534e54575960636c707b849097a0aab5c0c9d3d4cac0b3a89d94877c7065594d42362b1f1308000007121e2935414c58636f7a8687878787878787878787878787877b6f645a5149413c3737353b4149535c67737e8a95a1adb8c9d3d0c5b9ada2968b7f73685c51453a2e22170b00000000000000000000000000000b17232e3a45515d68747f8282828282828282828282828281766c6259524a433b352e272119110b05000000000000000000000000000000000002080d12151717181818181818181818121921262e353a424850555d646c707b838f939da4adb5bec9d1d0c8bcb3a79c93887d71655950463c31261b0f04000000010c16202a343d444a4e4f50505050505050505050505050505050505050505050545d636f7a838f96a0aab5bcc5d0cdc5bbb4a99f958e82796e635d534a41362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029343c454e565f666f747e858e929b9ea5a8adb3b4b8bbbdbebfc0c4c3c0bfbdbcbab7b3b2aca7a39c96918b817a6f6a615950473e352b20160e040000000000000000020c161f27333b454d565f666f747e868f939c9fa6a9afb3b5babcbdbebfc1c4c1bfbebdbbb9b4b3aea8a59e9b928d847c716d645d544b433930271d13090000000000030f1a25303b454f586974808c97a5aeb8c9d1dacec3b9afa69c90857c706a625b554f4c48484745494b50555c626b717d86919ca6afb9c4cfdacdc2b7ada4968b7f74685c5145372d22180d020006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c706a61564a4138312c2c2b3039434d5964707b8793a6afb9c4ced1c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000020d1924303c47535e6a76818d8e8e8e8e8e8e8e8e8e8e8e8e877c706a625b534a453f373129211b150e06000000000000000000000000000000040c12181d2022232323232323232323232323231e252b2f3840464a545c626b6f7a838f939da5aeb8c1cad4ccc1b6aca3988d81766960554a3f34281d110600000005101b26303a444d54595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c6069707c86919ca2abb6c0cbd5cec3b9afa69c938c80746d635a51473e352b20170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139444d555f666f747f8990959ca2a8aeb3b7bdbfc3c8c8cacbcccfcecbcac9c8c7c2bfbcb6b2aca7a09c928d827a6f6960574e453a2f281e1409000000000000000007121c262f38434c555e666f747f8991969da4aaafb5b9bfc0c4cac9cacbcccfcccbcac8c8c3c0beb8b4aea9a29b9490867e726d645c534a41372d23160d040000000005111c28333e4a555f6877838e9aa5b1bdc8d4d6cbc0b4a99f958b7f746c625a524a453f3e38353a3e40464a535a636d75808c969faab5c0ccd7d1c7bcb0a5998d82766b5a51473c31261b10040005111c28333e4a555f686e7070707070707070707070707070706b625a51473a31282220212934404c57636e7a86969faab5c0cbd1c5baaea3978c8074695d52463a2f23180c00000000000000000000000000010d1924303b47525e6a75818c989a9a9a9a9a9a9a9a9a9a978f837a706b635d544f47413a302b251e16100800000000000000000000000000040d151c22272b2e2e2f2f2f2f2f2f2f2f2f2f2f2f2f2c2b282f363b444b535a616a6f7a838f959ea8b1bac5d0d0c6bcb3a89c90857a6f63574c4035291e120600000007131e29343f4a545d646668686868686868686868686868686868686868686868686868686c737f8b929ca7b2bdc9d4d3c8bfb6aca39c91877d716a61574e453a2f281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a545d656f74808b909c9fa5acb4b8bec2c7cbced2d4d2cfcfcececfd1d4d3d1cdcac6c1bcb7b0aaa29c938f837a6f685e544941382e23180e04000000000000010c17212c363f48535c646e74808b909c9fa6adb5b9bfc3c9cccecbcac7c4c3c3c4c5c8cbcccecbc7c2beb8b4aba59e9691867e726c635a51473c31261e140b0100000006121d2934404c57636e7a85909ca8b3bfcad6d6cabfb3a79c90857a6f635c5349423b35332e2b2f33363b434a535c646f7b85919ca8b3bfcad6d5cabeb3a79b9084796a61564b4034291d120600030f1a25303b454f585f63646464646464646464646464646464625b524a4137292117121d28333f4a5560697985909ca8b3bfcad1c5baaea2978b8074685d51463a2f23170c00000000000000000000000000010c18232f3b46525d6975808c97a3a5a5a5a5a5a5a5a5a89d938f837b716d635f58514a443b352e27201810080000000000000000000000020c151d252c3236393a3a3a3a3a3a3a3a3a3a3a3a3a3a383734302c313b434a515a616a6f7b849097a1abb6c0c9d3cbc0b5aa9f96897d72665a4f43382c2113080000000915202c37434e59646e72737373737373737373737373737373737373737373737373737373737a828e99a5b0bcc8d3d9cfc7bcb6aba19790847b6f685e5449433830261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a646d747f8b9099a0a9aeb6bcc2c7cdd1d0cccac9c6c4c3c2c3c4c6c8c9ccd0d6d0ccc8c0bab5aba39d938d81786e635b52483d32281e1409000000000000040f1a25303b465059636c737f8a9099a0aaafb7bdc3c9cecec8c3c0bfbbb9b8b7b8b9bcbfc0c4c9cfcdc7c2bbb5aea69f9690867d716a61564b44362e251b110600000007131f2a36414d5964707b87969faab5c0cbd7cfc4bab0a7978c80756a60564b4239302b25242024272c313a434b56616a75818d98a4afbbc9d3d6cbbfb4a99e95867b6f63584c4135291e120700000b16212b353f484f55575959595959595959595a616467686e685e544943382f261e1c202934404c57636e7a85919ca8b4bfcbd0c5b9aea2968b7f74685c51453a2e22170b00000000000000000000000000000b16222e3945505c68737f8a96a5aeb1b1b1b1b1b1b1aca39d938f847d746e68615a544a453f373029201910080000000000000000000008121c252e353c4145464646464646464646464646464643423f3a332c323941495159616b717d87919ca6afb9c4cfcec4b9afa6978c8075695d5246372d22180d0200000a15212d38444f5b66727e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f808b97a3aebac5d1dfd7d0c5bab1a89e958e82786e635c534940362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a34404b56616a727e87919ca1a9b4b8bfc6cdd2cfccc6c1bebdbab8b7b7b7b8babdbec1c6cbcfd8d0cac4bbb4aca39b928a7f736b61574b41382e23180d02000000000006111d28333f4a556069717d86919ca0a9b5b9c0c7cecfc8c3bfb9b4b3b0adacacacaeb1b3b5bac0c4cad1cdc5beb7afa79f9690847b6f645d54473e352b20160b0000000915202c37434e5a66717d8894a6afb9c4ced7ccc1b5aaa097897d71665950463b3229211c1916191c2129323d47515a67727e8995a6afb9c3ced9cdc3b8aea593887c7065594e42362b1f1408000007111b252f373f454a4c4d4d4e5457595b6264686a6f7376796e635d53483f362f2928293039414d58646f7b8797a1abb6c1ccd0c4b8ada1968a7e73675c5045392d22160b00000000000000000000000000000814202b37424e5a65717c88959ea9b4bcbcbcbcbcbcb4aca49d95908780796f6b645d544f4741393129201910060000000000000000030d18222c353e464c5051525252525252525252525252524f4d4a443c332931394149515a636d75818c969faab5c0ccd3c9bdb1a69a8e83776c5a51473c31261b100400030f1a26323d4954606c77838a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b909aa4b0bbc6d2dddfd4cac1b8aea59c928a7f736c625950463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e49535c646f7b859097a1abb1b9c3c8cfd1cac4c1bdb7b3b1afadacabacacaeb1b3b6bcc0c5cfd4d4cfc4bcb4aba29c90857b70645b52483d32271c10050000000004101b26313c47515a636e79838f96a0aab1b9c4c9d0cec6bfb9b4afa9a7a4a2a1a0a1a2a5a8aab0b5bac0c8cfcec7c0b7afa69e948d81766d64574e453a2f24190e0300000a16222d3944505b67737e8a95a1adb8c9d3d6cbbfb3a89c91857a6f63574c4037292218120c0b0e1219232d37414c58646f7b86959fa9b5c0cbd7d2c8b7aca095897e72665b4f44382c21150a0000020c151e272f353b434c5358575e6365696b7074777b7e8282776d635950463f37343334394049535c67727e8a95a8b1bac5d0cfc4bab0a794897d72665a4f43382c201509000000000000000000000000000006121d2934404c57636e7984909ba6afb9c3c8c8c8c4bdb4ada59e97918b827b726d635f5851494139312920170e050000000000000007121d27323c464e565b5d5d5d5d5d5d5d5d5d5d5d5d5d5d5a59544c443a30293039414a545d646f7b85919ca8b3bfcad6cabfb3a79c9085796a61564b4034291d120600030f1a26323d4954606c77838e96969696969696969696969696969696969696969696969696969696979aa1aab4bec9d4dfe4dad1c9beb5aba29c91867c706960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38414d58636c76818d959ea8b1bac1ced2cec8c0bab5b4aca8a6a3a1a0a0a0a1a3a6a7acb1b5bbc4cad1d4cdc4bbb5aa9f968d81756b61574b4035291e13090000000006121d29343f4b56616a74808b949da7b0bac1cfd3cec5bdb6afa9a69f9c999695949596999ca0a7abb0b8bfc7cfd0c7bfb7aea59b91897d72685e54493e33271d120800000b17222e3a45515c68747f8b96a2aeb9c5d0d5c9beb2a79b8f84786960554a3f34281d110702000309131d2934404b56616a7985909ca7b3bfcad6cfc4b8ada1968a7e73675c5044392d22160a000000050e161e25343f49535d6366686e7174787c7f83868a8e887d716960554f4842403f4043495059636c76828d99a5b0bccad4ccc0b5aaa096877c7065594d42362b1f1408000000000000000000000000000005111c28333e4a555f6874808c959fa9b4bac3cfd4cdc4bdb6aea8a19c928e857e746e68615a514a413931271e150c020000000000000915202b36414c565f66686969696969696969696969696966635d544a3f342928313a434b56616b76818d99a4b0bbc7d3cbc0b4a99f95867b6f63584c4135291e120700030f1a26323d4954606c77838e9aa2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a4aab1bac3ced8e3ebe1d9cec6bcb5aaa0968f837a6f63574c4035291e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b65717d88929ba5aeb8c1cad2cdc5bdb8b0aba8a39d9a989595949495979a9ca3a6abb5bac0c8d1d5cec4b9afa69c91867b7064584d41382d23180d020000030e19242f3a454e57636f7b85909ca4adb7c0cad1cec6bdb5ada69f9c95908d8a89898a8b8e91969ca0a7afb6bfc8d0d0c7beb5aba29a8f83786e63574b40372c22170c01000c17232e3a46515d6874808b97a2aebac5d1d4c9bdb1a69a8f83776c5950463c31261b0f0100000005101b27323d47515a6d78848f9ba7b2bec9d5d0c4b9ada2968a7f73685c5045392e22160b0000000006141f2b36424d58636d7175797c8083878b8e9197998f83796e635f58524d4c4a4c4d5359606a717d88929ca6b2bdc8d6cbbfb3a89c91857a6e63574c4034291d12060000000000000000000000000000030f1a25303b454f58636f7b85909ca1aab2bbc5cad1cdc6beb8b1aba39c95908980796f6a615a514a41372f251c12070000000000000b17222e3945505b666f7474747474747474747474747474726d63594d42372b2129323d47515a67727e8a95a1acb8c4cfcec3b9afa693877c7065594d42362b1f130800030f1a26323d4954606c77838e9aa6adadadadadadadadadadadadadadadadadadadadadadadadadadaeb0b4bac1cad3dde7f2e9dfd6cfc4bab0a79d948c8175695e52473b3024180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b77828e99a2abb6bfc9d1cdc5bdb5ada7a09c98938f8c8a8988898a8c8e93999ba2abb0b8c0cad4d3c9bfb5aba0978b8074685a51473d32271b1005000005101c27333e49545e68747f8b959fa9b4bdc8d0d2c8beb5ada49d95908b85817f7e7d7e7f82858c91979fa6afb7c0cad4cec6bbb3a89d93897d72665950463c31261b0f04000c18232f3a46525d6974808c97a3aebac6d1d3c8bcb0a5998e82776b5f5448362c22170c01000000020d18232d374955606c77838e9aa6b1bdc8d4d0c5b9aea2968b7f74685c51453a2e23170b000000000915202c37434e5a66717d8084888b8f93969a9ca19d948d81766e68625b59575557585c636a6f7a838f9ba2abb5c0cbd4c9bdb1a69a8f8378695f554a3f33281c11050000000000000000000000000000000b16212b353f4b56616a737e8a919aa2abb6bac1c8cfcfc9c1bab6aca59e9c908c827b6f6b615a51483f352b21160f0500000000000c17232e3a46515d687480808080808080808080808080807e72665a4f43372d23232d38424e5a65717c88949fabb6c2ced3c8b6ab9f94887c71655a4e42372b20140800030f1a26323d4954606c77838e9aa6b1b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9babbbec3cad2dae3edfaefe6ded3c9c0b7ada49a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c86919ca8b4bbc6cfd0c8bdb4ada49d97918c8783807e7d7d7d7e8083878d929ca0a7b0bac4cfd5cfc4bab0a79b8f83786b61564b4034291e1206000006111d2934404b57636e79848f9ba6afb9c5cdd8cdc3b8aea59d948f857f7a767372727274777b808690959fa7b0bac4cfd6ccc1b7ada4998d82766a60564b3f34281d1106000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c312512080000000000091326313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000005101c27333f4a56616d79848c9094979b9da4a6a8aba49b918c8179706c6764635f6364676c717a828e949da8b3bbc5cfcec3b8aea5978c807569584f453b30251a0f0400000000000000000000000000000007111b25313c47515a646e75808c919ba1abb0b8bec6ced1cac5bcb6aea9a19a928e837b6f6b61584f453b30281e140a0000000005111c28333f4b56626d79848b8b8b8b8b8b8b8b8b8b8b8b8b81756a5a51473d322b292b37424e5a65717c88949fabb6c2cecec2b7aba094887d71665a4e43372c20150900030f1a26323d4954606c77838e9aa6b1bdc4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c5c6c9ced3dae2e4e4e4e4ede3d9d0c7bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a6974808b97a1abb6c1cbd4cac0b7ada49d948f86807c7775737271727274777c818a9197a0abb5bcc5d0d4cac0b3a89d93877b6f64584d41352a1e130700000814202b37424e5965717c88949da8b6bfc9d5d6cbbfb4a99e958f837c736f6968676667686b6f757d859097a0aab5bec7d1d1c6bdb3a89c91857a6f63584c4035291e1206000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000020e1925313c48535f6b76828d999ea5a6a8adb1b4b6aba29b918c827c7672706e696e6f72767d838e929ca4adb7c3ccd6cbbfb4a99e95887d71665a4e43362c21160c01000000000000000000000000000000020c18222d374149555e636e79818d919ca0a7aeb6bbc3c8cfd0c6beb8b4aaa39c948f837b6f695f554a42382e24190e0400000004101c27333e4a56616d78849097979797979797979797978e83776b61564b433b3534353a454f5866727d8995a0acb7c3cfcec2b7aba094887d71665a4f43372c20150900030f1a26323d4954606c77838e9aa6b1bdc8d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d1d2d4d8d8d8d8d8d8d8d8d8d8e0d4c8bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b78838f9ba8b1bac5d0cfc4bab0a79d948f837c75706c696766666667696c70767e86919ca3acb6c0cbdacdc2b7ada495897e72665b4f44382c21150a00000b17232e3a45515d68747f8b96a4adb7c7cfd9cbc0b6aba29b90847b706b6360595b5a5b5a61646d717d86919ca4adb7c2cdd7ccc0b5aaa096897d72665a4f43382c201509000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000c17232e3a45515d68747f8b97a2aeb2b3b7bdbfbbb2aaa19b938e86827e7b7a797a7b7e82888f949ca3acb4bdc7d3cfc4bab0a79c9084796e63574c4034291d1207000000000000000000030607080b0b0b0b09131d273039444a545f686e79818b91979ea5abb4b8bec6cdcfc8c3bab3aca49d948e82796e635b52483d32271e1309000000030f1a26323d4954606c77838e9aa3a3a3a3a3a3a3a3a39c91867b6f645c534a454140404349545f6874808c97a3aebac5d1cec2b6ab9f94887c71655a4e42372b20140800030f1a26323d4954606c77838e9aa6b1bdc8cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc8bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b86939da8b8c1cac5c5c1b5aaa0978f837b706c64625b5c5b5a5a5b5b62646e737f8a929ca7b2bdc9d4d1c7b9aea2968b7f74685d51453a2e23170b00040f1a25303b454f586b76828e99a5b0bcc7d3d4c8bdb2a79c92887d716b625b55504f4f5051565d636d747f8b949ea8b4bfcad6cfc4bab0a7978c8074695d52463a2f23180c000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000915202c38434f5a66727d8994a5aeb8bec2c7cbc2bbb2aaa39c97918e8a87868585878a8d929b9da4acb3bcc5cdd3ccc0b5aaa0968c8074695f554a3f33281c110200000000000000050a0e111314171717171717172029303b454f585f696e757f8790959ca2a9aeb6bbc2c8cecec3bcb4ada49c938c80756c62574c41372d23180d020000020d1924303c47535e6a76818d98a4aeaeaeaeaeaeaeaba1978c80756c635b544f4c4b4c4d535b636e79838f9ba6b2bec9d5cec3b8aea593877c7065594d42362b1f130800030f1a26323d4954606c77838e9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bdb1a69a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b66727e8995a4adb7b9b9b9b9b9b3a89c91867c706b625c5752504f4e4f5052575e656e77828e99a5b1bcc8d2d2c6bbafa3988c81756a5e52473b3024180d0005111c28333f4a555f6978848f9ba7b2bec9d5cfc4bab0a7998e82766d635a524a46444344474b545c636e7a848f9ba7b2bec9d5d4cabcb0a5998d82766b5f53483c3125190e000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000007121e2a35414c58646f7b86949ea9b4bfcbd1d6cbc2bbb3aca7a09c9995939690919795999ca2a8adb4bcc3ccd4cec3b9afa69c91867b7064584f453b30251a0f03000000000001080f15191c1f1f2323232323232323212b353f474f585f636f747d848e929c9ea5aab4b8bec6ceccc5bdb4aca39c91867c70645a51473d32271b10050000000b17232e3a45515c68747f8b96a6afb9bababababab1a89c91867d716c635f58585757585c636b727e89949da8b3bfcad6cbbfb4a99e95867a6f63584c4035291e120600030f1a26323d4954606c77838e9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b1a69a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaeaeaeaeaeaeada4988c80756c625a534c484443434344484c555e66727d8995a5aeb8c3ced2c7bbb0a4988d81766a5f53473c3025190d0006121d2934404c57636e7985919ca8b4bfcbd6ccc1b5aaa097897d72665d534a423b3638373d444a556069747f8b97a2aeb9c5d1d5c9bdb2a69b8f83786c6155493e32271b10000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000006121d2934404b56616a7884909ba7b2becad5dbd3cbc4bcb8b0aba8a5a1a69f9c9ca1a8a5a6abb3b7bdc5ccd4cdc4bcb4a99f958c81756b6157483f352b21160b0000000000010a12191f24282a2b2e2e2e2e2e2e2e2e2e2e2e373f484f555f666d717b828990959ba1a9aeb5bec5cecdc5bcb5aba0978d81766b61564b4034291d11070000000914202b37434e5a65717d88969faab5c0c5c5cac1b5aaa09690847c736e686564636364676d717c85909ca4adb7c2cdd6cabeb3a79c9084796a60564b3f34281d110600030f1a26323d4954606c77838e9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa69a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1925303c48535f6a76818d99a2a2a2a2a2a2a2a2a29d93877c70645b524a423d38383738383e454c57636f7a86959ea9b4c0cbd3c7bcb0a4998d82766b5f53483c3125190e0007121e2a35414c58646f7b8697a0abb6c1ccd6cbbfb3a89c91857a6f63574c433a312c2c2d323b46505865717c88939faab6c2cdd5cabeb3a79b9084796d61564a3f33281c10000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000005101b26323c47515a6b76828d99a5b0bcc7d3dedbd4cdc8c1bab6b4b0acafaaa8a8abb1b0b2b5bbc2c7cdd4cfc4bcb4aba29c90857b6f645b5248372f251c1207000000000008121a22292f3335363a3a3a3a3a3a3a3a3a3a3a3a373f454a565d636b6f767e848c919b9ea5aeb5bec8d1cfc4bab0a79c91867b6f64584c41352b20160b00000006121d2934404c57636e7a85909ca8b3bcc6d0cfc4bab0a79e9590857e7974716f6e6f7072767d8490959fa9b4bdc7d1d3c8bcb0a5998e82766b5950463c31261b0f0400030f1a26323d4954606c77838e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9a8e83776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1a26323d4954606c77838e96969696969696969696968f83786c62574b4239322e2c2c2c2e343f4a5560697984909ca7b3becad2c7bbafa4988d81766a5e53473c3024190d0007131f2a36414d5864707b8792a7b0bac5cfd5cabeb2a79b9084786960554a3f33292120232c36414c58636f7b86929da9b4c0ccd6cabfb3a89c9085796e62564b3f34281d11000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000020d18232d3745515d68747f8b97a2aeb9c7d2dce5ddd9d1cac5c1bfbcb8b9b5b3b4b6babcbdc0c5cdd1d1cac4bcb4aca39b918a7e736a61564a4138271e150c0200000000050f19222a32393e4142454545454545454545454545454540454c545a61646e727a818890949ea5aeb8c0cad4cac0b5aba0978a7f7368584f453a30251a0e03000006111d28333f4a55606975818d98a3acb6c1ccd4cac0b7aea59e96908a837f7c7b7a7a7b7e828890959ea6afb9c5ced7cdc2b7ada4978b7f74685d5145372c22170c0100030f1a26323d4954606c77838e9393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938e83776c6054493d32261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101b27323e4a55616c78838b8b8b8b8b8b8b8b8b8b8b8b8b81766a5b52483b32292929292a2e343f4b56606a7985909ca8b3bfcad2c6baafa3988c8075695e52463b2f24180c0007131f2a36414d5864707c87929eaab5c8d2d5c9bdb2a69b8f83786c5a51473c31251b161d2934404b57636e7a85919da8b4bfcbd6cabfb3a89c9085796e62564b3f34281d11000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000913202c38434f5a66717d8994a5aeb8c2cdd8e3ded7d1cdcac9c7c8c9c4c0bfbfc1c5cac8cbcfcfccc8c0bab5aca49d938d81766e645a51473a3128170e0500000000000a151f29323b42484c4e51515151515151515151515151514c4b464a51565d646a6f757d8490949ea7b0bac4cfcfc4bab0a7998e8276685f54493e33281c11050000040f1a25303b46505866717d88939da7b3bbc6cfd0c8beb6aea69f9c948f8b88868586878a8d929b9ea5aeb6bfc8d5d4cabfb3a89d94887c7065594e42362b1f12080000030f1a26323d4954606c7782878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878782776c6054493d32261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f7f7f7f7f7f7f7f7f7f7f7f7f7f7d71655a4e4338343434343535383d454e57636f7a86969faab5c0cbcfc4bab0a7968b7f73685c5145392e22170b0007121e2a35414c58646f7b8692a5aeb8c2cdd5cabeb3a79b9084796a61564b3e352b2420242a35414c58646f7b86929ea9b5c0ccd5cabeb3a79b9084796d62564a3f33281c10000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000007121e2a35414c58646f7b86949ea9b4bfcad6ded5cec7c2bfbebbbfc1c4cacacbccd0cecbcacac4c0bcb8b0aba39c938f837a6f635e554a4137292118060000000000030e19242f39424b5357595d5d5d5d5d5d5d5d5d5d5d5d5d5d58565049474b545a61636d717b849097a0abb5c1ccd4cabfb3a79c9085796e63574b4034291d11060000010c17212c363f4d58636d77838f9aa2abb6bfc8d1cfc6beb6afaaa49d9b96939291919295999ca2a9aeb5bec6cfd5cec3b8aea59b8f83786c62574c41352a1f130300000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e7374747474747474747474747474716d63584d404040404040404142484c545e68727e8995a6afb9c3ceccc1b5aaa097887d71665a4e43372c2014090006121d2935404c57636e7986949ea9b4bfcbd6cbbfb4a89c91867b6f63574e453a332e2b2f333c47515a65717d88949fabb7c2ced5c9beb2a69b8f84786c61554a3e32271b10000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000006121d2934404b56616a7884909ba7b2becad5d7cec5bdb7b3b2b0b3b5babdbfc0c3c8c3bfbebdbab5b3aca7a09c928e837a6f6960554d44393127191108000000000006111c28333e48535c626568686868686868686868686868686360595046444951565d636b717d86919ca8b4bfcbd6cbc0b4a99f95877b7064584d41362a1e130700000007121c26343f49535c66727d89929ca5aeb8c1cad4cfc7bfb9b5ada8a6a29f9d9d9d9ea1a5a6abb4b8bec6ced6cec5bdb4a99e958a7f73675c53483e33281c110600000007121e2935404b57616b707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706b61574b4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676868686868686868686868686865635c534a4b4c4c4c4c4c4c4d4e52575e636e78828e9aa6b1bdc9d3cbbfb3a89c91857a6f63584c4035291e12070006111d28333f4a5560697984909ba7b3becad5ccc1b6aba1978a7e72685e5449443d38353a3e454b56606a74808c97a3aebac6d1d3c8bcb0a5998e82766b5f54483c31251a0e000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000005101b26313c47515a6b76828d99a4b0bcc7d3d1c7bdb5ada8a6a4a8aab0b1b3b5b9b5b8b4b3b1b0aaa8a39c97918c827a6f6a615950463d342920170900000000000007131f2a35414c57626c7074747474747474747474747474746f6a60564b3f40474b545b636c76818d98a4b0bbc7d2cec3b9afa694887d71665a4e43372c201409000000020c1a252f3a434e59646d76828d959fa7b0bac4cad0cfc9c3bdb7b3b2aeaba9a8a9aaacb0b2b5bbc3c8ced6cec6bdb5aba29b90847a6f63574c42392f24190e0300000005101c27323d48525b6164646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464615b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a58534f5457575757575757585a5b62646e737f8b939ca7b2bec9ccc1b7ada4998d82766a60564b3f34291d120600040f1a25303b4650596b77828e9aa5b1bcc8d2d0c5bab1a89a8f83786e635c544c48464545494b555e636f7a85909ca7b3bfcad6cfc4bab0a7978c8075695d52463b2f23180c000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000020d18232d3745515d68747f8b97a2aeb9c7d2cdc2b7ada49d9b989ca0a7a6a8aaafa9aea9a7a6a7a09c99938e8680796f6a615a514840362d2419100700000000000008141f2b36424e5965707c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6f63584c40373c434a535c66717d88949fabb7c2ced3c8b8aca1958a7e72675b5044382d21160a000000000b15202a343f4a545d646f7b859097a0abb5bac0c8ced3cec7c2bfbeb9b6b5b4b4b5b8bcbdc0c5cdd2d3cfc5beb5ada49c928a7e726960554a3f32291f150a00000000020d18232e38414a52575859595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595857524a41382e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f50515151515151515151515151514e4d4f585f636363636363636465686b70767f87919ca3acb6c1ccc4bcb3a89d93897e72665950463c31261b100400010c17212c3646525d6974808c97a5aeb8c3ced4cac1b3a89d938a7e736c635d575252514e54575e656e75808c959fa9b4c0cbd6ccc1b5aba097897e72665b4f44382d21150a000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000913202c37434f5a66717d8994a5aeb8c2cdcabfb3a89d948f8d9197989a9c9fa69ea59e9c9a9896918d88827c746e68615a514940382f261c1408000000000000000a16212d3844505b67727e8a8b8b8b8b8b8b8b8b8b8b8b8b877c7065594d4239343a434c58646f7b86929ea9b5c0ccd0c4b8ada1968a7e73675c5045392d22160b0000000006101a25303a444b57616b717d87919ca0aab0b7bec5ccd0d1cdcac9c5c2c0bfc0c1c3c7c8cbcfd4d0c9c4bcb5aea59d948e82766e645950463b3122190f05000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b48413a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d353b40444545454545454545454545454545434a545f686e6e6e6e6e6e6f6f7173777c828a9197a1abb3bcc6c4bcb3aaa19a8f83796e63574b40372d22170c0100000712202c37434e5a66717d88959ea9b4c0c9d3ccc1b7aca39c91867d716d64625b5d5d575e63666f747f8a919aa6afb9c3ced6cbbfb4a89c91867b6f63584c4135291e1207000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000007121e2a35414c58646f7b86949ea9b4bfcac9beb2a69b8f8381868a8d8f909692929295908e8c8985827d77716c635f585149403930281f160c03000000000000000915212c38434f5b66727d89959797979797979797979795897e72665b5249434040444c58646f7b86929da9b5c0ccd0c5b9ada2968b7f73685c5145392e22170b00000000010b16202a323d47515a636d737f8a909ca0a7aeb5bbc1c6cbced3d5d0cdcccbcbcccfd3d6d3cecac5c0b9b5aca59e958f847a6f635e544840362c211208000000000000040e18212931383d4041424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403d38312921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b313538393a3a3a3a3a3a3a3a3a3a3a3a3a404b57636e797a7a7a7a7a7a7b7c7f82878d929ca1a8b1bac4c4bbb4aca39a91887d71685f54493e30271d130800000006121d2934404c57636e7a84909ca6afb9c4cfd0c6bdb5aa9f9690857d76706c6a696869686e71777f87919ca1aab6bfc8d2cdc2b7ada4998e82776a61564b3f34291d1206000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000006121d2934404b56616a7884909ba7b2becacabfb3a79c9085787b7e81838586868786868483817e7b76716d65635c554f484039302820170f06000000000000000008141f2b36424e5965707c8893a4a2a2a2a2a2a2a2a2a2988d81766c625a534d4c4c4d545c65717c88949fabb6c2cdd0c4b9ada1968a7f73685c5045392e22160b0000000000061018232e38414a545d656f747f8a91979ea5abb2b6bcc0c3c8cacbced3ceced3cfcccac9c3c1bab6afaaa39c9490847c706a61564d44382f261c12010000000000000007101921282e32353636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e282119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d2e2e2e2e2e2e2e2e2e2e2e333f4a56626d798585858585858687888a8e91979ca2abb1b8c1bfb9b5aba39c938c80756d63584f453a3020170d0300000005111c28333f4a555f6974808b969faab5bdc6cfcfc4b9afa69f959087817c787574747576797d828b9197a1abb2bac6cfcdc4bcb3a89d93897d72665a51473c31261b1004000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000005101b26313c47515a6a76828d99a4b0bcc7cbc0b5a99f95877c70727577797a7b7b7b7a797775726f6a66635d58534a453f3730282018100700000000000000000006121e2935404c58636f7a86949da8aeaeaeaeaeaeaea89c91867c706a635c585757585d636c75808c97a3afbac6d1cfc4b8aca1958a7e73675b5044392d21160a00000000000009141e28313a444c555e656f747f8690949ba2a7acb3b4b9bcbfc0c3c8c3c3c9c4c0bfbdb9b5b1aba79f9c928e847c706c625a51473d34281f160c0200000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f21222222222222222222222228333f4a56626d7984909191919191929396999ca1a8abb6bac1bfb7afaaa29c938e82796e635d53473e352b200f0600000000040f1a25303b454f58646f7b85919ca4adb6bfc6cec9c0b7afa69f97918d878481807f808184888e939ca1a8b1bac2cbcfc4bcb3aaa19b8f83796e63574b40372d22180d02000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000020d18232d3745515d68747f8b97a2aeb9c7cec3b9afa6958a7e73676a6c696f6f6f6f6e696c696763615a58544c49433b352f27201810080300000000000000000006111d28343f4b56606a78848f9ba6b2b9b9b9b9b9b5aaa0978f837b716c6764636364676d717c86919ca8b3bfcbd6cdc2b7ada494887d71655a4e43372c201409000000000000040e182129333c454e555e656e737d848d919a9ca3a7a9afb1b3b4b9b6b7b7b7b9b5b3b1afa9a8a19c96918b827b706b625b524941372c24170f0600000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161717171717171717171c28333f4a56626d7984909c9d9d9d9d9e9fa2a5a8abb1b8bbc5bfb6aea69f9c928d827a6f695f554c43372e251b110000000000010c16212c363f4b56616b747f8b939da5aeb6bec6ccc7bfb6afa8a19c98948f8d8c8b8c8d90959a9ca3abb1b8c1cacac4bcb4aca39b91887d71685f54493e30271d130800000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000913202c37434f5a66717d8994a5aeb8c2cdc9bbafa3988c817569595960636364636360585e5b5856514d49433e39302b2b2925201a130b030000000000000000040f1b26313c4650596a75818c98a5aeb8c3c5c5c4bab0a79d938f837d76726f6e6e7072777d859096a0aab5c0ccd6cabfb3a89d94867b6f64584c41352a1e120700000000000000071019232c353d454e555e646d717a81888e92989c9fa6a5a7a9afababacabafaaa8a6a69f9c97918d867f796f6a625b524b423930271c130700000000000000000000000004090d10121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b0b0b0b0b0b0b0b0b111c28333f4a56626d7984909ca7a8a8a9a9abadb0b4b6bac1c9c3b8aea59e96908b817a6f6a60584f453c33261e150b01000000000007121c26323d47515a636e79838f959ea6aeb5bbc3ccc7bfb8b1aba8a49d9b98979797999c9ea5a7acb6bac1c9c8c0bab5aca39c938c81756d63584f453a3020170d0300000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000007121e2a35414c58636f7b86949ea8b4bfcac9bdb1a69a8f83776960555557585858575550524f4c4b47413f3a3e3e3e383734302a231c130a0000000000000000010c17222c37434f5a66717d89959ea9b4bfc8d3cac0b7ada49d948f87827e7b7a7a7b7e828990959fa7b0bac4cfd5c9beb2a69b8f84786a61564b4034291d1206000000000000000009131b242d353e454d555c636a6f767d82888d9095979a9c9fa69fa0a09fa69f9c9a9795908c86817c746e68615a524b423a322920170c030000000000000000000000000000020507070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7b3b4b4b5b6b9bcbfc1c5cacbc0b4a99e9590857f786f6a605950483f352b23160d04000000000000020c18232d38414a556069707c8590959ea5abb3bbc5cfc9c1bab6b4ada8a7a4a3a2a3a4a7a9aeb2b6bcc5cacac0b8b0aba39c938e82796e635c53473e352b2010060000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000006121d2934404b56616a7884909ba7b2becacbbfb3a89c91857a6f63574c4c4c4d4c4c4a464a4a4a4a4a4a4a4a4a4a4a43423f3a342c231a1006000000000000000008121d2934404c57636e7984909ba6afb9c3ced0c8bdb4ada49d97918e8987868687898e929c9fa5aeb7c0cad4ccc1b6aca3978c8075695a51473d32271b10050000000000000000020b141d252d353d454c535a60636c71777c8185898c8e909593949494949396918e8c8985807c76706b635f58514a423a322a21181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7b3bec0c1c2c4c8cbccd0d4cabeb3a79c90847b746e686059504940372f251b1206000000000000000009131e28303b465059626b717d8590949ba2abb5c0cbd1cac5c1bdb7b3b2afaeaeafb0b3b4b8bec1c6d0cfc4bab0a7a09c928e837b6f6960554c43372e251b11000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000005101b26313c47515a6a76828d99a4b0bcc7ccc1b5aaa097887c71655a555555555555555555555555555555555555554f4e4a443c342a20160b010000000000000005111c28333e4a555f68747f8b959fa9b4bcc6cfcdc5bdb5ada8a19c99959291919295999ca2a9aeb6bfc8d0cec5beb2a79c92887c7065594e42372d23180d02000000000000000000040c141d252d343c434951565c63656c70757a7d80828586878889898888868583807d7a75706c64625b544f474139322a211a110800000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111111111111111111111111111111111111111111100f0d0a0707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7b3bbbcbdbfc0c3c9cccfd4cbc0b4a99e958e827a6f695f554a443930271e1508020000000000000000040e17212c363f48525b636c717c848d929ba6b2bdc8d4d4d0ccc7c2bfbebbbab9babbbebfc3c8ccd0d7ccc1b5aba097918b827a6f6a615850463c33261e150b010000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000000020d18222d3745515d68747f8b96a2aeb9c7cfc4bab0a7968a7f736861616161616161616161616161616161616161615b59544d443a30251b100500000000000000030f1a25303b454f58636f7a85909ca3acb6bfc8d0cdc5bdb8b1aba8a5a19e9d9d9ea1a5a7abb4b8bfc6cfd0c7beb5aba29a8e82776c62574c4135271d13090000000000000000000000040d141c242b333940474b53585c6265696e717477797a7c7d7d7d7d7c7b797775716e6964625b57524a453f37302921191109010000000000000000000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a18161312110e0904010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040709090c0c0c0c0c0c0c111c28333f4a56626d7984909ca7afafb0b1b3b5b9bfc1c5cacec3b8aea59c928e82796e635d544940372d22170d0300000000000000000007121c262f38424a535c636c707b818d99a5b0bcc7d3ded7d1cdcac9c9c4c0bfc0c4c9cacbced2d8d6cbbfb4a89c918680796f6a615a51483f362b23160d04000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000000000913202c37434f5a66717d8994a5aeb8c2cdcabbb0a4988d81766d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d66645d544a3f34291e130700000000000000000b16212b353f4b56606a737f8a939ca5aeb7c0c8d0cec9c1bab6b4b0aca9a8a8a9acb0b2b6bcc3c8cfd0c8c0b7aea59b91887d71655c53483e3328170e04000000000000000000000000040c141b232830373c43494d5358585f6366696b6a6f7071717271716f6e68696663605857524c48423b352e2720181109010000000000000000000000000000000000000000000000000000070f151b2023262629292929292929292929292929292929292929292929292929292929292828272624211f1e1c18140f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12141518181818181818181c28333f4a56626d7984909ca4a4a4a4a5a7a9afb4b6bac1c8c8bfb6aba29c928c80756e645950463c31271d1309000000000000000000020c161f27313a434c535c646e737f8a96a1adb9c4d0d4cfc7c2bfbeb9b9b5b3b5b9b9bebfc3c8cfd6cabfb3a79c90857c706b6259514941382f261b120600000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000007121e2a35414c58636f7b86949ea8b4bfcac9beb2a79b8f8378787878787878787878787878787878787878787878726d64594e42372b201409000000000000000007111b25313c465059636e78828e959fa7b0b8c0c7ced1cac5c1bfbcb8b5b4b4b5b8bcbdc0c5ced2cfc7c0b7afa69e948d81766d63584b42392f2419070000000000000000000000000000030a121820272d31393e43494c4f55575a5d5a606365656666666564635e575a5755504c48423d38302b251e1610080100000000000000000000000000000000000000000000000000000710181f252a2e3132343434343434343434343434343434343434343434343434343434343434343331302d2a2927231e1b17120d0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1e202023232323232323232328333f4a56626d79849098989898999a9c9fa6a8abb0b8bec6c6bbb3aba29a91897e726a60564b41372d23180d02000000000000000000050f1a25303a454f58626c727e87919ca8b4bfcbd1cac4bdb7b3b2adafaaa8aaafaeb3b4b8bec6cbcbc0b5a99f9590857c706960554a42382e23190d0300000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000006121d2934404b56616a7884909ba7b2bec9cabfb3a89d9488838484848484848484848484848484848484848484837e72665b4f43382c21150a0000000000000000020c17222d374049545f68707b859096a0a7afb7bec6cdd1d0cccbc7c3c1c0c0c1c3c8c9cbd0d1cdc6beb7afa79f9690847a6f635c53493b32291f150a00000000000000000000000000000002080f171d22292f33393e3f454a4c4f52515658595a5a5a5a595857544e4f4c4a463f3e38322e28211b150e06000000000000000000000000000000000000000000000000000000050f1820282f35393c3d4040404040404040404040404040404040404040404040404040404040403f3e3d3b393635322e2826221d17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c2f2f2f2f2f2f2f2f2f2f333f4a56626d79848c8c8c8c8d8d8e9095989ca0a7aeb6bec8c3bbb3aaa19c90847a6f635a51473c32261b100500000000000000000005111c28333e49545f68707c859097a1abb6c1ccc8c0bab5ada8a6a2a79f9c9fa7a2a7a9aeb5bac2cec3b9afa69e958f837a6f635b52483d32271d130800000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000005101b26313c47515a6a76828d99a4b0bcc7cdc2b7ada49d948f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8a7e72675b5044392d21160a00000000000000000008131d27303a454f58616b717d8691979fa7aeb5bbc2c7ccd0d5d3cfcccbcbcccfd3d5d0ccc7c2bcb6aea69f9691867d706a61564c43392a22190f050000000000000000000000000000000000060d13171f24292f33363b3f404346474b4c4d4e4f4f4e4e4c4b494543403f3b36332e28231e16110b05000000000000000000000000000000000000000000000000000000010b151f2831383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a49474441403d3834312c26211c160f070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a303437383a3a3a3a3a3a3a3a3a3a3a3b46525d6975808181818181828385888d91979ea5aeb8c0cac3bab4a99e958c80756a61564b4034291e140a0000000000000000030e1a25303a454f58636e79828e969fa8b1bac5c9c0b8b0aba49d9b969396919693979b9ea5aab2bac1c9bfb6aea59d938c80746b62574c40372d22180d02000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000000020d18222d3745515d68747f8b96a2aeb9c7d1c7bdb5ada49d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b958a7e72675b5044392d21160a000000000000000000030d16202b353e47525b636d727e8791969ea5abb3b7bdc1c6cacbcdd2ceced2cecbcac6c1beb7b4aba59e9691867e726c625a51473b33291a12080000000000000000000000000000000000000003080f15191f24262c30333437373c3f4142434343434241403e3a353433302c26241f19140e07010000000000000000000000000000000000000000000000000000000006111b252f3841494f535557575757575757575757575757575757575757575757575757575757575756565452504d4c48423f3c36302c261f1712070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c333a3f424346464646464646464646464646505c66707575757575757677797c818790959ea7b0bac4cec3b8aea59c91857b6f64584c42382e24190e030000000000000005111c28333e49545f68737e8a939ca6afb8c1cac1b8b0a7a09c948f8a87868586888b90959ba1aab1bac4c7bfb6ada49c91867c70645a51473c31261b1004000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c0000000000000000000913202c37434f5a66717d8994a5aeb8c2cdcec5bdb5ada8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a1958a7e72675b5044392d21160a0000000000000000000007111b252e37414a545d646e727e8690949ca2a8adb3b6bcbebfc3c8c3c3c8c3bfbebcb7b3ada8a29c9590867e726d645c534940372b23190a01000000000000000000000000000000000000000000050a0f15191c212528292c2d3134353637373837373534332f2b292825211c19140f09040000000000000000000000000000000000000000000000000000000000000a15202a353f4951595e606363636363636363636363636363636363636363636363636363636363626261605e5b5957524c4a46403b362f27221b110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a333c444a4d4f5252525252525252525252525251565f66696a6a6a6a6a6a686e71757d859097a0abb5c1ccc8beb5aa9f968b8074685b52483d32271c11050000000000000006111d2934404b57636e79838f9ba3acb7bfc9c5bab1a8a097918b837f7c7a797a7c7f848c919aa1aab3bcc6c6bdb5aaa0978d81756a61564b3f34291d1206000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000000000007121e2935414c58636f7b86949ea8b4bfcad5cec5bdb7b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2aca1958a7e72675b5044392d21160a00000000000000000000010b151e26313a434c545d646e727d848d929b9da4a7acb0b3b4b8b7b7b7b7b8b4b3b0aca8a49e9b928e847d726d645d544b433930271b1209000000000000000000000000000000000000000000000000050a0c12161a1c1d20222629292b2b2c2c2c2b2a292724201d1d1a17120c0a0500000000000000000000000000000000000000000000000000000000000000000d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6b6a6764625b5856504a463f38332b201b150d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444c54595a5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b565c5d5e5e5e5e5e575e63656c717d86919ca8b4bfc9cfc4b9afa79b8f84786c62574c41352a1e1307000000000000000914202c37434e5a66717d88949da8b4bcc7ccc1b6aba19791867f7973706e696f70747a818c909aa3acb6c1ccc4bab0a79c91867b6f63584c4135291e1308000000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000000000006121d2934404b56616a7884909ba7b2bec9d5d5cec7c2bfbebebebebebebebebebebebebebebebebeb8aca1958a7e72675b5044392d21160a0000000000000000000000040d162129333c444d545d646d717b82898f949a9ca3a4a7a9aeababababaea9a7a5a39d9a948f89827b716c645d544c443b322820170a02000000000000000000000000000000000000000000000000000002070c0f111213171b1d1e1f202020201f1e1d1c191611110f0c0702000000000000000000000000000000000000000000000000000000000000000000000e1a26313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7978777573706b68636059555048433b302b251e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a545d64666969696969696969696969696968655f565252525252534e54575c636c75818c98a7afb9c4cfc9c0b3a89d94877c7064594d42362a1f130800000000000005101b27323d47515a6a75818c98a4adb7c4cfc4bab0a79c91877e746e686463606365696f75808c929ca7b2bfc8cac0b5aaa0968a7e73675c5044372d22170c010000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c00000000000000000004101b26313c47515a6a76828d99a4b0bcc7d3ded7d1cdcac9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c4b8aca1958a7e72675b5044392d21160a000000000000000000000000061119232b343c444d545c636a6f767e84898e9396999b9ea59fa0a09fa59e9b9996938f8a847e766f6a635c544d443c332b22181006000000000000000000000000000000000000000000000000000000000001040506080d1012121414151514141311100e0b060604010000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c7783858585858585858585858585858585858585858585858585858585858585858483817e7b78736f6a636059534c453a352e261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d59646d7274747474747474747474747474746f655b50474747474745494b535c65717c88969faab5c0cccdc2b7ada4958a7e73675b5044392d21160a00000000000006121d2934404b56616a78848f9ba7b2bdc7ccc1b5aba0978c80756e635f585755575960636e78828e9aa5aeb8c3cec4bab0a7998d81766a5950463c31261b10040000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000000020d18222d3745515c68747f8b96a2aeb9c7d1cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc4b8aca1958a7e72675b5044392d21160a0000000000000000000000000009131b232c343c444c535a61646d72797e83878a8d909593949494949395908d8b87837e79726e64615a534c443c342c231a12080000000000000000000000000000000000000000000000000000000000000000000000010406070809090909080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f919191919191919191919191919191919191919191919191919191979190908e8c8a87837f7a746e69635c5549453e372e251b1107020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727e808080808080808080808080807f74685b52483d3b3b353a3e434b57636e7985919ca8b3bfcbd1c7baafa3978c8075695d52463b2f24180c01000000000007121e2a35414c58646f7b86949ea8b4bfcdcbbfb4a89c91867b6f645e544f4c4a4c50555e68717d88959ea9b4c0cbcabeb3a79b9084796a60564b3f34291d12060000000c18242f3b46525d6975808c97a3afbac6d1d3c7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8d4d1c5b9aea2978b8074685d51463a2e23170c000000000000000000000813202c37434f5a66717d8994a4adb7c2c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b8aca1958a7e72675b5044392d21160a00000000000000000000000000020b131c232c343b434a51565d64686e72777b7f8284868788898988878684827f7c77726e69645d56514a433b342c231b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca09c9c9b9a9895938f8a857f79716d655e544f473e352b201b12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46525d6974808b8b8b8b8b8b8b8b8b8b8b8b8b86796b62574c40362e2b2f333e49545f6878848f9ba7b2bec9d3c7bcb0a4998d82766a5f53483c3025190e0200000000000914202b37434e5a65717d8894a4adb7c2cdc8bdb1a59a8e83776a61564a45403f40464e57636e7984909ca7b3becacbbfb4a99e95867a6f63584c4035291e12070000000c18242f3b46525d6975808c97a3afbac6cdcdc7bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc8cdcdc5b9aea2978b8074685d51463a2e23170c0000000000000000000007121e2935414c58636f7b86949ea8b4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aca1958a7e72675b5044392d21160a0000000000000000000000000000030b131c232b333941474b54585f63676b707376797a7c7d7d7d7d7c7a797673706b67636058544b474139332b231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606060605030000000000000000000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b0aba8a7a7a5a4a39d9a95908b847d736f635f584f453a302b23170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b979797979797979797979796877b70645950463e363534353e49545e6878848f9ba6b2bec9d3c8bcb1a5998e82776b5f54483d31261a0e0300000000000a16212d3844505b67727e8a95a1acb8c7d1c6bbafa4988c81756a5a51473b3534363e49545f6877838e9aa6b1bdc8cdc2b8aea593877c7065594e42362b1f14080000000c18242f3b46525d6975808c97a3afbac1c1c1c1bcb0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1bdc1c1c1c1b9aea2978b8074685d51463a2e23170c0000000000000000000006121d2934404b56616a78848f9ba7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1958a7e72675b5044392d21160a000000000000000000000000000000030b131b222930373c44484f55575b6264686b6a6f7071717171706f6a6b6864625b57555048443d373129221a130b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070c0f11121211110e0b07090706040200000000000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bab5b4b3b2b1afaca8a69f9c948f867f756e685f5449453c33281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a96a1a3a3a3a3a3a3a3a3a7968a7f736960554e4742404041454b57636e7985909ca7b3bfcad4c8bdb1a59a8e83776b6054493d31261a0f0300000000000b16222e3945505c67737f8a96a1adb9c4d0c6baafa3988c807569574e453a302c323c47515a6b77828e9aa5b1bcc8d2c8b7ab9f94887d71655a4e43372b2014090000000c18242f3b46525d6975808c97a3afb5b5b5b5b5b5b0a5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5b1b5b5b5b5b5b5aea2978b8074685d51463a2e23170c0000000000000000000004101b26313c47515a6a76828d999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e958a7e72675b5044392d21160a00000000000000000000000000000000030a121820272d31373f454a4c5257585c5960636565666665656360595c5957524c4a463f38322d272019120a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1112141712171a1d1d1e1d1c1a1611151212100d08040100000000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcac4c1bfbfbebcbbb7b3afa9a49d97918b80786e635f564c433830261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a4adaeaeaeaeaeaeaea79b90847a6f635e57524d4c4b4c4f555e65717c88959fa9b4c0cbd3c8bcb0a5998e82776b5f54483d31251a0e0300000000000b17222e3945515c68737f8b96a2adb9c5d0c7bbb0a4998d8176685e5449413b363c424b56616a78838f9ba6b2bdc9cec3b7aba094897d71665a4f43372c2015090000000c18242f3b46525d6975808c97a3aaaaaaaaaaaaaaaaa5998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9aa5aaaaaaaaaaaaaaaaa2978b8074685d51463a2e23170c00000000000000000000020d18222d3745515c68747f8b939393939393939393939393939393939393939393939393939393939393938a7e72675b5044392d21160a0000000000000000000000000000000000020810171d23272f353b3e42484c4d51505658595a5a5a5a59585650514d4c48423f3b362f27231d17100802000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c11161a1c1d1f222521252829292928252023211e1d1b18130f0c08030000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbd4cfcccbcacac8c6c1bfb9b4ada7a09c918c80756f655d534940362c22170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86949da8b3bababababab4a99e948c80756e68625b59585758585f636e76818d99a6afb9c3ced2c7bbb0a4988d81766a5f53473c3025190d0200000000000b16222e3945505c68737f8a96a1adb9c4d0cabeb3a79b9084796e635a514a4545464a525b646f7b86919ca8b4bfcbcec2b7ab9f94887d71655a4e43372c2014090000000c18242f3b46525d6975808c979e9e9e9e9e9e9e9e9e9e998d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9a9e9e9e9e9e9e9e9e9e9e978b8074685d51463a2e23170c00000000000000000000000813202c37434f5a66717d8787878787878787878787878787878787878787878787878787878787878787877e72675b5044392d21160a00000000000000000000000000000000000000070d13161e252b3033383d404145464b4c4d4e4f4f4e4d4c4b464541403d3833302c261f17130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191b212528292b2e302c303335353433302b2f2c292926221d1b17120d0803000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6d6d6d6d8d4d1d0cbcbcbcbcbcbcbcbcbcbcbcbcbcccdd0d5d4d1ccc8c3bdb8b0aba19a918b7f746d635950463c31271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a78848f9ba6b2bdc7c5c5c2b8aea59a918b8078706b676463636365696e747f8a929ba6b6bfc8d2d1c5baaea3978b8074695d51463a2f23170c0000000000000a16212d3844505b67727e8a95a1acb8c7d1cbbfb4a99e95897e726a615a554f5150555b626c747f8b97a1abb6c1cccdc2b8aea593887c7065594e42362b1f14080000000c18242f3b46525d6975808c9393939393939393939393938d82766b5f54483c31251a0e02000000030f1a26313d4954606b77838e9393939393939393939393938b8074685d51463a2e23170c000000000000000000000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e1206000000000000000000000000000000000000000003090e151b2125282e323536373c3f40424343434342403f3c373635322e2825211c160e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000050a10161a1f24252b30333437393c363b3f4040403e3a353b383534312d2826221c17130d070100000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0e2dad3cdc9c6c5bfbfbfbfbfbfbfbfbfbfbfbfbfc0c1c5cacacdd2d3cec8c0bab5aaa19c91877d716960554a41372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a6975818c98a4adb7c2cdd2c7beb5aaa19a908b827c7672706f6e6f7174798087919ca2abb5c6cfd8cdc2b7ada495897e72675b4f44382d21150a0000000000000914202b37434e5a65717d8894a4adb7c2cdcdc2b8aea59b8f837a6f6a635f585c5960636c707c85909ca8b1bac5d0cbbfb4a99e95867b6f63584c4135291e12070000000c18242f3b46525d697580878787878787878787878787878782766b5f54483c31251a0e02000000030f1a26313d4954606b778287878787878787878787878787878074685d51463a2e23170c000000000000000000000005111c28333f4a555f696e7070707070707070707070707070707070707070707070707070707070707070706f6a60564b3f34281d110600000000000000000000000000000000000000000000050c11161a1e2327292a2c3134353637383737363534312c2a2927231e1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14192025292f33353b3e4042454749464a4c4c4b494548464341403c3734312c26221d16110b04000000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0dad1cac3bebab9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b6b9bebfc2c7ced6d1cac4bab6aba09790847a6f635a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37434e5a65717d88949da8b3bec7d1cec5bab2aaa19a928e86817e7b7a7a7a7c7f848b9197a1abb2bbc5d7d5cabeb3a89d93877b6f64584d41352a1e130700000000000007121e2935414c58636f7b86939da8b3becad2c8beb3a89d948e827b726e68696869696f737c8490969faab8c1cad4cabeb3a79b9084796a60564b3f34291d120600000007121e2a35414c58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e1307000000000007131e2a36414d58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e12070000000000000000000000040f1a25303b454f585f6364646464646464646464646464646464646464646464646464646464646464646463605950463c31261b1004000000000000000000000000000000000000000000000002070b0f14181c1e1f222628292b2b2c2c2b2b292826221f1e1c19140f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000030811181e242a3034393e3f454a4c4e5153555055575757544f54524f4c4b47413f3c36312d27201b150d060000000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d3cac1b9b3afaea8a8a8a8a8a8a8a8a8a8a8a8a8a9aaadb2b4b8bec5cbd2d4cfc5bab0a79e948b80746a61564b4034291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d2934404b57636e79848f9ba5aeb8c2cdd4cbc2bab1aaa29c97918d8a87868586888b90949ca1a8b1bac3cbd5cfc4b9afa79b8f83786b61574b4035291e120700000000000006121d2934404b56616a78838f9ba6b2bcc9d1cdc2b7ada49c938e847e7976747474767a7f8590949ea6afb9c9d1cec3b9afa6998d81766a5a51473c31261b100400000006121d2934404b56616a6f70707070707070707070707070706f6b61564b4035291e1207000000000007121e2935404b57616b6f70707070707070707070707070706f6a61564b4034291d12060000000000000000000000010c16212c363f484f55575959595959595959595959595959595959595959595959595959595959595959595856504940372c22170c01000000000000000000000000000000000000000000000000000003090d101212171b1d1e1f202020201f1e1d1b171212110e090401000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c121a21282e323a3f43494d4f5557595c5e6059606363635f585f5d5b5856514c4a46403c37302b251e16100802000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc3b9b0a9a4a29d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa2a7a8aeb5bac2cad2d4cac1b8aea59c90857b6f63584c42382e23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8a949ea8b4bbc4cdd2cac1bab3aba7a09c99959392919293969b9ea5abb1b8c1cad3d2ccc0b5aa9f968b7f74685a51473d32271c100500000000000004101b26313c47515a6974808c97a2acb8c1cad1c7bdb5aca39c94908a8481807f8082858b90969ea5aeb6bfc9d3cbc0b5aa9f968a7e72675b5044372d22170d0100000005101b26313c47515a6164646464646464646464646464646464615a51473d32271c1005000000000005101c27323d47515a6164646464646464646464646464646463615a51473c31261b100400000000000000000000000007121c262f383f454a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d13080000000000000000000000000000000000000000000000000000000000020507080c0f111214141515141312110f0c080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222a32383d444a4d5358585f6365686a6c6d696e6f6e686c6b696663615a5755504b47403a352e262019120a030000000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d4c9beb3a9a09996919191919191919191919191919293969b9ea5aab2bac2cad5d1c8beb5aa9f968b7f74685b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba1abb4bcc5cdd2cac3bcb8b0aba8a4a19e9d9d9d9fa2a7a9aeb6bac1c9d1d4cec3b8aea59c91857b6f64584c41382d23180d02000000000000020d18222d37424d5964707c87929ca8b1bac5d0cec5bcb3aca59e9b95908d8b8b8c8d90969c9fa6aeb5bec7cfcec3b9afa69c90857a6f63574c4035291d130800000000020d18232d37414a51565859595959595959595959595959595856514a41382d23180d020000000000020d18232e38414a51575859595959595959595959595959595856514941372d22180d02000000000000000000000000020c151f272f363b3f40424242424242424242424242424242424242424242424242424242424242424242403f3c37302820160d03000000000000000000000000000000000000000000000000000000000000000000010406060809090909080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c313a42484c54595c6365686e71737677797a7a7a7a79787674726f6a67636059565149453e373129231b130b0300000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d1c6baafa499908b8585858585858585858585858586878b90949aa1aab1bac5cdd9cec3b9afa69b8f83786b62574c4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a555f69727d89919ba3acb5bdc5cfd4ccc8c0bab5b4b0acaaa9a8a9abaeb2b4b8bec5cad1d4ccc3bcb4a99e958c80756b61564b4031281e1409000000000000000008131e2a35414c57626c77828e97a1abb6bdc5ceccc4bcb5aea9a59e9c99979697999c9fa6aaafb6bec5ceccc4bcb4a99f958c80756960554a3f34281d1103000000000009131d27303941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e13090000000000000009141e28313a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d13080000000000000000000000000000050e171f262c3033343636363636363636363636363636363636363636363636363636363636363636363534312c2720180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081018202830363c454b52575d63666c7175797c7f81838485868685858482807d7b77736f6963605a544f474139332b231c130c03000000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f797a7a7a7a7a7a7a7a7a7a7a7a7a7c7f848c919aa1aab4bdc7d1d3c9bfb3a89d93877c7064594d41362a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b25303b454f58636d75818d939da4adb4bcc4cad1d1cac4c1bfbbb8b5b4b4b4b6b9bebfc2c7d0d4d3cec4bcb3aaa19c90847b6f635a51473d3221180e04000000000000000006111c27333e48525b65717c87919ca3acb5bec5cfccc6beb8b4aea9a7a4a3a2a3a5a8aaafb5b9bfc7cecec4bcb4aba29c90857b6f635950463c31261b0f040000000000030d17202930373c4041424242424242424242424242424241403d38312921170e0400000000000000040e18212931383d4041424242424242424242424242424241403c37302920170d03000000000000000000000000000000060e151c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221d160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b07060502000000000000000001040709090908070400000000000000000000000000000000000000000000000000000000000710182029303840464a555b62646d72777c8184888b8d8f9091979196908f8e8c8986827e7a746f6a635f58514a433c342c241c130b030000000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746e6e6e6e6e6e6e6e6e6e6e6e6f707379808c919aa4adb7c2cdd9cdc2b7ada4958a7f73675b5044392d22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16212c363f48545d636f7a828f949da4abb5bac0c8cdd1cfcccbc7c4c1c0bfc0c2c5cacacdd2d4cfc9c3bbb3aca29b918a7e726a61564a41372d231007000000000000000000030e19242e38424c58636c75808c939da5adb5bcc4cacec8c2beb8b4b3b0aeaeaeb0b3b5b9bfc3c9cfc8c3bbb3aca39b918a7e736a61564940362c22170c0100000000000007101820272d31343536363636363636363636363636363535322d282119100700000000000000000007101921282e32353636363636363636363636363636363534312d27201810070000000000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d06000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e1111171312100d09040000000000060b0f1314151414120f0b060000000000000000000000000000000000000000000000000000050f1820293039414950555e656c70777d82888c909596989a9c9ca0a69f9c9b999797918e8a85807a736e68615a534c443c342c241b130a0100000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746863636363636363636363636365696e75808c949da8b3bfcad5d1c7baafa3988c8075695e52473b2f24180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38444a5560696f7b838f939ca2abb0b8bdc2c7cccfd4d3cfcdcccbcccdd0d5d5d2cecac5bfb9b5aba39c928c81756e645a51473931271e1300000000000000000000000a141f28333e49535c636f7a838f949ea4acb5bac0c8cbcdc8c3bfbebbbab9babcbfc0c3c9cdcac4bfb9b4aba39c938d81766e645a51473830261c120800000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e17100800000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d1710080000000000000000000000000000000000000002070c0f11121313131313131313131313131313131313131313131313131313131313131313131211100c08030000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1d221e1e1b18130e070000030a10161a1e2021201f1d1a151007020000000000000000000000000000000000000000000000040d16202830394149515960636f737c82898e93989c9ea5a4a6a7a8abafaaa8a6a5a7a09c9a95908b847e786f6b635c544d443d342c231a110700000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c57575757575757575757585860636e79838f9ba6b2bec9d5d3c8bcb1a5998e82776b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f27313b465059616b6f7b838e929ca0a7adb4b8bec1c5cacbcccfd4ceced2cecbcac8c3c1bab6afaaa29b928e82796e635e544941372920170e0400000000000000000000050f19242f39434a5560696f7b848f949ca3aab0b7bbc0c3c9cacbcac7c5c5c6c7cacbcac8c2c0bab5afa9a29b938e827a6f635e55494137281f160c03000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18130e0700000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d07000000000000000000000000000000000000000000000104050608080808080808080808080808080808080808080808080808080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b202528292e2a2927231e171008030b131a2025292b2c2c2b28252016110c05000000000000000000000000000000000000000000010b141e2630384149515a61696f767f868e929a9ca3a7a9aeb0b1b3b4b5b9b5b3b2b0b0aba8a59f9c95908a827b716d645d544d443c342a22180f06000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c514c4c4c4c4c4c4c4c4c4c50555f68737e8a96a1adb8c4cfd4c9bdb2a69a8f83786c6055493e32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212c364048515a616b6f7a828b91979da4a8aeb4b6babebfc1c5cac3c2c8c3bfbebcb8b4b0aba69f9c918d827a6f6960554d443930271910070000000000000000000000000a151f29313b465059616b707c848e939ca0a7abb3b5b9bcbfc0c3c8c2c3c2c8c2bfbebcb8b4b0aaa69f9c918d827a6f6960554d45393027170f06000000000000000000000003090d10121213131313131313131313131313131312100d090400000000000000000000000000000004090d10121313131313131313131313131313131212100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810161e252b3033343a3534322d2821191009131b232a303437383736332f2a211b150e06000000000000000000000000000000000000000006111b252e364049515a616a6f7a818a91969ca2a7acb3b4b8bbbdbebfc1c4c0bfbebcbab6b4aea9a59e9c928e847d726e645e544d443b322820160d030000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5145404040404040404040464f5864707b87929eaab5c1ccd5c9beb2a79b8f84786d61554a3e33271b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38414a515a616a6f7880868f939b9ea5a8abb0b2b4b6bab7b7b7b6b8b4b3b0aea9a7a09c96908a81796f69605850463d342920170800000000000000000000000000050f17222c364048515a626b707b828b91979ca2a7a9afb1b3b4b9b6b7b7b7b6b8b4b3b0aea9a7a09c95908a817a6f6a605950463d342920170700000000000000000000000000000205060708080808080808080808080808080707050200000000000000000000000000000000000000020507070808080808080808080808080808070604020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090b0b0b0b0b0b0b0b0b0b0b08080603020506070b0b0b0b0b0b0b0b0b0b0b0a0a08050100000000000000000000000000000000000000060c121921262e353a3e404541403d38312921161119232c343a3f424343423e39302b251e161108030000000000000000000000000000000000040d16202b353e475059616a6f7b828d929ca0a7acb2b6bcbfc3c8c8cacbcccecbcac9cac5c1bfb8b4aea9a39c9590867e726e645d544b423830261d12080000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3434343434343436404c57636e7a86919da8b4bfcbd5c9beb2a69b8f84786d61554a3e33271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f283139414a515a60686e747c838a90949a9ca0a7a6a8abb0abacababaea9a7a5a59e9c97918d857e766e69605950483f362c24181007000000000000000000000000000008121c262f38414a525b626b6f7980868d92989c9fa6a5a7a9afababacababaea9a7a5a59e9b97918c857f766f696059504840362d241810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12141517171717171717171717171413110e0d1012131717171717171717171717161513100c070100000000000000000000000000000001070f161c212931373e45494b514d4b47413a31271e17212a343c444a4e4f4e4d49433b352f272119120d06000000000000000000000000000000010b141e262f3a454e57606a6f7b838e939ba2aab0b7bcc1c6cbcecccac9c7c6c5c6c8cacbceccc8c3beb8b4aca59e9691877e726d645b524940372c22170f0500000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a3838383838383839414c58636f7a86919da9b4c0cbd4c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1720293139414951585f636c70797e84898e9197989b9ca0a7a0a0a09fa59e9c999795908c86817b736e636058504940382f261c1308000000000000000000000000000000020c161f28313a424a525a61696e747c82888c9095979a9c9fa69fa0a0a09fa59e9b999795908b86817b736e636059504940382f261c1408000000000000000000000000000000000306070810101010101010100807060300000000000000000000000000000000000000000000000000000000030608080b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a09060200000000000000000000020a10161a1d202022222222222222222222221f1f1d19181b1e1e222222222222222222222221211f1b17110b0300000000000000000000000000040911171f262c313a41474f54575c5856514a41372f251f27313a444d54595b5a58534a453f37312a221c160f07010000000000000000000000000006111b252e363e49545e686f7a838f949ca3abb5bac0c7cccfccc7c1bebdbbbababbbcbfc0c4c9cdcec8c3bcb6aea7a09791867e726c625950463c31291f150a00000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51454444444444444444454a525b65717c88939faab6c2cdd3c8bcb0a5998e82776b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710192029313940474f545c62686e72797e82868a8d8f919794949494949395908e8b8884807c756f6b655e555048403830271f160c0300000000000000000000000000000000060f172129313a424a51585f636c70767c8185888c8e90959394949494949395908e8b8884807b756f6b655e555049403930281f160c030000000000000000000000000000050a0e1113131c1c1c1c1c1c1c1c1413110e0a05000000000000000000000000000000000000000000000000050a0e111314171717171717171717171717171717171717171717171717171717171717171717171717171717161614110d070100000000000000020b131a2025292b2c2e2e2e2e2e2e2e2e2e2e2e2b2a28242327292a2e2e2e2e2e2e2e2e2e2e2e2d2c2a26211b140c030000000000000000000000040c141a22282f363b444a51585f636864615a51483f352b262f38424a545d646665635c554f48423a312c261f17120a010000000000000000000000000b16202b353e47525b636e78828e939da4acb4bbc4c9d0c9c4c0bdb7b3b2afaeaeafb0b3b5b9bfc2c7d0cec6beb7b0a8a09791867c706a60564b43392f24191006000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5150505050505050505050545a626b74808c97a3aebac6d1d0c5bab1a8978c8075695d52463b2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019202830373e454953585f63686e72777b7e81848587888889888887868482807c7974706b64615a554a463f3830281f170e05000000000000000000000000000000000000071019212a313941484f555b62656c70757a7d80828586878889898888878684827f7c7974706b64615a554a464038302820170f060000000000000000000000000001080f14191c1e1f27272727272727271f1e1c19150f0801000000000000000000000000000000000000000001090f15191d1f1f23232323232323232323232323232323232323232323232323232323232323232323232323232322211f1c17110b040000000000000a131b232a2f34373739393939393939393939393736332f2d3234353939393939393939393939393835312b241c140b010000000000000000000006141c242a323840464a545a61686e736f6b61584f453b302c363f48525b646d72716d635f58524a443c363028221a12090000000000000000000000030e19242f3a454e57626c747f8b929ca3acb4bcc4cfcdc7c0b9b5b3ada8a6a4a3a2a3a5a8aaafb3b7bdc5cacfc7c0b8b0a79f968f837a6f635c53493e332920150b000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5b5b5b5b5b5b5b5b5b5b5c5d636a707c85909ca8b3bfcad6ccc1b6aba197897e72675b4f44382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820262e353a43474f54585f63666a6f7375787a7b7c7d7d7d7c7c7a797674716e6864625b57514a453b362f271f170f060000000000000000000000000000000000000000081119212931383f454a52575c6265696e717477797a7c7d7d7d7d7c7b7a797674716e6864625b56514a453c36302820180f0700000000000000000000000000010911181f24272a2b33333333333333332b2a28241f19110a01000000000000000000000000000000000000010a12191f24282a2b2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a26211b140c040000000006101a232c333a3f4243454545454545454545454542413e39383d404145454545454545454545454443403b342d241b1107000000000000000000050e16242d353b424850555d646b6f787f7b6f685f554a443a303b454f58626b727e7d746e68625b544a464038322b22190f050000000000000000000005101c27333e49545e68707c86919ca2abb4bdc5cdccc4bdb7afaaa8a49d9b98979798999c9fa6a8adb6bac1c9d0c9c0b8afa69d948c81756c63584d43392f251a0d030000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f7468676767676767676767676767696d727b838f969faab5c0cbd6cbbfb4a89c91867b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161e252b30373e45494f55575a6164676a696e707171727171706f696b6865635f5857524b47413a302c261f170f070000000000000000000000000000000000000000000009111920272f363b42484c535858606366696b6a6f707171727171706f696b6865635f5857524b47413a312c261f170f07000000000000000000000000000008111a22282e3335363e3e3e3e3e3e3e3e3635332e29221a110600000000000000000000000000000000000009121a22292f3336373a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a393835312b241d140b010000000b16202a333c43494d4f51515151515151515151514e4c494341474b4d5151515151515151515151504e4b453d342b21170c0100000000000000010b151e27353d454b525960636d727b828b82796e635d544a423a414a555f69707c85868079706b645d555049433b32291f150a0000000000000000000006111d2934404b57636e78828e97a0abb3bbc4cdccc3bcb4aca79f9c97938f8d8c8b8c8e90969b9da4abb1b8c1c8d1c8c0b7ada49c91877d71655c53493e33271d13080000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f747272727272727272727272727375787d848f939da6afb9c4cecdc2b7ada49a8e82776b61564b4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b20262e353a3f454a4c5156585b585f63646566666665646360595d5a57544f4c48423d383129211c160e060000000000000000000000000000000000000000000000000810171f262c30393e43494c5055575a5d596063656566666665646360595d5957544f4c48423d383129221c160f070000000000000000000000000000050f18222a32383e41424a4a4a4a4a4a4a4a42413e39322a22160d0400000000000000000000000000000000050f19222b32393e41424545454545454545454545454545454545454545454545454545454545454545454545454545454544403b352d241b11070000040f1a252f3a434c54585a5c5c5c5c5c5c5c5c5c5c5c5958534b4a5156585c5c5c5c5c5c5c5c5c5c5c5b5a554d453b31261b10050000000000000007111b252e37454e555b62696f757e858e928c80746d645b5248414a545d636e79838f918b827c726e636059534b43392f24190e03000000000000000007121d28343f49535c66727e89939ca7b0bac3cccec5bcb3aba39d96918c8783818080818285898f939ca1a8b0b8c1cad0c7bdb6aba1978e82776d63584d41372d22180d0200000f1b26323d4955606c77838f9aa6b1bdc9d4d2c7bbb0a4998d817e7e7e7e7e7e7e7e7e7e7e7e7e7f80838990949da4adb7bfc9cec5bdb3a89d948a7e72675a51473d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161e252b30353b3e41474b4c504f5557595a5a5a5a5a59575550514e4b49453e3d38322d282119120c050000000000000000000000000000000000000000000000000000060e151c21292e33393e3f464a4c4e52505658595a5a5a5a5a59575550514e4b4a453f3d38322d282119120c060000000000000000000000000000000a141f28323a42484c4d55565656565656554d4c48423b32261e150b010000000000000000000000000000000a151f29323b43494c4e515151515151515151515151515151515151515151515151515151515151515151515151515151504f4b453d352b21170d020007121d29343f49545d6366686868686868686868686865635c53515a6164686868686868686868686867645e554b40352a1f1308000000000000000b16212b353f47555e656c707a808990959a90897e726b62585047515a636d75808c939c938e857e756f69625c53493e33281d1106000000000000000008141f2b36424d58636d78838f9aa3acb8c0cad1c7bdb4aba29c938f86807b7875747475767a7e838b9197a0a7b0bac5cfd0c5bab1a89c93887d71655a51473c31261b100400000f1b26323d4955606c77838f9aa6b1bdc9d4d3c8bcb1a69b918d898989898989898989898989898a8c8f939b9ea5adb4bdc7cec5bdb5aba29b8f83796e63574b41382d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d151b20252b3033373c404144454a4c4d4e4e4f4e4e4d4c4a464642403e3a35322e28231e1810070200000000000000000000000000000000000000000000000000000000050c12161f24292f33363b3f404346464b4c4d4e4f4f4e4e4d4c4a464642403e3b35322e28231e17100803000000000000000000000000000000030e19242e38424b52575961616161616161615957524b42372e251b11070000000000000000000000000000030e19242f39434b5358595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5c5a554e453b31261c1106000914202b37424d58636d717373737373737373737373716c635856616b6f7373737373737373737373736e645a4e43382c21150a000000000000030f1a25303b454f58656e737c838c919c9ea19c90857c706960554f58616b727d89909aa39c959089817a706c62584c41362a1f130800000000000000030f1a25303b454f5866717d88939da8b3bcc8d1cdc2b7ada49c928e837b74706b6a696869696f72797f879197a0abb6bcc6d0cac1b8aca3998d82766a61564b4034291d120600000f1b26323d4955606c77838f9aa6b1bdc9d4d6cbc0b5aba29b999595959595959595959595959596979b9da4a9aeb5bdc5cec5bdb5ada49b91897e72685f544a3e31281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161b2125282d313435353b3f4041424343434242403f3c36373433302b25231e18140e070000000000000000000000000000000000000000000000000000000000000002070f14191f24262c30333437373c3f4042434343434241403f3c36373433302b25231e18130e07000000000000000000000000000000000006111c27333e48525b62646d6d6d6d6d6d6d6d65625b52473e352b20160e040000000000000000000000000006111d28333e49535c636568686868686868686868686868686868686868686868686868686868686868686868686868686868655e554b40352a1f1409000915202c37434f5a66717d7f7f7f7f7f7f7f7f7f7f7f7d71655958646f7b7f7f7f7f7f7f7f7f7f7f7f7e73675b5044392d21160a00000000000005111c28333e4a545f68737f868f939aa1a9a99f958f83796e635d545f686f7b84909ca1aaa69f9c918d837d7065594e42372b1f14080000000000000005111c28333f4a555f6975818d98a4adb7c4ccd6cabfb3a89d948e827a706b64615b5d5d596063686e747e87919ca3acb6c1ccd1c9bcb3a89c91857b6f63584c4135291e130900000f1b26323d4955606c77838f9aa6b1bdc9d4d9cfc5bbb2aba6a4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a3a6a8adb4b8bec5c8c3bcb5ada59d948d81766d64584f453b3021170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c11161a1d2326292a2b303334363737383737363534312c2b292825201b18140e090400000000000000000000000000000000000000000000000000000000000000000000050a0f15191c212528292c2d313435363737383737363534312c2b292825211b18140e090400000000000000000000000000000000000007131e2a35414c57626c707878787878787878706c62584f453a30271e13090000000000000000000000000008131f2a36414c58636c71747474747474747474747474747474747474747474747474747474747474747474747474747474736f655a4f44382d21160a000d1924303b47535e6a75818b8b8b8b8b8b8b8b8b8b8b7f74685c5a65717d888b8b8b8b8b8b8b8b8b8b83786d61554a3e33271b1000000000000006121d2934404b57636e79838e959da4aab4afa69d938c80756e645c636e79828e959ea9b1afa9a19b928a7f73685c5045392e22170b0000000000000006121d2934404c57636e7a85909ca7b3bdc6d6cbc0b5aba29b8f837a6f69615b575252515055585f636e747f8b939ca7b2bdc7d1ccc0b5aaa0968a7e73675c5044372d22180d02000f1b26323d4955606c77838f9aa6b1bdc9d4e0d5cbc2bbb5b1b0acacacacacacacacacacacacacadaeb2b3b7bdc2c7c6beb8b4aca49d948f837a6f635d54473f352b21100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f13181b1d1e212528292a2b2c2c2c2b2a29282622201d1c1a16110b09040000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12171a1d1d20222629292b2b2c2c2c2b2a29282622201d1c1a16110b0904000000000000000000000000000000000000000008131f2b36424d5964707c84848484848484847c70685f544941372d23170f0600000000000000000000000008141f2b37424e5965717c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f73685c5045392e22160b000d1924303b47535e6a75818d9696969696969696968b7f74685c5a65717c889496969696969696968f84786d61554a3e33271b1000000000000005111c28333e4a545f686f7b85909ca1aab4b6aca39a91897e726c636d74808b929ca5aeb8b0a79e948d81766f655a4f44382d21160a000000000000000814202b37424e5a65717c88959fa9b4c0cbd4c8bdb2a69c92887c706a6059524b484646464a4f545d636e78828e9aa4adb7c2cdcfc4bab0a7998d81766a5a51473c31261b1005000f1b26323d4955606c77838f9aa6b1bdc9d4e0dbd3cbc5c0bcbbb8b8b8b8b8b8b8b8b8b8b8b8b8b9babdbec2c7cdc8beb6aea9a29c948f847b706a60564d44372e251b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d101212161a1c1d1f20202020201f1d1d1b171211110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f111213171b1d1e1f20202020201f1d1d1b171212110f0b07010000000000000000000000000000000000000000000007131e2a35414c57626c77828e8f8f8f8f8f8e82796e635a51473d32281f160c0200000000000000000000000b16222e3945505c68737f8a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b84786d61564a3f33271c10000d1924303b47535e6a75818d98a2a2a2a2a2a2a2968b7f74685c5a65717c88949fa2a2a2a2a2a29b8f84786d61554a3e33271b10000000000000030f1a25303b454f58616b727e89909aa3acb6b4aaa19c90857c706a717d87919ca3acb6b5aaa0968f847a6f635e554b40362a1f1409000000000000000b17222e3a45515c68747f8b96a6afb9c3cecfc4bab0a7998d82766c62595049413d38363b3f454a545e68717d89949da8b3bfcad4cabeb3a79b9084796a61564b4034291d1206000f1b26323d4955606c77838f9aa6b1bdc9d4e0e3dbd5cfcbc8c7c3c3c3c3c3c3c3c3c3c3c3c3c3c4c6c9caccd1cec3b8aea59e9c928e837c706b615950463c34271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070b0f11121314151515141312110f0c08060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080c1012121314151515141312110f0c080605030000000000000000000000000000000000000000000000000006111c27333e48525b66717d88939b9b9b9b938a7f736b61564b43382f261c120800000000000000000000000b16222e3945505c68737f8a969797979797979797979797979797979797979797979797979797979797979797979797979084786d61564a3f33271c10000d1924303b47535e6a75818d98a4adadadadada2968b7f74685c5a65717c88949fabadadadada69b8f84786d61554a3e33271b10000000000000000b16212b353f47515a646d75808c939da6afb9b5aa9f968f837a6f7b849097a0abb3b5aba29c91867d716a60564e453b31271c1106000000000000020d1925303c47535f6a76818d98a4b0bbc8d3ccc0b5aaa096897d71665c53494038322e2c31353b454e57636d78838f9ba6b2bdc9d5cbbfb4a99e94867b6f63584c41352a1e1207000f1b26323d4955606c77838f9aa6b1bdc9d4e0e5ddd6d0ccc9c8c6c6c6c6c6c6c6c6c7c8cacbced3d1d5d5d8d6cbbfb4a99e95908a827a706b625b524940372c23160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070809090909080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708090909090908060604010000000000000000000000000000000000000000000000000000000000030e19242e38424d58636d77828e9aa3a7a39c90857b6f645d544840362c21160d04000000000000000000000b16222e3945505c68737f8a96a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afb9b9b9aea2968b7f74685c5a65717c88949fabb6b9b9b2a69b8f84786d61554a3e33271b100000000000000007111b252e37414a545d636e79838f959fa9b5b9afa69d938d817a818e949ea7b0b7aea59b928b7f736c635a51473d352b21170d02000000000000030f1b26323d4955606c77838f9aa6b1bdc8d4cbbfb3a89c91857a6f63574c433830282321252b353e47545d6975808c98a3afbac6d2cdc2b8aea593887c71655a4e42372b201408000f1b26323d4955606c77838f9aa6b1bdc9d4e0ddd4cdc6c1bebdbbbbbbbbbbbbbbbbbbbcbfc0c3c9cdd2d8dfd6cabeb3a79c90857f786f6a625b524a413830261b1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28343e49535c66717d89939da7a99f958d81766d635950463b31261e140b010000000000000000000b16222e3945505c68737f8a96a2adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000000010b151e27313a444a555f69707c85909ca1aab4b6ada49b918d828e929ca5aeb8b0a79e948d81786e635c534940372d241b12080000000000000005101c28333f4a56626d7984909ca7b3becad4c8bdb1a59a8e83776960554a3f32282017171b252e36444f5b67727e8995a0acb8c3cfd2c8b8aca095897e72675b4f44382d21150a000f1b26323d4955606c77838f9aa6b1bdc9d4e0d6cdc4bcb6b3b1afafafafafafafafb0b1b3b5b9bfc2c8ced6d1c5baaea2978b80746e68615a524b423a312820160b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070a0d0e0e0d0c0806050300000000000000000000000001040606090c0e0e0e0c0906050401000000000000000000000000030506080c0d0e0e0d0a070604020000000000000000000000000000000000000000000002050707111111111111110f0e0c090501040606111111111111111006050300000000000000000000050f1a252f3a434d59636d77838f9aa4ada69b91897d716960554a42362e251b11060000000000000000000b16222e3945505c68737f8a96a2adb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b2a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000000002080c0f162129303b454f58626b727e89919ba4adb7b4aba29b928e929ca2abb5b5aaa09790847a6f685e544c433930271d140e0a0500000000000005111c28333e4a545f687985919ca8b3bfcad3c7bbb0a4998d82766a5950463b3122180f0b141e2b37434e5a65717d88949fabb6c2cecfc4b8ada1968a7e73675c5044392d22160a000f1b26323d4955606c77838f9aa6b1bdc9d4dbd0c6bcb4aca7a6a4a4a4a4a4a4a4a4a4a5a8aaafb4b8bec6cdd2c6bbafa49a908a7e726c62574e453a2f2921180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d10121216181a1a19171411100e0b06010000000000000002080c0f11121518191a19181512110f0c07020000000000000001060b0e10111417191a1a18161212100d080300000000000000000000000000000000000004090d1012131d1d1d1d1d1d1d1a191814100c0f11121c1d1d1d1d1d1d1b12110f0b070200000000000000000b15202a343f49545d66727e89939da8aba29b8f847a6f635b52473e352b20160d0300000000000000000b16222e3945505c68737f8a96a2adb9c4c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5beb2a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000000000060c12171a1d22262c363f48525b646e75818c939da6afb9b2aba39c999ca3abb3b5aba29c91867d716a61574e453b3328241f1c19140f08010000000006121d2934404b57636e7a85969faab5c0ccd2c6bbafa3988c8175695e5247362c21120808131f2a36424d5964707c87939eaab6c1cdd0c4b9ada2968a7f73685c5045392e22170b000f1b26323d4955606c77838f9aa6b1bdc9d4d7ccc1b6aca39c9a989898989898989898999c9fa6a9aeb5bdc4cdc9beb4a9a09c90857c70685e54493e33271f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d13181b1d1e2124252625231f1d1c1916110b040000000002070c12171a1d1d212425262523201d1c1a16120c070100000000040b1116191c1d1f2325262524211e1d1b18130d0803000000000000000000000000000000080e14181c1e1e282929292929292625231f1a171b1d1e28292929292929271d1c1a16110c050000000000000006101a25303a444b57636e78838f9ba4ada89d948b80746c62574e453a2f271d130900000000000000000b16222e3945505c68737f8a96a2adb9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbeb2a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000000000070f161c2126282c3134363c424a545d636f7a838f969faab5bbb3aca7a5a7acb3b8aea59c928b7f736c635a51473e3835332e2a27241f1811090100000006111d2934404b57636e7a85969faab5c0ccd2c6bbafa3988c8175695e5247362c22170c08131f2a36424d5964707c87939eaab6c1cdd0c4b9ada2968a7f73685c5145392e22170b000f1b26323d4955606c77838f9aa6b1bdc9d4d5c9beb3a79c938e8c8c8c8c8c8c8c8c8d8e90969b9ea5acb4bdc6cfc3bab5aa9f968e82786e63574b43392f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181d222629292d303131302e2b292724201b140d070100050c12171c222628292c2f3031302f2c292825211c16110b050002070d141b202427292b2e303131302d292926221d18130d07000000000000000000000000000911181e2327292a3434343434343431302e2a25222628293334343434343433292825211b150e06000000000000000b162027333e49545e68727e89949da8ada49c91867c70685e544941372d22170e05000000000000000b16222e3945505c68737f8a96a2adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b2a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000000060f171f262c3134373c3f40464a4c50556069707c85909ca5aeb8bcb6b2b1b2b6bcb4a89e948d81786e635c534d4c4842413e3835332e29221a110800000005111c28333e49545f687985919ca8b3bfcad3c7bbb0a4998d82766a5950463b31261a0f0c11202b37434e5a65717d88949fabb6c2cecfc4b8ada1968a7e73675c5044392d22160a000f1b26323d4955606c77838f9aa6b1bdc9d4d4c8bdb1a69a8e8281818181818181818182858a90949da3acb5bec8cec4b9afa69c93897e72675c53493e33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010810171d22272d313435383b3c3d3c3a3734332f2b251e16110b060e161c21262c313435383b3c3d3c3b373433302c26211b150e060c11161e252b2f3334373a3c3d3c3b383534312d27221d171008010000000000000000000008111921282e323536404040404040403d3c39342e2c3134353f4040404040403e3433302b251e160e05000000000000030e19242f3a454e57636e79838f9ba4adaaa0968e82786e635a51473c31271f160c020000000000000b16222e3945505c68737f8a96a2a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100000020c161f282f363b3f40464b4c505557596063666c737e8a959ea9b4bfc0bdbcbdc0beb2a79b90847b6f6864625b5957524d4c4842413e38322a22180f050000030e1a25303a454f626d7984909ca7b3becad4c8bdb1a69a8e83776960554a3f34282017171b252e37444f5b67727e8995a0acb8c3cfcfc3b8aca095897e72675b4f44382d21150a000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f757575757575757576777a7e848f939da5aeb8c3cec9bfb7aca39a8f83786c62584c41362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121820272d31373c404144474848474642403e3a352e26211b1510171f262c30363b3f4043464848484643403f3b36302b251e160f151b21262e353a3e404246474848474441403c37312d272018120a020000000000000000040e18212a31383d40414b4b4b4b4b4b4b4947443e38373c3f404b4b4b4b4b4b4b4a403e3b352f271e150c020000000000000b16202b353e4a545f68737e8a949ea8b0a79c938a7e736a61564b43382f261c12070000000000000b16222e3945505c68737f8a969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000008121c262f3840464a4c50565859606366696e7275797d84909ca7b3becac9c8c9c7bbb0a4988d817c7774706b6864625b5957524d4c48423b32291f140a0000000b16202b354955606c77838f9aa6b1bdc8d4cbbfb3a89c91857a6f63574c433930282321252b353e47545d6975808c98a3afbac6d2cdc2b8aea593887c71655a4e42372b201408000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746a6a6a6a6a6a6a6a696e737b838f959ea9b4c0cad0c7bcb3a89d93887c7065594e42362b1f120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222930373c41474b4c5052535453514e4b49453e36302b251e1920272f363b40464a4c4f52535453524f4c4a453f3b352e2720181e252b30363e45494b4e5153545352504c4b47413c373029221a120a020000000000000009141e28313a42484c4d5757575757575754534e484040464b4c56575757575757554c4a453f372f251b110700000000000006111b25303b454f58636e79848f9ba5aeaca39c90857b6f635c53483f362c21170e0400000000000b16222e3945505c68737f8a919191919191919191919191919191919191919191919191919191919191919191919191919084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000010c17212c36404850555759606367696f72767a7d81858990959ea9b4bfcbd4d3d3c8bcb1a69b918d87837f7c7874706b6864625b5957524b42382e24190e030000071125303c47535f6a76818d98a4b0bbc8d3ccc0b5aaa096897d71665c53494038322e2c31353b454f58636d78838f9ba6b2bec9d5cbbfb4a99e94867b6f63584c41352a1e1207000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685e5e5e5e5e5e585f636a6f7b84909ba7b0bac4cfccc1b7ada4978b8074685d5146362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b222b323941474b5156585b5e5f605f5d5957544e47443b352e27212931383f464a5055575a5e5f605f5d5a57554f4a453f37302820272f353b44474e5457595d5f605f5e5b5856514b474139322b221b1209000000000000020d18232e38424a52575862636363636363605e58514849505658626363636363636157554f483f352b21160b000000000000010b16212b353f4a555f69737f8a949ea9b4a99f958d81766d635850463b30281e140a00000000000b16222e3945505c68737f85858585858585858585858585858585858585858585858585858585858585858585858585858584786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000040f1a26313b4650596063676a6f72767a7e8185898d90959c9ea5aeb8c3ced9dfd5cabfb5aba29b98938f8b87837f7c7874706c6865625b52483e33271c110600000b17222e3a45515c68747f8b96a6afb9c3cecfc4bab0a7998e82766c63595049423d38363b3f454a545f68717d89949da8b3bfcad5cabeb3a79b9084796a61564b4034291d1206000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c52525252524f555a616a737f8a97a0abb5c1ccd1c6bcb1a59a8e82776b584f453b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b333b434951565a616367696b6b6a6865635e57544a453f372e2931394148505559606366696a6b6a6966635f58544f47403930282f373f454a54575e6365686a6b6b696763615a565149433b332b22191007000000000005101c27323d48525b62646e6e6e6e6e6e6e6b6861584c505960636d6e6e6e6e6e6e6d635f584f453b30251a0f03000000000007111b252e373f485058636e7a84909ba7b3aea59b91887d716960554a42382e23191006000000000a16212d38444f5a656f737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b10000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100006111d28343f4a5560696f72767a7e8285898d9096989c9fa6a9aeb6bec8d2dde4d9cfc5bbb2aba6a39d9a96938f8b87837f7c7874706c62574c41352a1e130700000814202b37424e5a65717c88959fa9b4c0cbd3c9c0b2a69c92887d716a6059524c484646464a4f555e636e79828e9aa4adb7c2cdcfc4bab0a7998d81766a5a51473c31261b1005000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5147474747454a515a636f7b86919ca8b4bfcbd5cabeb3a79b908479695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e182129333b434b535a61636a6f727576777674716e68635d544f473f36313a414a51586063696f727576777675716e69635f585149403930373f484f555d63686e717476777675726f6a63615a534b433b332921180e040000000007121e2935404c57626b707a7a7a7a7a7a7a7772685c5356606a6f797a7a7a7a7a7a786e685f554a3e33281c110500000000000b16212b353f47505960636e737f8a96a2adb6aba29b8f83796e635b52483d322a20160b0000000009141f2a36404b555e65686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100006121d2935404c57636f7a7e8285898d9096999c9fa6a7a9afb4b8bec6c9ced3d9d1ccc7c2bbb5b1aca8a6a49d9a97938f8b8783807c7065594d42362b1f1308000006121d2934404c57636e7a85909ca7b3bdc6d1cbc0b6aba29b8f837a6f69625b575252515055585f636e74808b939ca7b4bdc7d1ccc0b5aaa0968a7e73675c5044372d22180d02000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453b3b363b414b56616a78848f9ba7b2bec9d5cbbfb4a99e95867a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a434c535c626a6f757b7e81828281807c79716d635f584f473e38414a515a61696e737a7d80828282807d79736e68605a514940373e474f585f636d71797c80818282817e7b756f6a625c534c433a31281e14090000000007131e2a36414d5864707b8685858585858582776d635859636f7a8585858585858583796e63574c4034291d120600000000030f1a25303b454f5860696e767e838f9ba6b2bbb3a89d948b80746b62574c443a30251a0f0500000006111c27313b454e555a5c636363636363636363636363636363636363636363636363636363636363636363636363636363615f5a534a40362c21160b000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100006121e2935404c57636f7a858d9196999c9fa6a8aaafb3b4b9bab7babbbec3cad0c8c1bcb9b8b8bcb7b3b1ada8a6a49d9b97938f8b82766b5f54483c31251a0e000005111c28333f4a555f6975818d98a4adb7c1cccfc5bbb3a89d948e827a706b64625b5d5d596063686e747e87919ca3acb6c5cdd1c9bfb3a89c91857b6f63584c4135291e130900000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453a312e323d48525b6c78838f9aa6b2bdc9d4cdc3b8aea592867b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414a535c636c707b80858a8c8d8e8d8b88837d756e685f574e453f48515a616b6f797f85898c8d8e8d8c89847f796f6a605950473f454f585f686e757d83888b8d8e8d8c8a85807b706c635c534a41382e23180f0500000007121e2935404c57626b75818d9791919192887d71655c6069747f8b95919191948a7e73685f554a3e33281c11050000000005111c28333e4a545f686e79818a8f949da8b3bfb7ada49c91867c70645d544a3f34291f150a000000020d17212b353d454b4f505757575757575757575757575757575757575757575757575757575757575757575757575757575654504a423a30261c1207000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b100006111d28343f4a55606976828d999fa7a8aaafb3b5b9b8b4b2afabaeb0b4bac1c8c0b8b2adacacb0b3b5b9b7b3b2ada8a6a49d978a7e73675b5044392d21160a0000030f1a25303b454f5866717d88939da8b3bcc8d1cdc2b7ada49c928e837c75706b6a69696a696f7279808a9197a1abb3bcc6d4cac1b8aca3998d82766a61564b4034291d120300000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c51453d3d383d434c57626c7984909ca7b3becad5cec3b8aea592867a6f63584c4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b636d717d848c91969899999897938f8980796e685e5449465059616b6f7b828b909597999a999795908a827a6f6a60584f4549545f686e7980898f93979899999896918c847d716c635b52483d32291f150a00000005101c27323d48525b64707c86919c9ca3998e82766c62636f7a84909ca6a59b9084796e63584f453b30251a0f0300000006111c27333e48525b636e79828d929b9da4adb7c2bdb5aaa0968e82776d63594d43392f24190e030000030e19242f39434c53585a5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5c5a554e453c31271c1106000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000040f1b26313c46505967737e8a97a0abb3b5b9b7b3b2aea8a7a39fa3a5aab1bac1b8afa8a2a0a1a4a8aaafb3b5b9b7b3b2a89c91867b6f63584c4135291e12070000000b16212b353f4d58636d78838f9aa3acb8c0cad1c7bdb5aca29c938f86807b7876757475777a7e838b909ca1a8b1bac4ccd0c5bab1a89c93887d71655a51473c31261b100400000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c5149494949484c535c64707c87959ea9b4bfcbd6cbc0b4a99e95867a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b717d8690949ca0a7a5a5a4a49d9a918c81786e635b524a5560696f7b848e939c9fa5a4a5a4a59e9b928e837a6f685f544a525b636e78818c919a9da4a4a5a5a7a09c9490867d716b61574b43392f24190e030000020d18232e38424c57626b76818d97a1a79c92887c706569737f8b959ea99e958a7f73695f55483f352b21160b0000000007131e2a35414c57626c74808b929ba2a8adb4bdc7c4bab0a79c92897d72665c53493e33281d1106000006121d28333e49535c636569696969696969696969696969696969696969696969696969696969696969696969696969696968655e554b41362b1f1409000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b1000010c17222c36414c58636f7b86919ca8b4b4b1ada8a6a59e9b9894979aa1aab4bcb2a89f989595999c9fa6a8aaafb3b4b0a7998e82776a61564b3f34291d120600000007121c25343f49535c66727e89939ca7b0bac4cfcec5bcb3aca49d96918c8783818080818285898f9499a0abb1b8c1cad0c7bfb6aba1978e82776d63584941372d22180d0200000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74685c545454545452575c636d75808c98a5aeb8c3ced6cabeb3a79c908479695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c64707b8490969ea5aab0b0b1b0ada8a19a918b80746c62575059636e79838f949ca3a9aeb0b1b0aea9a29c938e82796e63584f57626c74808c929aa1a8adb0b1b0b0aaa59e9690847b70645c53493e33281d110600000009141e28323d48525b65707c87919ca8a2998d81766c6f7a84909ba5a69c90847a6f63584f45372f251b1107000000040f1a26313b46505965707c86919ca2abb3b7bdc5cec9c0b7aca39a8f83776c63584d41362a1f1107000008131f2a36414d58636c71747474747474747474747474747474747474747474747474747474747474747474747474747474736f655a4f44392d22160b000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000008121d2934404b56616a77828e9aa5aba8a5a49d9b9794908c888b909aa5b0b9ada2988e89898d9096999c9fa6a7a9aba0978a7e73675a51473c31261b1004000000020c1a252f3a434b57636e78828e97a0abb5bbc4cdccc3bcb4ada7a09c97938f8d8c8b8c8e90969b9da4a9b6bac1c9d0c8bfb7ada49c91877d71655c53493930271d13080000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f74686060606060605b62646d717d86919ca8b3bec8d2d4c8bdb1a69a8e83776c584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58636c76818d959ea6aeb5babcbcbbb7b3aaa29c91867c70655956606a747f8b939da5acb4b8bcbcbbb8b4aca49c928a7e73685f555965707c87919ca2aab3b7bbbcbcbab5aea69e958d81766c63584c41362a1f1308000000040e19232e38424c57626c76828d99a2a89c91867c70737f8a959ea99f958b7f74696055483f36271e150c0200000006111d28343f4a55606976818d97a0abb3bbc2c7ced5d0c7bcb3a79d93887c7165594e42352b21160b00000814202b37424e5a65717d8080808080808080808080808080808080808080808080808080808080808080808080808080807f73685c5145392e22170b000d1924303b47535e6a75818d98a4afbbc5b9aea2968b7f74685c5a65717c88949fabb6c2beb2a69b8f84786d61554a3e33271b10000004101b26313c47515a68737f8a96a3a19c9a96938f8b8884807d808b97a3aeb8aca095897e7e8185898d9096989c9fa69c91867b6f64584c41372d22180d02000000000b152027333e49545e68707c86919ca2abb4bdc5cdccc4bdb7b0aaa8a49d9b98979798999c9fa6a8adb4bac5cad0c8c0b7afa69d948c81756c63584c43392920170d030000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f746b6b6b6b6b6b6b6c6c70757d859097a0aab5c1cfd8cfc4b9afa7988c8175695e5247352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88929ba5aeb7bec4c9c8c6c1bab6aba0978d82766a6058636f7a85909ca3acb5bcc3c8c8c8c2bcb4aca29b9084796e6357606a76828d97a1abb2bac1c7c8c9c4beb7aea59b92887c7165594e42372b1f1107000000000a141e28333e48525b65707c88929ca7a0978d81757984909ba5a69c90857a6f63595046382f26160e050000000006121d2935404c57636f7a85919ca7b0bac3cdd1d7ded8ccc1b6aca3988c807569584f453b30251a0f03000b16222e3945505c68737f8a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b84786d61564a3f33271c10000d1924303b47535e6a75818d98a4afbbc1b9aea2968b7f74685c5a65717c88949fabb6c1beb2a69b8f84786d61554a3e33271b100000020d18222d37414d58646f7b87939997918e8b8783807c787574808b97a2aeb7aba094897d72767a7e8185898d9095989a8e82776a61564b4034271d13080000000000030e19242f3a454e57626c747f8b929ca3acb4bcc4cfcdc7c0bab5b3ada8a6a4a3a2a3a5a8aaafb3b7bdc5d0cfc7c0b8b0a79f968f837a6f635c53493c3329181007000000000f1b26323d4955606c77838f9aa6b1bdc9d4d0c5b9aea2968b7f777777777777777777797c808690959ea7b0bac4cfd7ccc0b5aa9f96897e72675b4f44382d2112070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6975808c97a2abb6bec7cfd3d3d1ccc5bab0a79c91857a6f635b66727e89959fa9b4bcc5ced2d3d2cdc5bcb4a99e94887d71655a636f7a85919ca8b1bac3ccd1d3d3cfc7beb6aba2978c8074695d5246352b20160b00000000040e19242e39424c58626c76828e99a3a79c91867b7f8a949ea99f968b80746a6056484036271f150600000000000914202b37434e5a65717d88969faab8c0cad4dce1e8dbd0c6bcb2a69b8f8378685f544a3e33281c1105000b16222e3945505c68737f8a969797979797979797979797979797979797979797979797979797979797979797979797979084786d61564a3f33271c10000d1924303b47535e6a75818d98a4afb5b5b5aea2968b7f74685c5a65717c88949fabb5b5b5b2a69b8f84786d61554a3e33271b1000000008131e2935404b57616b77838f8e8a86837f7c7874706c6974808b97a2aeb7aba094897d71696f72767a7d8185898c908a7f73675a51473c3126170d030000000000000b16202b353e47525b636e78828e939da4acb4bbc4c9d0c9c4c0bdb7b3b2b0aeaeafb0b3b5b9bfc2c7cdcec6beb7afa7a09790857c706a60564c43392b23190800000000000f1b26323d4955606c77838f9aa6b1bdc9d4d5c9beb2a79b8f8483838383838383838384878c91969ea5aeb7c0cad4d0c7bfb3a89c91857a6f63584c4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586c78838f9aa6b2bbc6cfd7dedfdbd4cac1b5aaa096897d72665e6a75818c98a6afb9c4cdd6dddfdcd5cdc2b8aea5978b8074695d66727d8996a0aab8c1cad3dbdfded7cfc6bbb2a69a8f83786c584f453a30251a0e03000000000a141f29333e49535c65717d88929ca7a0978c81848f9ba5a79c90857b6f63595046382f26170e0500000000000a16212d3944505b67737e8a95a6afb9c8d1dae4ebeae2d6cbbfb4a89c91857a6e63574b4034291d1206000b16222e3945505c68737f8a96a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29b9084786d61564a3f33271c10000d1924303b47535e6a75818d98a4aaaaaaaaaaa2968b7f74685c5a65717c88949faaaaaaaaaaa69b8f84786d61554a3e33271b1000000005101c27323d47515a68747f85827e7b7773706b6965626974808b97a2aeb7aba094897d71666366696e72767a7d8184877b6f64584d41372d2318070000000000000006111b252e364249545e686f7a838f939ca3abb5b9c0c7cccfccc7c2bebdbbbababbbcbfc0c4c9cdcec8c3bcb5aea79f9791867e726c625950463b33291b120900000000000f1b26323d4955606c77838f9aa6b1bdc9d4d6cabfb4a89e948f8e8e8e8e8e8e8e8e8f9095989ca0a7aeb6bec8d0d3c9c0b7aca2998d81766a60564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f687985909ca7b3bfcad6dfe8ebe4dacfc4bab0a7968a7f73675f6b77828e99a5b0bcc8d3dde6ece5dcd2c7bbafa4988d81766a5e67737f8a96a7b0bac9d1dae4ebe8dfd6cabfb3a79c908579685f54493e33281c110500000000050f19242f39434d58636c77828e9aa3a79b918c8f949ea89f968c80756a6156494037281f16060000000000000b16222e3945505c68737f8a96a2adb9c9d3dde8f3eee3d7ccc1b5aba097867a6f63584c4135291e1207000b16222e3945505c68737f8a96a2adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea79b9084786d61564a3f33271c10000d1924303b47535e6a75818d989e9e9e9e9e9e9e968b7f74685c5a65717c88949e9e9e9e9e9e9e9b8f84786d61554a3e33271b10000000020d18232d38414c58636f7a7a76736f6a6864625b595d6974808b97a2aeb7aba094897d71665a59606366696e71757a7c716b61564b4034271d130900000000000000010b141e262f3a454e57606a6f7b838e939ba2aaafb7bcc1c6cbcecdcac9c7c6c5c6c8cacbceccc8c3beb8b4aca59e9691877e726d645b524940372b22190a0200000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8cdc2b7ada49e9b9a9a9a9a9a9a9a9a9a9b9ea5a8aab0b7bec6cfd4cfc4bab0a79c92887d71655950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85959fa9b4c0cbd7e2eef4e9ded4cab9aea2978b7f7468606c77838e9aa6b1bdc8d4e0edf6ecdfd3c7bcb0a5998e82766b5f68747f8b97a2aeb9cad4dee9f4ede2d6cbc0b4a99f95857a6e63574b4034291d110600000000000a151f29333e49535c66717d88939ca7a19b989b9ea4a79c91857b6f645a5147393027170f060000000000000a16212d3844505b67727e8a95a6afb9c3cedae3eae8e0d6cbbfb4a89c91857a6e63574b4034291d1106000b16222e3945505c68737f8a96a2adb9babababababababababababababababababababababababababababababab2a79b9084786d61564a3f33271c10000d1924303b47535e6a75818d9393939393939393938b7f74685c5a65717c889393939393939393938f84786d61554a3e33271b100000000009141e29343f4b56606a6f6f6a6764615a595752515d6974808b97a2aeb7aba094897d71665a505557585f6366686e716c635a51473d32271b10050000000000000000040d16202b353e475059616a6f7b828d929c9fa7acb2b6bcbfc3c8c8cacbcccecbcac9cac5c1bfb8b4aea9a39c9590867e726e645d544b423830261a12090000000000000f1b26323d4955606c77838f9aa6b1bdc9d4dcd1c7beb5ada8a7a5a5a5a5a5a5a5a5a6a7a9aeb3b5bac0c8cfd4cdc4bcb5aaa0968e82776c63584940372d22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f687985909ca7b3bfcad6dfe8ebe5dacfc4bab0a7968a7f73675f6b77828e99a5b0bcc8d3dde6ece5ded2c7bbafa4988d81766a5e67737f8a96a7b0bac4cfdae4ebe8e0d6cabfb3a79c908579685f54493e33281c11050000000000050f1a242f39434d58636d77828e9aa3aaa5a4a7a8aaa0978c81756b615649413728201607000000000000000914202b37434e5a65717d88969faab5c0cad4dbdfded8cfc7beb2a79b908478685f54493e33281c1105000b16222e3945505c68737f8a96a2adb9c4c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5beb2a79b9084786d61564a3f33271c10000d1924303b47535e6a758187878787878787878787877f74685c5a65717d878787878787878787878784786d61554a3e33271b100000000004101b26313c46505960636360595856514d4c48515d6974808b97a2aeb7aba094897d71665a4f4a4c4f5557585f6365635c534a41372d23180d0200000000000000000006111b252e364049515a616a6f7a818a91969ca2a7acb3b4b8bbbdbebfc1c4c0bfbebcbab6b4aea9a59e9c928e847d726e645e544d443b322820160a020000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0d7cec5beb7b4b2b1b1b1b1b1b1b1b1b1b3b4b8bec0c4cad0d4cfc4bcb3aba29c91867c70645c53493930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586c78838f9aa6b2bbc6cfd7dedfdbd3ccc0b5aaa096897d72665e6a75818c98a6afb9c3ced6dddfdcd5cdc2b8aea5978b8074695d66727d8996a0aab5c1cad4dbdfded7cfc6bdb2a69a8f83786c584f453a30251a0e030000000000000a151f29343e49535c66717d89939da7b1afb2b1a89c91867b70645a5147393027180f060000000000000006121d2934404c57636e7a85909ca7b0bac4ccd0d4d4cfc7bfb6aca3988c81756a584f453a30251a0e03000b16222e3945505c68737f8a96a2adb9c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0beb2a79b9084786d61564a3f33271c100007131e2a35414c58646f7b7c7c7c7c7c7c7c7c7c7c7c7a6f635857636f797c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1f130700000000010c17222d3740495056585856504c4b47414046515d6974808b97a2aeb7aba094897d71665a4f4340454a4c4f55575958534c433931271e130900000000000000000000010b141e2630384149515a61696f767f868e929a9ca3a7a9aeb0b1b3b3b5b9b5b3b2b0b0aba8a59e9c95908a827b716d645d544d443c342a22180f06000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4e0ded6cec7c2bfbebdbdbdbdbdbdbdbdbdbebfc2c8cccfd4d0cac4bbb3aca39c928b7f746c62574c43392820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b3546525d6975808c97a2abb6bec7cfd4d4d1ccc5bab0a79c91857a6f635b66727e89959fa9b4bcc5ced2d4d2cdc5bdb4a99e94887d71655a636f7a85919ca8b1bac5ccd1d4d4cfc7beb6aba2978c8074695d5246352b20160b00000000000000050f1a252f3a434d58636d77838f9aa4adb7b6aba1978d81756b62574a413729201707000000000000000005111c28333f4a555f6976818d96a0aab5bac1c6c8cac4beb7afa69c92887d71665a4f43352b20160b00000b16222e3945505c68737f8a96a2adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b2a79b9084786d61564a3f33271c100006121d2934404b56616b6f70707070707070707070706f6a61565560696f7070707070707070707070706b62574c4035291e1207000000000008131d27303940464b4c4c4b4641403d373a46515d6974808b97a2aeb7aba094897d71665a4f43363b3f40454a4c4e4d49433b332920170e040000000000000000000000040d16202830394149515960636e737c82898e93989c9ea5a4a6a7a8aaafaaa8a6a5a7a09c9995908b847e786f6b635c544d443d342c231a110700000000000000000f1b26323d4955606c77838f9aa6b1bdc9d4d8d8ded7d1cdcac9c8c8c8c8c8c8c8c8c9cacbcdd2d4cfccc8c0bab5aba39c938d81786e635b52483b3329180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111f2b37424e5965717c88929ba5aeb7bec4cac8c7c1bab6aba0978d82766a6058636f7a85909ca3acb5bcc3c8c8c8c3bcb4aca29b9084796e6357606a76828d97a1abb6bac1c7c8cac4beb7aea59b92887c7165594e42372b1f110700000000000000000b15202a343f49545d66727d89939da8b3b4a89c91867c70645b52483931271810070000000000000000040f1a25303b454f5864707c86919ca1aab3b7bbbcbcbab5aea79f958e82776d63584d4236251b110700000b16222e3945505c68737f8a96a2a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a79b9084786d61564a3f33271c100005101b27323d47515a6164646464646464646464646463615a5150596063646464646464646464646464625b52483d32271c10050000000000030d17202830373c3f40403f3c3734322d3a46515d6974808b97a2aeb5aba094897d71665a4f43373033353b3e4042413e39332b2219100700000000000000000000000000050f1820293039414950555e656b70777d82888c909596989a9c9ca0a69f9c9b999797918e8a84807a736e68615a534c443c342c241b13090100000000000000000f1b26323d4955606c77838f9aa6b1bdc9cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdd3cfcccacac4c1bcb7b0aaa29c938e827a6f685e544b42382b22190700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58636c76828d959ea6aeb5babcbcbbb7b3aaa29c91867c70655956606a747f8b939da5acb4b9bcbcbcb8b4aca49c928a7e73685f555965707c87919ca2aab3b7bbbcbcbab5aea69e958d81766c63584c41362a1f1301000000000000000006101a25303a444b57636e78838f9aa4adaba2998d81766c62574a423829201708000000000000000000010c16212c363f4c57626b747f8b919aa1a7acb0b1b0b0aba59e9690857c70645d54493f3429150b0100000b16222e3945505c68737f8a969d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9b9084786d61564a3f33271c1000020d18232d37414a5156585959595959595959595959585651494850555759595959595959595959595857524a42382e23180d02000000000000060f1820272d3134353534312c29272f3a46515d6974808b97a2aaaaaaa094897d71665a4f43372c282b3033343736332f29221a12080000000000000000000000000000000710182029303840464a555b62646d72777c8084888a8d8e9091979196908f8e8c8986827e7a746f6a635e57514a433b342c241c130b030000000000000000000f1b26323d4955606c77838f9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c9c4c0bfbdbab5b3aca7a09c928d827a6f6960574e453a32281a120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c64707b8490969ea5aab0b0b1b0ada8a19a918b80746c62575059636e79838f949ca3a9afb0b1b0aea9a39c938e82796e63584f57626c74808c929aa1a8adb0b1b0b0aaa59e9690847b70645c53493e33281d11060000000000000000000b162027333e49545e68727e89949da8a79c92887c70655b52483a31281910070000000000000000000007121c26323d48525b656f75818b909a9da3a4a5a5a7a09c9590867d716c62574c433a2f251a040000000b16222e3945505c68737f8a929292929292929292929292929292929292929292929292929292929292929292929292929084786d61564a3f33271c10000009131e27313941474b4c4d4d4d4d4d4d4d4d4d4d4d4c4b474040464a4c4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e14090000000000000000070f171d22262929292826221d232f3a46515d6974808b979e9e9e9e9e94897d71665a4f43372c20212528292b2a28241f19120a0200000000000000000000000000000000081018202830363c454b52575d63666c7175797c7f81838485868685858482807d7b77736f6963605a544e474139332b231c130c03000000000000000000000f1b26323d4955606c77838f9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9b5b3b2b0aaa8a39c96918b817a6f6a615950473e352a21180a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434b57616b717d8690949ca0a7a5a5a4a49d9a918c81786e635b524a5560696f7b848e939c9fa6a5a5a4a59e9b928e837a6f685f5448535c636e78818c919b9da4a4a5a5a7a09c9490867d716b61574b43392f24190e03000000000000000000030e19242f3a454e57636e79838f9ba4a3998e82766c62584b42382a2118080000000000000000000000020c18232e38424a555f636e7880888f9397999a999897918c847d716d635b52483c332a20150b0000000b16222e3945505c68737f86868686868686868686868686868686868686868686868686868686868686868686868686868684786d61564a3f33271c100000040e17202931373d40414242424242424242424242413f3c37363b3f40424242424242424242424241403d38312a21180e04000000000000000000060d13171b1d1e1e1d1b1712232f3a46515d6974808b93939393939393897d71665a4f43372c20161a1c1d201f1d19150f09020000000000000000000000000000000000000810171f262c313a42484c54595c6365686e70737677797a7a7a7a79787674726f6a67636059565149453e363129231b130b0300000000000000000000000f1b26323d4955606c77838f9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaa8a6a7a09c99928e867f786f69615a514940362e251a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323d48525b636d717d848c919698999a9997938f8980796e685e544b465059616b6f7b828b909598999a999795908a827a6f6a60584f4549545f686e7980898f9397999a999896918c847d716d635b52483b32291f150a00000000000000000000000b16202b353e49545f68727e8a94939392887d71655c53483a322819110800000000000000000000000009141e28313a4549545f686e747d83888b8d8e8e8c8a86817b716d635d544b42382b231a100600000006121d2934404c57636e797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6f63584c4035291e120600000007101920272d32343536363636363636363636363534312d2c31343536363636363636363636363635322e2821191108000000000000000000000003080c10121212110f0c17232f3a46515d6974808787878787878787877d71665a4f43372c20150f11121413110e0a05000000000000000000000000000000000000000000070f161c222a32383d444a4d5358585f6365686a6c6d696e6f6e686c6b696663615a5755504b47403a352e262019120a030000000000000000000000000f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9b9897918d88827c746e6860595149403830261e1409010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18232e38414a535c636c707b80868a8c8e8e8d8b88837d756e685f574e453f48515a616b6f797f85898c8d8e8d8c89847f796f6a605950473f454f585f686e757d83888b8d8e8e8c8a86807b706c635c534a41382b22190f05000000000000000000000006111b25303a454f58636e79838787878782776c63584b42392a21180900000000000000000000000000040e18212a303a454f585f636d71797c80818282817e7b756f6b635c544c433a32281b13090000000006111d28333f4a5560696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a60564b3f34281d1106000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a29292622212628292a2a2a2a2a2a2a2a2a2a2a2a2927231e18110900000000000000000000000000000104060706060407121e2935414c58636f7b7c7c7c7c7c7c7c7c7c7a6f63574c4035291d1206050608080603000000000000000000000000000000000000000000000000060c121921282e323a3f43494d4f5457595c5e6058606363635f585f5d5b5856514c4a46403c372f2b251e16100802000000000000000000000000000f1b26323d4955606c77838f9393939393939393939393939393939393939393939393939296918f8d8a86827d77706c635e575049403930281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a434c535c626a6f757b7e81828281807c79716d635f584f473e38414a515a61696e737a7d80828282807d7a736e68605a514940373e474f585f636d72797c80818282817e7b756f6a625c534c433a31281a1209000000000000000000000000010b16202b353e4a555f686f7b7c7c7c7c7a6f635c53493b32291a11080000000000000000000000000000081119202b353e474f545c63686e707476777675736f6b64615a534c433c332a21180b0200000000040f1a25303b465058606363636363636363636363636363636363636363636363636363636363636363636363636363636363605950463c31261b0f040000000000070e13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1e1d1b18171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1e1c18140e080000000000000000000000000000000000000000000006121d2934404b56616a6f7070707070707070706f6960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000030811181e232a3034393e3f454a4b4e5153555055575757544f54524f4c4b47413f3c36312d27201b140d050000000000000000000000000000000f1b26323d4955606c77838787878787878787878787878787878787878787878787878787868583817e7b76716d64625b544e474038302820170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e182129333b434b535a61636a6f727576777674716e68635d544f473f36313a414a51586063696f727576777675716e69635f585149403930373f484f555d63686e717476777675726f6a63615a534b433b332921180a010000000000000000000000000007111b25303b454f58616a6f707070706f6a61564c43392a2219090100000000000000000000000000000007111b252e373e454953575e6365686a6b6b6a6764615a56514a433b332c231a11080000000000010c17212c363f485055575858585858585858585858585858585858585858585858585858585858585858585858585858585856504940372c22170c0100000000000004090d10121313131313131313131313131212100d0c0f111213131313131313131313131312100d0904000000000000000000000000000000000000000000000004101b26313c47515a616364646464646464646463605950463c31261b0f04000000000000000000000000000000000000000000000000000000000000000001080e14192025292f33353b3e4042454749464a4c4c4b494548464341403c3734312c26221d16110b040000000000000000000000000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7b7a7875736f6a65635c575249453e3630282018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119222b333b434951565a6163676a6b6b6a6865635f58544a453f372e2931394148505559606366696b6b6a6966636058544f47403930282f373f454a54585f6365696a6b6b6a6763615a565149433b332b221910070000000000000000000000000000010b16212b353f48515a61646464646463615a51473b33291a120900000000000000000000000000000000010b151e262e353a43474e5457595d5f605f5e5b5856514b474139332b231b13090100000000000007121c262f383f464a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b46403830261d1208000000000000000000020506070808080808080808080808070604020104060608080808080808080808080707050200000000000000000000000000000000000000000000000000020d18222d3741495156585959595959595959595755504940362c22170c0100000000000000000000000000000000000000000000000000000000000000000000040a10161a1f24252b30333437393c363b3f4040403e3a353b383534312d2826221c17130d0601000000000000000000000000000000000007121e2935404b57616b7070707070707070707070707070707070707070707070707070706f6e686a6763615a58534c48423a352e261f17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b222b323941474b5156585b5e5f605f5d5957544f47443b352e27212931383f464a5055575b5e5f605f5d5a5755504a453f37302820272f353b44474f54575a5d5f605f5e5b5856514b474139322b221b12090000000000000000000000000000000007111b252f37414a515658595959595856514940372b22190a010000000000000000000000000000000000040d161e252b30363e45494b4e5153545453504c4b47413d373129221b130b0200000000000000020c161f272f363b3f40404040404040404040404040404040404040404040404040404040404040404040404040404040403f3c37302820160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303941474b4c4d4d4d4d4d4d4d4d4d4c4a46403830261c120800000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191b212528292b2e302c303334353433302b2f2c292926221d1b17120d08030000000000000000000000000000000000000005101c27323d48525b6164646464646464646464646464646464646464646464646464646463635e575b5856514d49433d382f2b251e160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222930373c41474b4c5052545453514e4b49453e37302b251e1920272f363b40464a4c4f52535453524f4c4a463f3b352e2720181e252b30373e45494b4e5153545452504c4b47413c373029221a120a0200000000000000000000000000000000020c151e27313941474b4c4d4d4d4d4c4b47403930271b120900000000000000000000000000000000000000060d151b20262e353a3e404246474848474441403d37322d272019120a02000000000000000000050e171f262c3033343535353535353535353535353535353535353535353535353535353535353535353535353535353534312c2620180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930373c4041424242424242424242403f3c3630281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000050a0b11161a1c1d1f222521252829292928252023211e1d1b18130f0c0803000000000000000000000000000000000000000000020d18232e38414a52575859595959595959595959595959595959595959595959595959585857544e504c4b47413e39322e28201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121820272d31373c404144474848474642403e3a352e26211b1510171f262c30363c3f4043464849484643403f3b36302b251e160f151b21262e353a3e404246474848474441403c37312d272018120a02000000000000000000000000000000000000050e16202931373d404142424242413f3c37302820170a020000000000000000000000000000000000000000040b11161e252b2f3334373a3c3d3c3b393534322d27231e171008020000000000000000000000060e161c21252829292929292929292929292929292929292929292929292929292929292929292929292929292929292826221d160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d3134353636363636363636363534312c261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f1112141712171a1d1d1e1d1c1a1611151212100d08040100000000000000000000000000000000000000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b49454441403c37332f29241e16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010810171d22272d313435383b3c3d3c3a373433302b251e16110b060e161c21262c313435383b3c3d3c3b373433302c26211b150e060c11161e252b303334373a3c3d3c3b393534312d27221d17100801000000000000000000000000000000000000000006101920272d323435363636363534312d27201810060000000000000000000000000000000000000000000001070d141b202427292b2e303131302d2a2927231e18130e070000000000000000000000000000050c12171a1d1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b17120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a2a292826221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070c0f11121211110e0b070907060402000000000000000000000000000000000000000000000000000000040e18212931383d4041424242424242424242424242424242424242424242424242424141403e3a353534312d27241f19140f06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181d2226292a2d303131302f2b292825201b150d070100050c12171c222628292c2f3131302f2c292825211c16110b050002070d151b202528292b2f303131302d2a2926221d18130d0700000000000000000000000000000000000000000000000810171d2327292a2a2a2a2a292926221d17100800000000000000000000000000000000000000000000000000040b1116191c1d1f2325262524221e1d1b18130e09040000000000000000000000000000000002070c0f111212121212121212121212121212121212121212121212121212121212121212121212121212121212110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1d1d1b17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060606060503000000000000000000000000000000000000000000000000000000000000000000000007101921282e32353636363636363636363636363636363636363636363636363636363534332f2b292926221d1a15100a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d13181b1d1e212425262523201d1c1a16110b040000000002070c12171b1d1d212425262523201d1d1a17120c070100000000040b11161a1c1d202325262524211e1d1b18130d080300000000000000000000000000000000000000000000000000070e13181b1d1e1f1f1f1f1e1d1b18130d0600000000000000000000000000000000000000000000000000000001060b0e10111417191a1a19161312100d090400000000000000000000000000000000000000000104060607070707070707070707070707070707070707070707070707070707070707070707070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d10121213131313131313131312110f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29292724201e1d1b18130d0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d10121216181a1a19171411110e0b07010000000000000003080c0f11121518191a19181512110f0c07020000000000000001070b0e11111417191a1a18161212100d09030000000000000000000000000000000000000000000000000000000004090d101212131313131212100d080300000000000000000000000000000000000000000000000000000000000000030506080c0d0e0e0d0a070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607080808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1c19161112100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0d0e0f0d0c0806050300000000000000000000000001040606090d0e0f0e0c0906060401000000000000000000000000030506080c0d0f0e0d0a070605020000000000000000000000000000000000000000000000000000000000000000020506070808080807060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d10121313131313131313131313131313131313131313131313131313131211100e0b06060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070708080808080808080808080808080808080808080808080808070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!21 &6533919911057610552 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B Bold SDF Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 4049196533093406344} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 11 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.90909094 + - _ScaleRatioB: 0.7386364 + - _ScaleRatioC: 0.7386364 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset.meta new file mode 100644 index 00000000..55c0891b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Bold SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4eef4bb7698e1d44bacc0cf33451c728 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset new file mode 100644 index 00000000..b2e77db0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset @@ -0,0 +1,2815 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &-7672897273165428658 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B Regular SDF Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 1088168360557942026} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 11 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.90909094 + - _ScaleRatioB: 0.7386364 + - _ScaleRatioC: 0.7386364 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: Euclid Circular B Regular SDF + m_EditorClassIdentifier: + hashCode: -1147519894 + material: {fileID: -7672897273165428658} + materialHashCode: 1750686858 + m_Version: 1.1.0 + m_SourceFontFileGUID: db3141c5d34ef1b478f829bbe87d88a4 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: db3141c5d34ef1b478f829bbe87d88a4, type: 3} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Euclid Circular B + m_StyleName: Regular + m_PointSize: 96 + m_Scale: 1 + m_UnitsPerEM: 1000 + m_LineHeight: 121.728 + m_AscentLine: 96 + m_CapLine: 69 + m_MeanLine: 48 + m_Baseline: 0 + m_DescentLine: -25.727999 + m_SuperscriptOffset: 96 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -25.727999 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -30.528 + m_UnderlineThickness: 7.2 + m_StrikethroughOffset: 19.2 + m_StrikethroughThickness: 7.2 + m_TabWidth: 23 + m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 23.140625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 4 + m_Metrics: + m_Width: 14.203125 + m_Height: 68.921875 + m_HorizontalBearingX: 5.859375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 26.015625 + m_GlyphRect: + m_X: 269 + m_Y: 289 + m_Width: 16 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 5 + m_Metrics: + m_Width: 26.875 + m_Height: 23.703125 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 39.640625 + m_GlyphRect: + m_X: 145 + m_Y: 988 + m_Width: 28 + m_Height: 25 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 6 + m_Metrics: + m_Width: 64.3125 + m_Height: 68.15625 + m_HorizontalBearingX: 3.171875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 70.75 + m_GlyphRect: + m_X: 300 + m_Y: 380 + m_Width: 65 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 7 + m_Metrics: + m_Width: 41.578125 + m_Height: 85.0625 + m_HorizontalBearingX: 4.3125 + m_HorizontalBearingY: 76.609375 + m_HorizontalAdvance: 50.109375 + m_GlyphRect: + m_X: 11 + m_Y: 697 + m_Width: 42 + m_Height: 86 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 8 + m_Metrics: + m_Width: 88.984375 + m_Height: 69.6875 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 68.921875 + m_HorizontalAdvance: 95.140625 + m_GlyphRect: + m_X: 239 + m_Y: 793 + m_Width: 90 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 9 + m_Metrics: + m_Width: 65.375 + m_Height: 70.265625 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 71.515625 + m_GlyphRect: + m_X: 106 + m_Y: 896 + m_Width: 66 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 10 + m_Metrics: + m_Width: 7.484375 + m_Height: 23.703125 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 20.25 + m_GlyphRect: + m_X: 272 + m_Y: 743 + m_Width: 8 + m_Height: 25 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 11 + m_Metrics: + m_Width: 19 + m_Height: 92.15625 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 26.40625 + m_GlyphRect: + m_X: 11 + m_Y: 241 + m_Width: 20 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 12 + m_Metrics: + m_Width: 19.015625 + m_Height: 92.15625 + m_HorizontalBearingX: 2.78125 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 26.296875 + m_GlyphRect: + m_X: 11 + m_Y: 355 + m_Width: 20 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 13 + m_Metrics: + m_Width: 34.75 + m_Height: 32.4375 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 42.234375 + m_GlyphRect: + m_X: 152 + m_Y: 743 + m_Width: 36 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 14 + m_Metrics: + m_Width: 40.609375 + m_Height: 40.421875 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 408 + m_Y: 972 + m_Width: 42 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 15 + m_Metrics: + m_Width: 16.703125 + m_Height: 27.359375 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 13.625 + m_HorizontalAdvance: 24.578125 + m_GlyphRect: + m_X: 194 + m_Y: 982 + m_Width: 18 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 16 + m_Metrics: + m_Width: 24.484375 + m_Height: 8.265625 + m_HorizontalBearingX: 6.234375 + m_HorizontalBearingY: 31.015625 + m_HorizontalAdvance: 37.0625 + m_GlyphRect: + m_X: 101 + m_Y: 436 + m_Width: 25 + m_Height: 10 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 17 + m_Metrics: + m_Width: 14.21875 + m_Height: 14.390625 + m_HorizontalBearingX: 4.984375 + m_HorizontalBearingY: 13.625 + m_HorizontalAdvance: 24.1875 + m_GlyphRect: + m_X: 115 + m_Y: 764 + m_Width: 16 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 18 + m_Metrics: + m_Width: 44.828125 + m_Height: 78.71875 + m_HorizontalBearingX: 2.015625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 48.859375 + m_GlyphRect: + m_X: 51 + m_Y: 469 + m_Width: 45 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 19 + m_Metrics: + m_Width: 48.28125 + m_Height: 70.265625 + m_HorizontalBearingX: 5.765625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 59.8125 + m_GlyphRect: + m_X: 117 + m_Y: 559 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 20 + m_Metrics: + m_Width: 21.40625 + m_Height: 68.15625 + m_HorizontalBearingX: 0.765625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 31.203125 + m_GlyphRect: + m_X: 433 + m_Y: 191 + m_Width: 23 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 21 + m_Metrics: + m_Width: 44.25 + m_Height: 69.3125 + m_HorizontalBearingX: 4.609375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 53.5625 + m_GlyphRect: + m_X: 275 + m_Y: 617 + m_Width: 45 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 22 + m_Metrics: + m_Width: 46.5625 + m_Height: 70.265625 + m_HorizontalBearingX: 4.21875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 55.6875 + m_GlyphRect: + m_X: 188 + m_Y: 559 + m_Width: 47 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 23 + m_Metrics: + m_Width: 53.953125 + m_Height: 68.15625 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 332 + m_Y: 884 + m_Width: 55 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 24 + m_Metrics: + m_Width: 45.984375 + m_Height: 69.109375 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 53.28125 + m_GlyphRect: + m_X: 216 + m_Y: 104 + m_Width: 47 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 25 + m_Metrics: + m_Width: 46.171875 + m_Height: 69.109375 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 53.65625 + m_GlyphRect: + m_X: 255 + m_Y: 11 + m_Width: 47 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 26 + m_Metrics: + m_Width: 44.734375 + m_Height: 68.15625 + m_HorizontalBearingX: 2.78125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 48.859375 + m_GlyphRect: + m_X: 467 + m_Y: 645 + m_Width: 46 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 27 + m_Metrics: + m_Width: 45.78125 + m_Height: 70.265625 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 54.8125 + m_GlyphRect: + m_X: 171 + m_Y: 798 + m_Width: 47 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 28 + m_Metrics: + m_Width: 46.171875 + m_Height: 69.3125 + m_HorizontalBearingX: 4.125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 53.65625 + m_GlyphRect: + m_X: 256 + m_Y: 526 + m_Width: 47 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 29 + m_Metrics: + m_Width: 14.203125 + m_Height: 49.921875 + m_HorizontalBearingX: 6.046875 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 26.296875 + m_GlyphRect: + m_X: 468 + m_Y: 101 + m_Width: 15 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 30 + m_Metrics: + m_Width: 16.703125 + m_Height: 62.890625 + m_HorizontalBearingX: 4.21875 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 27.359375 + m_GlyphRect: + m_X: 301 + m_Y: 708 + m_Width: 17 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 31 + m_Metrics: + m_Width: 34.75 + m_Height: 48.578125 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 40.984375 + m_GlyphRect: + m_X: 466 + m_Y: 352 + m_Width: 35 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 32 + m_Metrics: + m_Width: 40.703125 + m_Height: 28.21875 + m_HorizontalBearingX: 6.53125 + m_HorizontalBearingY: 41.953125 + m_HorizontalAdvance: 53.765625 + m_GlyphRect: + m_X: 209 + m_Y: 743 + m_Width: 42 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 33 + m_Metrics: + m_Width: 34.75 + m_Height: 48.578125 + m_HorizontalBearingX: 3.171875 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 40.984375 + m_GlyphRect: + m_X: 485 + m_Y: 423 + m_Width: 35 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 34 + m_Metrics: + m_Width: 40.984375 + m_Height: 70.078125 + m_HorizontalBearingX: 3.171875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 48.578125 + m_GlyphRect: + m_X: 212 + m_Y: 651 + m_Width: 42 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 35 + m_Metrics: + m_Width: 69.984375 + m_Height: 70.265625 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 77.953125 + m_GlyphRect: + m_X: 79 + m_Y: 804 + m_Width: 71 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 36 + m_Metrics: + m_Width: 67.78125 + m_Height: 68.15625 + m_HorizontalBearingX: 0.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 68.921875 + m_GlyphRect: + m_X: 282 + m_Y: 195 + m_Width: 69 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 37 + m_Metrics: + m_Width: 47.21875 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 60.390625 + m_GlyphRect: + m_X: 425 + m_Y: 740 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 38 + m_Metrics: + m_Width: 65.390625 + m_Height: 70.46875 + m_HorizontalBearingX: 4.3125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 72.484375 + m_GlyphRect: + m_X: 129 + m_Y: 105 + m_Width: 66 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 39 + m_Metrics: + m_Width: 55.859375 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.21875 + m_GlyphRect: + m_X: 408 + m_Y: 465 + m_Width: 56 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 40 + m_Metrics: + m_Width: 39.734375 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 53.46875 + m_GlyphRect: + m_X: 372 + m_Y: 191 + m_Width: 40 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 41 + m_Metrics: + m_Width: 39.640625 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 50.96875 + m_GlyphRect: + m_X: 391 + m_Y: 281 + m_Width: 40 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 42 + m_Metrics: + m_Width: 63.453125 + m_Height: 70.46875 + m_HorizontalBearingX: 4.421875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 73.4375 + m_GlyphRect: + m_X: 170 + m_Y: 11 + m_Width: 64 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 43 + m_Metrics: + m_Width: 55.1875 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 73.25 + m_GlyphRect: + m_X: 255 + m_Y: 884 + m_Width: 56 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 44 + m_Metrics: + m_Width: 8.921875 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 26.96875 + m_GlyphRect: + m_X: 438 + m_Y: 101 + m_Width: 9 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 45 + m_Metrics: + m_Width: 40.234375 + m_Height: 69.3125 + m_HorizontalBearingX: 2.109375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 50.78125 + m_GlyphRect: + m_X: 193 + m_Y: 890 + m_Width: 41 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 46 + m_Metrics: + m_Width: 57.59375 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 64.421875 + m_GlyphRect: + m_X: 341 + m_Y: 560 + m_Width: 58 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 47 + m_Metrics: + m_Width: 41.84375 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.609375 + m_GlyphRect: + m_X: 411 + m_Y: 11 + m_Width: 42 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 48 + m_Metrics: + m_Width: 66.90625 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 85.0625 + m_GlyphRect: + m_X: 284 + m_Y: 102 + m_Width: 67 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 49 + m_Metrics: + m_Width: 58.078125 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 76.21875 + m_GlyphRect: + m_X: 386 + m_Y: 375 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 50 + m_Metrics: + m_Width: 70.46875 + m_Height: 70.46875 + m_HorizontalBearingX: 4.3125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 79.203125 + m_GlyphRect: + m_X: 106 + m_Y: 342 + m_Width: 71 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 51 + m_Metrics: + m_Width: 44.25 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 56.25 + m_GlyphRect: + m_X: 372 + m_Y: 101 + m_Width: 45 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 52 + m_Metrics: + m_Width: 75.375 + m_Height: 70.46875 + m_HorizontalBearingX: 4.3125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 80.546875 + m_GlyphRect: + m_X: 115 + m_Y: 219 + m_Width: 76 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 53 + m_Metrics: + m_Width: 52.984375 + m_Height: 68.15625 + m_HorizontalBearingX: 9.03125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 60.953125 + m_GlyphRect: + m_X: 350 + m_Y: 792 + m_Width: 54 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 54 + m_Metrics: + m_Width: 45.609375 + m_Height: 70.46875 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 53.1875 + m_GlyphRect: + m_X: 11 + m_Y: 804 + m_Width: 47 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 55 + m_Metrics: + m_Width: 51.171875 + m_Height: 68.15625 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.4375 + m_GlyphRect: + m_X: 420 + m_Y: 555 + m_Width: 52 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 56 + m_Metrics: + m_Width: 53.375 + m_Height: 69.3125 + m_HorizontalBearingX: 8.15625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.703125 + m_GlyphRect: + m_X: 117 + m_Y: 467 + m_Width: 54 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 57 + m_Metrics: + m_Width: 65.578125 + m_Height: 68.15625 + m_HorizontalBearingX: 0.765625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 67.296875 + m_GlyphRect: + m_X: 323 + m_Y: 11 + m_Width: 67 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 58 + m_Metrics: + m_Width: 86.5 + m_Height: 69.3125 + m_HorizontalBearingX: 2.203125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 90.90625 + m_GlyphRect: + m_X: 192 + m_Y: 435 + m_Width: 87 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 59 + m_Metrics: + m_Width: 63.546875 + m_Height: 68.15625 + m_HorizontalBearingX: 0.390625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 64.3125 + m_GlyphRect: + m_X: 306 + m_Y: 285 + m_Width: 64 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 60 + m_Metrics: + m_Width: 61.921875 + m_Height: 68.15625 + m_HorizontalBearingX: 1.4375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 64.703125 + m_GlyphRect: + m_X: 324 + m_Y: 470 + m_Width: 63 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 61 + m_Metrics: + m_Width: 49.71875 + m_Height: 68.15625 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 56.359375 + m_GlyphRect: + m_X: 408 + m_Y: 882 + m_Width: 50 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 62 + m_Metrics: + m_Width: 17.953125 + m_Height: 92.15625 + m_HorizontalBearingX: 8.828125 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 29.28125 + m_GlyphRect: + m_X: 11 + m_Y: 469 + m_Width: 19 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 63 + m_Metrics: + m_Width: 44.828125 + m_Height: 78.71875 + m_HorizontalBearingX: 2.015625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 48.859375 + m_GlyphRect: + m_X: 51 + m_Y: 570 + m_Width: 45 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 64 + m_Metrics: + m_Width: 17.953125 + m_Height: 92.15625 + m_HorizontalBearingX: 2.5 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 29.28125 + m_GlyphRect: + m_X: 11 + m_Y: 583 + m_Width: 19 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 65 + m_Metrics: + m_Width: 29.1875 + m_Height: 20.15625 + m_HorizontalBearingX: 4.984375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 39.078125 + m_GlyphRect: + m_X: 11 + m_Y: 990 + m_Width: 31 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 66 + m_Metrics: + m_Width: 40.703125 + m_Height: 7.015625 + m_HorizontalBearingX: 5.1875 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 51.078125 + m_GlyphRect: + m_X: 82 + m_Y: 313 + m_Width: 41 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 67 + m_Metrics: + m_Width: 19.59375 + m_Height: 18.234375 + m_HorizontalBearingX: -9.796875 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 74 + m_Y: 764 + m_Width: 20 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 68 + m_Metrics: + m_Width: 48.671875 + m_Height: 49.90625 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 60.484375 + m_GlyphRect: + m_X: 452 + m_Y: 281 + m_Width: 49 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 69 + m_Metrics: + m_Width: 48.671875 + m_Height: 72.953125 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 60.484375 + m_GlyphRect: + m_X: 58 + m_Y: 125 + m_Width: 50 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 70 + m_Metrics: + m_Width: 47.328125 + m_Height: 49.90625 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 54.234375 + m_GlyphRect: + m_X: 477 + m_Y: 173 + m_Width: 48 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 71 + m_Metrics: + m_Width: 48.671875 + m_Height: 72.953125 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 60.484375 + m_GlyphRect: + m_X: 100 + m_Y: 11 + m_Width: 49 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 72 + m_Metrics: + m_Width: 47.8125 + m_Height: 49.90625 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 55.78125 + m_GlyphRect: + m_X: 504 + m_Y: 82 + m_Width: 48 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 73 + m_Metrics: + m_Width: 32.359375 + m_Height: 72.578125 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 35.234375 + m_GlyphRect: + m_X: 52 + m_Y: 342 + m_Width: 33 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 74 + m_Metrics: + m_Width: 48.484375 + m_Height: 69.984375 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 60.28125 + m_GlyphRect: + m_X: 142 + m_Y: 651 + m_Width: 49 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 75 + m_Metrics: + m_Width: 41.65625 + m_Height: 72 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 56.546875 + m_GlyphRect: + m_X: 11 + m_Y: 897 + m_Width: 43 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 76 + m_Metrics: + m_Width: 11.71875 + m_Height: 72.578125 + m_HorizontalBearingX: 6.046875 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 23.90625 + m_GlyphRect: + m_X: 82 + m_Y: 219 + m_Width: 12 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 77 + m_Metrics: + m_Width: 20.15625 + m_Height: 93.609375 + m_HorizontalBearingX: -1.625 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 24.671875 + m_GlyphRect: + m_X: 11 + m_Y: 11 + m_Width: 21 + m_Height: 95 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 78 + m_Metrics: + m_Width: 45.40625 + m_Height: 72 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 51.75 + m_GlyphRect: + m_X: 74 + m_Y: 671 + m_Width: 47 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 79 + m_Metrics: + m_Width: 8.25 + m_Height: 72 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 23.90625 + m_GlyphRect: + m_X: 75 + m_Y: 897 + m_Width: 10 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 80 + m_Metrics: + m_Width: 70.078125 + m_Height: 48.953125 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 84.953125 + m_GlyphRect: + m_X: 493 + m_Y: 494 + m_Width: 71 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 81 + m_Metrics: + m_Width: 41.65625 + m_Height: 48.953125 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 56.546875 + m_GlyphRect: + m_X: 493 + m_Y: 564 + m_Width: 43 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 82 + m_Metrics: + m_Width: 50.203125 + m_Height: 49.90625 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 58.171875 + m_GlyphRect: + m_X: 474 + m_Y: 11 + m_Width: 52 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 83 + m_Metrics: + m_Width: 48.671875 + m_Height: 69.015625 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 60.578125 + m_GlyphRect: + m_X: 198 + m_Y: 312 + m_Width: 50 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 84 + m_Metrics: + m_Width: 48.671875 + m_Height: 69.015625 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 60.484375 + m_GlyphRect: + m_X: 212 + m_Y: 198 + m_Width: 49 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 85 + m_Metrics: + m_Width: 25.4375 + m_Height: 48.484375 + m_HorizontalBearingX: 7.78125 + m_HorizontalBearingY: 48.484375 + m_HorizontalAdvance: 35.140625 + m_GlyphRect: + m_X: 546 + m_Y: 153 + m_Width: 27 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 86 + m_Metrics: + m_Width: 35.515625 + m_Height: 49.90625 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 48.953125 + m_HorizontalAdvance: 43.203125 + m_GlyphRect: + m_X: 547 + m_Y: 11 + m_Width: 36 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 87 + m_Metrics: + m_Width: 32.265625 + m_Height: 61.828125 + m_HorizontalBearingX: 1.53125 + m_HorizontalBearingY: 61.34375 + m_HorizontalAdvance: 36.578125 + m_GlyphRect: + m_X: 339 + m_Y: 708 + m_Width: 33 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 88 + m_Metrics: + m_Width: 40.703125 + m_Height: 48.953125 + m_HorizontalBearingX: 7.109375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 55.578125 + m_GlyphRect: + m_X: 522 + m_Y: 244 + m_Width: 41 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 89 + m_Metrics: + m_Width: 51.265625 + m_Height: 48 + m_HorizontalBearingX: 0.578125 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 52.421875 + m_GlyphRect: + m_X: 604 + m_Y: 11 + m_Width: 52 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 90 + m_Metrics: + m_Width: 70.9375 + m_Height: 48 + m_HorizontalBearingX: 1.15625 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 73.25 + m_GlyphRect: + m_X: 573 + m_Y: 82 + m_Width: 72 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 91 + m_Metrics: + m_Width: 49.625 + m_Height: 48 + m_HorizontalBearingX: 0.578125 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 50.875 + m_GlyphRect: + m_X: 522 + m_Y: 314 + m_Width: 51 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 92 + m_Metrics: + m_Width: 51.265625 + m_Height: 68.0625 + m_HorizontalBearingX: 0.765625 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 52.515625 + m_GlyphRect: + m_X: 393 + m_Y: 650 + m_Width: 53 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 93 + m_Metrics: + m_Width: 38.96875 + m_Height: 48 + m_HorizontalBearingX: 3.84375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 46.46875 + m_GlyphRect: + m_X: 584 + m_Y: 223 + m_Width: 40 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 94 + m_Metrics: + m_Width: 24.96875 + m_Height: 92.15625 + m_HorizontalBearingX: 2.875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 30.34375 + m_GlyphRect: + m_X: 11 + m_Y: 127 + m_Width: 26 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 95 + m_Metrics: + m_Width: 7.59375 + m_Height: 78.71875 + m_HorizontalBearingX: 8.828125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 25.15625 + m_GlyphRect: + m_X: 52 + m_Y: 241 + m_Width: 9 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 96 + m_Metrics: + m_Width: 24.953125 + m_Height: 92.15625 + m_HorizontalBearingX: 2.5 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 30.34375 + m_GlyphRect: + m_X: 53 + m_Y: 11 + m_Width: 26 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 97 + m_Metrics: + m_Width: 26.5 + m_Height: 11.421875 + m_HorizontalBearingX: 6.625 + m_HorizontalBearingY: 33.5 + m_HorizontalAdvance: 39.546875 + m_GlyphRect: + m_X: 52 + m_Y: 436 + m_Width: 28 + m_Height: 12 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 98 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 23.140625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 489 + m_Metrics: + m_Width: 60.28125 + m_Height: 14.390625 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 13.625 + m_HorizontalAdvance: 69.21875 + m_GlyphRect: + m_X: 63 + m_Y: 990 + m_Width: 61 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 7 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 8 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 11 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 12 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 18 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 19 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 27 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 53 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 54 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 55 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 56 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 58 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 60 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 62 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 63 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 65 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 67 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 71 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 76 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 77 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 79 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 80 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 81 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 82 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 83 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 86 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 87 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 88 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 89 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 90 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 91 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 92 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 94 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 95 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 97 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 98 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 489 + m_Scale: 1 + m_AtlasTextures: + - {fileID: 1088168360557942026} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 42 + m_Height: 116 + - m_X: 0 + m_Y: 116 + m_Width: 47 + m_Height: 114 + - m_X: 42 + m_Y: 0 + m_Width: 47 + m_Height: 114 + - m_X: 0 + m_Y: 230 + m_Width: 41 + m_Height: 114 + - m_X: 0 + m_Y: 344 + m_Width: 41 + m_Height: 114 + - m_X: 0 + m_Y: 458 + m_Width: 40 + m_Height: 114 + - m_X: 0 + m_Y: 572 + m_Width: 40 + m_Height: 114 + - m_X: 0 + m_Y: 686 + m_Width: 63 + m_Height: 107 + - m_X: 40 + m_Y: 458 + m_Width: 66 + m_Height: 101 + - m_X: 40 + m_Y: 559 + m_Width: 66 + m_Height: 101 + - m_X: 41 + m_Y: 230 + m_Width: 30 + m_Height: 101 + - m_X: 47 + m_Y: 114 + m_Width: 71 + m_Height: 94 + - m_X: 89 + m_Y: 0 + m_Width: 70 + m_Height: 94 + - m_X: 41 + m_Y: 331 + m_Width: 54 + m_Height: 94 + - m_X: 41 + m_Y: 425 + m_Width: 49 + m_Height: 33 + - m_X: 90 + m_Y: 425 + m_Width: 46 + m_Height: 31 + - m_X: 71 + m_Y: 208 + m_Width: 33 + m_Height: 94 + - m_X: 71 + m_Y: 302 + m_Width: 62 + m_Height: 29 + - m_X: 104 + m_Y: 208 + m_Width: 97 + m_Height: 93 + - m_X: 95 + m_Y: 331 + m_Width: 92 + m_Height: 93 + - m_X: 118 + m_Y: 94 + m_Width: 87 + m_Height: 93 + - m_X: 159 + m_Y: 0 + m_Width: 85 + m_Height: 93 + - m_X: 0 + m_Y: 793 + m_Width: 68 + m_Height: 93 + - m_X: 63 + m_Y: 660 + m_Width: 68 + m_Height: 93 + - m_X: 63 + m_Y: 753 + m_Width: 41 + m_Height: 40 + - m_X: 0 + m_Y: 886 + m_Width: 64 + m_Height: 93 + - m_X: 0 + m_Y: 979 + m_Width: 52 + m_Height: 42 + - m_X: 52 + m_Y: 979 + m_Width: 82 + m_Height: 36 + - m_X: 64 + m_Y: 886 + m_Width: 31 + m_Height: 93 + - m_X: 68 + m_Y: 793 + m_Width: 92 + m_Height: 92 + - m_X: 95 + m_Y: 885 + m_Width: 87 + m_Height: 92 + - m_X: 134 + m_Y: 977 + m_Width: 49 + m_Height: 46 + - m_X: 104 + m_Y: 753 + m_Width: 37 + m_Height: 36 + - m_X: 106 + m_Y: 456 + m_Width: 75 + m_Height: 92 + - m_X: 106 + m_Y: 548 + m_Width: 71 + m_Height: 92 + - m_X: 131 + m_Y: 640 + m_Width: 70 + m_Height: 92 + - m_X: 177 + m_Y: 548 + m_Width: 68 + m_Height: 92 + - m_X: 141 + m_Y: 732 + m_Width: 57 + m_Height: 55 + - m_X: 160 + m_Y: 787 + m_Width: 68 + m_Height: 92 + - m_X: 198 + m_Y: 732 + m_Width: 63 + m_Height: 50 + - m_X: 201 + m_Y: 640 + m_Width: 63 + m_Height: 92 + - m_X: 182 + m_Y: 879 + m_Width: 62 + m_Height: 92 + - m_X: 183 + m_Y: 971 + m_Width: 39 + m_Height: 49 + - m_X: 228 + m_Y: 782 + m_Width: 111 + m_Height: 91 + - m_X: 261 + m_Y: 732 + m_Width: 29 + m_Height: 46 + - m_X: 181 + m_Y: 424 + m_Width: 108 + m_Height: 91 + - m_X: 187 + m_Y: 301 + m_Width: 71 + m_Height: 91 + - m_X: 201 + m_Y: 187 + m_Width: 70 + m_Height: 91 + - m_X: 205 + m_Y: 93 + m_Width: 68 + m_Height: 91 + - m_X: 244 + m_Y: 0 + m_Width: 68 + m_Height: 91 + - m_X: 245 + m_Y: 515 + m_Width: 68 + m_Height: 91 + - m_X: 264 + m_Y: 606 + m_Width: 66 + m_Height: 91 + - m_X: 290 + m_Y: 697 + m_Width: 38 + m_Height: 85 + - m_X: 328 + m_Y: 697 + m_Width: 54 + m_Height: 84 + - m_X: 258 + m_Y: 278 + m_Width: 37 + m_Height: 91 + - m_X: 271 + m_Y: 184 + m_Width: 90 + m_Height: 90 + - m_X: 273 + m_Y: 91 + m_Width: 88 + m_Height: 90 + - m_X: 312 + m_Y: 0 + m_Width: 88 + m_Height: 90 + - m_X: 289 + m_Y: 369 + m_Width: 86 + m_Height: 90 + - m_X: 295 + m_Y: 274 + m_Width: 85 + m_Height: 90 + - m_X: 313 + m_Y: 459 + m_Width: 84 + m_Height: 90 + - m_X: 375 + m_Y: 364 + m_Width: 80 + m_Height: 90 + - m_X: 330 + m_Y: 549 + m_Width: 79 + m_Height: 90 + - m_X: 397 + m_Y: 454 + m_Width: 77 + m_Height: 90 + - m_X: 244 + m_Y: 873 + m_Width: 77 + m_Height: 90 + - m_X: 321 + m_Y: 873 + m_Width: 76 + m_Height: 90 + - m_X: 339 + m_Y: 781 + m_Width: 75 + m_Height: 90 + - m_X: 382 + m_Y: 639 + m_Width: 74 + m_Height: 90 + - m_X: 409 + m_Y: 544 + m_Width: 73 + m_Height: 90 + - m_X: 397 + m_Y: 871 + m_Width: 71 + m_Height: 90 + - m_X: 397 + m_Y: 961 + m_Width: 63 + m_Height: 62 + - m_X: 414 + m_Y: 729 + m_Width: 69 + m_Height: 90 + - m_X: 456 + m_Y: 634 + m_Width: 67 + m_Height: 90 + - m_X: 361 + m_Y: 90 + m_Width: 66 + m_Height: 90 + - m_X: 400 + m_Y: 0 + m_Width: 63 + m_Height: 90 + - m_X: 361 + m_Y: 180 + m_Width: 61 + m_Height: 90 + - m_X: 380 + m_Y: 270 + m_Width: 61 + m_Height: 90 + - m_X: 422 + m_Y: 180 + m_Width: 44 + m_Height: 90 + - m_X: 427 + m_Y: 90 + m_Width: 30 + m_Height: 90 + - m_X: 457 + m_Y: 90 + m_Width: 36 + m_Height: 72 + - m_X: 463 + m_Y: 0 + m_Width: 73 + m_Height: 71 + - m_X: 441 + m_Y: 270 + m_Width: 70 + m_Height: 71 + - m_X: 466 + m_Y: 162 + m_Width: 69 + m_Height: 71 + - m_X: 493 + m_Y: 71 + m_Width: 69 + m_Height: 71 + - m_X: 536 + m_Y: 0 + m_Width: 57 + m_Height: 71 + - m_X: 455 + m_Y: 341 + m_Width: 56 + m_Height: 71 + - m_X: 474 + m_Y: 412 + m_Width: 56 + m_Height: 71 + - m_X: 482 + m_Y: 483 + m_Width: 92 + m_Height: 70 + - m_X: 482 + m_Y: 553 + m_Width: 64 + m_Height: 70 + - m_X: 511 + m_Y: 233 + m_Width: 62 + m_Height: 70 + - m_X: 535 + m_Y: 142 + m_Width: 48 + m_Height: 70 + - m_X: 562 + m_Y: 71 + m_Width: 93 + m_Height: 69 + - m_X: 593 + m_Y: 0 + m_Width: 73 + m_Height: 69 + - m_X: 511 + m_Y: 303 + m_Width: 72 + m_Height: 69 + - m_X: 573 + m_Y: 212 + m_Width: 61 + m_Height: 69 + m_FreeGlyphRects: + - m_X: 42 + m_Y: 114 + m_Width: 5 + m_Height: 2 + - m_X: 47 + m_Y: 208 + m_Width: 24 + m_Height: 22 + - m_X: 89 + m_Y: 94 + m_Width: 29 + m_Height: 20 + - m_X: 40 + m_Y: 660 + m_Width: 23 + m_Height: 26 + - m_X: 68 + m_Y: 885 + m_Width: 27 + m_Height: 1 + - m_X: 0 + m_Y: 1021 + m_Width: 134 + m_Height: 2 + - m_X: 52 + m_Y: 1015 + m_Width: 82 + m_Height: 8 + - m_X: 95 + m_Y: 977 + m_Width: 39 + m_Height: 2 + - m_X: 90 + m_Y: 456 + m_Width: 16 + m_Height: 2 + - m_X: 106 + m_Y: 640 + m_Width: 25 + m_Height: 20 + - m_X: 131 + m_Y: 732 + m_Width: 10 + m_Height: 21 + - m_X: 104 + m_Y: 789 + m_Width: 56 + m_Height: 4 + - m_X: 141 + m_Y: 787 + m_Width: 19 + m_Height: 6 + - m_X: 160 + m_Y: 879 + m_Width: 22 + m_Height: 6 + - m_X: 182 + m_Y: 971 + m_Width: 1 + m_Height: 6 + - m_X: 198 + m_Y: 782 + m_Width: 30 + m_Height: 5 + - m_X: 95 + m_Y: 424 + m_Width: 86 + m_Height: 1 + - m_X: 136 + m_Y: 424 + m_Width: 45 + m_Height: 32 + - m_X: 104 + m_Y: 301 + m_Width: 83 + m_Height: 1 + - m_X: 133 + m_Y: 301 + m_Width: 54 + m_Height: 30 + - m_X: 118 + m_Y: 187 + m_Width: 83 + m_Height: 21 + - m_X: 159 + m_Y: 93 + m_Width: 46 + m_Height: 1 + - m_X: 181 + m_Y: 515 + m_Width: 64 + m_Height: 33 + - m_X: 245 + m_Y: 606 + m_Width: 19 + m_Height: 34 + - m_X: 261 + m_Y: 778 + m_Width: 29 + m_Height: 4 + - m_X: 264 + m_Y: 697 + m_Width: 26 + m_Height: 35 + - m_X: 201 + m_Y: 278 + m_Width: 57 + m_Height: 23 + - m_X: 205 + m_Y: 184 + m_Width: 66 + m_Height: 3 + - m_X: 244 + m_Y: 91 + m_Width: 29 + m_Height: 2 + - m_X: 187 + m_Y: 392 + m_Width: 102 + m_Height: 32 + - m_X: 258 + m_Y: 369 + m_Width: 31 + m_Height: 55 + - m_X: 271 + m_Y: 274 + m_Width: 24 + m_Height: 4 + - m_X: 289 + m_Y: 459 + m_Width: 24 + m_Height: 56 + - m_X: 295 + m_Y: 364 + m_Width: 80 + m_Height: 5 + - m_X: 313 + m_Y: 549 + m_Width: 17 + m_Height: 57 + - m_X: 375 + m_Y: 454 + m_Width: 22 + m_Height: 5 + - m_X: 228 + m_Y: 873 + m_Width: 16 + m_Height: 6 + - m_X: 328 + m_Y: 781 + m_Width: 11 + m_Height: 1 + - m_X: 330 + m_Y: 639 + m_Width: 52 + m_Height: 58 + - m_X: 397 + m_Y: 544 + m_Width: 12 + m_Height: 5 + - m_X: 339 + m_Y: 871 + m_Width: 58 + m_Height: 2 + - m_X: 183 + m_Y: 1020 + m_Width: 214 + m_Height: 3 + - m_X: 222 + m_Y: 971 + m_Width: 175 + m_Height: 52 + - m_X: 244 + m_Y: 963 + m_Width: 153 + m_Height: 60 + - m_X: 460 + m_Y: 961 + m_Width: 563 + m_Height: 62 + - m_X: 382 + m_Y: 729 + m_Width: 32 + m_Height: 52 + - m_X: 414 + m_Y: 819 + m_Width: 609 + m_Height: 52 + - m_X: 468 + m_Y: 819 + m_Width: 555 + m_Height: 204 + - m_X: 409 + m_Y: 634 + m_Width: 47 + m_Height: 5 + - m_X: 483 + m_Y: 724 + m_Width: 540 + m_Height: 299 + - m_X: 456 + m_Y: 724 + m_Width: 567 + m_Height: 5 + - m_X: 312 + m_Y: 90 + m_Width: 49 + m_Height: 1 + - m_X: 273 + m_Y: 181 + m_Width: 88 + m_Height: 3 + - m_X: 361 + m_Y: 270 + m_Width: 19 + m_Height: 4 + - m_X: 457 + m_Y: 162 + m_Width: 9 + m_Height: 18 + - m_X: 463 + m_Y: 71 + m_Width: 30 + m_Height: 19 + - m_X: 380 + m_Y: 360 + m_Width: 75 + m_Height: 4 + - m_X: 441 + m_Y: 341 + m_Width: 14 + m_Height: 23 + - m_X: 455 + m_Y: 412 + m_Width: 19 + m_Height: 42 + - m_X: 474 + m_Y: 483 + m_Width: 8 + m_Height: 61 + - m_X: 523 + m_Y: 623 + m_Width: 500 + m_Height: 400 + - m_X: 546 + m_Y: 553 + m_Width: 477 + m_Height: 470 + - m_X: 482 + m_Y: 623 + m_Width: 541 + m_Height: 11 + - m_X: 466 + m_Y: 233 + m_Width: 45 + m_Height: 37 + - m_X: 493 + m_Y: 142 + m_Width: 42 + m_Height: 20 + - m_X: 562 + m_Y: 140 + m_Width: 461 + m_Height: 2 + - m_X: 593 + m_Y: 69 + m_Width: 430 + m_Height: 2 + - m_X: 655 + m_Y: 69 + m_Width: 368 + m_Height: 954 + - m_X: 666 + m_Y: 0 + m_Width: 357 + m_Height: 1023 + - m_X: 511 + m_Y: 372 + m_Width: 512 + m_Height: 40 + - m_X: 530 + m_Y: 372 + m_Width: 493 + m_Height: 111 + - m_X: 574 + m_Y: 372 + m_Width: 449 + m_Height: 651 + - m_X: 535 + m_Y: 212 + m_Width: 38 + m_Height: 21 + - m_X: 583 + m_Y: 140 + m_Width: 440 + m_Height: 72 + - m_X: 583 + m_Y: 281 + m_Width: 440 + m_Height: 742 + - m_X: 634 + m_Y: 140 + m_Width: 389 + m_Height: 883 + - m_X: 573 + m_Y: 281 + m_Width: 450 + m_Height: 22 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 10 + m_AtlasRenderMode: 4165 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: db3141c5d34ef1b478f829bbe87d88a4 + pointSizeSamplingMode: 1 + pointSize: 96 + padding: 10 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 6 + characterSequence: 20-7E,A0,2026 + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &1088168360557942026 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B Regular SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_MipsStripped: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMasterTextureLimit: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + m_PlatformBlob: + image data: 1048576 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060605030000000000000000000000000000000000000000000000000000000000000000030607080a0a0a0a0a0a090807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0f10101110100e0c0a0707050200000000000000010606060606060602020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060607070707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b0d0f10101110100f0d0c09060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010508090a111111111111110c0c0a0703000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f111111111111111111111111111111111111111111111111111111111111111111111111111111111111100f0e0b07020000000000000000000000000000000000000000000000000000000000000000030506080b0d0e1010111110100e0d0b0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0c0e0f101011100f0e0c0a07060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090b0b1111111111111006050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020609060b0e101112110f0b0709060504010000000000000000000000000000000000000000000000050a0e11131316161616161515141312100d09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a18161312100d09040103070a0c0c111111111111110e0d0c09050000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a070b0f111212121313131212110f0c070b080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c0f11121417191a1b1c1c1c1c1b19171512110f0c08040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101315161d1d1d1d1d1d1d181715120e09030000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120c060000000000000000000000000000000000000000000000000000000003070b0e11111316181a1b1c1c1c1c1b1a18171412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1012121517191b1b1c1c1c1b1a18151312100d090401000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111416171d1d1d1d1d1d1c12110f0b0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141116191c1d1d1c1a16111412110f0c07020000000000000000000000000000000000000001080f14191c1e1f212121212121201f1e1d1b1813120f0a050000000000000000000000000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f22242627282827272624211e1e1c18130f0c0e121517181d1d1d1d1d1d1d1a191714100a040000000000000000000000000000000000000000000000000000000000000000000000010405090d1012131511161a1c1d1e1e1f1f1e1e1d1d1a1712161412110f0c07050300000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e12171a1d1d202224262728282827262523201e1d1b17120f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161b1e2021292929292929292323211d18130c050000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929292929292929292929292929292929292929292929292929292929292929292929272624211c16100801000000000000000000000000000000000000000000000001060b0e11161a1c1d1f2224252727282827272624221f1d1c1a16110f0b0701000000000000000000000000000000000000000000000000000000000000000000000003080c1013181b1d1e2123252627282827262523211e1d1b18130f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000040b12181c202223292929292929271d1c1a16110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12181c2022202427292928252123201d1c1a16120c080300000000000000000000000000000000010911181f24282a2b2d2d2d2d2d2d2c2b2a2927231f1d1a150f090400000000000000000000000000000000000000000000000000000000000000000000050a0f14191b202427292b2e30313333343332312f2d2a2927231e1b17181d202323292929292929292524221f1a140e06000000000000000000000000000000000000000000000000000000000000000002070c0f1113181b1d1e212321252829292a2a2a2a29292825212422201d1d1a1712110e0b07010000000000000000000000000000000000000000000000000000000000000000000001070b11161a1c212528292b2e3031333334333332302e2c292826221d1a16120c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a21262a2c2d343434343434342f2e2c28231c150d05000000000000000000000000000000000000000000000000000000000000000000020b131b22282d3133343434343434343434343434343434343434343434343434343434343434343434343434343434343433322f2b262019110800000000000000000000000000000000000000000002070b1116191c202528292b2d2f3132333333333231302e2b292825211c1a16110b07020000000000000000000000000000000000000000000000000000000000000003090d13171b1d2326292a2c2e30323333333332312f2c2a2927231e1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000040d141c22272b2d2e34343434343433292825211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d141c22272b2d2b2f33343433302b2e2c292825211c17120c0600000000000000000000000000000008111a22292e33353638383838383837373534322d2a28241f18140e080000000000000000000000000000000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393535322d28262223282c2e2f3434343434343431302d29241e170f060000000000000000000000000000000000000000000000000000000001050a0c12161a1c1d2327292a2c2f2b3033343535363635353433302c2f2d2b292825211d1c1a16110b0a0300000000000000000000000000000000000000000000000000000000000000040b11161b2025282c303335373a3c3d3e3f3f3f3e3d3c3a373534312c2825211c17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242b30353738404040404040403b3a37322c251e150700000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040404040404040404040404040404040404040404040404040404040404040404040403e3d3a3630292119100600000000000000000000000000000000000000050c11161b2024272b30333436393b3d3e3e3f3f3f3e3d3b39373433302b2825211b17120c050000000000000000000000000000000000000000000000000000000000070d13181d2226292d313435383a3c3d3e3f3f3e3d3d3b383534322d2825211c150e08030000000000000000000000000000000000000000000000000000000000000000000007141d252c3236393a4040404040403e3433302b251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252c323639353a3e40403e3b353a373433302c26221c160f0702000000000000000000000000050f18222a32393e4142444444444444434241403d3736332f29231e1811090100000000000000000000000000000000000000000000000000000000060d12171f24292e33353a3e40424547494a4a4b4a4a48464441403d3834312c2c32373a3b404040404040403c3b38342e271f170e040000000000000000000000000000000000000000000000000000060b0f15191c212528292d323435383a353b3e40404141414141403f3b363b39373533302c292825201b19150f0b0702000000000000000000000000000000000000000000000000000001070d151b20252b3033363b3f40434547494a4a4b4a4a49474643403f3c3633302c26211c160e0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343a4043444b4b4b4b4b4b4b4645423c362e25170f0600000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a49454039322920160c020000000000000000000000000000000002070e151b21252b2f33353a3e4042454748494a4b4b4a4a48474542403e3b3533302b25211c160f080300000000000000000000000000000000000000000000000000020710171d23272d3134373c4041444648494a4a4b4a4948464441403d3733302c261f17130d070000000000000000000000000000000000000000000000000000000000000000050f17252d353c4144454b4b4b4b4b4b4a403e3b352e271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c252d353c41444545494b4b4a45484643403f3b36312c261f17120a0400000000000000000000000a141f29323b42484c4d50505050504f4f4e4c4b4742413e39322e282119120a010000000000000000000000000000000000000000000000000001070f161d22292f33393e3e45494b4d50525455565656555452504d4b47413f3c37313c4245464b4b4b4b4b4b4b4847433e372f271e140a000000000000000000000000000000000000000000000000050a10161a1f24262c303334373d4041444647454a4b4c4c4d4d4d4c4c4a4648474542403f3b363433302b25241f1a16110c06010000000000000000000000000000000000000000000000040b11161e252b30353a3e40464a4c4e51535455565656565453514f4c4a46403f3b36302c261f17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212b343d444a4e4f5757575757575752504c463e36281f160c0300000000000000000000000000000000000000000000000000000000000009131e28323c444c525557575757575757575757575757575757575757575757575757575757575757575757575757575757575654504a423930261c1207000000000000000000000000000000050c12161e252b30353a3e4045494b4d5052545556565656555452504e4c4a45403e3b35302c261f17120d060000000000000000000000000000000000000000000000050c121820272d31373c3f41474b4c4f515355555656555554524f4d4b47413f3b362f27221d171008000000000000000000000000000000000000000000000000000000000000020c161f27353e454b5051575757575757554b4a453f372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c353e454b50514e545757544f54514e4c4a453f3c363028231b140d04000000000000000000030e19242e39424b5257595b5b5b5b5b5b5a595856514e4d49433d38312a221a1208000000000000000000000000000000000000000000000000030a12181f262c31393e42484c4e5457595c5e606161626161605e5b5856514c4b46403c464c50525757575757575754524e4840372e241a100500000000000000000000000000000000000000000003080f15192025292f33363b3f4043474b4d4f51534f54575858585958585755505452504e4c4a4642403e3a35332f2825211b16110b04000000000000000000000000000000000000000000060d151b20262e353a3e45494b5055575a5c5e606161626261605f5d5a5856504c4a453f3b362f27211c150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303a444d54595b636363636363635d5b564f463830261c12080000000000000000000000000000000000000000000000000000000000000c17222d38424c555c616263636363636363636363636363636363636363636363636363636363636363636363636363636363615f5a524a40362b21160b0000000000000000000000000000070f161c21272f353b3e45494b4f5457595c5e5f616162626161605e5c5957554f4b4a453f3b362f27221c160f07010000000000000000000000000000000000000000060e161c212930373c40464b4c5156585b5d5f6061626261605f5d5b5856514c4a453f38312d2720181109000000000000000000000000000000000000000000000000000000000007121c262f38454e565b5d6363636363636157544f473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27323c454e565b5d615e63635f58605d5a57554f4a464038332b251d140c04000000000000000006111c28333e48525b6265676767676766666564615a5a58534c48423a322a22180f0600000000000000000000000000000000000000000000030b131a222830363c43494c5257575e6365686a6b6c6d6d6d6c6b696764615a5856504a464f565b5d636363636363635f5d5850483e34291f14090000000000000000000000000000000000000000060d13171f242a3034393e3f454a4c4f5156585b5d5f585f636364646464636360585f5e5c595755504e4b49453e3e3933302b25201b140d0601000000000000000000000000000000000000070f161e252b30373e45494f545759606365686a6b6d6d6d6d6d6c6a686663605957554f4a463f38302c261f170f070000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a35404a545d64676e6e6e6e6e6e6e69665f564940362c22170c0100000000000000000000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453a2f24190e000000000000000000000000010911171f262c30373f454a4e5457585f636567696b6c6d6d6d6d6c6b6a6865635f5857544f4a463f38312c261f17110901000000000000000000000000000000000000070f171f262c303941474b5056585a616466686a6c6d6d6d6d6c6b696664615a57554f48443c37302921191108000000000000000000000000000000000000000000000000000000010c17212c363f48565f65686e6e6e6e6e6e6d635f584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b36414b565f65686d686e6e686d6b6865635f58555049433c352d251c140b020000000000000007131e2a35414c57626c7072727272727271716f6b6a65635c57524a423b322820170d030000000000000000000000000000000000000000030c131c232a323840464a53585b6265686e7073757778797979787775736f6b686360595650565f66696e6e6e6e6e6e6e6b6861584e43382d22170c00000000000000000000000000000000000001060f171d22292f333a3f43494c4f55575a5a616466696a6c686e6f6f70706f6f6e696c6b6967656360595a57544f4c49433e3b352f2b251e16110b0400000000000000000000000000000000070f171f262e353a43474f54585f6366696e717475777879797978777674716f6a67635f58555048433b362f27201810080000000000000000000000000000000000000000000000000000000000000000000000000000000615202c37434e59646e727a7a7a7a7a7a7a7570665950463c31261b0f040000000000000000000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78736a5f54493d32261b0f00000000000000000000000109111921272f363b43484f55575e6366686e70737576787879797978777573716e6866635f58555048443c363028211a120a0200000000000000000000000000000000060f171f272f363b444a5156596063686a6f7274767778797978777775726f6b67635f58544b474139312a211810070000000000000000000000000000000000000000000000000000040f1a25303b465059656f747a7a7a7a7a7a786e685f544a3e332820150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505b656f7478797a7a79787774716e69636059534c453e352d241b13060000000000000008131f2b36424d5965707c7e7e7e7e7e7e7d7c7b7875716c64625b534b423930271d130800000000000000000000000000000000000000030b131c242c343b424950565c62656c7075797c7f8182848485848482807e7b78736f6a6360595b6670747a7a7a7a7a7a7a7671685d52473b3024190d0000000000000000000000000000000000040b111820272d31393e444a4e5358585f63666a6b6f72747677797a7a7b7b7b7b7a7a7978767573716e696965635f5858534c4a453f3a352e26201b140d050000000000000000000000000000070f1820282f373e454953585f63686e72767a7d7f8183848485848483817f7d7a76726e69636058544a453f383028201810070000000000000000000000000000000000000000000000000000000000000000000000000005111d28333e49535c67727e8585858585858580756960554a3f342820150b0000000000000000000000000000000000000000000000000000000000111d28343f4b57626e79858585858585858585858585858585858585858585858585858585858585858585858585858585858584786d61564a3e33271c10000000000000000000000109111a222a31383f464a53585f63686e7175797c7e818283848585848482817f7c7a76726e68636059544a464038322a221a120a020000000000000000000000000000040d161f282f383f464a545a61646a6f73777b7e808283848485848382807e7b77726e69645d565149423a312920170d030000000000000000000000000000000000000000000000000006111d28333f4a556069747f85858585858584796e63574b433a2f251a0f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f84858585858482807d7a736f69635c554e453d352b23160e050000000000000c17232e3a46515d68748089898989898989888684817d77706b625c534940372d22170e040000000000000000000000000000000000020a131c242c343c444b535960636c70767c8084878a8c8e8f9090908f8e8c8a87837f7a746f6a645d6974808585858585858581766b5f54483c31251a0e00000000000000000000000000000000050d141b202830373c43494c54595c6265696e7275787b7e808183848586868787878686858382817f7c7a7774716e6865625c57554f49453e362f2b251e160f07000000000000000000000000060f172028303840474f545c63686e73797d8185888b8d8e8f9090908f8e8d8b8885827e79736e69635d554f484039302920180f060000000000000000000000000000000000000000000000000000000000000000000000020c151f2a36414c58636c77838e919191919190857a6f63574c43392f251a0e0400000000000000000000000000000000000000000000000000000000111d28343f4b57626e79859191919191919191919191919191919191919191919191919191919191919191919191919191918f84786d61564a3e33271c100000000000000000000009111a222a323a424850555c63686e73797d8184878a8c8e8f909090908f8e8c8a8885817d79736e69635d555049423a322b221a120901000000000000000000000000010b151e262f38404850555d646a6f747a7f8286898b8d8f8f90908f8f8e8c8986837e79726e63615a524a423930271d1308000000000000000000000000000000000000000000000000030e1a25303a454f58636e7a84909191919194897e72675d53493f34291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d919695908f8e8b88847f7a716d655e554e453c33271e150b0100000000000c17232e3a46515d6874808b95959595959493948f8d88827c706c625a51473c31281e1309000000000000000000000000000000000008121a242c343d444d545c626a6f757c82878c909596989a9b9b9c9b9b9a9895938f8a85807a726e636974808c91919191918d82766b5f54483c31251a0e000000000000000000000000000000060e161e252b2f3940464b53585d64666c70757a7d818486898b8d8e909592929293929296908f8e8c8a888583807c7975706c67635f58544e47423a352e261f170f0700000000000000000000020c161f283038404850585f636c71797e83898d909696989a9b9b9c9c9b9a999796918e89847f79716d635f585049413930281f160d040000000000000000000000000000000000000000000000000000000000000000000007121c25313c47515a65717c88939c9c9c9c9f958a7e73675c53493e33281e140900000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b8f84786d61564a3e33271c10000000000000000000071019222a323b424a525960636d71797e83888c90959698999b9b9c9c9b9b99989695908d89847f7a726d636059524b433b332b221a110700000000000000000000000007111b252e374048505860636e727b80858a8e919797999a9b9c9c9b9a999795938e89847e766f6a625b524941372d22181006000000000000000000000000000000000000000000000005111c28333e49545f68737f8a959e9c9ca49a8f83786d63584d42392f24190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d989f9f9c9b9a9794908a847d746f655e554c43372e251b110700000000000c17232e3a46515d6874808b97a1a1a1a0a0a49d9b98928e847c706a60564b41382d23180d02000000000000000000000000000000071018222b343d444d545d646c707a80878d92979b9ea5a4a5a6a7a7a7a6a5a3a39d9a95908c847e756f6974808c979c9c9c998d82766b5f54483c31251a0e0000000000000000000000000000070f171e262e353a434950565c63656d72777c8185898d90949597999a9c9ea59e9e9e9ea69f9c9b99989696918f8b8884817c77736e68635e575249453e362f2820180f0600000000000000000008121c262f384049505960686e747d838a8f94999c9fa6a4a5a7a7a7a7a7a6a4a7a09c9994908b837d756e696059514a413830261e150b010000000000000000000000000000000000000000000000000000000000000000000b16212b35404b56616a76818d98a3aca8afa69b8f83786d63584d41382e23180c02000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79b8f84786d61564a3e33271c100000000000000000060f172129323b424b525b62696e757d838a8f93989c9ea5a3a5a6a7a7a7a7a6a5a4a69f9c98948f8a837d766f69625b534b433b332a21180f0600000000000000000000000b16202b353e47505960696e767e858c90959a9ca0a7a4a6a6a7a7a7a6a5a3a39c9a959089817b706b625a51473c312a20160b010000000000000000000000000000000000000000000009111d2934404b57636e79838f9ba5aea8a89d93887d71665c53483e33281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4a9a7a7a5a59e9b9490867f746e655d54473f352b21160b00000000000c17232e3a46515d6874808b97a2a3a3a4a6a8a8a7a39c9590847a6f635a51473d32271b10050000000000000000000000000000030d172029333b444d545e646e727c848c91979ca2a7a9aeaea9a7a5a4a4a4a5a6a8a8a69f9c959089817a6f74808c97a3a8a5998d82766b5f54483c31251a0e00000000000000000000000000070f1820272f363e4549535960636c71777e82888d9095989b9ea5a3a4a6a7a9aea9aaaaa9afaaa8a6a5a3a7a09c9a9795908c88837e79726e68625b544e474038302820170d0300000000000000081119212c364048505960696f787f868f939b9da4a8aaafaeacaaa9a8a9aaabaeb0aaa8a59e9b948f8980796f6a615a514940372e251b11070000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58646f7b85919ca8b3b4b3a89d93887d71655b52483d32261c1208000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b4bab5b3adadadadadadadadadadadadadadadadadadadadadadadadadadadadada79b8f84786d61564a3e33271c1000000000000000020c161f28313a424b525b626b707980888f939b9da4a7a9aeaba8a7a6a5a5a5a7a8abafa9a7a49d9b948f89817a706c635c534c433a322820160d03000000000000000000030e1a25303a454f5860696f79818990959c9fa6a8aba8a6a4a2a1a1a1a3a5a8aba7a59e9b918d837b706a61564b443a30251a0f0500000000000000000000000000000000000000000007121d28333e49535c66727e89949da8b5b7aca3998e82776c62584c42382e23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a2a3a5a8aaaea9a59e97918a7f736d63584f453b30251a0f03000000000c17232e3a46515d6874808b97979797989a9ca0a7aca59e958c81756b61564b4034291e1107000000000000000000000000000009131d273039434c545d646e727e858f949ca1a8abaca7a6a59e9c9a999898999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000000060f17202830373f474e545c636a6f757c82898e92989c9fa6a7a8aeaeb0b1afaeadacacacacacadaeafb0afb0aaa8a6a59e9c98938f8a837e78706c635e575048403930271d1308000000000000040e18212a313b465059606a6f7a818b91979da3a8adada8a6a3a09e9d9d9d9ea0a2a6a8adaea9a49d9b908c827a6f6a615950473e352b20160d040000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69747f8b96a0aab5c0b7ada4998d81766b61574b40362c21170c010000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b7b0aaa8a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29b8f84786d61564a3e33271c100000000000000008121c262f38414a525b626c707b838c919b9da4a8ada9a7a8a19c9b9a99999a9b9ca0a7a6a8ada8a49d9b918d837c716c635c534b423930271d13080000000000000000050f19222b333e49545f686f79828d919c9fa5a9aaa8a49d9b9896959596979a9ca0a7aba9a29b948f837b6f635d544a3f34291f150a0000000000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4adb7bdb2a79c92887c70655b52483d32271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d9797979a9c9fa7abaea7a09c91867d71685f544a3e33281d1309000000000c17232e3a46515d6874808b8c8c8c8c8d8f91979ca3aca59c91867b6f64584d41352b21160b00000000000000000000000000050f17232d37414a535c646e727e8790969ea4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa5a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000050e171f28303840484f575e636d717a81878e939a9ca3a7a9afb2b0aea9a7a5a4a2a1a1a0a0a0a1a1a2a4a5a7a9aeafb1aea9a7a39d9a948f89827c736e686059504940372d22170c0100000000000a141e28323a424a5560696f7a828d929ca0a7acaca7a49d9b9795939291919294979a9da4a6abada8a19a928e837b6f6a60584f453a30261e140b0100000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba7b0bac4bdb4a89c91867b70645950463b31261a0f040000000000000000000000000000000000000000000000000000111d28343f4b57626e7986919ca8b3b0a7a09c969696969696969696969696969696969696969696969696969696969696968f84786d61564a3e33271c10000000000000050e17212c364048525b626c707c848f939aa1a8ada8a59e9b989791908e8e8e8e8f9197979b9da4a8ada8a29b948f857d716c635b524940372c22170f06000000000000000a151f29333e49535c636e78828e929ba2a9aba69f9c97948f8d8b8a898a8c8e91979ca0a7aba49d948d82766d64594e42392f24190e030000000000000000000000000000000000000009141e28333e48525b65717d88939ca7b5bdbeb6aca3998d81766b62574c41372d22180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47535e6a75818c8b8b8c8e91969ca1a8b0aba0978f83796e63574b41372d23180d020000000915202c37434f5a66717d80808080808183868e929ca5aba0978b7f7468584f453b30251a0f030000000000000000000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e00000000000000000000020c151e272f38404950585f686e747d848d91979ca3a7acb3afaaa8a4a59e9b9998969595959495959697989a9b9ea5a3a7a9aeb3aca7a49d9b938e867f786f69605950463c31261b100400000000030e19232e38424b555e636f79828e939ba2abafa9a39c99948f8c898786868687898b8f93999ca2a9aeaaa39c938f837a6f685f544942362e251b1106000000000000000000000000000000000000000000000000000000000005111d28333e48535c67727e89949ea9b7c0c9c1b5aba0978b80746960554a3f34281f150b0000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aaa096918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b84786d61564a3e33271c100000000000020c151f27313b465059616b707c8590949da4aaaaa59e9b95908c898684838282838485888b8f949a9da4aaaba49d9590857d716c625950463c31281f160d030000000000030e19242f39414c58626c747f8b929ca2abaaa19b96908c8783817f7e7e7e8082868c91979fa6ada49c92897e72665c53483e33281d1106000000000000000000000000000000000000020d18232e38414c57626c76828e99a3acb6b4b3b4b4a89c91867b70645a51473c31261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737f807f7f8082858c9197a1abb0a79d948a7e72675a51473c32261b100500000008141f2b36424d58636d71747474747575777c828e959ea9a79a8e8377685f544a3e33281c1105000000000000000000000007121c262f383f4b56616a717d869197a0a7aea79f9c928e88837f7b797776767676787a7d80858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e0000000000000000000007121c252f374048505960696e787f8790949ca1a8acb2aca7a69f9c999595908e8c8b8a89898989898a8b8c8e909595989b9ea5a8aab0ada8a39c96918a81796f6a60564b3f34291d12060000000005111c27323d48525b656f76818d929ca3abada69f9c928e8883807d7c7a7a7a7b7d8083888d929c9ea5adaca49d938e82786e635c53473e352b20160b00000000000000000000000000000000000000000000000000000000020c151f2a36414c58626c77828e9aa5aeb8c7c5c4bab0a79c90847a6f63574c43392f241a0e0400000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c91867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f73675c5044392d22160a000000000007121c262f383f4a556069707b8490959ea5adaaa19a94908a84807d7a7977777777787a7d8084898f939ca0a7ada59e9690857c706a60564b443830261c1208000000000006111d28333e49535c65707c86919ca2aba7a09c918d85807c78757473727374777b808690959fa9aba29a8f83786c62584c41362a1f130800000000000000000000000000000000000005101c27323d47515a65707c87929ca7b4aea9a7a9aeaba0978c80756a61564b40362c22170c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434e5a646e7374747475777b8087919ca1aaada49a8f83786a61564b4034291d120600000007121d29343f49545d636669696969696a6b707a84909ca7a89c91857a6e63574b4034291d120600000000000000000000010c17212c363f48545d646f7b8490969fa7aea59e96918a827d7773706b6b6a6a6a6b696e71757a7f858e929ba19c9590959fa9b0a5998d82766b5f54483c31251a0e00000000000000000007121a212b353f485059606a6f79818b91979ea5abb1aca7a39c9a96908d89878482817f7e7e7d7d7e7e7f8081828486898c9094989ca0a7abb0aca69f9c928d827a6f63584c4035291e1207000000040e18212a35404c57626b737f8a919ba3acada49d959089827d787472706f6e6f707174787c828990959da4adaca39c928b7f746c62574e453a2f24190e0300000000000000000000000000000000000000000000000000000007111b25313c47515a65707c88939ca7b5bebbbabbc0b4a99e958a7e73675c53493e33271e130900000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857973737373737373737373737373737373737373737373737373737373737373736e655a4f43382c21150a00000000010c16212c363f48545d636f7a838f949ea5aea7a09c908c847e7975716f6a6c6b6b6c696e7174797d838b91979fa5aea69e958f837a6f635d544940362c22170c020000000008131f2a36414d58636c76828e97a0aaa7a0969189817b74706c6a68676767696b6f757d85909ca3aca89d93887c7065594e42362b1f140800000000000000000000000000000000000206121e2935404b57616b76818d98a2abaca59f9c9fa5aea79c90857b6f635950463c31251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a35404b555e6467696868696a6f757e8a919ba8b1a89d93867b6f64584c41352a1e1207000000040f1a252f3a434c54585a5d5d5d5d5e5b626a75808c97a3aa9f96877c7064594d42362a1f130800000000000000000000040f1a25303b465059646e76818d959ea7aea59e9590867f78716c6764625b5f5e5f596063656a6f747b828c919aa19f9c9fa6afb0a5998d82766b5f54483c31251a0e0000000000000000060f17222b303b454f5860696f7a828d919ca0a7aeaea9a39c9a938e8985817e7b7977757473727272727273747577797b7e8084888d91969ca0a7adafaaa29b928e82776b6054493d31261a0f00000009141e28343f49535d64707c86919ca2abada49d948f857e77716d6966646363636466696c71767e848f939da4adaba29c91867c70685e54493e33271f140a0000000000000000000000000000000000000000000000000000000b16212b35404b56616a75818d98a3acb6b3afaeafb3b8aea59a8f83786d63584d41372d23180c02000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e68686868686868686868686868686868686868686868686868686868686867655e554b40352a1f130800000000040f1a25303b454f58636d75818c939da5aea7a0969189807a736e6966636059605f58606365686e72797f8690959fa5aea59d948d81766e645950463c31261c12080000000008141f2b37424e5965717d88929b9da4a09791867e756f6a64625b5c5c5b5c5a61646d727e89929ca7ada4978b7f74685d51453a2e23170b000000000000000000000000000000000005101b26313c47515a646f7b86919ca8aca39d9590959fa9aa9f968b80746960554a3f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313b454d555a5b5d5d5d5a61636e75818d97a1abada495897e72665b4f44382d21150a000000000b15202a333c43494d4f5252525252525966727d8994a0afa694897d72665a4f43382c2015090000000000000000000006111d28333f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b6f79818c919aa2a7a9afb6b0a5998d82766b5f54483c31251a0e00000000000000020c161f28323b434a555f696f7a828e929ba2abb0aca59e9c938e88837e7a7672706b6b6a6867676666666767686a6b6b6f7275797d81868c91979da4adb5aba39b8f84786d61564a3e33271c100000020e18232e38424d58636d77828e969faaaea59d948f837c726e65635c5b59585758595a5c63656d727b838f939da5aeaba0978e82786e63574b42392e24190e0300000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85919ca8b3b1a9a4a2a4a9b1b3a89d93887d71655a51473d32261c1207000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a554d453b31261b10050000000005111c28333f4a555f69717d89919aa4adaaa09691867e756f69635f585856505454505557575e63686e737d8590959fa7ada49b91897e726960554a40362c22170c0100000008131f2b36424d5964707c82898f949c9c91867e726e63615a575251504f5051565c636d77828e9aa5b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000010b151d29343f4b56616a75808c97a0aaa79d938f84909ca5aea69c90847a6f63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212b343d454b4e5052515151565e64707c86919ca8aea3978c8075695d52463b2f23180c0100000006101a232b333a3f424346464646464d5964707c87939eaaa195897e72675b4f44382d21150a000000000000000000030f1a25303b454f58636e7a84909ba2abaaa09790857c716c635e57534d4c48484747464a4c50565a61696e78808c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e0000000000000008121c262f38434b555e636e79828e939ca3abb6aaa29c959089827d77726e696764625b5e5d5c5b5b5a5b5b5c5d5e5a616466686e71767b81868f939da4adb2a79b8f84786d61564a3e33271c10000005111c27323d48525b66717d88929ca7afa99e958f837b706b645d58534f4d4c4c4c4d4f53585d646b6f7a838f959ea9b0a79c93897d72665b52483e33281c11060000000000000000000000000000000000000000000000000005111c28333e4a555f68747f8b969faab5a9a09a979aa0a9b3aca3998d81766b61564b3f362c21160c010000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625651515151515151515151515151515151515151515151515151515151504f4b453d342b21170c02000000030f1a25303b454f58636e79838f9ba1aaaaa19c91867e726e636059554f4c4b464848464a4c4e54585f636d717c859096a0aaaba29b90847a6f635950463b31261a0f0400000007131e2a35414c57626c70777e838a90938b7f746d645d56514c4845444445474b545d68737f8a96a2ada69b8f84786c61554a3e32271b100000000000000000000000000000000007111b25303b465059636f7b85909ca7aea59a8f837e8a959ea9a99e958a7f73685f554a3e332820160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d343b404344464545474c57626b78838f9aa6afa4988d81756a5e53473c3024190d020000000009131b232a2f3436373b3b3b3b414c58646f7b86929ea9a1968a7e73675c5044392d22160a00000000000000000005111c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a51585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e000000000000010c17222c364048535c656f76818d929ca3acb1aba19a928e847e77716c676360595857525251504f4f4f4f50505152515658575e63656b6f757c838f939da8b2a79b8f84786d61564a3e33271c10000007121e2935404c57626b77828e99a3acaba29c90857b706a625b544d4943424040404143494c545a616a6f7b84909ba2abaca39a8e83776c62574c41352a1e13080000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba7afaea59a908b909aa3acb3a89c91867b6f64584f453b30251a0f040000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4545454545454545454545454545454545454545454545454545454443403b342d241b11070000000005111c28333e4a555f68737f8a949da8aea59a918a7e726d645d55504a45403f3c37363b3f4045494f545c636c717d86919ca3aca99e948b7f746960554a3f34281e130900000006111c27333e48525b62646d72797f848c83796e635d544b47413d383938383d444f5b66727d8995a0aca79c9084796d62564a3f33281c11000000000000000000000000000000000b16212b353f4a556069747f8b969faaa89e94897e7984909ba6aea59b8f84796e63574c433a2f251a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b313538393b3a373d48525b6a75818d98a4afa5998e82766b5f54483c31251a0e0200000000020b131a2025292b2c2f2f2f35404c58636f7a86919da9a2968a7f73685c5145392e22170b00000000000000000006121d2934404b57636e79848f9ba5aea89d938b7f746d635b5349453e3635322e302c3033363c41484f575f686f7b84909ba3acb6b0a5998d82766b5f54483c31251a0e000000000000040f1a26313b465059636c737f8a919ba2abb1a8a19c908c827b726e65635c5755504d4c484745444443434444454647474b4c4e54575a61646c707a838f9ba6b2a79b8f84786d61564a3e33271c10000007131f2a36414d5964707b87929ca7b2a69b92897e726b615a524a443e393635343536393e444a515a616b717d88919ba7b0a79c93877c7065594d42372d22170d01000000000000000000000000000000000000000000000005111c28333e48525b66727e89949ea9b4a99e948b808b929ca7b2aaa0978b8074695f554a3f33281f150a0000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3939393939393939393939393939393939393939393939393939393835312b241c140b010000000006121d2934404c57636e79848f9ba4ada89e948c80756e645d544a46403b3534312c2c3033353a3f454a535c636d747f8b939da7aea59c90847a6f63574c41372d23180d020000030e19242e38424b52575d64696e737a807e72685f544c443c37332e32353b4047505967727e8995a1aca89c9085796e62564b3f34281c11000000000000000000000000000000030f1a25303b454f58636e7a84909ca6afa69b908479747f8b969faaa89e94897e72675d54493f34291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b21262a2c2d2f2e2e3846515d6974808b97a3aea69a8e83776c6054493d32261a0f030000000000020910151a1d1f2023232935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000030f1a25303b454f5866727d89949ea8ada49a8f83796e635c534b433a352e292723242125282c31373f474f58616a727e89939ca7b3b0a5998d82766b5f54483c31251a0e0000000000050f18222a343f4a556069717d86919ca2abb6aba197918a80786f6a645d58534c4a4641403d383a393838383838393a373d404145494b51565c626977838e9aa5b1a79b8f84786d61564a3e33271c1000040f1a26313b46505968747f8b97a3acaca3998d82766d645b524a423a332f2a2929292a2f333a4149515a636d76818d97a0abaca3978b8074695a51473c31261b100400000000000000000000000000000000000000000000010b151e2a35414c57626c77828e9aa5aeb0a79b90847a828e99a4adb0a79b90847a6e63574c43392f24190d0300000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2a26211b140c0300000000040f1b26313c46505966727e89949ea8ada49b90847a6f635e544c443c36302b2826222125282b2f353b434b535c636e79838f9aa3aca99e958a7e73675a51473d32271b10050000000a141f28323a42484c54585f636a6f74726e64584f453c313235383d3f454a5057606a75808c97a3aea79b8f84786d61564a3e33271c1000000000000000000000000000000005111c28333e4a545f68737f8a959ea9a99f958a7f736f7b85909ca7ada49a8f83786d63584d43392f24190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b11171b1f212223232e3a45515c68747f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000060b0f121415181e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554c433b2f2b251e1c1914171a1d22272f363f47515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e00000000000a141f29323d48525b636f7a848f96a0aab2aaa19c91877f746e68615a544d49433f3b3635322e2e2d2d2c2c2c2d2d2f2d3234353a3e41474b53596b77838e9aa5b1a79b8f84786d61564a3e33271c100006111d28343f4a55606977838e9aa6b1a79c93887c70655d544a4139312a251f1e1d1e1f24293139414a545d64707c86919ca8b2a69a8f83786a60564b3f34291d12060000000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b5aaa0968b80747d89949ea8b4a99e95897e72675c53493e33271d130900000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342822222222222222222222222222222222222222222222222222211f1b17110b03000000000006111d28343f4a55606976828d99a4ada89e94897e726960554d443c312c26211d1b17171a1d20252b303b434a545f68717d88939ca7aea59a8e82776b61564b4034291d1206000000050f18222a32383e44484f555960636967645d54473f35383d4042484c4f555960686f7a84909ba7b1a69a8e83776c6055493d32261b0f00000000000000000000000000000009121d2934404b57636e79838f9ba5aea79c90857a6f6a75818c97a0aba89d93897d71665c53493e33281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013151618222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000004070809121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453c332a201b14110e090c0f12171e262e374149545d66727e89959ea9b0a5998d82766b5f54483c31251a0e00000000030e19242e39404c57626c74808b949da7b0aba29a908a7f736f635e57514a443e3933302c2927232322212121212122232327292b2f33383d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c100006121d2935404c57636f7a85919ca8b1a69a8e83776c62584d443a312921191512121215192129313a434c57626b77828e99a5b0a89c91867b6f63584c4135291e1207000000000000000000000000000000000000000000000b16212b35404b56616a75818c98a3acb3a89c91867b6f79848f9ba6afaea59a8e83776c63584c41372d23180c02000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1717171717171717171717171717171717171717171717161513100c070100000000000006121e2935404c57636f7a85919ca8b2a79b8f84796e635950463d342c221c16120f0c0c0f11161b212a303b454f58636d77838e9aa7b0a89c91867b6f64584c41352a1e13070000000008111a22282e33373f454a5056585d5b59544d443e4142484c4d5257585f636a6f78818d959ea9aea5988c8175695e52473b2f24180d000000000000000000000000000007121d28343e49535c66727e89949da8aaa0978c80746a64707c86919ca8ada49a8e82776c63584c42382e23190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b231a110b0403000104080e161e273039444c57636e7984909ca7b0a5998d82766b5f54483c31251a0e0000000006111c28333e48525b64707c86919ca4adaea59c928c80746f655e544e474139332f2825211e1c18141616151515161613181b1d2024272d3d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c100008141f2b37424e5965717c8896a0aaada2968b7f74685c53493c34292118110b0606060a10182129323d48525b67737e8a95a7afaba197887d71665a4e43372c201409000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3aca3998d81766b737f8b969faab3a79c93887c71655a51473c32251c1207000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a0a08050200000000000000000915202c37434f5a66717d88969faaaea5978b7f74685f544940362c241b120c0704010104060b111a212b353f47535c67737e8a97a0ababa097897e72675b4f44382d21120700000000010911181f24272f353b40464b4c524f4e4a4442484c4d5257595b6264696e737a818d919ba5aea99e95897d72665b4f43382c21150900000000000000000000000000040e181f2b36424d58636d77838f9aa4ada89c91867b6f64626b76828d99a3aca79c92887c71655b52483d32271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b120601000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e0000000007131e2a35414c57626c76828d96a0aab4a99e958e82786e635e5549453e363129241f1a1712100d090a0a09090a0a0b090d1011161926313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000a15212d38444f5b67727e8995a7b0afa693887c71655a4e43392b231911080000000000081019232e38424d5964707b87969faab1a8968a7e73675c5044392d22160a00000000000000000000000000000000000000000005111c28333e4a545f68747f8b969faab3a89d93887d71656f7b85909ca8b3aca3988d81766a61564b3f352b21160b000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a7afa99e94877c7064584f453830261c1308030000000000000107111b252e37434c58636f7b86919ca8b0a7988c8075695e5246362c21160c010000000001080f14171e252b30373c3f40464441484b4d5257595b6264686b7074797e848d919ba2abada49b90847a6f63574c4035291d12060000000000000000000000000009141e28333e48525b66717d88939da7aca3988d81766b615b65717d88939ca7aca3998d81766b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4033271e150a02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e00000005101b27323d47515a65707c86919ca7b0aca29b90847b6f685e544e453a352e262019150f0c0705020000000000000000000205060b1a26313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000b17222e3945515c68737f8b96a2adaa9f96867a6f63584c4035291e1209000000000000000a141d2934404b57636e7985919ca8aea2978b8074695d51463a2f23170c00000000000000000000000000000000000000000006121d2934404b57636e7984909ba6afaea59a8f83786c636a75818c98a3acb3a89c91857b6f64584f453b30251a0f030000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000020e1925313c48535f6b76828d99a5b0a79b9084796b6257473f35281f160c030000000000000000010b151e29343f4b56616a77838f9aa6b1a59a8e83776b584f453b30251a0f04000000000000050a0e151c21272d31353b42484c5257585b6265686b7074777b80848a90949ba2abaea69d938b7f736960554a3f34281d1106000000000000000000000000020d18232e38414c57626c77828e99a3aca79c92887c70655a58636d77838e9aa4ada89c91867c70645a51473c31261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000e1a26313d4854606b77828e9aa5b0a4998d82766a5b52483d3223160e05000000000000000000000b16212b35424d5964707c8793a6afa5998d82766b5f54483c31251a0e00000006121d2934404b56616a76818d97a1abb2a79c92897e726a61574e453d2f2b251e16100a04010000000000000000000000000000000f1a26313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000c17232e3a46515d6874808b97a2aea89c9085796a60564b3f34281d11060000000000000005101c27333e49545e6878848f9ba7afa3978c8075695e52463b2f24180c000000000000000000000000000000000000000004111c27333e48525b66727e89949ea8b4a99e958a7e73675c65707c87929ca7b2aaa0968b7f74695f554a3f33281f150a0000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576c78838f9ba6b0a4998d82766b5b5248372e25170f060000000000000000000005101b26313c47515a6975818c98a3afa79b908479695f554a3f33281c11050000000000000000061018202830373f454a52575b6164686c7074787c7f83878b90949b9ea5abada59f958f837a6f635950463b31261a0f0400000000000000000000000005101c27323d48525b65707c87929ca7ada49a8e82776c6257535c66727e89949da8aba0978c80756a61564b40362c22170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e231806000000000000000000000007111d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e00000007121e2a35414c58646f7b86919ca8b1aba2998e82776e645a51473e352d201b140d050000000000010405060a0a0a0a0a0a0a0a0a0f1a26313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000c18232f3a46525d6974808c97a3aea79c9084796d5950463c31261b100400000000000000030e19242f3a454e576c78838f9aa6afa4988c81756a5e52473b3024180d00000000000000000000000000000000000000010b151e2a35414c57626c77828e9aa5aeb0a79c90847a6f6357626c77828e9aa5aeb0a79b9084796e63574c42392f24190d0300000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e687985909ca7aea3978c8074695d5246382f1e15070000000000000000000000020d18222d3745515c68737f8b96a2ada99e94867a6e63574c4034291d120600000000000000040d162029303940474f545b62646b7074787c8083878b8f93979b9ea5a9aeaba49d9590857c706960554840362c22170c0100000000000000000000000006121e2935404b57616b76818d98a2aba89d93897d71665c534b57636e79848f9ba6afa79c91857b6f645950463c31251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e22140b000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e000005101c27323d48525b68737f8a97a0abb2a79c92877c70655d544a41362e251d110b040000000002070c0f1112161616161616161616161a26313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000c17232e3a46515d68747f8b97a2aea79c908579695f554a3f33281c11050000000000000004101b26313c47515a6c78848f9ba6afa3988c8175695e52473b2f24180d0000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b6aba0978c80746960555b66727e89949ea9b4a99e94897e72665c53483e33271d130800000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85919ca8ada2968b7f73685c5145392e22170b0000000000000000000000000813212d3844505b67727e8995a1acaea592867b6f63584c4135291e1207000000000000010b151e263039414951585f636b70757b7f83878b8f93969a9da3a7a9aeaba8a19c948f857d716b62595046382f261c120800000000000000000000000005101b26313c47515a64707b86919ca8aea59b8f83796e63574b4a545f68737f8a959fa9aa9f968b80746960554a3f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e000007121e2935404b57616b77838e9aa7b0aea5998e82766c62574d443930261e14060100000000050c12161a1c1d212121212121212121212126313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000b17222e3945515c68737f8a96a2ada89c91857a6e63574c4034291d13080000000000000005121d29343f4b56616a7984909ca7aea3978c8074695d52463a2f23180c000000000000000000000000000000000000000b16202b353f4b56606a75818c98a3acb4a89c91867b7064595057636e7984909ba7b0aea59a8e82776c62574c41372d22180b01000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a8697a1abada1968a7e73675c5044392d22160b0000000000000000000000000a15212c38434f5b66727d8995a0aca99e92877b6f64584d41352a1e130700000000000007111b252e374149515a61686e747c81868b8f93979b9da4a6a7acafa9a7a29c97918c847c716c635b52484036281f160c020000000000000000000000010b151d29343f4b56616a75808c97a0aaa99e958a7e73685e5449454f58636f7a85909ca7afa69c90857a6f63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e000007131e2a36414d5864707b87939ca7b4a99e95887d71665b52483c342920160d0400000000060e151c212528292d2d2d2d2d2d2d2d2d2d2d2d313d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c10000a15212c38444f5b66727e8995a6afaba097877c7064594d42372d22160d040000000000040d161e2935414c58636f7b86959ea9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca8b3ada4998d82766b61574a555f68747f8b96a0aab2a79c93887c70655a51473c31251b1107000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a8697a1abada1968a7e73675c5045392d22160b0000000000000000000000000915212c38434f5b66727d8995a0aca99e92877b6f64584d41362a1e13070000000000000b16202b353e47515a616a6f797f868c91979b9da4a6a8adafaaa8a69f9c98928d87807a706c635c534b42382f26170f0600000000000000000000000007111b25313b465059636f7b85909ca7afa69b90847a6e63574e453f4a55606974808b96a0aaa99f958a7f73695f554a3f332820160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e221409000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e00000a16212d3844505b67727e8a95a3acb3a79b9084796e63574b4239292318100500000000050e171f262c303334393939393939393939393939393d4954606b77838e9aa5b1a79b8f84786d61564a3e33271c100008131f2b36424d5965707c87969faab0a7958a7e72675a51473c31261e150d07010002060c141e26313b46505966727d8994a5aeada494897d72665a4f43382c20150900000000000000000000000000000000000005111c28333e49545f68737f8b969faab3a89d94887d71665b52484f58646f7b85919ca8b3aca3988c81756a61564b3f352b21160b000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85919ca8ada2968b7f73685c5145392e22140a0000000000000000000000000a16212d3844505b67727e8995a1acaba197867b6f63584c4135291e12070000000000030e1a25303a454f58616a6f7a828b91969ca0a7a8adaea9a7a69f9c9995908c87827c756f69625b534c433a31281f1607000000000000000000000000000b16212b353f4a556069747f8b969faaaa9f968b7f74696055473e3c465059646f7b86919ca8aea59b9084796e63574c443a30251a0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e23180d020000000000000000000006121d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e00040f1a25303b4650586a75818c98a4afb1a8988c8075685f544a3e33281c130800000000020c151f272f363b3f4044444444444444444444444444444954606b77838e9aa5b1a79b8f84786d61564a3e33271c100006121d2934404c57636e7a85909ca8b0a4988d81766a60564b41372e251e16110b090d10161c252e363e4a55606975818c98a3afa89d94867b6f64584d41352a1e130700000000000000000000000000000000000006111d2934404b57636e79848f9ba6afafa69b8f83796e63574b414b56616a76818d98a3acb3a89c91857b6f63584f453b30251a0f030000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e687985909ca7aea3978c8074695d5246382e24190b0100000000000000000000000617222e3a45515c68737f8b96a2ada89c91857a6e63574c4034291d1206000000000005111c28333e49545f686f7b838e939ca0a7aaaea9a7a59e9b9896908d8985817c76716c636059524b433b332a21170f06000000000000000000000000030f1a25303b454f58636f7a84909ca6afa79c90857b6f635850463636404b56616b75818d98a2aba89e948a7e72675d54493f34291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000e1a26313d4854606b77828e99a5b0a4998d82766a5b52483d32271c10050000000000000000000008131f2b36424d5964707c8793a6afa5998d82766b5f54483c31251a0e0006111d28333f4a55606978848f9ba6b2aba197897d7266584f453b30251a0f030000000007121c262f383f454a4c50505050505050505050505050505054606b77838e9aa5b1a79b8f84786d61564a3e33271c100005111c28333f4a555f6976828d99a6afa89c90857a6f635a51473e352e26201b1914181c1f262c353e47515a636f7a84909ca7b2a69b8f84786b61564b4034291d1206000000000000000000000000000000000004111c27333d48525b66727d89949da8b5aa9f968a7f73685e54493e47515a65717c88939ca7b3aa9f968b7f74685f544a3e33281f140a0000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576c78838f9aa6b0a4998d82766b5b52483d32251b11070000000000000000000005101b26313c47515a6975818c98a3afa79b908479695f554a3f33281c11050000000004101b26313c47515a636e78828e939ca3aaaea9a59e9c9895908c8985817e7a75706c65635c555049423a332b221911070000000000000000000000000005111c28333e4a545f68737f8a959ea9aba0978c80756a6156483f36323d47515a65707c87929ca7aea59a8f83786d63594d43392f24190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4035291e150c02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e0006121d2934404c57636e7986919ca8b4a89c91867b6f63584c41352b21160b00000000010c16212c363f484f55575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b606b77838e9aa5b1a79b8f84786d61564a3e33271c1000040f1a25303b454f5867737e8a959fa9aa9f968b7f746b61584f453e36302b25232423272930363c454e57616a737f8a959ea9aca3978c8075695a51473d32271b100500000000000000000000000000000000010b151e2a35414c57626c77828e99a4adb3a89c90857a6f63574e453a414c58636c77838e9aa5aeafa69b9084796e63574b42382e24190d0300000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000b16202b3548535f6b76828d99a5b0a79b9084796c62574c3f352b21160c030000000000000000010b151d2934404b56616a77838f9aa6b1a59a8e83776b584f453b30251a0f040000000006121d29343f4b56616a747f8b929ca4acaca59f9c95908c8884817d7a76726e6965625c58534a464038322a221a1209010000000000000000000000000009121d2934404b57636e79848f9ba5aea89c91867c70645a5147382f2d37414c57626c77828e99a4ada89d93897d71665c53493e33281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b110701000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e0008131f2a36424d5964707c8797a1abb2a69b8f83786a60564b3f34251b110700000000040f1a25303b454f585f6367676767676767676767676767676767676b77838e9aa5b1a79b8f84786d61564a3e33271c1000010c16212c36404c57636f7a85909ca6afa69c90857b6f685f544e47403a35322e302d32353840464a545e686f7b85909ca5aea79d93887c7165594e42372d23180d020000000000000000000000000000000007111b25313c46505964707c87929ca7b5aca3988c80756a6056473e353e49535c67727e8a959ea9b4a89e94897e72665b52483e33271d130800000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000611232e3a46515d6874808b97a6afa99e94877c7064584f453b30261c1208030000000000000207111b252e37414c58636f7b86919ca8b0a7988c8075695e5246362c21160c010000000007121e2935414c58636f7b85909ca3acaca39d95908a84807d7975726e696663605957534c49433c363028221a120a020000000000000000000000000008121d29343f49535d66727e89949da8aca3998d82766b62574941372727333e48525b66717d88939da8ada49a8e82776c63584d42382e23190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b211a110b0403000104080e161e273039414c57636e7984909ca7b0a5998d82766b5f54483c31251a0e000915202c38434f5a66727e8994a8b1b0a5998d82766b5a51473c3126150b010000000005111c28333f4a555f696e72727272727272727272727272727272727277838e9aa5b1a79b8f84786d61564a3e33271c10000007121d28343f4a55606975808c959fa9aa9f968e82786e635e575049453e3d383b383d40444950555f636e78828e959fa9aca39a8f83776c63584c4136271e130900000000000000000000000000000000000b16202b353f4b56606a75808c98a3acb2a79c92877c7064595046362e39434c57636e7a84909ba7b0aea59a8e82776c62574c40372d22170b01000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000915202c37434e5a66717d88969faaaea5978b7f74685f544a40362c221b120d0704010104060c111a212b353f47535c67737e8a97a0ababa097897e72665b4f44382d2112070000000004101b26313c47515a68747f8b969faaaea59d938f857f7a75716e68666360595755504c48423e39312c261f1711090200000000000000000000000000040e181f2b36424d58636d77838f9aa4ada79c93887d71655b5248393027242e39424d58636d78838f9aa5aea79c92887c71655b52483d32271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453b302a201b14110e0a0c0f12171f262f37414a545d66727e89959ea9b0a5998d82766b5f54483c31251a0e000b16222d3945505c67737f8a96a1adafa3978c8075695d5246372d22170c000000000006121d2934404c57636e797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e838f9ba6b2a79b8f84786d61564a3e33271c100000040f1b26313c465059636f7b85909ca4ada69c928c80756e686059544f4c48474747474b4d545960636f74808c929ca6afa79c93897e72665c53493e3328170e0400000000000000000000000000000000030e1a25303a454f58636f7a85909ca8b3ada4998e82776c625749403728333f4a555f6974808b97a0aab2a79c92877c70655950463c31251b1107000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8b2a79b9084796e635950463c312c221c1612100c0c0f11161b212b303b454f58636d77838e9aa7b0a89c91867b6f64584c41352a1e12070000000006121d29343f4b56606a78838f9aa6afa89e948f827b736f6965635f585755504c4a463f4342403d382f2b251e1610080300000000000000000000000009141e28333e48535c66717d88939da7ada49a8e83776d63584a423829201f29343f49545d67727e8a949ea9aca3998d81766b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b010000000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554a433b2f2b251e1c1914171a1d22272f363f48515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e000b17222e3a45515c68747f8b96a2adada2968b7f73685c5145392e221308000000000007121e2935404c58636f7a868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8f949da8b2a79b8f84786d61564a3e33271c100000010c17222c36404b56616a747f8b939da7aca39a918c80786f6a635f5857525353535157585d64696f76808b909aa2abaaa0978e82786e63574b43392f241907000000000000000000000000000000000005111c28333e49545f68737f8a969faab4a89e94897d72665b5248383026303b454f58646f7b86919ca8b3aca3988c81756a60564b3e352b20160b000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606976828d99a4ada89e948a7e726960554a443c312c26211d1b17171a1d20252b303b434a545f68717d88939ca7aea59a8e82776a61564b4034291d12060000000007121e2935414c58636f7b86919ca8b0a79b90847a6f6a63605957544f4c4a464043494d4e4d4c48423a352e262119130c0500000000000000000000020d18232e38414c57626c77828e99a3aca89d94897e72665c53493a3128181a252f3a434c57636e7984909ba6afa89c91867c70645a51473d32261d120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e2217100c06010000000000030f1a25303b454f5866727d89949da8ada49b8f83796e635d534b433a352e2a2723242126282c31383f474f58616a727e89939ca7b6b0a5998d82766b5f54483c31251a0e000c17232f3a46515d6874808b97a2aeada1968a7e73675c5044392d22160b000000000007121e2935404c58636f7a869295959595959595959595959595959595959b9da4adb2a79b8f84786d61564a3e33271c1000000008121c26313c47515a636e79838f97a0abaaa19a908c817a726e6864625b5f5e5f5a6164676d727a818b909aa1aaaba29c91867c70685e54493e32291f150a000000000000000000000000000000000005111d2934404b57636e79838f9ba6afafa69b8f84796e63574b423829212c363f4b56616b76818d99a3acb3a89c90857a6f63584f453a30251a0e030000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505966727e89949ea8aea59b90847a6f635e554c443c36302c2826222125282b2f353b434b535d636e79838f9aa3aca99e958a7e73675a51473d32271b1005000000000914202c37434e5a66717d8897a1abaaa0978a7e736a615a55504b4945403f3b434c53585a59575249453e363129241c160e0500000000000000000005101c27323d48525b65707c87929ca7aea59b8f84796e63574b4339292118152028333f4a555f69747f8b969faaaba0978c81756a61564b40362c22170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e221e1b16110a0300000000000b16212b35404b57636e79848f9ba4ada89d938b80746d635c5349453e3635322e302c3134363c41484f575f686f7b84909ca3acb6b0a5998d82766b5f54483c31251a0e000c18232f3b46525d6975808c97a3afaca1958a7e72675b5044382d21160a000000000007121e2935404c58636f7a86929da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a6a8adb4b2a79b8f84786d61564a3e33271c10000000030d18222d37414a555f69717d86919ca3acaaa19a928d847e7973706b6b6a6a6a6b6b6f73787d848d919aa0a9aca39b928b7f736c62574e453a2f22190f050000000000000000000000000000000004111c27323d48525b66727d89949da8b5aa9f968b7f74685f544a3e33281c26323d47515a65717d88939da8b3aa9f968a7f73685f54493e33281e140a0000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000010c17222c36404b57636e79848f9ba4ada99e948c81756e645d544a46403b3634312c2c3033353a3f454a535c636d747f8b939da8aea59c90847a6f63574c41372d23180d02000000000a15212d38444f5b66727e8995a8b1a89c91857a6f635a514a46403e3a353a424b535d636664625b544e47413a342c261e160d03000000000000000006121e2935404b57616b76818d98a2aca99f958a7f73685f544a3e33281c110f1a25303b454f58636f7a85909ca7b0a79c91857b6f645950463c31251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121d2935404c57636e7a8691a6afa2968b7f73685c5145392e2c2925201a130b030000000007121c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a52585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6975808c97a3afaca195897e72675b5044382d21160a000000000007121e2935404c58636f7a86929da9acacacacacacacacacacacacacacacb2b3b3b3b2a79b8f84786d61564a3e33271c100000000009131d27303b454f58636c747f8b929ca5aeaaa29b949089837f7b797776757677787b7f83898f949ba2a9aca39c938d81786e635b52473e352b20120900000000000000000000000000000000010b141e2a35404c57626b77828e99a4adb3a89c91857b6f63584f453b30251a232d38414d58636d78838f9aa5aeafa69b8f84796e63574b42382e23190d0300000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000008121c28333e4a545f68737f8a949da8aea59a918a7e736d645d55504a45403f3c37363b3f4045494f555c636c717d86919ca3aca99e948b7f746960554a3f31271d130900000000000b16222d3945505c67737e8a96a1ada79b8f84786a605649413b3636383d434b525b636d71706b635e57514a443d362e261d13090000000000000005101b26313c47515a64707b86919ca8b0a79c90857a6f63584f453b30251a0f0b16212b353f4b56606a75808c97a0abaa9f968b80746a60564a3f352b21160b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006111d2934404b57636e7a85959fa9a2978b7f74685d514537383734302a231c130a01000000030f1a25303b454f58636e7a848f9ba2abaaa09790857c716c635e57534d4c48484747464a4c50565b61696e78818c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e000c17232f3a46515d6974808b97a2aeada1968a7e73675c5044392d22160a000000000007121e2935404c58636f7a86929da8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79b8f84786d61564a3e33271c1000000000030d16212b353f48535c636e78828e949ea6afaba59e9b938f8b8784838181818284878a8f939b9ea4abaaa39c938e827a6f685e544b42362e251b11010000000000000000000000000000000006111b25313c46505964707c86919ca8b4aca3988d81756a6156473f352b21161e28333e49535c67737e8a959ea9b3a89d94897d72665b52483d32261d120800000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e79838f9ba1aaaaa19c91867e726e636059554f4c4b464848464a4c4e54585f636d717c859097a0aaaba29b90847a6f635950463b3120170e0400000000000a16222d3944505c67737e8a96a1ada79b8f84786a61564b4642424243484c545b626c717d7c736e68615a544d463f362d23190e040000000000010b151d2934404b56616a75808c97a0abaaa0968b8074696055473f352b21160b07121c25313c46505964707b86919ca8afa79c90857a6f63584f453b30251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000005101c27333e49545e687985909ca7a3988c8075695950474844433f3a342c231a1106000000000b16212b353f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b7079818c919ba2a7a9afb6b0a5998d82766b5f54483c31251a0e000b17222e3a45515c68747f8b96a2aeada2968a7f73685c5145392e221208000000000007121e2935404c58636f7a86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b8f84786d61564a3e33271c10000000000007121c252f374349545f686f7b8490969fa8b1aea9a49d9b9695908e8d8d8d8e9094969a9da3a8ada8a19a928e827a6f6960574e453b32261e140b01000000000000000000000000000000000b16202b353f4b56606a75808c97a1abb2a79c93887c70655a5147372e251b111a242f39434c57636f7a84909ca7b0ada4998e82776b62574c40362c22170b01000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a555f69717d88919aa4adaaa09691867e756f69635f585856505454505557575e63686e747d8590959fa7ada49b91897e726960554840362c2210070000000000000a15212c38434f5b66727d8995a5aea89c91867b6f635d56504e4d4d4e52575d636b707c85857f786f6b645e574f463d33281e1308000000000007111b25313b465059636f7b85909ca7b0a89c91867b6f64595046372e251b1107020c17222d37404b57616b76818d99a3aca99f958b7f73695f554a3e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000030e19242f3a454e576c78838f9ba6a5998e82776a605651544f4e4a443c342a20160c0100000007111b25303b465059646e76818d959ea6afa69e9590867f78716d6764625b5f5e5f596063666a6f747b828d919ba19f9c9fa6afb0a5998d82766b5f54483c31251a0e000b16222e3945505c67737f8a96a1adaea3978c8074695d5246362c22170c010000000007121e2935404c58636f7a86919191919191919191919191919191919191919191919191918f84786d61564a3e33271c100000000000020c151e27303a454f58616a707c859097a1abb6b4ada8a6a59e9b9a999898999b9ea5a6a8aca9a49d9b908c827a6f6a615950473e352a22160d0400000000000000000000000000000000030e19242f3a454e57636f7a85909ca8b1aea59a8e83776c6258494137271e150b151f28343f4a55606974808c97a0abb4a89c91867c70645950463c31251b1106000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000007111b25303b454f58636d75808c939da5aea7a0969189807a736e6966636059606059606365686e72797f8690959fa6aea59d948d81766e64595046382f261c120000000000000008131f2a36424d5964707c87949ea9aaa0978b7f746d6360595a59595a5b62646d717c8490908a827b726e6760574d42372c21160a00000000000b16212b353f4a556069747f8b969faaaba2988d81756b6156494036271e150b010008131d27323d48525b65717c88929ca7afa69b9084796e63574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000000b16202b3548535f6a76818d99a7a89c91857a6f64615a5f5b59544d443a30251b1005000000010b17212c363f48545d636f7b8490969fa7aea59e96918a827d7773706b6c6a6a6a6b696f71757a7f858e939ba19c9590959fa9b0a5998d82766b5f54483c31251a0e000915212c38434f5b66727e8995a0acb0a4998d82766a5950463c31261b0f040000000006121e2935404c58636f7a86858585858585858585858585858585858585858585858585858583786c61554a3e32271b10000000000000050e17202b353e47515a626c727e87919ca1abb3b7b3b2aea9a7a5a4a4a4a5a7a9aeaaa8a59e9c948f8880796f6a615a514840362e251a1105000000000000000000000000000000000005101c27333e49545e68737f8a959fa9b4a99e95897e72675c5348393027160e050f1a26313b46505964707b86919ca8b4aba1978c80756a60564a3e352b20160b000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000010b16212b353f48545d636e79838f949ea5aea7a09c918c847e7a75716f6a6c6b6b6c696e7174797e838b91979fa6aea69e958f837a6f635d54494036281f160c0200000000000007131e2a35404c57626b7884909ba6afa79c91867e756f6a6765646566686b70757d8590949c928e857e7570675c51463a2f23180c01000000030f1a25303b454f58636f7a84909ca6afa79c92877c70655a5147383026160e050000030d18232e38414c58636c77828e9aa4ada99e948a7e72685e54493e33271f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000000611222e3945505c68737f8a97a0aa9f968b80746f6a6b6b66645d544a3f34291e13070000000007121c262f38444b56616a717d869197a0a7aea7a09c938e88837f7c797776767676787a7d81858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e0008131f2b36424d5965707c8793a4adb2a69a8f83786a60564a3f34281d11060000000006111d28343f4b56606a6f7979797979797979797979797979797979797979797979797979797873695f54483d32261b0f0000000000000007111b252e37414a535c646e747f8b919ba3acb5bdbdb8b4aea9a7a3a4a4a4a3a69f9c9995908b837d746e686059514940382f261e140a01000000000000000000000000000000000005111d2934404b57636e79838f9ba6afb0a79b9084796e63574c423929201706010c17212c36404b57616b76828d99a4adb1a89c90857a6f63574e453a2f24190e030000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000007121c252f37434a5560696f7b8490959ea5acaaa19a94908a84807d7a7977777777787a7d8084898f939ca0a7ada59e9590847c706a60564d44383026170f060000000000000005111c27323d48525b6974808c969faaaaa0979187807a76737170707173777c818990959ea39c95908a8175695e52473b3024180d0100000005111c28333e4a545f68737f8a959ea9ada4998e82776c62574a4137281f16060000000009141e28333e49535c66727d89949da8aea59b8f83796e63574b43392f24190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f030000000000000000000000000007131e2a35414d58646f7b86919ca3a69c9187807b787777726e64594e43372c20150900000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e0006121d2935404c57636f7a86949ea8b4a89c91857a6f63584c40352b20160b0000000004101b26313c46505960636e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f453a2f24190d00000000000000010b151e263039434b545d656f75818d929ca4adb6bfb8aea59e9c98989998979696918e89847f7a716d635f585049403930281f160d04000000000000000000000000000000000004111c27323d48525b66717d89949da8b5aaa0968b8074695f554a3f33281c10070008121c26323d48525b66717d88939da8b3a99f958a7f73685e54493e33271e14090000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000020c151e27303b465059616b707c8590949da3aaaaa59e9b95908c898684838282838485888b8f949a9da4aaaba49d9590857d716b625950463c34281f16070000000000000000030e19232e38424d58646f7b85909ca2aba7a097918c85817e7c7c7c7d7f82868d919c9fa5aca39b91897e72665b4f43382c2115090000000006121d2934404b57636e79848f9ba5aea89d93887d71665b5248393127170f0600000000040e19242f39434b57636e79838f9ba5aea89d93897d72665c53493e33281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f030000000000000000000000000006121d2934404b56616b75808c939ca2a197918c868483827e72665b4f44382c21150a0000000000050f17222d374149535c646e727e8690969da4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa6a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e0006111d28343f4a55606978848f9ba7b2aba097887d7166574e453a2f24190e03000000010c17222c374049505658626262626262626262626262626262626262626262626262626262615f59524940362b20150a0000000000000000040d162029323b444d565f636e79828e949da5aeb7b4a99e95908c8d8d8d8c8a8885827e7a736f69635d544f474038302820170f050000000000000000000000000000000000010b141e2935404c57626b76828e99a4adb3a89c91867b6f64584f453b30251a0f0000020c18232e38414d58636d78838f9ba6afafa69b8f83796e63574b42382e23180c0300000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000050e17212c363f48515a626c707c848f939aa1a8ada8a59e9b989495908e8e8e8e909197979b9da4a8ada8a19b938f847c716c635b524940362c23170f060000000000000000000a141e2934404b56616b737f8a919ba2aaa7a09c96908d8a888787888b8e91979ba1a9aaa39c928d81756d64594e42372b20140900000007121d29343f49535d67727e89949da8aea59a8f83786d63584b4239292017070000000000000a151f27333e49545e68737e8a959ea9ada49a8e82776c63584d42382e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f030000000000000000000000000005101b27323d47515a636f7a838e929ca0a19c97918f8e8b7f73685c5145392e22170b00000000000008131d273039434c545d646e727e858f949ca0a7abaca7a6a59e9c9a999899999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e00040f1b26313c4650596a76818d98a4b0b0a7978c8074685e54493e33271e14090000000008131d27303940464b4c57575757575757575757575757575757575757575757575757575755544f49423930261c1106000000000000000000061018222b343c454a555f696f7a838f959fa7b0b3a79c908480818281807f7d7a76726f69636059534a453f3730282018100700000000000000000000000000000000000006111b25313c46505964707c86919ca8b4ada4998d81766b6156483f352b21160b00000009141e28343f49535c67737f8a959fa9b3a89d94887d71665b52483d32261c120800000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a525b626c707b838c919a9da4a8ada9a7a3a59e9b9a9a999a9b9ca0a7a7a8ada8a49d9b918d837c706c635c534b423830261c13070000000000000000000005101b27323d47515a636e78818d919c9fa6aba69f9c989594939394969a9ca0a7aba8a19a928e82796e635d544a3f34291e130700000008141f2b36424d58636d77838f9aa4ada99e948a7e72675d54493b3229191007000000000000030e19242f3a454e57636f7a84909ca6afa79c92887d71655b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000000020d18232d37414b56606a6f7b828a9197a0a8a19c9b968b7f73685c5145392e22170b000000000000030d172029323b444d545d646d727c838c91979ba2a7a9aeaea9a7a6a4a4a4a5a6a8a8a69f9c949089817a6f74808c97a3aea5998d82766b5f54483c31251a0e00010c17222c3644505c67737e8a96a4adb2a79b9084796e63574b42382e23180f06000000030d16202830373c3f404b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a48454039312920160c020000000000000000000008121a232c303b454f58616a707c859096a0aab4a99e958b7f7676757573716e6967636059555048433b352e271f181008000000000000000000000000000000000000000b16202b353f4a55606975808c97a1abb3a89d93887d71655a5147372f251c1207000000040e1a252f3a434c57636f7a85909ca8b1ada4998d82766b62574c40362c22170c01000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27313a424b525b626b707980888f939b9da4a7a9aeaea9a7a6a5a5a6a7a8abafa9a7a49d9b948f89817a706b625c534b433a31281f160b0300000000000000000000020d18232d374149545e686e79818b90969ca2a8aaa8a4a19f9e9fa0a2a5a8aaa8a49d9b918c827a6f695f554d443a30251a1004000006111c28333e48535c66717d88939d9c9ca69b9084796e63574c433a2922180800000000000000000b16202b353e4a55606974808b969f9c9ca3998d82766c62574c40352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000000009131e27313c465059616a6f797e85919ca8aba8a2968b7f73685c5145392e22170b00000000000000071018222b343c444d545d646c707a80868d92979b9ea5a3a5a6a7a7a7a6a5a8a19c9a95908b847e756f6974808c97a3aea5998d82766b5f54483c31251a0e000008121f2a36424d5964707c87939da8b3a89e94887d71655b52483d32281f160d03000000060f1820272c3134353f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3d3a36302921180f060000000000000000000000010a131c212c363f48515a626b717d86919ca1aaaea59c91877e726c6967656360595755504a464038302b251e160f0700000000000000000000000000000000000000030e19242f3a454e57636f7a85909ca8b1aea59a8f83786d63584a4137271e150c02000000000b152028343f4a55606975808c97a1abb4a89c91867c70645950463c31261b0f04000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129323a424b525b61696e757d838a8f93989c9ea5a3a5a6a7a7a7a7a6a5a3a69f9c98948f8a837d756f69625b534b433b322a21180f0600000000000000000000000009131e272f3a454e575f696e787f858e92989c9fa6a4a6a6a7a7a7a6a5a7a09c99938f8880796f6a60584f453c342a20160b01000007131f2a35414c57626c77828e9191919191968b7f74695f554a3f33281c1108000000000000000006111b25313b465059646f7b8591919191919191867c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000000010c17222c364048555e666f747e849097a0a8a7a2a0968b7f73685c5145392e22170b000000000000000008121a232c343d444d545b62696f757c82878c909596989a9b9b9c9b9b999797918f8a85807a726e636974808c97a3aea5998d82766b5f54483c31251a0e000007131e2a35404c57626b78838f9aa8b1aea5998d81766b62574c433830261d120803000000070f161d2226282934343434343434343434343434343434343434343434343434343432322f2b2620181008000000000000000000000000000307121c262f384149525b636d737e8a909aa2ababa19790867d716b61595755504c4a46403b362f28211b150e06000000000000000000000000000000000000000005101c27333e49545e68737f8a959fa9b4a99f958a7e73675c5349393127170e050000000000040f1b26313c46505964707c86919ca8b4aba0978c80756960554a3f342820150b000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a323a424a525860636d71797e83888c90959698999b9b9c9c9b9b99989695908d89847f79716d636059524b433b322b2219110700000000000000000000000000040e16202b353e474f585f686e737c82888c909696999a9b9b9c9b9a999797918e89837d756e69605950483f362c231a100600000008141f2b36424e5965707c8585858585858585857a6f63584f453b30251a0f010000000000000000010b17212c36404b56616a7580858585858585858581756a5e52473b3024180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000000040f1a26313b465059656e74808990949ea59e9b9794938b7f73685c5145392e22170b0000000000000000010a131c242c343c444b525960636c70767c8084878a8c8e8f9090908f8e8c8a86837f7a746f69645d6974808c97a3aea5998d82766b5f54483c31251a0e000005111c27323d48525b68747f8b97a1abb4a89c91867c70645c534940362c221c130702000000060d13171b1d1e282828282828282828282828282828202528292d29282521282828272624201c160f08000000000000000000000000000000020c151f273039424b535c646e74808c929ba3aca89f9690847b6f6960584f46403f3b36312c261f17110b0500000000000000000000000000000000000000000006111d2934404b57636e79838f9ba6afb0a79c90857a6f63574c433929201706000000000000010c17222c36404c57626b76828e99a4adb0a79c90857a6f63574c43392f251a0e040000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a323a414850555c63686e72797d8184878a8c8e8f909090908f8e8c8a8885817d79736e69635d555049423a322b221a120901000000000000000000000000000006111b252e363f484f575e636b70767c8185888b8d8e8f9090908f8d8c8986827d79716d635f58504940382f261b130a0000000007131f2a35414c57626c777a7a7a7a7a7a7a7a796f6a6056483f362c21160c0100000000000000000008121c26313c47515a6770757a7a7a7a7a7a7a7a7570675c51463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f030000000000000000000000000006111d28343f4a556069737f8a909b9ea39c94908b8988877f73685c5145392e22170b000000000000000000030b131c242c343b424950555c62656c7074797c7f8182848485848382807e7b77736f696360595d6974808c97a3aea5998d82766b5f54483c31251a0e0000030e19232e38424d5864707b86919ca8b4aba0978d81766d635950463c312c231b110c0500000003080c1011121d1d1d1d1d1d1d1d1d1d1d1d161e252b303334393433302b251e161b1b1915110c060000000000000000000000000000000000050e172029323a434c555e636e78818d939da5aea69e958f837a6f685f5449453c312c26211c160f070100000000000000000000000000000000000000000005101c27323d48525b66717d88939da8b6aba0978c80746960554a3f34281d10070000000000000008121c26323d48525b66717d89949da8b3a99f958a7e73675c53493e33281e14090000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a212931383f464a53585f63686e7175797c7e808283848485848482817f7c7976716e68636058544a464038322a221a120a01000000000000000000000000000000010b141e262f373f474e545b62646c70757a7d7f8283848485848382807e7a77726e68635c554f48403830271f150b030000000006111c28333e48535c62656e6e6e6e6e6e6e6e6e63605a5147382f261c120700000000000000000000020c18232d37414a5760676a6e6e6e6e6e6e6e6e6a6760574d42372c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f030000000000000000000000000006121d2935404c57636f7a85909ca1a89c928e847f7d7c7c7a6f63584c4135291e120700000000000000000000030b131c232a323840464a53575b6265686e7073757778797979787775736f6b6763605955505d6974808c97a3aea5998d82766b5f54483c31251a0e0000000a141e2935404c57626b76828d99a3acb0a79b92887d716a60564a453c342c211b150e0803000000010406061111111111111111110c12171f262e353a3e4044403e3b352f271e160d040a060200000000000000000000000000000000000000061018212a333c4549545e686f7a838f949ea6aea59d938d81786e635e554c433a322820170e06000000000000000000000000000000000000000000000007121e2935404c57626b76828d99a4adb4a89c91867b70645950463b31261a0f0000000000000000030d19232e38424b57636e79838f9ba6afafa69b8f83786d63584d41382e23180c0200000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111921272f363b43484f55575e6365686e70737576787879797878777573706e6866635f58555048443c3630282119120a010000000000000000000000000000000000040d161e272f363e454952575c6265696f7173767778797978787674726f6a66635f58534a453f37302820170e050000000000030e19242f39424b535759636363636363636362585651494037271f150c02000000000000000000000009131d273039474f575c5e63636363636363635e5c574f473d33281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000000a16212d38444f5b67727e89959fa9a1978e827a747170706f6a61564b4034291d12060000000000000000000000030b131a222830363c42484c5257575e6365676a6b6c6d6d6d6c6b696764615a5755504a525d6974808c97a3aea5998d82766b5f54483c31251a0e00000005101c27323d48525b65717d88929ca8b1aba29b8f837a6f635e554d443c302b251e16120c08050200000000050505000104080c0f161c212830373e45494b504c4a453f372f261e140b0100000000000000000000000000000000000000000000081119232b2f3a454e5760696f7b8490969fa7ada49b928c80756e655c534b423930271e150c02000000000000000000000000000000000000000000040f1b26313c46505964707b86919ca8b4ada4998d82766b62574840362c21170c01000000000000000009141e27333e49545e68737f8a969faab3a89d93887d71655a51473d32261c120700000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910171f262c30373f454a4e5457575e636567696b6c6d6d6d6d6c6b696865635f5857544f4a463f38312c261f1711090100000000000000000000000000000000000000050e171e262e353a42484c535859606365686a6c6c6d6d6d6c6b696663605957544f47433b352f2720180f06000000000000000a151f29323b42484c4e5757575757575757564c4b4740393027170e05000000000000000000000000030d172029363f474d5152575757575757575752514d473f362d23190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000010d1824303b47525e6a75818c98a5a89c91867c706966656563615a51473c31261b1004000000000000000000000000030911171f262c31393e42484c4e5457595c5e606161626161605d5b5856514c4a4646525d6974808c97a3aea5998d82766b5f54483c31251a0e000000020d18232e38424d58636c77828e97a1abb3a89d948d81766f655d544d443b352f27221c1813100d09090808080809080d1012171a1f262c303840474f54575b57554f483f362e251b1106040000000000000000000000000000000000000000000109121b202b353e475059616b707c859097a0ababa29a908a7f736d635b524940372f251c120703000000000000000000000000000000000000000006111d28343f4a55606975808c97a0abb3a89d94887d71665b5248382f261c1208000000000000000000030e19242f3a454e57636f7a85909ca8b3ada4998d81766b61574b3f362c21170c01000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161c21272f353b3e45494b4e5457595c5e5f6161626261615f5e5c5957544f4b4a453f3b362f27221c160f0701000000000000000000000000000000000000000000060e161e252b2f383d42484c5055575a5c5f6061626261615f5d5b5856504b49453e37302b251e170f070000000000000000050f19222a32393e41424b4b4b4b4b4b4b4b4b413f3c3730282017060000000000000000000000000000071018262e363d4246474b4b4b4b4b4b4b4b4746423d362f261d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000030f1b26323d4955606c77838f9aa6a69a8f83786b625959595856514941372d22180d020000000000000000000000000001070f161c22292f33383e3e45494b4d50525455565656555452504d4b47413f3c46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000009141e28333e49535c65717c87919ca5aeada49b918a7f736e645d544a453f37312c26221d1b181314141313141413171b1d2126282f363b424950585f6367635f584f473e352b201c140b030000000000000000000000000000000000000000000206111b252e364048515a626c727e87919ca1aaaaa19c91867d716b625a51483f352b211b130a010000000000000000000000000000000000000007121d2935404c57636f7a85909ca7b0afa69b8f83796e63574b4238291f160c02000000000000000000000b16202b353e4b56606a75818c98a3acb4a89c91867b6f645950463b30251a0f04000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161e252b30353a3e4045494b4d5052545556565656555452504e4b4a45403e3b35302c261f17120c06000000000000000000000000000000000000000000000000050d141b20282e32393e40464a4c4e515354555656565553524f4c4b46403e3a352e26211c150e060000000000000000000008121a22292f33353640404040404040403f3534312d2720180f0600000000000000000000000000000008161e262d33373a3b40404040404040403b3a37332d261e160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f03000000000000000000000000040f1a25303b454f586d7984909ba7a4988c81756a5b524e4d4c4b47413930271d130800000000000000000000000000000000060d12171f24292e33353a3e40424547484a4a4b4a4a48464441403d38343b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000040e1a242f39434c58636c75818c959ea8b1aba29c91877e726d645e554f48423c36312d29262221201f1f1f1f20212226292c3134383f464a535960686e736e685f574e453a2f2d241c130a02000000000000000000000000000000000000000000010b141e262f38414a535c646d737f8a919aa2acaaa09790857c706a61584f453b302c231a120800000000000000000000000000000000000006121d28343e49535c67737e8a959fa9b5aa9f968a7f73685e54493e33271c0f06000000000000000000000006111b25313c46505964707c87929ca7b2aba0978b80746960554a3f33281f150a000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e151b21252b2f33353a3e4042444648494a4b4b4a4a48474542403e3b3533302b25211c160e08030000000000000000000000000000000000000000000000000000040b11161e23292f33363b3f40434548494a4a4b4a49484644403f3c3733302b251e16120c050000000000000000000000010a12191f24282a2b343434343434343434292926221d170f0800000000000000000000000000000000050e161d23282c2f303434343434343434302f2c28231d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000005111c28333f4a555f697a85919ca8a2978b8074685d51464241403c37302920170d03000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393534322d2f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000a151f29333e49535c636f7b849097a1abb6aba09791867e726e635f58524a46403c3734312d2d2b2b2a2a2b2b2d2d3134363b3f444850555c62696f787e796e685e5449463d352c241b120900000000000000000000000000000000000000000000040d161f283139424b545d656f75808c929ca4ada79f958f837a6f695f554a453c342a2219100700000000000000000000000000000000020c161f2b36424d58636d78838f9ba6afb3a89c90857a6f63574e453a2f24190e000000000000000000000000010b17222c37404c57626c77828e99a4adb0a79c90847a6e63574c43392f241a0e040000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161b2024272b2f333436393b3c3e3e3f3f3f3e3d3b39373433302b2825211b17120c05000000000000000000000000000000000000000000000000000000000001060e14181f24262c313435373a3c3d3e3f3f3e3e3c3a383534312d2825201b150d07020000000000000000000000000001080f15191c1f1f2929292929292929281e1d1b17130d06000000000000000000000000000000000000050d13191e21232429292929292929292423211e19130d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121d2934404c57636e7a8697a0aba2968b7f74685c51453a3534312d27201810070000000000000000000000000000000000000000050a0f14191b202427292b2e30313233333332312f2d2a2927232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000050f19242f39434b56616a727e87919ca3acb0a79f9691867e756e68625b55504b4741403c373837373636373738373c3f41464a4c545860636c707a818a81786e635f564e453d342b2319100600000000000000000000000000000000000000000000050f172029323b444c555e636e79828e939da5aea69d948e82796e635e554d443b322921170f0500000000000000000000000000000008121c26323d48525b66717d88939da8b6aca3988c80756a6056473e352b20160b0000000000000000000000000008131d27333d48525b66727d89949ea8b4a99e958a7e73675c53493e33271e13090000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b1116191c202427292b2d2f3132333333333231302e2b292825211c1a16110b0702000000000000000000000000000000000000000000000000000000000000000004090f15191c212628292b2e30323233333332312f2c292926221d1a16110b040000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1c1212100d0803000000000000000000000000000000000000000003090e131618181d1d1d1d1d1d1d1d181816130f0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121d2935404c57636f7a86919db0a2968b7f73685c5145392e2926221d1710080000000000000000000000000000000000000000000000050a0b1116191c1d1f22242627272827272624211e1e1b232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000a151f29313c47515a636d74808c929ca4adafa79f97918a8079706b63605956514c4b4745444342424242434445474b4c5055575d64696e747c838d918c80756f665e554d443c332a20150b0000000000000000000000000000000000000000000000071019222a333c454a555f686f7a838f959ea7ada49c928c81756f655d544b423a31281f160d0400000000000000000000000000010c17212c36404b57616b76828d99a4adb2a79c92877c7064595046362e251b110600000000000000000000000000030d19242e38424b57636e79848f9ba6afaea59a8f83776c63584d41372d23180c0200000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1116191c1d1f2224252727282827272524221f1d1c1a16110f0b0701000000000000000000000000000000000000000000000000000000000000000000000000050a0c12171a1d1d2022252627282827272523211e1d1b17130e0b07010000000000000000000000000000000000000000030607081111111111111111110706040100000000000000000000000000000000000000000000000004080a0c0d11111111111111110d0c0b08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e221b18130d07000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a1816131218232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000050f18222d374149545d636e79828e939da4adafa7a09c908c827c746f6963615a585651514f4e4e4d4d4e4e4f51515658596063676e72797f868f939a918b7f746e655d544c43392f251a0f04000000000000000000000000000000000000000000000008111a232c303b454f58606a707b8490969faaaca39b918b7f746d645c534a41382f261e140b01000000000000000000000000040f1a26313b46505964707b86919ca8b4aea5998e82776c6257494037261e140b0100000000000000000000000000000a141f28333e4a545f68747f8b969faab3a89d93887d71655a51473d32261c120700000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0e10111316181a1b1c1c1c1c1b1a18161412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f11121417191a1b1c1c1c1b1918151212100c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170d0803000000000000000000000000000000000000000000000000000000000000030506080b0d0e10101110100e0c0a070c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000008131d273039444a555f696f7a838f949da4acb0aaa19a938e86807a746f6a6763615a5d5b5a595959595a5b5d5a606366696f73787e848b91969da199908a7f736e645c53493e33281d12070000000000000000000000000000000000000000000000010a131b212b353f485059626b717d86919ca0a9aaa19c91877e726c625a514840362e251b110602000000000000000000000006111d28343f4a55606974808c97a0abb4a89e94897e72665b5248383026160d04000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3aca3998d81766b61564b3f362c21160c01000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0e0f10111110100e0d0b080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b0e0f101011100f0e0c0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000001030405050504030100010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000030d172029303b454f58606a6f7b848f949da3abb5aaa39c96918b84807b76726f6a6a686765656464656567686a6a6f72767a7e83898f949ca0a7a9a09c91877e726d63584d42362b1f14080000000000000000000000000000000000000000000000000207111b252f374049525b636c727e899099a2ababa19790857c706b615950473e352b201b1209000000000000000000000007121d2935404c57636f7a84909ca7b0afa69b9084796e63574b42382920160500000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb3a89c91867b6f64584f453b30251a0f04000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000000071018212b353f485059616b707b838f939ca2aab0aca7a09c95908b86827e7b78757472717070707171727475787b7e81858a8f939b9da4aab0afa9a19791857d71655a4e43372c20140900000000000000000000000000000000000000000000000000020c151e273039424a535c646e74808b919ba3aca89f9690847b6f6960574e453a2f2b2319110800000000000000000005121d28333e49535c67737e8a959ea9b5aa9f968b7f74685f544a3e33281c0f06000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2aaa0978b8074695f554a3f33281f150a000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b0d0f10101111100f0f0d0b090606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0d0e111111111111100605030000000000000000000000000000000005090b0d0e1111111111111106050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000000007121c252f374049515a626b707b838e929ca0a7adb0aaa59e9c96918d898683817f7e7d7c7c7c7c7d7e7f818386898d90959b9da4a8adb4aca69f9c918c817a6f63574c4035291e12060000000000000000000000000000000000000000000000000000050e162028313a434c545d666f76818d939ca4ada69e948f837a6f685e5449443b332a21180f0600000000000000020c161f2b36424d58636d78838f9aa5aeb3a89c91857b6f63584f453b30251a0f000000000000000000000000000000000000010b18222d37414c57626c77828e9aa5aeb0a79b90847a6e63574c43392f24190d030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080c0f11121417191a1b1c1c1c1c1b1a18171512110f0c08040100000000000000000000000000000000000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1c12110f0b07020000000000000000000000040a0f141719191d1d1d1d1d1d1c12110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000020c151e273039414a525b626a6f7a828b91979da4aaafaea9a7a09c9995948f8d8b89888887878888898b8d8f9197989c9fa6a8adb3aea8a39c95908a80796f6960554a3f34281d1106000000000000000000000000000000000000000000000000000000060f18212a333b444d565f636e79828e949da6aea59d938d81786e635e554c433a312820170d0300000000000007121c26323d47515a65717d88939da8b6aca3988d81756a6156473f352b21160b0000000000000000000000000000000000000008131d27333e48535c66727e89949ea9b4a99e95897e72675c53493e33271d13090000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f12171b1d1d20232426272728282727262422201d1d1a1712100d080300000000000000000000000000000000000000000000000000000000000000000000000000060e141a1f222425292929292929281d1c1a16110c05000000000000000000060d141a1f222425292929292929281d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000000000050e1720283139424a525a616a6f787f868f949c9fa6aaafb0aaa8a5a49d9b9896959493939393949596989b9ca1a8a7a9afb3aea9a59e9b928e857e756e68605950463c31261b0f0400000000000000000000000000000000000000000000000000000000071119222b343d464a5560696f7b848f959fa7aca39b928b80746e645c534a423930271d13080000000000010c17212c36404b57616b76818d99a4adaaa79c93887c70655a5147372e251b110700000000000000000000000000000000000000030d19242e39424c57636e7984909ba7b0aea59a8e83776c63584c41372d23180d0200111d28343f4b57626e7985919ca8aaa89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d12171b1d222628292c2e303133333333333231302e2c292826221d1b17130d090400000000000000000000000000000000000000000000000000000000000000000000060f171e24292d303134343434343433292825211b150e0600000000000000060f161e24292d303134343434343433292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2ada69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000060f182029313a424a515960686e747d838b90969c9fa7a9aeb3b0ada8a6a4a2a19f9f9e9e9f9fa1a2a4a6a8abb1b3b1aca7a59e9b94908a827b726e635f58504940362c22170c01000000000000000000000000000000000000000000000000000000000009121a242c303b465058616a707c859097a0aaaba29a908a7e736d635b524940372d22170d0100000000040f1a25303b465059646f7b86919c9e9e9ea59a8e83776c6258494137271e150b0100000000000000000000000000000000000000000a151f28333e4a555f68747f8b96a09e9e9e9c93887c71655a51473c31261b100500111d28343f4b57626e7985919c9e9e9e9c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e13181d2226282c313435373a3b3d3e3f3f3f3e3e3d3b39373534312c2926221d19140e0802000000000000000000000000000000000000000000000000000000000000000008171f272e34383b3c4040404040403f3433302b251e160e0500000000000007161f272e34383b3c4040404040403f3433302b251e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2a8a69a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000000071019212a3139414950575e636c71797f858c91969c9ea5a7a9aeafb1afaeacabaaaaaaaaabacaeafb2b0b1aba8a5a39c9a95908b847e78706b645e544f47403830261c1208000000000000000000000000000000000000000000000000000000000000020a131c212c363f48515a626c717d86919ca19e9ea19c91867d716b625a51473c31261b10040000000006111d28333f4a55606974808b97939393939395897e72675c5349393027160e05000000000000000000000000000000000000000000030f1a25303b454f58646f7b85919393939393938d81766a61564b4034291d120600111d28343f4b57626e79859193939393939085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161e23262c3134363c3f40434547494a4a4b4a4a4949474543403f3b3634312d27231e17120c06000000000000000000000000000000000000000000000000000000000000060f18272f373e4347484b4b4b4b4b4b4a403e3b352f271e150c0200000000060f18272f373e4347484b4b4b4b4b4b4b403f3b352f271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b969c9c9c9a8f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000000000811192129313840474e545c63696e747b81858b9095989c9ea5a4a6a7a9aeaaabababababafa9a7a6a4a8a19c9a96938e8a847f7a726e68615b544a453f3730281f160d03000000000000000000000000000000000000000000000000000000000000000307121c262f384149525b636d737f8a9093939393939690857c706a60564b3f34291d12060000000006121d2935404c57636e7a84878787878787878784796e63574c43392920170600000000000000000000000000000000000000000000000b16212b353f4b56616a76818787878787878787867b6f64584c41352a1e120700111d28343f4b57626e79868787878787878785796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151c21272d32373c3f40464a4c4e5153545556565656555452504e4c4a46413f3c37322e28221c160f0702000000000000000000000000000000000000000000000000000000030d1720283740484e5254575757575757564c4a453f372f251b1107000000030d1620283740474e5253575757575757564c4a453f372f251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b91919191918f83776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000000000091118202830363e4549535860636b6f757b8084888c909596989a9c9ea59f9fa0a09f9fa69f9c9a999697918e8b87837e79746f69635e57524a443b352e271f170f06000000000000000000000000000000000000000000000000000000000000000000020c161f273039424b535d656e7580878787878787878787837a6f63584c4135291e12070000000006121d2935404c57636e797c7c7c7c7c7c7c7c7c7b6f695f554a3f33281c1007000000000000000000000000000000000000000000000007111b25323c47515a636f7a7c7c7c7c7c7c7c7c7c7a6f63574c4035291e12060008131f2a36414d5964707c7c7c7c7c7c7c7c7c7064594d41362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030911171f262c30373d40464b4c5055575a5c5e60616162626161605e5c5a5755504c4b47403d38312c261f17120a03000000000000000000000000000000000000000000000000000008131d2730394850585d5f6363636363636257554f483f352b21160b00000008131d2730394750585d5f6363636363636257554f483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8585858585858583776c6055493d32261b0f0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3a8a5998d82766b5f54483c31251a0e0000000000000000000000000000000810181f262e353a434850555a61646a6f74797d8184878a8d8e9095939394949494939395908f8d8b8886837f7c77726e69636059544e47413a302b251e160f070000000000000000000000000000000000000000000000000000000000000000000000050e172029323a434c555e636e787c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e12070000000006111d28333f4a5560696e7070707070707070706f6b61584f453b30251a0f000000000000000000000000000000000000000000000000020c18232d37414b56606a6f7070707070707070706f6960554a3f34281d11060007121e2a35404c57626b7070707070707070706b62574c40352a1e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131921272f363b41474b50565859606366686a6b6c6d6d6d6d6c6b6a68666360595856514c48423b362f28221b140c04000000000000000000000000000000000000000000000000010d17222d3740495861686b6e6e6e6e6e6e6d635f584f453b30251a0f0300010c17222c3740495860686b6e6e6e6e6e6e6d635f584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38444f5a656f737a7a7a7a7a7a7a7772695e53483c31261a0e0300000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c979c9c9c998d82766b5f54483c31251a0e00000000000000000000000000000000070f161e252b2f383f464a51575a6164686e7175797c7e818384868788888989888887868583827f7d7a7773706b67635f58555049453e363129211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000061018212a333c4549545f686e707070707070707070706f6a60564b3f34291d120600000000040f1a25303b465059606364646464646464646464615a51483f362c21160c0100000000000000000000000000000000000000000000000009131d27313c465059606364646464646464646463605950463c31261b0f040005111c27323d48525b62646464646464646464625b52483d32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b232a32383f454a515659606367696f71747577787979797878777573716f696763605a57524a464038332b241c150d04000000000000000000000000000000000000000000000004101b26313c47515a6871767a7a7a7a7a7a796e685f554a3e33281c12070004101b26313c4650596871767a7a7a7a7a7a796e695f554a3f33281c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b36414b555e65686e6e6e6e6e6e6e6c6962594f44392e23180d0100000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c91919191918d82766b5f54483c31251a0e0000000000000000000000000000000000050d141b20272f363b41474b5156585f6366686e70737577797a7c7c7d7d7d7d7c7c7b79787674716f6a6864625b57554f4a46403a352e262119110b0500000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b303a454f585f636464646464646464646463605950463c31261b100400000000010c17212c363f485055575959595959595959595856514a41382f261c120700000000000000000000000000000000000000000000000000030d17222c3740495056585959595959595959595755504940362c22170c0100030e19232e38424b525759595959595959595957524b42382e23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141c242c343a42484f555a61646a6f73777a7d7f818284848584848382817f7d7a76736f6a64625b555048433b342c251d150c040000000000000000000000000000000000000000000006121d29343f4b56606a768185858585858584796e63574c40362c21160c0106111d28343f4b56606a768185858585858585796e63574c40362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313b454e555a5c63636363636363605e5951493f352a20150a0000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808585858585858581766b5f54483c31251a0e000000000000000000000000000000000000040b11171f262c30383d41474b4f5457575e6364676a6c6a6f70707171717171706f6a6c6b68666360595957524c4a453f3b362f2b251e16100701000000000000000000000000000000000000000000000000000000000000000000000000000000000109121b202b353e474f5457595959595959595959595856504940372d22170c01000000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4b47413a31271f150c02000000000000000000000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4c4a46403830261c12080000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4c48423a32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c242d343c444b52585f636b6f747a7e8285888b8d8e8f9090908f8f8e8c8a8885827f7a75706b636059534c443d352e251d140c0300000000000000000000000000000000000000000007121e2935414c58636f7b85919191919195897d7166584f453b30251a0f0406121e2935404c58636f7a85919191919195897d71665850463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17222b353e454b4f515757575757575755534f4941382f251b11060000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45505b6670747a7a7a7a7a7a7a7671685d52473b3024190d0000000000000000000000000000000000000001060e161c21282e32373c3f454a4b4e5457595c5e596063646565666665656463615a5f5d5a5856504d4c48423f3b36312c26201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000207111b252e373e45494b4d4d4d4d4d4d4d4d4d4d4c4b46403930271d1308000000000000020c161f272f363b3f4042424242424242424241403d38312921170e05000000000000000000000000000000000000000000000000000000030d16202830373c3f40424242424242424242403f3c3630281f160d03000000040e18212a32383d40414242424242424241403d38322a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b242d343d454d545b62696e747b80858a8e919796989a9b9b9c9c9b9a9a989696918e8a85807c746f69635c554d463e352d251c1309010000000000000000000000000000000000000004101b26313c47515a67737e8a96a09c9ca5988d8175695f554a3f33281c1208101b26313c47515a67737e8a96a09c9ca5988d81756960554a3f33281d120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b252d353b4144454b4b4b4b4b4b4b4948443f3831281f150b010000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c37424c565f66696e6e6e6e6e6e6e6b6861584e43382d22170c000000000000000000000000000000000000000000050c12171e23272d32353b3e4045494b4d505350565859595a5a5a5a595958565153514e4c4b4641403d3833302c26211c16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e262e353a3e4042424242424242424242403f3c37302820170d0300000000000000050f171f262c3033353636363636363636363534322d28211910060000000000000000000000000000000000000000000000000000000000060f1820272c3134353636363636363636363534312c261f170f06000000000008111921282e323536363636363636363635322e2821191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061119232c343d454d555d646b70797f858c9095999ca0a7a4a5a6a7a7a7a7a6a5a3a79f9c9996908c86807a716d645e564e463e352c241a11060000000000000000000000000000000000000006121d2934404b56616a77828e99a7b0a8a79c90857a6e63574c40362c22170c121d2934404b56616a77828e99a7b0a8a79c90857a6e63574c40362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252b31363839404040404040403d3c39352f2820180f05000000000000000000000001040606121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c464f565b5d636363636363635f5d5850483e34291f14090000000000000000000000000000000000000000000002070e14181d23252b3033353a3e40424447464b4c4d4e4e4f4f4e4e4d4c4b47484543403f3c3735322e2825211c17120c06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e252b303334363636363636363636363534312d2720180f06000000000000000000070f161c212528292a2a2a2a2a2a2a2a2a2a2927231e17100800000000000000000000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a292826221c160f07000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a27231e181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e162129333c444d555e646d727c838b90969c9fa6a8aaaea9a7a6a4a4a4a5a5a7a9afaaa8a69f9c96918b847d736e665f564e453d342a21170e0500000000000000000000000000000000000007121e2935414c58636f7b86919ca8b3b4a99f95897d72665950463b31261a0f121e2a35414c58646f7b86919ca8b4b4a99f95897d72665950463b31261a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b22272b2d2c303334353534312d312e2a251f1810070000000000000000000003080c0f1112131e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18232c363e464c50525757575757575754524e4840372e241a100500000000000000000000000000000000000000000000000004090d13181b2125282b2f33343639373c3f404242434343434242413f3c373a373534312c2927231e1a16120c08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b202528292a2a2a2a2a2a2a2a2a2a292926221d170f070000000000000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1e1e1b18130e07000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1e1d1b17120d06000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1e1c19140e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e27313a434c555e646e737e858f939c9fa6a9aca7a5a59f9c9a999898999a9c9fa6a5a8abaaa7a09c948f867e746f665e554d443a32271e150c020000000000000000000000000000000005101b26323c47515a67737e8a97a0aab5b9afa6988d81766960554a3f34281d121c27323d47515a67737f8a97a0abb5b9afa6988d81766960554a3f34281d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141a22292f33363b3f404141403c3733302c261f170f07000000000000000000060d12171b1d1e1e1e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e363c4245464b4b4b4b4b4b4b4847433e372f271e140a00000000000000000000000000000000000000000000000000000003090b11161a1c202427292b2d2c31343536373738383737363534312d2e2c292826221e1c19140f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1d1f1f1f1f1f1f1f1f1f1f1e1d1b17130d060000000000000000000000000002070c0f11121313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000000003080c10111213131313131313131312110f0c08030000000000000000000000040a0e111213131313131313131312110e0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d646e737f8690969da4aaaba6a39c9a9695908e8d8d8d8d8e909595999ca0a7abaaa49d96918a80746f655d544b42372f251c12070000000000000000000000000000000006121d2934404b56616a77828e9aa7b0babfb3a89c90857a6f63574c40362c22171e2935404b57616b77828e9aa7b0babfb3a89c90857a6f63574c40362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a141c242b32393e3f464a4c4d4c4b47413f3b362f271f170f0600000000000000070f161d222628292a2a2a35404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e252c32373a3b404040404040403c3b38342e271f170e04000000000000000000000000000000000000000000000000000000000001070b0f1116191c1d1f22222628292a2b2b2c2c2b2b2b2929262223201e1d1b1713110e090401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e1111131313131313131313131212100c080300000000000000000000000000000000010406060808080808080808080706050200000000000000000000000000000000000000000000000000000000000000000000000000000001040606080808080808080808060604010000000000000000000000000000000305070808080808080808080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f47525b636d737e8a91979fa6ada9a29c99928e8a878483828181828385878a8d91979ca0a7ada7a09c908b7f736e645b52483f352b21160b0000000000000000000000000000000007121e2a35414c58646f7b86919ca8b4bfc0b5aa9f96897e72665950463c31261b1e2a35414d58646f7b86919ca8b4bfc0b5aa9f96897e72665950463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d343b43494d505557585856514c4a463f3830281f160c030000000000060f1820262c31343535353535414c58636f7b86929da9a1968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c23282c2e2f3434343434343431302d29241e170f0600000000000000000000000000000000000000000000000000000000000000000003060b0e10111312171b1d1e1f1f202020201f1f1e1d1b1813141211100c08050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060808080808080808080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58616b717d86919ca0a7ada59e9c928d88827f7b79777676767677797b7e82868c91979da4abaaa09c91877e726c62584f453b30251a0f03000000000000000000000000000005101b27323d47515a67737f8a97a0abb6bcbbb9afa6998d81766a60564a3f34281d27323d48525b68737f8b97a1abb6bbbfb9afa6998d81766960554a3f34281d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b343d454c53585860636463615a57555048403830261c120800000000030d16202830373c3f4041414141414d5864707b87929ea9a1958a7e72675b5044392d21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181d202323292929292929292524221f1a140e060000000000000000000000000000000000000000000000000000000000000000000000000003050608080c0f111213141415151414131212100d08090606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c08040000000000000000000000000000000000040608090c0e0e0d0a0606040100000000000000000000000000000005111c28333e4a545f68707b859097a0aaada49d959089827c7773706b6c6a6a6a6b6c6b6f73767b80868f939ba2ababa19790857c70695f554a3f33281c1105000000000000000000000000000006121e2934404b56616b77828e9aa7b0b5b1afb1b3a89c91857a6f63584c40372d222935404c57626b77838f9aa8b1b1b0b4b5b3a89c90857a6f63574c40372c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333b454d555c6365696e6f6f6a68636058504940362c22170e0400000008121d26303840464b4c4d4d4d4d4d4e5a65717d88949faba095897d72665b4f44382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121517181d1d1d1d1d1d1d1a191714100a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080809090909080807060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c080400000000000000000000000000000000000000000000000000000000000000000000000000000002070b0e10101111111111111111100e0c080300000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e080100000000000000000000000000060b0f121414181a1a191612110f0c070200000000000000000000000004101b26313c47515a636e79828e959fa7ada49d938f847e76706c6764625b5f5e5e5f5a6164676b70757c838d929ba2aba89f968f83796e63574c4034291d1206000000000000000000000000000007131e2a35414d58646f7b86919ca8b4aba6a4a6abaa9f968a7e72675a51473c31262a36414d5964707c87939da7aba6a4a8abb0aa9f96897e72675950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242f39434c555e656c71767a7b7b78746e69605950463c31281e14090000010c17222c3740495056585858585858595e68737f8a96a2aea594887d71655a4e43372b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0c0c111111111111110e0d0c09050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000070d1216191b1c1d1d1d1d1d1d1d1c1c1a17130d0701000000000000030b12181e2226282829292929292929282725221d18110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a0200000000000000000000040910151a1d1f2024252524211d1d1a17120c05000000000000000000000006121d29343f4b56606a737f8a939ca6aea59d938f837b726d65625c595752535353545157585b62646c707a818d919ba3a09c938f867d71655a4e43372b2014090000000000000000000000000005101c27323d48525b68737f8a97a1ababa19b989ba1aba6998d82766a61564b3f3429333e48525b68747f8b97a3aba29b989ca0a7afa6998d82766a60564b3f34281d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c656e737d82858786847f796f6960554a42382e23180d0200040f1b26313c4650596063646464646465676f77838e9aa6a89e94867b6f63584c4135291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607090c0e0f10111110100f0d0b09060604010000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a02000000000000000000000000000000000000000000000000000000000000000000010910171c2124272729292929292929282725221d17110a0200000000020b131b22282d313334343434343434343433312d28221a130a01000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a010000000000000000070e13182025282b2b2f3131302d292825211c160e06020000000000000000040f1a25303b465059636f7a84909ca3aca79e948f837a6f6b645d57534d4c4848474748474b4d52575c62696f79818d929c97918b837c716d63584d41362b1f14080000000000000000000000000007121e2935404b57616b77838e9aa8aea59b918d919ba7a89c91857b6f63584c41372d35414c57626c78838f9ba6a69b918d9197a0aba89c91857a6f63584c40372d22170d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36414d58636d737f868e919694908b827a6f635b52483d32271c10050006111d28343f4b56606a6f6f6f6f6f707073777f8a939ca7a79b9084786a61564b3f34291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d1012121517191b1c1c1c1c1b1a19171412110f0c07030000000000000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a01000000000000000000000000000000000000000000000000000000000000000009111920262c303233343434343434343333302c27211a120a0100000008121b232b32383c3f3f404040404040403f3e3c37322b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a1108000000000000000810171e23292f3336373b3c3d3b383433302c261f17120a030000000000000006111d28333f4a55606974808b959ea9aba09790847b6f6a615a544c4842403d383c3c383d4042484c535960686e79828e948f878079706c635c53493e33281d12060000000000000000000000000007131e2a36414d5864707b87939ca7a99e948d818d97a0aaa0968a7e73675a51473c3136424d5965707c87939da8a4988d8186919ca8aa9f968a7e72675a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505965717d8791979ca09e9b938c81756b62574c4035291e12070006121e2935404c58636f7a7b7b7b7b7b7c7e828a8f99a3aca4988d81766a5a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070c0f1112121313131312110f0c080a07070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1013181b1d1e212325262728282827262422201d1d1a17120f0b0701000000000000000000000000000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a110800000000000000000000000000000000000000000000000000000000000000071019222930363b3e3f404040404040403f3e3b37312a231a11070000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e0400000000000000000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e04000000000008101920272d32393e42434648484744403f3b362f27231b130b0300000000000006121d2935404c57636e7a84909ca5aea69c91877d716a615a514a443e3935322e30302d3235383d434850585f696f7b848c837d746e69625b534c43392f241a0f0400000000000000000000000005111c27323d48525b68737f8b96a3aca79b90847b86919ca8a7998e82776a61564b40343e49535c6974808b97a4a89e94887d828e99a7afa7998d82766a60564b3f34291d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a77828e97a0a7aaa8a39c91867b7064584d41362a1e1307000c17232e3a46515d6874808787878787888a8e9299a0a9a89e94897d71665a4f43372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305080c0f11121512161a1c1d1e1e1f1e1e1d1d1a1712151312100d09050300000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d13171b1d222629292c2f3032333334333331302e2b292825211c1a16110b07020000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e040000000000000000000000000000000000000000000000000000000000020d172029323a4045494a4b4b4b4b4b4b4b4b4946413b332a21170d030009131e28323c444c525557575757575757575655514b443b32281d13080000000000000000000000000000000000000000000000000000000000000000000000000009131e28323c444c525557575757575757575655514b443b32281d130800000000051019212931373d43494d4e525454534f4c4a463f38332b231b13090000000000040f1a25303b46505967727e89959ea9aa9f968c80756c635a5149413a332f29272324252327292e323840474f58616a727e817a716c635f58524b433b33291f150b0000000000000000000000000007121e2935404c57626b77838f9aa6aea5978c8077828e99a7a89c91867b6f64584c4138414d58636c78848f9ba7a79b8f84787e8a97a0aba89c91857b6f63584c41372d22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86919ca7b0b5b4aba0978a7e73675c5044392d22160a000c17232e3a46515d6874808b929292929395999ca2a9aaa19b8f84796e63574b4034291d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090e1112171b1d1e202321252829292a2a2a2a2928262223211e1e1c1813100e0b06010000000000000000000000000000000000000000000000000000000000000000000000000002070d13181d2226282d313435383a3c3d3e3f3f3f3e3d3c39373533302c2825211b16120c050000000000000000000000000000000009131e28323c444c525557575757575757575655514b443b32281d1308000000000000000000000000000000000000000000000000000000000007121c26303a424a505456575757575757575655514b433b31271d1308000c17222d38424c555c61626363636363636362605b544b42372d22170c010000000000000000000000000000000000000000000000000000000000000000000000000c17222d38424c555c61626363636363636362605b544b42372d22170c000000040d162129313941474b53585a5d5f5f5e5b57555048433c342c231911080000000006111d28333f4a55606976828d99a5aea89c90857b6f635c534a4139313030303030303030303030302f373f48515a646e72756f69635c554f48423b332b221910060000000000000000000000000007131f2a36414d5964707b87939da7a99e94887c737e8a96a0aaa0978a7f73675a51473d454f5865717c88949da8a4978b80747b86919ca8aaa0968a7e73675a51473c31261b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c8797a0abb8c0bab0a7978b8074685d51463a2e23170c000c17232e3a46515d6874808b979e9e9e9fa1a5a7aba8a19a91897d71685f544a3e33281c110300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f14191c1e222628292c2f2c30333435353636353534312c2f2c2a2927231d1c1916110b080300000000000000000000000000000000000000000000000000000000000000000000050c11161d23272c3134373c4041434648494a4a4b4a4a49474543403f3b3633302b25211c150e070200000000000000000000000000000c17222d38424c555c61626363636363636362605b544b42372d22170c01000000000000000000000000000000000000000000000000000000000b16212c36404a535a5f616363636363636362605b544b41372c22170c000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f030000000000000000000000000000000000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f0000010b141e26313a414a51565c6365696b6b6a67636058534c443c342a21180e0400000006121d2935404c57636e7a85919ca8aea5988c80756a61564c43393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b38414a545d64676a636059534a453f3836322c251d140b02000000000000000000000005111c27323d48525b68747f8b96a3aca79b9084796f7a85919ca8a79a8e82776b61564b4049545f6875808c97a4a89d94887c7077828e9aa7b0a7998e82776a61564b4034291d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87949ea9b4bab7ada4968b7f73685c5145392e22170b000c17232e3a46515d6874808b97a2a6a6a6a5a4a8a19c99908b80756d63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c12161a1e2327292c313435373a363b3f404141414141403f3b363a383535322d292724201b18130d090300000000000000000000000000000000000000000000000000000000000001060e151b21272d32373c3f41474b4c4f51535556565656555453514e4c4a46403e3b35302b251e17120c05000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f03000000000000000000000000000000000000000000000000000000020e1924303b45505a636a6d6e6e6e6e6e6e6e6d6b645b51463b30251a0e00111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c1005000000000000000000000000000000000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c10000006111b252e36414a515a61646d7175767775726e69635c544d443a31281e14090000000914202b37434e5a65717d88969faaa99e95887c71655a51474747474747474747474747474747474747474747474d54595b5e5755504947474544413c352d251c1208000000000000000000000007131e2a35414c57626c78838f9aa6aea5978c80756a76828d99a6a89c91867b6f64584d424b57636e7984909ba7a69b8f83786c737f8a97a0aba89c91867b6f63584c41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b7884909ba2abb0ada69d93887d71655a4e43372b201409000c17232e3a46515d6874808b979a9a9a9a99989797918d88807570665d54473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171c2125282e3235373c3f40434647454a4c4c4d4d4d4d4c4a4648464441403d3834332f2b25221d18130d0702000000000000000000000000000000000000000000000000000000030911161e252b30373c40464b4c5156585b5d5f606162626161605e5c5a5755504b4a453f3b352f27211c160e06000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c100500000000000000000000000000000000000000000000000000000004101b27323e49545f6a74787a7a7a7a7a7a7a79746b6055493e33271c1000111d28343f4b57626e79868585858585858585796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e79858585858585858585796e62564b3f34281c1100000b16202b353e47515a616b6f777d808282817e79716d645d544a42382e23180c0200000b17222e3945515c68737f8b96a6afa79c9084796e635753535353535353535353535353535353535353535353535353535353535353535353514f4b453e352c22180d020000000000000000000008131f2a36424d5964707c87939da8a99e94887d7167727e89969faaa1978a7f73685b52484f5865717d88949ea9a4978b8074686f7b86919ca8aaa0978a7e73675a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a68737f8b929ca0a7a49d968f83796e63574b4034291d1106000c17232e3a46515d6874808b8f8f8f8f8e8e8d8c8986827c746f665f574c44372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090f161c22262c3033383d4041464b4c4f51534f5557585859585857555053524f4d4b4742403e3a35312d27231d16120c0500000000000000000000000000000000000000000000000000030b131921272f353b41474b5056585a616366696a6c6d6d6d6d6d6b6a686563605957544f4a453f37302c261f1710080000000000000000000000111d28343f4b57626e79858585858585858585796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d78848585858585858585796d62564b3f33281c1100111d28343f4b57626e79859191919191919085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e79859191919191919085796e62564b3f34281c1100030e19242f3a454e57616b6f7b82888c8e8e8d89847d726d645b52483d32261c120700000d1924303b47535e6a75818d98a4afa5998d8276685e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5c5b564e453c32271c110600000000000000000006111c28333e48525b6874808b97a4ada79b9084796e636f7a85909ca8a89a8e83776b62574c555f6975818c98a5a89d93877c70646a77828e9aa7b0a79a8e82776a61564b4034291e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414c57636e79828c91979797948f867c70685f54493e33281c1105000a16222d3944505c67737f8383838383838281807d7b76706c665f574f463c33271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14171f262c31363b3f42484c4d5056585a5d5f585f6363646464646360595f5d5b5856514e4b49453e3c37322d27211c150e070200000000000000000000000000000000000000000000040c141b232a32373f454a5156596063676a6f727476777879797978777573716e6966635f58554f48433b362f272018100800000000000000000000111d28343f4b57626e79859191919191919085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d78849091919191919085796d62564b3f33281c1100111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c110005101c27333e49545e686f7b848e9297999998948f867e726b62574c3f362c21160c01000f1a26313d4854606b77828e9aa5aea3978c80746a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655f564b41362b20140900000000000000000007131e2a35414c57626c78838f9ba6aea5988c807568606976818d99a6a79c93877b7064584d57636e7a84909ca7a69a8f83786c6267737f8a97a0aba89c91867b6f64584c41382d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e4a555f686e7981868a8c8b89837d716c62584f453a30251a0e03000a15212c38434f5a656e73777777777777767674726f6a65625c564f463f362c23160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010710181e23282f363b3f454a4c52575959606366686a6c696e6f6f70706f6f696c6b696664615a5a57544e4b47413c37302b251e17120c050000000000000000000000000000000000000000040c141c242c343a42484f555a61646a6f73777b7d808283848485848483817f7d7a76726e68635f58544a463f38302921191008000000000000000000111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909b9c9c9c9c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c110006111d2934404b57636e78828e949ca3a5a5a49e9690857c7064584f453b30251a0f0400101b27333e4a55616d78838f9ba7ada2968b7f7575757575757575757575757575757575757575757575757575757575757575757575757575746f655b4f44392d22160b00000000000000000008131f2b36424d5965707c87939da8a99e95887d71655966727e89959fa9a3968b7f74685b525966717d89959ea9a3968b7f74685b646f7b86919ca8aba0978a7f73675a51473d32271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5860696e757b7f80807d79716c635c53473e352b20160b000008141f2a35404b555e65676c6c6c6c6c6c6b6a696663615a58534b463e362e261b1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111921282d323840464a4f55575b6264686a6f71747677797a7a7b7b7b7b7a79787674726f6b6965635e5756514b47413b352f27211c150e06000000000000000000000000000000000000030b141c242d343c444b52585f636a6f757a7f8286898b8d8f909090908f8e8d8b8885817d79736e69635d55504841393129211810060000000000000000111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7a8a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000a15212c38444f5b66727e89939ca5acb0b1ada79f968d8175695f554a3f33281c110500101c28333f4a56626d7984909ba7b1a59a8e8281818181818181818181818181818181818181818181818181818181818181818181818181817f74685c51453a2e23170b000000000000000006111d28333e49535c6974808b97a4ada79b9084796e6357636e7a85909ca7a69a8f83786c6257606975818d98a5a79d93877b706459616a77828e9aa8b0a79a8e82776b61564b4035291e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48505960636b70737474726e69635c534b42372e251b1107000005101b26313b454d555a5c6060606060605f5e5d5b5856514c49433b362e261e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b202931383d44485055585f63676b7074777a7d8081838586868787878686858382807e7b7875716e6863615a56514a453f37302b251e171008010000000000000000000000000000000109131c242d353d454d545b62686e747b80858a8e919797999a9b9c9c9b9b9a989696908d89847f79716d6360585149413a312920170e0500000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000e1925303c48535f6a76828d99a3acb5bcbcb7afa69c9085796e63574c4034291d120600111c28343f4b56626e7985909ca8b3a79c938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d83786c6055493e32261b0f000000000000000008131f2a36414c58626c78848f9ba6aea5988c8075685f55606976818d98a5a89d93877c706459636e7a85909ca7a89a8f83776b62575a67737f8a97a1aba89c91867b6f64584d41382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f373f4850555b626468696866635f58534c433b32261e150b010000020c17212b343d454b4f505555555555545453524f4c4b47413e39322b251d150e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b303a41474b54596063696e73777c7f8386898b8d8f9095929293929296908f8d8c898783807d79746f6a64615a554f48433b352f2720181109020000000000000000000000000000061119232c353d454e555d646b70797f858c90969a9ca0a7a4a6a7a7a7a7a6a5a4a69f9c99948f8a837d756e69615a514a413931271f150c02000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100101b27333e4a55616d78848f9ba7b2bcc5c8bfb5aa9f96877c7064594d42362a1f130800111c28343f4b56626e7985909ca8b3aca39c9a989898989898989898989898989898989898989898989898989898989898989898989898988f83786c6155493e32271b10000000000000000008141f2b36424e5965707c88949da8a99e95887d716558505966727d89959fa9a4978b8074685c66727e89959fa9a1978b7f73685b5258646f7b86919ca8aba1978a7f73685b52483d32271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f383f464a5257595c5d5d5a57554f48433b332a22160d040000000007111b242d343b4043444949494949494847464341403c37332f29221a150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262e353a444a51575d64696f73797e83878b8f919797999a9c9fa69e9e9ea69f9c9b999795948f8c88847f7b756f6a635f58534a453f3730282119120a02000000000000000000000000040d16212a343c454e555e656d727c838b90969c9fa6a8abb0afacabaaa9aaabadafafaaa8a49e9b948f8780796f6a615a514a41382f261c1207000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100111c28333f4b56626d7985909ca7b3becacdc3b8aea593887d71655a4e42372b20140800101c28333f4a56616d7984909ba7b3b3aca7a5a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49a8f83786c6055493e32261b0f0000000000000006111d28333e49535c6974808c97a4ada79b9084796e63574c57636e7a84909ca7a69b8f83786c626a76818d99a6a89c91867b6f64584d56616b77828e9aa8b1a89a8e83776b61574b4035291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f272f363b42484c4d5052514f4c4a453f38332b221a12060000000000010b141c242b313538393d3d3d3d3d3d3c3c3b383534312d27241f19120a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f1820272f373e4549545a61646d727a7f848a8f93979a9ca0a7a4a6a7a9afa9aaaaafaaa8a6a5a3a49d9b97948f8b85807b746e69625c554f484039322a221a12090100000000000000000000010b151e26313a444d555e656e737e858f939c9fa6aaafada8a6a3a19f9e9e9ea0a1a4a7a9afada8a49d97918c827b6f6b615a51483f362c21160e050000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100101b27323e4a55616c78848f9ba6b2bbc4c6beb4a99e95877c7064594d41362a1f130700101b27333e4a55616c78838f9ba6b2b6ada6a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea5a7acafafa69a8e82776c6054493d32261a0f0000000000000008131f2a36414d58636c78848f9ba7aea5988c8075685f544a555f6975818c98a5a89d94877c70656f7a85909ca8a79a8e82776b61574b515a68737f8a97a1aba79c93877b7064584d42382e23190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c30383d404145464643403f3b362f27221a120a01000000000000030c141b21262a2c2d32323232323231302f2c292926221d19150f09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17202830383f474f545d646b6f767e848b90949a9da3a6a8abb0b0b1afadadacacacadadafb1b0aeada8a6a49d9b96908c857f79706c635f585149423a332b221a11090000000000000000000007111b252e37424b545d656e737f8790959da3aaafaba8a49d9b9895949392939496999c9fa6a8adada8a19c938e837b6f6a61584f453b30271e150c0200000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000d1924303b47535e6a75818d98a1aab5babab5ada49b90847a6e63574b4034291d1106000e1a26313d4854606b77828e9aa5b1b0a69d969392929292929292929292929292929292929292929292929292929292929a9ca3acb1a5998e82776b5f54483d31251a0e000000000000030e19242f3a454e5765717c88949ea8a99e95887d7165584f454f5866717d88959ea9a4978b807469727e89969faaa0978a7f73675a51474d58646f7b86919ca8aca3968b7f73685b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c21282e323536393b3a383433302c261f17120a020000000000000000030b11171b1f2122262626262626252523211e1d1b18130d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f283038404850585f636d727b828990949b9ea5a7acb1b2afa9a7a5a3a2a1a0a0a1a1a2a3a5a7a9afb1b2ada8a69f9c96908b837c746e69615a524b433b332a221911080000000000000000000b16202b353e47525b646e737f8a91979fa6acada8a19c99948f8c8988878787888a8d90959b9da4aab0aba39c948f837b6f695f554a43372f251b110700000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000020000000000000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000814202b37424e5a65717d88919ba3aab0afaba59d948b8074685e54493e33271c1005000d1924303b47525e6a75818c98a4afaca1968d8786868686868686868686868686868686868686868686868686868686868e929ca7afa4988d81756a5e53473b3024190d00000000000005101c27333e49545e6875808c97a4ada79b9084796e63574b404b57636e7984909ba7a79b8f84786c76828e99a6a89c91867b6f64584c414b56616b77838e9aa8b1a69a8f83776b62574c4035291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171e2327292a2e2f2e2c292825211c150e06020000000000000000000001070c101415161b1b1b1b1b1a1a1918151212100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e2730384049505860686e747e858e929b9ea5a9aeb3ada8a6a69f9c999896959594959696989a9c9fa6a6a7acb3afaaa69f9c938f8680796f6a625b534c433b32292118100700000000000000030e1a25303a454f58626b727e87919ca0a7afaba49d97918d8883817e7d7c7b7c7d7f81858a8f949ca0a7aeaca49d948e82796e635c53483f352b21160b00000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000010406060e0606040100000000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110008131f2a36414d58636c75818d929ca0a7a3a29c948f837a6f63574e453a2f24190e03000b16222e3945505c68737f8a96a6afaa9e93877c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b828e9aa5aea2978b8074685d51463a2e23170c00000000000006111d2934404b57636e7984909ba7aea5988c8175685f544a3e4a545f6875808c98a5a89e94887c717b85919ca8a7998e82776a61564b4047515a68737f8a97a1aba79d93877c7064594d42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e14181c1e1f222323211d1c1a16120c0500000000000000000000000000000205080a0a0f0f0f0f0f0f0e0d0c0a0706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f374049505960696e78808990959ca2a8aeb0aaa8a49d9a9695908e8c8b8a8989898a8b8c8e9095969a9da3a8aaafafaaa49d97918c827a706b635c534b423a312920170d0300000000000005111c28333e49545f68707c859097a0abb0aba29c948f87817d787572717070707173767a7e838b91979ea5aeada49c938c80756d63584f453b30251a0f03000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000002080c0f1112191211100c08030000000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110006121d28333e49535c636e79828c9196979896928e847c706a6056473e352b20160b000008141f2b37424e5965717c88969faaaca195897e726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7a85909ca7aea595897e72675b4f44382d21150a0000000000030e1a25303a454f5865717d88949ea9a99e95887d7166584f453b454f5865717d88949ea9a4978c80757e8a96a0aaa0968a7e73675a51473d414d58646f7b86919ca8aca3968b7f74685b52483d33271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131618171512110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121a212b353f485059606a6f79818c909c9ea5abb4aba7a09c98938f8b888582817f7e7e7d7e7e7f808385878b8f93989c9fa7aab0ada7a09c928e837c716c635b524a413930271d13080000000000030f1a25303b454f58636e78838e969fa7b0aba29b928d847d76716d6967656464646667696e72797f8690959ea5aeaca39a91887d71685f554a3e33281f150a000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000060c12171a1d1d251e1d1b17130d0600000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100030e19242f39434a5560696e7980868a8c8c8b87827b706c62595046362e251b1106000006121d2934404c57636e7a85909ca8b0a4988d81766b64646464646464646464646464646464646464646464646465717c88959fa9a99e95877c7064594d41362a1f1307000000000005111c28333e49545f6875808c98a5aea79c9084796e63574b4035404b57636e7984909ba7a79b908479828e9aa7a89c91857b6f63584c4137404b56616b77838e9aa8b1a69a8f83786c62574c41352a1f140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070b0c0c090605040100000000000000000000000000000000000000000000000000000006060606060606060600000000000001040506090b0e0f101111100f0e0c09060604010000000000000000000000000000000000000000000000000000000000000000060f17222b303b454f5860696f7a828d929aa1a9aeada8a29b97918d87837f7c797775737372727273747577797c7f83878c91969ca0a7adb0aba39c948f857d716c625b524941372d221911080000000005111c28333e4a555f68737e8a939ca6afaca39b918d817a716d65635c5b5a5958595a596063696e747d8590959ea7b0aaa19b8f83796e63574c43392f24190e030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000070f161c2126282931292826221d160f07000000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1107070707060604010000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000a151f29303b46505960696e747b7e80817f7c766f6b625b52494037261e140b01000005111c28333f4a555f6976818d98a4ada89c91857b6f645b585858585858585858585858585858585858585858606a75808c98a6afa79c9084796b62574c4035291e1207000000000006111d2934404b57636e7984909ba7aea5988c8175685f544a3e333e49545e6875808c97a4a99e94897e87919ca8a7998e82766a61564b40323d47515a68737f8a97a1aba89d93877c7064594d42392e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608081111111111111111110604010002070c0f11121417191b1c1c1c1c1b1917151211100c08040100000000000000000000000000000000000000000000000000000000030d161f28323b434a555f696f7a828e929ba2aab4aba49e9b918d86817c7873706e68696867666667676869686e7074777b80858c91979da4a9b5aca49d9590857c706b615a51473c312a21180e0400000006121d2934404c57636e7984909ba3acaea59c938d81796f69635c5853504e4d4d4d4e5055585f636c717c849096a0aab3a89d948a7e73675c53493e33281d12060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000060f171f262c3134353c3534312c2720180f060000000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c131313131212110f0c0708070603000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000050f17212c363f4850585f636b6f73757574706c64615a524b42383026160d04000000030f1a25303b454f5866727d89949ea8aa9f968c80756c6259504c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c535c636f7a85909ca8aea5988c81756a5b52483d32271c110500000000030f1a25303b454f5866717d88959ea9a99e95887d7166584f453b303a454e5765717c88949da8a59c90849097a0aa9f968a7e72675a51473c3138414d58646f7b86919ca8ada4978b8074685b52483e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608090a0a0a0a0a0a0909070401000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0b0c12161a1c1d2023252627282827262523201e1d1b17130f0c0702000000000000000000000000000000000000000000000000000008121c263038434c555e636e79828e939ca3abb1aaa29c948f88817b75706c6865635f585c5b5b5b5b5c5c575e6364686b70757b80868f939aa0aaafada69f9590847b706a61564b453a31281e14090000040f1a25303b46505967727e89949ea9b4a99f958e82796e696059534d49444342414243464a4f555c636c717d86919ca4adada49b8f83786c63584d41362a1f12080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000020c161f282f363b3f4048403f3c37302820160d0300000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281f1f1f1f1e1e1d1d1a17121313110e0a0502000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000007121c262f383f484f555a61646769696865625b57514a423a322820160500000000000b16212b35404b57636e79848f9ba4ada79c90857c7069605850484241414141414141414141414249515a636c74808b969faaa99e94897d72665a4f43382e23190e030000000005111c28333e4a555f6875818c98a5aea79c9084796e63574c40352b353e4d58636c78848f9ba7a99e9590959ea7a89c91857a6f63584c41372d35404b57616b77838e9aa6b1a69b8f83786c62574c41352a1f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080c0f111214141516161616161514120f0b0600000000000000000002090f15191d1f202929292929292929291d1a17151a1c212528292c2e30323333333332302f2c292826221d1a17120c07020000000000000000000000000000000000000000000000010c17222c364049535c656f76818d929ca3acb0a9a19a928e847d76706b65625b5957544f51504f4f4f50514e5457595b62646b6f757c838b909c9fa7afaea59e948f837a6f635e554a42382e23190e030006111d28333f4a55606976828d99a5aeaea59c90857b6f685f585049433e3937363636363b3f454a535b636c737f8a939da8b3a89d94887c71655a4e42362c22170c0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000008121c262f3840464a4c534c4b46403930271d130801000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342a2a2a2a2a2a2a29282521221f1e1c1914100d090400000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000020c161f272f373f454a5156585c5d5e5c5957524b47413a322a21180f06000000000007121c28333e4a545f68737f8a949ea8aa9f968f837a6f696059524a46403e38393839373d3f464a535a616a717d86919ca6aea59b9084796e63574c4034291d1409000000000006121d2934404c57636e7984909ca7aea5988c8175685f554a3e3325333e49535c6974808b97a4ada59e9c9ea5aea6998d82766a60564b3f3027323d47515a68737f8b96a3aca89d93877c7065594d43392f24190b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012171b1d1e1f2021212121212120201e1a16100a02000000000000020a12191f24282a2b3434343434343434342825211f24262c303334373a3c3e3e3f3f3e3e3c3a383534312c2825211c17120c0500000000000000000000000000000000000000000000040f1b26313c465059636c737f8a919ba2abb1a9a099908c827a716d64615b57524e4b49454544444344444545494b4d52575a61646c7079808991969fa6afaea59d948d81766e645b52483d32271c11050006121d2935404c57636e7a85919ca8ada99e948a7f736b61584f484038332f2b2a2a2a2c30353b434b535c636e79838f9aa5aeada4978c8075695950463c31261b0f0400111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000061119212c3640485055575f5856504940372c221a1107000005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f36363636363636353533302c2d2b2a27241f1c18140e0a050000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000050f171f272f353b41474b4c505252514d4c48423d383129211a1107000000000000030f1a25303b454f58636e7a848f9ba2aba69d938d81796f69625b56504c484645444545474b50555c626a6f7b838f97a0aba99e958b7f74685f554a3e33281c110400000000040f1a25303b454f5866717d89959ea9a99e95887d7166584f453b30252f39434e5965707c88949da8aea9a7a9aeaa9f96897e72675950463c31232e38414d5864707b87939ca7ada4978b8074695c53493e33251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e13181b1d222628292b2c2c2d2d2d2d2d2c2b2925201a130b02000000000009121a22292f33363740404040404040404033302c292f33363b3f40434547494a4b4b4a49484643403f3c3733302c26211c160e070100000000000000000000000000000000000000050f19222b343f4a556069717d86919ca2abb2a9a099908b80786f6a635d57524c4842403e3a353938383839353a3e4042484c51565c62696e747e8690959fa6afada49b928a7e736b62574c4035291e12070008141f2b37424e5965717c88969fa2a2a29b90847a6f635a51483f37302824201f1e1f21252b303a434a545f68727e89949ea9b2a69a8f83786a60564a3f34281d110600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500050e17212a313b46505960636b63605950463c312a22180f060005101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b414141414141414141403f3b36393635332e2927231e19140f0802000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000070f171e252b30373d40414446474542413e39322d282119110901000000000000000b16212b353f4a556069727e89919ba4ada49b918d827a706c6360595752515050505151565860636c707b838f949da7aba29b90847a6f63584f453b30251a0f030000000005111c28333f4a555f6975818c98a5aea79c9084796e63574c40352b212a35414c57626c78838f9ba6b2b4b3b4b3a89c90857a6f63574c40372c222935404b57616b77838e9aa6b1a69b8f84786c62584c3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161e2327292c3134353637383838383838383734302a231b130a00000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b3634393e3f454a4c4e515355565656565553514f4c4b46403f3b36302c261f17110b040000000000000000000000000000000000000a151f29333e48525b636f7a848f96a0aab2aaa199908b7f746e68615a544b48413e393433302b2d2d2c2d2d2b2f3334383d41474b53585f636e727d8590969fa7ada8a29c90857c7064594d41362a1f1307000a16212d3944505b67737e8a9596969696968b80746960554a41372f271f1715131312171c212a303b454f58636e7984909ba7b2a89c91867a6f63584c4035291e120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105020c161f27323a424a5560696f766f6a60564b453b32281f160d0305101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564d4d4d4d4d4d4d4d4d4c4c4a46474542413e3835322e28241f17120c060000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000060e151c21272d323435393b3b3a3635332e29231e18100801000000000000000007111b25303b465059646e76818d949ea6aba29b928e837c746f6a64625b5d5c5b5c5d5a6164696e747c838f939da4ada59c928a7e736a6056483f352b21160b000000000006121d2934404c57636e7a85909ca7aea5988c8175685f554a3e33251b28333e48535c6874808b97a4adb7beb9afa6998d81766960554a3f34261d27323d48525b68737f8b96a3aca89d94887c7065574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21272d3234363c3f40424343444444444443423f3a332c231a10060000000a151f29333b43494d4e5757575757575757574a463f3f43494d4f55575a5d5f6061626261605f5d5a5856504c4a463f3b362f27201b150d0600000000000000000000000000000000030e19242f39414c57626c74808c949ea7b0aca39a918b7f746f635e575149433d38332e292825202121212122202427292e32373d42484f555d646d717d869197a0a49d9b928d857e72675b4f44382d21150a000b17232e3a45515c68747f8a8a8a8a8a8a8a887c70655950463a31271e170f0b0807070c121a212b353f49545f6875808c98a3afaba197887c7065594e42362b1f140800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110007121c262f38424b545d636f79827a6f635e554b423830261d120801101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62595959595959595959585857555053504d4c4842403d38332e28221c160f0701000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000000000050c12161e2327292a2d2f2f2e2b2a28241f18140e0700000000000000000000010b17212c363f48545d636f7a848f959fa7aba29c938f86807a75706c6a6968676768696b6f747a7f868f939da4ada69e958e82786e63595046372f251b110700000000040f1a25303b46505966727d89959fa9a99e95897d7166584f453b302519242f39424d5964707c87939da8b3beb4a99f95897d72665950463c312618232e38414d5864707b87939da7ada4978c8074685e54493e33271c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e252b30373d4041464a4c4d4e4f4f505050504f4d4a443c332a20160b0100030e19242f39434c535859636363636363636362555048494d5358585f6366686a6c6d6d6d6d6c6a69666360595755504a463f38302b251e160f0700000000000000000000000000000006111d28333e49535c64707c86919ca4adafa69c938c80756f655f544e474039322e28241d1c1a16111515151116191c1d23272d32373f454a545c636d727e86919c9c948f89817b726e64594e43372c201509000814202b37424e5a65717c7f7f7f7f7f7f7f7f736c62584840362921160e06000000000207111b25303a454f5867727e8995a0acb1a895897d72665b4f44382c21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11061119212c363f48525b646e75818c81766e655c534940362c221a1107101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e6464646464646464646464636360595e5c5957524d4c48423d38312c261f17120a030000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000002070e13181b1d1e222324221f1e1c19150f090400000000000000000000000007121c262f38444b56606a707c8590969fa6aba39d96918b85807c7976747372737475787b7f848b91969da4ada69f9590847b6f685e54494036271e150c020000000006111d28333f4a55606976818d98a6afa79c90847a6e63574c40352b21161f2a35414c57626c78838f9aa6b2bcb3a79c90857a6e63574c40362c22171e2935404b57616b77838f9aa6b1a79b9084796e63574b40352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f353b41474b4c505557595a5b5b5b5b5b5b5a59544c443a30251a0f040006111d28333e49535c63656e6e6e6e6e6e6e6e6d60595053585c6365696e7174767878797978787674726f6a67636059555048433a352e261f170f07000000000000000000000000000008131f2a36414c58636c77828e97a0aab4a99f958e82796e635f5649453e363028231e1914110e0b070a090a060b0e1014181e23272f353b444c535c646d747f8b92908b837d76706b645d544a3f35291e13080008131f2a36414d58636c7173737373737373736e655c5349382f26191006000000000000010b16202b35424d5965707c87939faaaca1958a7e73675b5044392d21160a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110e17212a303b465058626b727e89918a7f736c625950463c312a22170f101c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c90857970707070707070707070706f6f6e696c6a6765625b5857524c48423b362f28221a130b0300000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000000000000004090d101213161818171413110e0a050000000000000000000000000000020c161f27313c465059626c717d8690959ea5aba7a09c95908c878481807f7e7e7f8183868b90959ca0a7aca59e9690857c706a61574e45383026160e05000000000006121d2935404c57636e7a85909ca7aea5988c8175695f554a3f33251b111c27323d48525b68747f8b96a3acb6aea5988d81756960554a3f33261c121c27323d48525b68747f8b96a3aca89e94887c7165574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830373f454a515658596063656566676767676766645d544a3f34291e12070008131f2a36414d58636c717a7a7a7a7a7a7a7a776960565d63666d71767a7d7f8183848585848382807d7a77726e696360585349453e37302820180f0700000000000000000000000005111c27323d48525b65717c88929ca7b0aca39c90857b70685f554e453a352e262018140e0a0503000000000000000305090e13171e252b303b434c545d636e78828d857f79716d64615b544d443a30261b10050006121d28333e49535c63656868686868686867655e554b4339281f1609000000000000000007111e2935414c58636f7b86929da9ada1968a7f73675c5045392d22160b00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c0c151f27313a424a556069707c85909c91867c706a60564a453b32281f160c1c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c90857c7b7b7b7b7b7b7b7b7b7b7b7b7b7a79777573706c6964625b57524a464038322a231b130b03000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000000020506070a0c0d0b080706030000000000000000000000000000000000050f17222d374049525b636d717d8590949ca2a9aaa69f9c9795908d8b8a8a8a8b8c8f93969b9ea5aaaaa39c9590857d716c625a51473e35281f16060000000000040f1a26313b46505966727d89959fa9a99f95897d7166584f453b3025150c19242e38424d5964707b87939da7b3a99e95897d71665850463b3025160c18232e38414d5864707b87939da7aea5978c8075685e54493e33271c11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840484f555a616469696f7071727272727272726d64594d42372b201409000814202b37424e5965717d85858585858585857a6e6361646d71777d8185888b8d8f8f9090908f8d8b8986827e7a736e69635c544f474038302820170f05000000000000000000000007121e2935404c57626b76828d99a2acb3a79c938a7e736b61584f453e2f2b251e161009040000000000000000000000000004090e151c212b333b4449545f68707b817b746e69635d57524a443d342a21160c0100040f1a242f39434c53585a5c5c5c5c5c5c5c5c5a554e453b3229170f06000000000000000006121d2934404c57636e7a86919da8ada1968a7e73675c5044392d22160a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c121c262f38424a545d636e79838f969f968f837a6f635e554b423830261c121c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3aa9f96908787878787878787878787878786868483817f7c7874706b64625b555048423b342c231c130b020000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000000000000000000000010406070808070605020000000000000000000000000000000000000008131d273039424b535c636d717d848e929b9ea5a9a9a7a59e9b999796959697989b9da4a7a9aaa69f9c928e847c716d635c534a41362e25180f06000000000006111d28343f4a55606976818d99a6afa79c90847a6e63574c40352b21160a141e2935404c57626b77838f9aa8b1a79c90847a6e63574c40362c211709141e2935404c57626b77838f9aa6a8a79b9084796e63574b40352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404950585f636b6f74777a7c7d7d7e7e7e7e7e7e72665a4f43382c201509000814202b37424e5965717c88919191919191867a6e636b6f767d83888d909597999a9b9c9c9b9a999797918e89847f79716d635f585049403830271f160d040000000000000000000007131f2a36414d5964707c86919ca8b4aca39a8e83786e635b52483f352d201b140d050000000000000000000000000000000000050c121b222b303a454f58616b7076706b636058544b48413a342c241a11070000000a151f29333b43494d4e50505050505050504f4b453d352b22190e06000000000000000007121e2a35414c58646f7b86929da9aca1958a7e72675b5044382d21160a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c19212c363f48525b646e75808c939da69d948d81766e645b524940362c221a1c27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3afa69f9c939393939393939393939392929295908f8d8a8784807b76706c636059534b443c342c231b13090000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000003080c10121214141312100d09030000000000000000000000000000000000030d172028323b434c535c636c707a828990949b9ea5a8aaa9a7a4a2a2a1a1a2a3a6a8aca8a69f9c96908b827b706c635c534b423931261e140700000000000006121d2935404c57636f7a85909c9c9ca6988d8175695f554a3f33251c1207111c27323d48525b68737f8b97a19ca5988c8175695f554a3f33261c1207101c27323d48525b68747f8b96a39c9c9e94887d7165584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505960696e757b808385878889898989898983786c61554a3e32271b10000814202b37424e5965717c88939c9c9c9c91867a6e6d717b81888f93989c9fa6a4a6a7a7a7a7a6a4a7a09c9994908a837d746e686059504940382f261e140b01000000000000000006111c28333e48535c6874808b97a1abb2a79c93887d71685e544a41372f251d110b04000000000000000000000000000000000000000207121b202b353e47525b61646a64625b555048443d383129241c130a01000000050f19222b33393e4142454545454545454544403b33302c261f170e050000000000000006131f2b36424d5964707c87939eaab1a894897d72665a4f43382c20150900111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428172129303b454f58626b727e89919aa4ada49b918a7e736c625950463c312a211727333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3b7afaaa89e9e9e9e9e9e9e9e9e9e9e9e9ea59e9c9a9896948f8c86827c756f69625c544d443c342c2319110600000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000050a0d13171b1d1e1f1f1e1e1b18130f0b0701000000000000000000000000000000060f18222a333c434c535c626a6f767e848b9094999c9fa6a3a5a6a7a7a7a7a6a5a3a39d9a96918c857f796f6b625c534c433b322920160d040000000000000a15212c38444f5b66727e89969191919195897d7166584f453b3025150c020e18232e38424d58646f7b869191919195887d7166584f453b3025160c020d18232e38424d5964707b879391919191918c8075685f544a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a343f4a5560696f7980858b8e91979495959595958f84786c61554a3e32271b10000814202b37424e5965717c88939fa8a89d91867a6e737d848d929a9da3a7a9a7a5a4a4a4a5a6a8abb0aba8a59e9b948f8780786f69605950483f362e251b1106000000000000000007131f2a35414c57626c78838f9ba8b1aea59a8e82776d63574e453a31271e1506010000000000000000000000000000000000000000000207111b252e37414a5257585f5857524a463f38322e282119130b03000000000009121b22292f3336373939393939383d404145403f3b362f271f160c020000000000050e161e2c37434e5a66717d8894a0ababa197877c7065594d42362b1f130800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e27313a414a555f69707c85909ca1aab4aba29c90857c706960554a443a32281f27333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3bfb9b5b3aaaaaaaaaaaaaaaaaaaaaaaaa9aea9a7a6a4a49d9b97918d86807a706c645d544d443c332a21160e05000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000000002090f151a1d222629292b2b2a2927231e1a16110b0500000000000000000000000000000007111a232b333c434b535a61636e727a7f84898d90969698999b9b9c9c9b9a999795938f8b85817b746e68615a534b433c332a22181005000000000000000e1925303c48535f6a76818585858585858585796e63574c40352b2116060009141e2935404b57616b7782858585858584796e63574b40352b2116060009141e2935404c57626b788385858585858585847a6e63574b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28343f49545d636f7a828c91969a9ca0a7a0a1a1a19b8f84786c61554a3e32271b10000814202b37424e5965717c88939faba89d91867a737f8790959ba2a7a5a59e9b9a999899999b9ca0a7a8aaaea9a49d97918b827a6f6a605950473e352b20160d040000000000000008141f2b36424e5965707c88949da8b4a99f95897e72665c53473e352921160e050000000000000000000000000000000000000000000000010b151e26313a41484b4d534d4c48423b362f27231e18100903000000000000020a12191f24252b2f33353b3f4043484c4d504c4a463f382f261c120b04020002050b151e27323d47515a68747f8b97a2aea89c91867a6f63574c4035291e120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428252f37414a545d636e79838f959fa9b1bab5aa9f968f837a6f635e544b42382f2627333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3bfb9b5b3aaaaaaaaaaaaaaaaaaaaaaaaaaabacadb0afada8a7a09c97918c837c726d645d544c443a31271e150b010000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000040a12191f24272d31343536373534322d2825211b150e0600000000000000000000000000000109121b232b333b434951565d64696f73797e8185888a8c8e8f909090908f8d8c8987837f7b756f6b635f58514a433b332b231a120800000000000000000d1924303b46525d6771767a7a7a7a7a7a7a796e695f554a3f33251c12070005101c27323d47515a6872777a7a7a7a7a796e685f544a3e33251c12070005111c27323d48525b6972787a7a7a7a7a7a7a796e685f544a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38424d58636d76818d929c9fa6a8a9a7a4a3a3a39b8f84786c61554a3e32271b10000814202b37424e5965717c88939faba89d9186797f8a91979ea5a39c9a9695908e8d8d8d8e8f9197989c9fa6aaada8a19c928e827a6f6960574e453a2f261e150b010000000000030e19242f3a454e5768737f8b96a4adb3a79c90847a6e63574c43362e2519100600000000000000000000000000000000000000000000000000040d16212931383d40414741403d38302c261f17140e07000000000000000000010b141e262e353a3e40454a4c4e5257595c575550483f362c211b14100d090d10151b252e373f4b56616a77838e9aa5b1a69b8f83786960554a3f34281d110600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34212b353f48525b646d75808c939da6afb9bab9afa69d938d81756e645b524840362c21333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3b7afaaa89e9e9e9e9e9e9e9e9e9e9e9e9e9fa0a2a5a7a9afb0aba7a09c948f857e726e645d544a42372e251b11070000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000040d141b22292f33373c3f40424241403d3833302b251e160f070000000000000000000000000000020a121b232b323941474b54596063696e72767a7c7f818283848584848382807e7b77746f6a64615a544f47413a322b231b120a0100000000000000000b17222d38434e5760676a6e6e6e6e6e6e6e6d635f584f453b30251a0f0400020d18232d38414a5861686b6e6e6e6e6e6d635f584f453b30251a0f0300020e18232e38424a5962696c6e6e6e6e6e6e6e6d635f584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b66717d89919ba2aaa9a59e9b99989797978f84786c61554a3e32271b10000814202b37424e5965717c88939fabaca094897d87919ca1a39c9a928e8a878483828181828485898d90969ca0a7adaba29c938e82796e685e544942372e251b1107000000000005101c27333e49545e6876828d99a5b0afa4988c8175695f554a3f33261e140900000000000000000000000000000000000000000000000000000006101921282e3235363c3635322e28211c160e09040000000000000000000006111b252e363e45494b4f55575a5b62646763605850463b302b251e1b1813181b1e252b353f47515a646f7b86919ca8b0a7988d81756a5950463c31261b0f0400111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3429303b454f58616b727e89909aa3acb5b3aeafb7ada49b918a7e726c625950463b312a333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3afa69f9c92929292929292929292929293949596999c9fa6a7acb0aba49d9690867e726d635b52473f352b21160d0300000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000040c141d252b33393e40464b4c4e4e4d4b47413e3b352e271f170f060000000000000000000000000000020a121a222930373c44495055585f6366696e717375777878797978787675726f6b6864615a56514a453f373129221a120a0200000000000000000008141e29343e4750575d5f636363636363636257554f483f362c21160c01000009141e28313a4851585e6063636363636157544f473f352b21160b00000009141e28313a4951595e60636363636363636157544f473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b77828e9aa2aba59f9c94908d8c8c8c8c8c83786c61554a3e32271b10000814202b37424e5965717c88939fabb3a79c90859097a09f9c928e88827e7b797776757676787a7d81858c91969da4ababa39c938d81786e635c53473e352b20160c020000000006111d2934404b57636e7984909ca7b3ada495897d7266584f453b3022160d04000000000000000000000000000000000000000000000000000000000910181e2327292a302a2927231e17120c050000000000000000000000000b16202b353e474e5457585f6366696b70736e6960554a443a352e292723242226292e353b454f58616b75808c97a0aaaaa097897e72675b4f44362c22170c0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34313a414a555f69707b85909ca1aab0aaa8a2a4a9b1aba19c90857c706960554a443a31333f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3aa9f96908787878787878787878787878788898b8d90959a9ca3a9aeada69f9791867d716b62584f453b30261d120800000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000008141c252d353b43494d50565859595856514b4a453f3730281f160d040000000000000000000000000000020a121820272d313840464a4f5557585f636568696b6c6d6d6d6d6c6b696764615a5856514b47413b352e272119120a0200000000000000000000050f1a242e3740474e525357575757575757564c4a453f382f261c1207000000040e1821293841484e53545757575757564b4a453f372e251b1107000000040e18212a3841494f535557575757575757564b4a453f372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b87939ca7a99f959089848281808080807f73685c51453a2e22170b000814202b37424e5965717c88939fabb4a99f9590959f9e96908a827c7773706b6b6a6a6a6b6a6f71757b80868f939ca2abaca39b918b7f736c62584f453a30251c12070000000007131e2a36414d5864707b87959ea9b3a89d94867b6f64584c41352b211205000000000000000000000000000000000000000000000000000000000000070e14181c1e1e251e1e1c18140e0702000000000000000000000000030e19242f3a454e575e6367696e7175787b7e796e635d5449453e3634322d302d3134373f454a545f686f7b85919ca7b0a89c91867a6f63584c4035291e12080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f2e37414a545d636e79828e959fa9b0a7a09c979aa0a9b5aa9f968f837a6f635d544b42382f3f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c90857b7b7b7b7b7b7b7b7b7b7b7b7c7c7d7f8285898e939c9ea5acafa7a09790857c70685f544a40372c22170b01000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000071019242d353e454c5358596063656564615a57544f47403830261e150b010000000000000000000000000000010810171d222830363c3f454a4c4f5557595c5e5f6161626261615f5d5b5856514c4b47413d37302b251e161008010000000000000000000000000a141d272f373e4346484b4b4b4b4b4b4b4b403f3b362f271f150c02000000000710192830383f4447494b4b4b4b4b4a403e3b352e271e150b01000000000811192831383f4448494b4b4b4b4b4b4b4a403e3b352e271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a3aca49c90857e78767574747474736f655a4f44392d22160b000814202b37424e5965717c88939fabb9afa69f9c9f9e9590857e77716c6764615b5f5e5f596063666a6f747c838e929ca2ababa29c91867c70685f54493f352b21160b000000000914202c37434e5a66717d8894a5aeb2a69b8f84786a61564b4034291d12060000000000000000000000000000000000000000000000000000000000000004090d101213191312100d0904000000000000000000000000000005101c27333e49545e686e73767a7d8083878a80756e645d544e4743403d373b373c4043474f545e636e79828e969faaaca3998d81766a60564b3f34291d12030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f353f47515a636d74808c939ca5aeaaa096918b909aa1aaafa69d938c81756e645b52483f363f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c90857970707070707070707070707071727376797e838990959ca3acb0a79f958f83796e635950463c31251b1106000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000040e172129343d454e555c63656a6f70716f6b67635f58504940372e251b110700000000000000000000000000000000070d13171f262c31363b3f40454a4c4e50525455565656565553524f4d4b4741403c37322d27211b150e060000000000000000000000000000040d161f272e34383b3c404040404040403f3433302c261f170e05000000000000081720282f35393c3d40404040403f3433302b251e160e05000000000000091820282f353a3d3e404040404040403f3433302b251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4a89e94897d726d6a696969696968655e554b41362b1f1409000814202b37424e5965717c88939fabb6b6afa9a79e9590847c736e65635c5857525353535056585a61636c707a828e929ca4adaaa0968f83796e63584f453b30251a0f030000000a16222d3944505c67737e8a96a1adb0a5998d82766b5a51473c31261b1005000000000000000000000000000000000000000000000000000000000000000000020507070d070705020000000000000000000000000000000006111d2934404b57636e787e8185888c8f9491877e726d635e57534d4b47484747474b4c53585f636e74808b929ca6afa79c93887d71665950463c31261b10040000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3b454f58616b717d87919ca3acaba29c9186808b919aa3acada49a91897e726b625850463b3f4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e6464646464646464646464656668686e72777d858e939ca4adafa69d938a7f736a60564b3e352b20160b000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000009131e28313a454e555e656c71777a7c7c7b78736e68605950473e352b20160b000000000000000000000000000000000003080f161c22262c3033353b3f40424547484a4a4b4b4a4948464441403d3834312d27231e16110b0500000000000000000000000000000000060e161d24292d30303434343434343433292825211c150e0600000000000000070f171e252a2e3131343434343433292825211b150e06000000000000000710181f252b2f31323434343434343433292825211b150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586c78838f9ba6a79b8f84786d645d5e5d5d5d5d5c5a554e453c31271c1106000814202b37424e5965717c88939fabb6bfb5aaa09690857c706c645e58534d4b48484747464a4c51565b62696f79818e939da6afa79d938a7e73695f554a3f33281e14090000000c17232f3a46515d6974808b97a3aeafa3978c8075695e5246372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000005101c27333e49545e6879848d9095979b9d9791867e736e68635c5856515353535156585c63686e747f8a909aa2acaaa19a8e82776d63584940372d22170c010000111d28343f4b57626e7985919ca8b3a89c9085796e62564b39414a545f686f7b859097a1abaea59c928b7f75808c939da6afaaa19c90857c706960554a443a4a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62585858585858585858595a5b585f63666d727b828e939da5aeaca39c90857a6f63574e453a2f24190e030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100020d18232d38414a555e656f747d8285888887837e796f6960584f453a30251a0e03000000000000000000000000000000000000060d12171c2125282b30333437393b3d3e3e3f3f3e3e3c3b383535322d2926231d18130e0701000000000000000000000000000000000000060d141a1e22242529292929292929281d1c1a16120c05000000000000000000070e151b1f2325262929292929281d1c1a16110b05000000000000000000070f151b2023262629292929292929281d1c1a16110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f687985909ca8a4988d81756a5d545252525252514f4b453e352c22170d02000814202b37424e5965717c88939fabb6b7aca39c91867d716c625c554c4943403d383c363c3f41474b525960696f7a838f969faaaca39b9084796e63574c41382e23180d0200000c18242f3b46525e6975808c98a3afada2968b7f73685c5145392e2213090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576b76828e999fa6a6a8a09691877f78716c6764615a5f5e5e5a6163676c7179808a8f99a1aaaea59b91887d71655c53493930271d1308000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b414a535d636e79828e959ea8b0a79e948d81786e79838f959fa9b4a99f958f83796e635d544a424a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564d4d4d4d4d4d4d4d4d4e4f4f54575d646b6f7a838f959ea9b4a99f958b7f74685e54493e33271c10050000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110005101b27323d47515a656e747f878e919793938f8a827a6f685f54493e33281d13090000000000000000000000000000000000000003080c12161a1c212528292b2e3031323333333332312f2d2a2927231e1b18130d0904000000000000000000000000000000000000000000040a0f141719191d1d1d1d1d1d1d1c12110f0c07020000000000000000000000050b1014181a1a1d1d1d1d1d1c12110f0b07010000000000000000000000050b1115181a1b1d1d1d1d1d1d1d1c12110f0b07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7a85969faaa2968b7f74685d5147464646464544413c352d251b120800000814202b37424e5965717c88939fabb6b3a89d938b7f746d635b534b453e3935322e302c3134373c424950586069707c85909ca5aea99e94897e72675b52483d32271c100500000d1924303b47535e6a75818c98a4afada1968a7e73675c5044392d22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b3546515d6974808b97a3afb2b0a7a097918b827c77736f6b6b6a6a6a6b6a6f72777d838c9099a0a8afa69e948c81756d63584c433a2820170d03000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b47515a636d74808b929ca5aeaba09790847a6f69707c85909ca1aaafa69d938c80756e645b52484a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b4141414141414142434345494b545a616a707b84909ca4adafa69b8f84796e63574b4034291d11060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110006121e2934404b56616b737f8a91979ca0a49d9b928d81786e63574b41372d23180d02000000000000000000000000000000000000000002070c0f12161a1c1d1f2224252727282827272523211e1e1c1813100d09030000000000000000000000000000000000000000000000000005080b0d0e11111111111111110605040100000000000000000000000000000106090c0e0f11111111111006050300000000000000000000000000000001060a0d0f0f11111111111111100605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a8692a6afa1968a7f73675c50453b3b3b3b3a3936312c251d140b0200000814202b37424e5965717c88939fabb7aca39a8f83796e635c534b433b332f292723242226282d313840485059626b747f8b949ea8aea59a8e83776b61574b4035291e120700000e1925303c47535f6a76818d99a4b0aca1958a7e72675b5044382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000611212c38444f5b66727e8995a6afb9b7b0a7a09c938e88827e7b797776757676787b7e82888f939aa1a8b0a79f9690847a6f635c53493c332a180f0600000000111d28343f4b57626e7985919ca8b3a89c9085796e6256454f58616b717d87919ca3acaba29c91867d716a626b727e89919aa3acaca39a91897e726b62584f4556616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3636363636363637353a3e444a5159626b737e8a949da8b3a89e94887c71655a4e42372b2013090000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110007131e2a35414d58646f7b85919ca1a8abada8a29c928a7e72675a51473d32271b1005000000000000000000000000000000000000000000000104070b0f11121416181a1b1c1c1c1c1b1918151312100d0905020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e73675b5044392f2f2f2e2d2b27221b140c040000000814202b37424e5965717c88939fabb3a89d93887d71685f544c433a322b241f1c1814171b1d222830384049525b636e7a84909ba7b0a79c93877b7064584d41362a1e130900000e1925303c48535f6a76818d99a4b0aca195897e72675b5044382d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b87959fa9b4bfb8b0aba39c9a928e8a8684828281818284868a8e929a9da3aaaea7a09790857c706a60564c43392b2319070000000000111d28343f4b57626e7985919ca8b3a89c9085796e625649545f686f7b849097a1abaea59c928b7f746d635b646e75808c939da6afaaa19c90857b70695f554a56616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342a2a2a2a2a2b2b2b30333a4149525b636e79838f9ba6b2ada4978b8074695d5146372d23180d0200111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000c17232f3a46515d6974808b969faab1b5b7b3aba29a8f83786a61564b4034291d12060000000000000000000000000000000000000000000000000000030506080b0d0e10101111100f0e0c0a070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d232322221f1c17120b04000000000814202b37424e5965717c88939fabb1a89a8f83786d63584f453b332a221a15100d090c0f13171f273038424a556069737f8b97a0abaca3968a7f73685c5045372d23180d02000d1924303b47535e6a75818d98a4afada1968a7e73675c5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca7b3b7afaaa8a7a7a39c9a9695908e8d8d8d8e8f9197999ca3a7acaca59e9791867e726c625950463b33291b12090000000000111d28343f4b57626e7985919ca8b3a89c9085796e6256535c636e78828e959ea8b0a79e958e82786e635c545d636e79838f959fa9b4a99f958e82796e635d5456616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1f202025293139424a545f68737f8a96a4adb1a59a8e82776b5a51473c31261b100500111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000f1b26323d4955606c77838f9aa6afb9c1c2bbb3a89d93867b6f64584c41352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d2118171614110d080200000000000814202b37424e5965717c88939fababa1978a7f73675d53473e352b221a120a0502000104080f171f28303b465058636f7b86919ca8b0a4998d82766b5a51473c31261b1005000d18242f3b47525e6975808c98a3afada2968a7f73685c5145392e22130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6877828e9aa5b1afa69f9c9c9ea5a7a5a59e9b9a999898999b9ca1a8a7acaea9a39c9590867e726d645c534940372b22190a020000000000111d28343f4b57626e7985919ca8b3a89c9085796e62515a636d74808b929ca5aeaba09790847b6f685e544a555f69707c85909ca1aaafa69c938c80756d645a51616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1313131311161a2128303b454f5864707b87949da8b3a79c9085796a61564b4034291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100101c28333f4a56626d7984909ba7b3bec9ccc1b7ada493887d7165594e42372b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060808111111111111111111060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160b0b090602000000000000000814202b37424e5965717c88939faba89c91867b6f64584d43372e251b120901000000000000060f17212c363f4b56616a77828e9aa5b1a79b9084796a61564b4034291d1206000c18232f3a46525d6974808b97a3aeaea3978c8074695d5246372c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576975808c97a3afaa9f969090959ca0a7a9a9a7a5a4a4a4a5a6a8abb1aca8a59e9b938e857d726e645d544b423930271b1209000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6257616a717d87919ca3acaca39c91877d716a61574e454f58626b727e89919aa3acaca39a90897e726b6158616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11070708070b1018212b353f4b57616b78848f9ba6b2a99f95867b6f64584c41352a1e120700111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100101c27333f4a56616d7984909ba7b3bec8ccc1b6aba097887c7065594e42362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba69b8f84786b61564b4033261e150a02000000000000000007121c26313c47515a68747f8b97a2aea99e95867b6f64584c41352a1e1207000b16222d3945505c67737f8a96a1adb0a4998d82766a5950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000010406070c060604010000000000000000000000000000000000000b16202b3544505b67727e8a95a6afa89c9085848c91979c9ea5a5a7a8abb1b0aaa8a6a4a39d9a95908a827c716d645d544d443b322820160a02000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625e686f7b849097a0abaea59c928b80746d635a51473f48525b646e75808c939da6afaaa19c90857b6f685f616d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000007111b25323d48525b6b76828e99a5b0afa693887c7065594e42362b1f140800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000f1a26313d4954606b77838e9aa5aeb7bfc0bab4a89c91867b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba4988d81766a5a51473d3223160d04000000000000000000020c18222d37434f5a66727d8994a0abaea593887c7165594e42372b201408000915202c37434f5a66717d8994a6afb2a69b8f83786a60564b3f34281d11070000000000000000000000000000000000000000000000000000000000000003080d1012121712110f0c08030000000000000000000000000000000006111f2b36424d5965707c87969faaa89c91867b80868c909597999c9ca19ea7a09c9b9996938f8a847f78706b635d544d443c342a22180f0600000000000000111d28343f4b57626e7985919ca8b3a89c9085796e5c636e78828e949ea7b0a89e958e82796e635c534a4138424a545d636e79838f959fa9b4a99f958e82796e635d6d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000010b18232e3847535e6a75818d98a4afab9f94887d71655a4e42372b20140900111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000b17222e3945515c68737f8b959ea7afb4b5b3aaa19a8e82776a60564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba2978b8074685d5146372d231706000000000000000000000008131f2a36424d5964707c87939eaaaca095897e72665b4f44382c21150a0007131f2a36414d5964707b87969faab4a89c91867a6f63584c40352b20160b000000000000000000000000000000000000000000000000000000000000060d13171b1d1e231e1d1b17120d0600000000000000000000000000000006121d2934404c57636e7a85919ca8aaa097887c757c8084898b8e909197929296918f8d8a87837f7a736e68625b534c443c342c231a12070000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e636d747f8b929ca5aeaba19790847b6f685f544c4339313a444a556069707c85909ca1aaaea59c938c80746d636d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000914242f3b46525e6975808c98a3afaba094887d71665a4e43372c20140900111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110006121e2935404c58636f7a8490979fa6a9aaa8a19a90887d71655a51473c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba1968a7f73675c5045392d22130b000000000000000000000007121e2935404c58636f7a86929da9ada1958a7e73675b5044392d21160a0006121d2934404b57636e7a85909ca8b3aba097897d7166584f453a30251a0e0300000000000000000000000000000000000000000000000000000000080f171d222629292e292826221c160f0a040000000000000000000000000005111c28333e4a555f6877838f9aa6b0a7958a7e7370757a7d80828485868787868584827f7c78736f69635e57524a433c342c231c130a010000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6a717d86919ca2abaca39c91877d716b61584f453c332a303b465058626b727e89919aa3acaca39c91877d716b6d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000001091924303c47535e6a76818d98a4b0ab9f94887d71655a4e42372b20140800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110006111d28343f4a56606a717d8690969c9ea09c99908b80746d63584940372d22170d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba1958a7e72675b5044392d21160a000000000000000000000006121d2934404c57636e7a86919da8ada1968a7f73685c5045392e22160b0005111c28333e4a545f6877828e99a5b1b0a7978c8075685f54493e33281f140a000000000000000000000000000000000000000000000000000000060f1820272d3134353a3534312c261f17140e08030000000000000000000000030f1a25303b454f586a75818c98a3afa3988c817569696e727477797a7b7b7b7b7a787673706c67636059544e47423a332b231c130b03000000000000000000111d28343f4b57626e7985919ca8b3a89c908579686f7a849097a0abaea59c938b80746d635a51473f352b212c363f48525b646e75808c939da6afaba19790847b6f687884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000107111c27323d48525b6b77828e99a5b1afa693877c7065594e42362b1f140800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100040f1b26313c465059636d727e858c909596918e8880786e635c53493930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba1958a7e72675b5044392d21160a000000000000000000000006121d2934404c57636e7a86919da8ada1968a7f73685c5045392e22160b00030f1a25303b454f5868747f8b97a5aeb2a79b9084796e63574b42382e2418100600000000000000000000000000000000000000000000000000030d17202830373c3f4146403f3c363028231e17120c0600000000000000000000000b16212b3544505c67737e8a96a7b0a69a8e837768606366696b686e6f70706f6e686a6864625b57555049453e36312a231b130b0300000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e78828d949ea7b0a99e958e82796e635d544a41372e251c262f38424a545d636e79838f959fa9b1a89e958e82796e7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11080809080b1118222a35404c57626b78848f9ba7b2a99f95867b6f63584c4135291e120700111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100010c17222c364049535c636d727b8184868785827d746e685e544c43392820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba1968a7f73675c5045392d221309000000000000000000000007121e2935404c58636f7a86929da9ada1958a7e73675b5044392d21160a00000b16212b35424e5a65717d88949ea9b4a99e94887d71665b52483e332820170d0300000000000000000000000000000000000000000000000108131d27303940474b4c514c4a464038322e28221c160f070200000000000000000007111f2b37424e5965717c8897a0aba89c90857a6e63575a5d585f6363646463635f585c5957524c4a46403a352e262119120b030000000000000000000000111d28343f4b57626e7985919ca8b3a89c908579737f8b929ca5aeaaa19c90857b6f685f554c433931271e161f27313a444a556069707c85909ca1aaaea59c928b80747884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1414141412171b2029303b46505864707c87949ea8b3a79c9085796a61564b4034291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000008121d263038434c545d636b6f75797b7b7a76716d635e574e453c332a180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba2978b8074685d5146372d23180d020000000000000000000008131f2a36424d5964707c87939eaaaca095897e72665b4f44382c21150a000007111d2934404b57636e7984909ba7b2aea5998d82766c62574c443930271d1308030000000000000000000000000000000000000000000109121a222d3740495156585d57555049443d38312c261f17130b02000000000000000006121d2935404c57636f7a85919ca8aa9f96877c7064594f514f54575858585857544f504d4c48423f3b362f2b251e16110902000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085797d86919ca2abaca39a90897e726b61584f453c332920160e17212a303b465058626b727e89919aa4adaca39c91877d7884909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281f1f1f1f202122252b3039414a556069737f8a96a4adb1a59a8e82776b5a51473c31261b100400111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000030d161f28333c444c545a6164686e6f6f6e6965635c544e473e352b2319080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba4988d81766a5a51473d32271b1005000000000000000000010915202c38434f5a66727d8994a0abaea593887c7165594e42372b1f1408000005111c28333e49545f6875808c97a3acb4a89c91877c70655d544940372d221c1307020000000000000000000000000000000000000002091119222b313c47515a606368636059544c48423c363028231b1309000000000000000006111d28343f4a55606978838f9ba6afa695897e72675b4f4645494b4c4d4d4c4b4a454542413d3834312c26201b140d050000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857a848f96a0aaafa69d938c80756d645a51483f352c231910061119212c363f48525b646e75808c939da6afaba09790847b84909ba7b2a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342b2b2b2b2b2b2c2c31353a424a525b636e7a848f9ba7b2ada4978b8074685d5146372d22180d0200111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000060f18232b333c444a5156585f636464635f58585349453e362e251b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba69b8f84786b61564b4034291e150b01000000000000000007111b26313c47515a68747f8b97a2aea99e95867b6f64584c41352a1e12070000030e1a25303a454f5865707c88929ca7b2aba1978e82766d635a51473c312c241c120c05000000000000000000000000000000000004091219212a323b434b56606a6f746f69645d57524a464038332b231a100600000000000000040f1a26313b4650596a76818d98a4aea3978c8074695d52463a3e4041414141403e3b353635332e2826211c16110b04000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085828d949ea7b0a99f958f83796e635d544a41372f251b13080007121c262f38424a545d636e79838f959fa9b0a79e958e8284909ba7b3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3636363636363738363b3e4549525a626c737f8a949ea8b3a89d94887c7165594e42372b1f13080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000007121b232c333a41474b4f5457585857554f4d49433a352e261e140a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89c91867b6f64584d43372e251b110701000000000000060f18212a34404b56616a77828e9aa5b1a79b9084796a61564b4034291d12060000000b16202b353e4c57626c77828e9aa3acb1a89c92897d726a61564b453d342c211c150e08020000000000000000000000000002070e131a222a323a434b545e636f7a7f7a726e64625b555049433c332a20160b00000000000000010c17212c3645515c68737f8a96a2ada5998e82776b5a51473d3334353636353433302b2a2a27241f1a17120c060f0e0c0905010000000000000000000000111d28343f4b57626e7985919ca8b3aa9f96908d929ba4adaaa19c90857c70695f554d443a31271e150b0200020c161f27313a444a556069707c85909ca1aaaea59c928e90949ea9b3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564b42424242424242424344464a4f545b626a707c85909ca4adaea59b8f83786c63584c41362a1f13030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000020a131b232931383d3e45494b4c4d4c4a453f3e392f2b251e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fababa1978a7f73675d53473f352b211a110b0402000104090f171f28303b465059636f7b86919ca8b0a4998d82766a5a51473c31261b100500000007111b25333e48535c66717d89939da7b3aba29b90847a6f635f564d443d302c261f17120c080401000000000000000104080c12161d232b333a424b535c646e76818b847e77706b636059544c433a2f251a0f04000000000000000812202c37434e5a65717d8894a4ada79c9084796b61574b403529292a2a29292825211f1e1c19141c1c1c1c1c1a191714100b0500000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c999ba2abada49a91897e726b62584f453c332921160e05000000050e17212a303b465059626b727e89919aa4adaca39c999b9ea5aeb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e62564e4e4e4e4e4e4e4e4e4f505055585f636c707b848f959fa9b4a99e958a7f73685c53493e33281d11060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000020b131921282d32353a3e404141403f3b36332f29201b140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb1a89a8f83786d63584f453b302a201b14100d090c0f131820273038404a556069737f8b97a0abaca3968a7f73685c5045372d23180d02000000010b19242f39424d58636d77838f9aa1abb4a99e948d81766f655e544d453b362f27221c17130f0c080908080809070c0f12171c21272d323b434a525b636c727e8a919089827c746f69635d54493f34291d12070000000000000007121e2935404c58636f7a86949da8a99e95877b6f64584d41362a2828282828282828282828282828282828282625231f1a150e07000000000000000000111d28343f4b57626e7985919ca8b3b6afaaa8a4a6abafa69d938c80756e645b52483f362c231910060000000000061119212c363f48525b646e75808c939da6afaca7a5a7a9aeb5b3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e625959595959595959595a5b5b596063686e727c838f949ea6afaca39c90847a6f63574c43392f24190e030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000020810171e23252b30333435363433302c26241f16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb3a89d93887d71685f544a433b2f2b251e1c1814171b1d232830384049525b636e7a84909ba7b0a79c93877b6f64584d41362a1e130900000000000a151f29343f49545d65717d88919ba5aeaea59b928b7f746e645d554a453f38312c26221d1b1712141413141412171a1d21262c30373d444c535b626b717d85909c9b928e86807a716d63584d42362b2014080000000000000006121d29343f4b56606a78848f9ba7aea595897d72665b4f43383333333333333333333333333333333333333331302e2a251e170f070000000000000000111d28343f4b57626e7985919ca8b3bfb9b5b3b0b1b5aa9f968f83796e635d544a42382f261b13090000000000000007121c262f38424b545d636e79838f969faab5b2b1b3b4b8beb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c9085796e6565656565656565656565666769696f73797e858f939da4adaea59c938a7e736960554a3f32291f150a000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000000000070e13181b202528292a2a292825211c1a1510060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb7ada49a8f83796e635c534b433a352e292723242226282d313840485059626c747f8b949ea8aea59a8e83776b61574b4035291e12030000000000050f1a252f3a434d58636d75818d959ea8b1aba299908a7e726e655e554f48423b36312c28262221201f1f1f20212125282c31363b41474b545c636b707c8490969fa29c96918b847d71665a4f43372c2015090000000000000004101b26313c4650596a76828d99a4aea2978b8074685d5146373f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d3c39342e2720170e0500000000000000111d28343f4b57626e7985919ca8b3bfc3c0bfbcb4aaa19c90857c706960554d443a31271f150b0200000000000000020c161f27313a444a556069707c85909ca1aab4bcbebfc2bfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c908579707070707070707070707071727374777a7e838a90969da4adafa79e958e82786e635950463b3122190f05000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100000000000000000004090b11161a1c1d1e1e1d1c1a16120c0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb6b3a89d938b7f746d635b5349453e3635322e302c3134373c42495058606a707c86919ca5aea99e94897e72675a51473d32271c10050000000000000b16202a333e49535c646f7b859097a1abb6a9a09c91867e736e635f58524a46403c3734312c2c2b2b2a2b2c2c2c3033363b3f454a51565e646c717c848f959ea6aca7a09c91867c7165594e42372b20140800000000000000010c17222d3745515d68747f8b97a2aea5998d82766b5a51474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4847443e3830271e150b01000000000000111d28343f4b57626e7985919ca8b3bfcbc9bfb7ada49b91897e726b625950463c342a21170e05000000000000000000050f17212a303b465059626b727e89919ba4adb6bfc9cabfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3a89c90857c7c7c7c7c7c7c7c7c7c7c7c7c7d7e8083858a8f949c9fa6adafa79f9690847b6f685e544840362c22120900000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000001070b0e1111121312110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb6b7ada49c91867d716c635c544e4743403d383c373c3f41474b525960696f7a838f969faaaca39b9084796e63574c41382e23180d0200000000000006101a242f39434b56616a727e87919ca3acb5aaa09691877f756e69625b55504b46403f3c3738373636363738363b3f40464a4f555a61646e727d848f949ea5aeaea59c938b80746c63584d41362a1f130800000000000000000813202c38434f5a66717d8994a5aea79b9084786a615656565656565656565656565656565656565656565654534e4840382e251a1005000000000000111d28343f4b57626e7985919ca8b3bfcbc4b9afa69d938c81756e645b52483f362c231911060000000000000000000000071119212c363f48525b646e75818c939da6afb9c3cabfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3aa9f969087878787878787878787878788898a8b8e91969b9da4aaafada69f9791867d716b61574e45382f261c120100000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000000000003050607070605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fabb6bdb5aaa09690857c716c635e57534d4c48484747464b4c51565b626a6f79828e939da6afa79d938a7e73695f554a3f31281e140900000000000000000b151f29313c47515a646d74808c929ca3acb0a7a097918a8079706c63605956504c4b46454342424242434345464a4c5055585f636a6f767e8690959ea4adafa69e958e82796e635c53493e33281d1106000000000000000007131e2a35414c58646f7b86959ea9a99e94867b6f6361616161616161616161616161616161616161616161605e5851483e342a1f1409000000000000111d28343f4b57626e7985919ca8b3bfc5bdb5aa9f968f837a6f635d544b42382f261c13090000000000000000000000000107121c262f38424b545d636e79838f969faab5bbc4bfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3afa69f9c939393939393939393939393949495979a9ca0a7a8adb0aaa49d9590867e726d635a51473e35281f160c0200000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2326292a35414d58646f7b87929ea9a195897e72675b4f44382d21160a00000000000000000000000814202b37424e5965717c88939fabb6b6afa9a79e9590857d736e68635c5857525353535056585a61646c707a828e929ca4adaaa0968f83796e63584f453b3021180e040000000000000000061018232d37414a545d636e79828e939da4adb0a7a09c918c827c746f69636059585650514f4e4e4d4e4e4f50505557596063696e737b818a91969ea5adb0a79f9690857c70685f554c43392f24190e03000000000000000006121d2934404b56616b7984909ba7aea594887d716d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6b6861584e44392e23170c010000000000111d28343f4b57626e7985919ca8b3bfbdb4aba29c90857c706960554d443a32271f160b0300000000000000000000000000020c161f27323a444a556069707c85909ca1aab4bdbfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3b7afaaa89f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a3a5a8aab0b0aba7a09c938f857d726d645c534a41362e25170f060000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000000000000000000000000000000000000000000000000000000000000000000000030506080a0c0e0f101111100f0e0d0a080605030000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d32343536424d5964707b87939eaaa095897d72665b4f43382c21150a00000000000000000000000814202b37424e5965717c88939fabb9afa69f9c9f9e9590867f78716c6764625b5f5e5f596063666a6f757c838e929ca2ababa29c91867c70685f54483f352b2110070000000000000000000009131d273039444a555f686f7a838f949da4acb0aba19a938e86807a746f6a666360595c5b5a5959595a5b5c59606366696f73797f858d929c9fa7aeafa7a09690857d716b62584f453b33291f150a00000000000000000005101b27323d47515a6b76828e99a5ada2968b7f7979797979797979797979797979797979797979797979797772685e53473c3025190e020000000000111d28343f4b57626e7985919ca8b3bfb7ada49b918a7e736c625950463d342a21170f05000000000000000000000000000000050f17212a303b465059626b727e89919ba4adb6bfb3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8b3b5b9b5b3aaaaaaaaaaaaaaaaaaaaaaaaabacacaeb1afada8a7a09c97918c837c716d645d544c433a31261e1407000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11000000000000000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1c1b1a18161412110f0b07030000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202931373c404148464e5a65717c88949fafa694887d71665a4e43372c20140900000000000000000000000814202b37424e5965717c88939fabb4a99f9590959f9e96918a827c7773706b6b6a6a6a6b6a6f72767b80868f939ca2abaca39b918b7f736c62584f45372f251c120000000000000000000000030d172029303b454f58606a6f7b838f939ca3abb5aaa39c96918b847f7a76726f6a696866656564656666676a696e72767a7f848a90959ba2aaafada69f9791867d716c635b52483f352b22190f05000000000000000000020d18232d3746515d6974808b97a3aea89c908584848484848484848484848484848484848484848484848482776b6054483d31261a0f030000000000111d28343f4b57626e7985919ca8b3b9afa79d948d81766e645b524840362c241911070000000000000000000000000000000000071119212c363f48525b646e75818c939da6afb9b3a79c9085796d62564b3f33281c1100111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaea9a7a6a4a49d9b97918d868079706c635d544d443c332921160d04000000000000111d28343f4b57626e7985919ca8aaa89c9085796e62564b3f34281c11000000000000000000000000000000000000000000000000000000000000030a0b1116191c1d1f2224252727282827262624221f1d1c1a16120f0b07020000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27313941474b4c5450555c67737e8a96a1aa9f96877c7064594d42362a1f130800000000000000000000000814202b37424e5965717c88939fabb3a79c90859097a09f9c928e88827e7b797776767677787a7d81858c91979da4ababa39c928d81766f655b52473e35271e150c020000000000000000000000071018212b353f485059616a6f7b838e939ba2aab0aca7a09c95908b85817d7a777573727170707071727375777a7d81858a90949c9fa5abb4aba49d9590867e726d635c534a42372f251a120900000000000000000000000913212c38444f5b66727e8995a6afaa9f969090909090909090909090909090909090909090909090908f83786c6155493e32271b0f040000000000111d28343f4b57626e7985919ca8aaaaaa9f968f837a6f635e554b42382f261c13090100000000000000000000000000000000000107121c262f38424b545d636f7a838f969faaaaaaa79c9085796d62564b3f33281c1100111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea59e9c9a9896948f8c86817c756e69625b544c443c332b2319100500000000000000111d28343f4b57626e7985919c9e9e9e9c9085796e62564b3f34281c1100000000000000000000000000000000000000000000000000000001070b0e151a1b202427292a2d2f31323333333332312f2d2b292825211c1a16110c0702000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a5156585f5860636c76828d99a4a89c91857a6e63574c4034291d120600000000000000000000000814202b37424e5965717c88939fabaca094897d87919ca1a39c9a938e8a878483828181828485898d90969ca0a7adaba29c928e82796e635e554b42372e25170e050000000000000000000000000007111b252f374049515a616b6f7a828d929ca0a7adb0aaa59e9c96918d898683817f7d7c7c7b7c7d7d7f818385898d90959b9ea5a9aeaea9a29c948f857d726e645d544b433a31271e150a02000000000000000000000007131f2a36414d5964707b87959fa9afa69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f83786c6155493e32271b0f040000000000111d28343f4b57626e7985919c9e9e9ea29c91867c706960554d453a32281f160c0300000000000000000000000000000000000000020c161f27323a444a556069707c85909ca19e9e9e9c9085796d62564b3f33281c1100111d28343f4b57626e79859193939393939393939393939393939393939393929295908f8d8a8784807b76706b636059524b433c332c231b12080000000000000000111d28343f4b57626e79869193939393939085796e62564b3f34281c110000000000000000000000000000000000000000000000000000040b11161a1f24252b2f333436393b3c3e3e3f3f3e3e3d3b39373433302b2825211b16120c050000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a61646b6b696e727c86919ca8a59a8e8277695f554a3f33281c110500000000000000000000000814202b37424e5965717c88939faba89d9186797f8a91979ea5a39c9a9695908e8d8d8d8e8f9197989c9fa6aaada8a19c928d827a6f6960554e453b32261e15060000000000000000000000000000020c151e273038414a515a616a6f7a818a91969da4aaafaea9a69f9c9997918f8c8b898888878888898a8c8f9196989c9fa6a9aeb2aba59e9c928d837c716d645d544c433b322a21160e0500000000000000000000000006111d2934404b57636e7985909ca7b3afaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a69b8f83786c6155493e32271b0f040000000000111d28343f4b57626e7986919393939393918a7f736c625950463d342a22170f06000000000000000000000000000000000000000000050f17212a313b465059626c727e8a9193939393939085796d62564b3f33281c1100111d28343f4b57626e798687878787878787878787878787878787878787878786868483817f7c7874706b64625b555048423b332c231b130a020000000000000000111d28343f4b57626e79868787878787878785796e62564b3f34281c1100000000000000000000000000000000000000000000000002070d151b2025282f33353a3e4042444648494a4b4b4a4948474442403f3b3533302b25211c150e0803000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a6f7777787a7e849097a0a69e948a7f7367584f453b30251a0f0400000000000000000000000814202b37424e5965717c88939faba89d91867a737f8790959ba2a7a5a59e9b9a999899999b9ca0a7a8aaaea9a49d97918b817a6f69605850463e352a22160d04000000000000000000000000000000050e1620283139414a515a61696f767f868f939c9fa6aaafafaaa8a7a09c9a98969594939393949596989a9c9fa6a7a9afb3aba7a29b959089817a706b635c544d443c332b221911060000000000000000000000000005101c27333e49545e6877828e9aa5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa69b8f83786c6155493e32271b0f040000000000111d28343f4b57626e79868787878787878781766e655c534940362d241a11070000000000000000000000000000000000000000000000071119212c364048525b646e75818787878787878785796d62564b3f33281c110008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7b7a79777573706c6964625b57524a463f38322a231b130b0200000000000000000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7064594d41362a1f13080000000000000000000000000000000000000000000000050c12161e252b3033393e3e45494b4d5052545556565656555452504e4c4a45403e3b35302b251e17130d070000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b828283858990959ea59e9690847a6f63574c40362c21160c0100000000000000000000000814202b37424e5965717c88939faba89d91867a6e737d848d919a9ca3a7a9a7a5a4a4a4a5a6a8abb0aba8a59e9b938f8780786f69605950483f362d251a11060000000000000000000000000000000000060f182029313a4149515960636f737d838b90969c9fa7a9aeb3b0aba8a6a3a2a09f9f9e9f9fa0a1a4a6a8aaafb3afaaa8a29c99918d847e766f6a625b534c443d342b231a12090000000000000000000000000000030e19242f3a454e576975808c979e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9b8f83786c6155493e32271b0f04000000000008131f2a36414d5964707c7c7c7c7c7c7c7c7a6f635e554b423830261c14090100000000000000000000000000000000000000000000000108121c262f38424b545e636e797c7c7c7c7c7c7c7c7064594d41362a1f13070007121e2a35404c57626b707070707070707070707070707070707070707070706f6f696c6a6765625b5857524c48423b362f27221a130b020000000000000000000007121e2a35404c57626b7070707070707070706b62574c40352a1e120700000000000000000000000000000000000000000000060e151c21262e353a3e43494d4e5457595b5e5f616162626160605e5c5957554f4c4a453f3b352f27221d17100802000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b878e8f91969b9ea29b9590867d716960554a3f34261c12070000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6d717b81888e93989c9fa6a4a6a7a7a7a7a6a4a7a09c9994908a837d746e686059504940382f261d140a0100000000000000000000000000000000000007101821293139414950555e656c71797f858c91969c9ea5a7a9afb0b1afadacabaaaaaaabacadafb1b0afaaa8a69f9c98928e88817b726e63615a524b433c342c241b130a010000000000000000000000000000000b16202b3544505b67727e8a93939393939393939393939393939393939393939393939393939393938f83786c6155493e32271b0f04000000000007121e2a35404c57626b70707070707070706f6960554e453b32281f160c0300000000000000000000000000000000000000000000000000020c161f28323a444a5560696e70707070707070706b62574c4035291e12070005111c27323d48525b6264646464646464646464646464646464646464646464646360595e5c5957524d4c48423d38302c261f17110902000000000000000000000005111c27323d48525b62646464646464646464625b52483d32271c11050000000000000000000000000000000000000000000810171e252b30373e45494b5358575e636467696b6c6d6d6d6d6c6b696765635f5857554f4a453f37312d272018120a020000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87929a9c9fa6a69b918d847d716d635950463b3126150c020000000000000000000000000814202b37424e5965717c88939faba89d91867a6e636b6f767d83888d909596999a9b9c9c9b9a999797918e89847f79716c635e575049403830271f160c0400000000000000000000000000000000000000000810192129303840464a555c63696e737b80858b9095989c9fa6a4a6a8aaafababacababb0aaa8a6a4a69f9c9996918d88827c766f6a645d565149423a332b241c130b020000000000000000000000000000000006111f2b36424d5965707c8787878787878787878787878787878787878787878787878787878787878783786c6155493e32271b0f04000000000005111c27323d48525b62646464646464646463605950463d352a22170f06000000000000000000000000000000000000000000000000000000060f17212a303b46505860636464646464646464625b52483d32271c110500030e19232e38424b5257595959595959595959595959595959595959595959585857555053504d4c4842403d38322e28211c160f0701000000000000000000000000030e19232e38424b525759595959595959595957524b42382e23190e03000000000000000000000000000000000000000009111920272f353b43474f54575c6365686e70737576787879797878777573716e6966635f58554f48443c373029221a130b0300000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87929ea8aaafa4998d817a716d635c534840362c22170b010000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6361646d71777c8185888b8d8f8f90908f8f8d8b8986827e7a736e69635c544e47403830281f170e0500000000000000000000000000000000000000000000081018202830363c454b53585f636b6f757b8084898d909596999a9c9fa69fa0a0a09fa7a09c9b999696908e8a85817c77716c63615a544b474039322a231b130b03000000000000000000000000000000000006111d2934404b57636e787c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e1307000000000000030e19232e38424b525759595959595959595755504840362d241a1107000000000000000000000000000000000000000000000000000000000007111a212c363f48505557595959595959595957524b42382e23190e0300000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4c4a46474542413e3935322e28231e17120c050000000000000000000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4c48423a32281e140a0000000000000000000000000000000000000000091119212931373f454a53585f63676c7175797c7e808283848485848382817e7c7a75716e68635f58544b474139332b231b130c03000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87929ea1a5a7a89c918680796f6a60564b443a30251a0b010000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63575c63656c71767a7d7f8183848484848381807d7a76726e696360585349453e3630281f170f060000000000000000000000000000000000000000000000000810171f262c313b43484f555a61646a6f74797d8185888a8d8f90969393949494949397918f8d8b8885827e7a75706c65635c565149443c3730282119120b0300000000000000000000000000000000000005111c28333e49545f686e70707070707070707070707070707070707070707070707070707070707070706b62574c4035291e1207000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4c4a4640382f261c140a0100000000000000000000000000000000000000000000000000000000000107121c262f383f464a4c4d4d4d4d4d4d4d4d4c48423a31281e1409000000040e18212a32383d404142424242424242424242424242424242424242424141403f3b36393635332e2927231e19140e070200000000000000000000000000000000040e18212a32383d40414242424242424241403d38322a21180e0400000000000000000000000000000000000000081119212a313941484f555c63686e72777d8084878a8c8e8f9090908f8f8e8c8a8885817d79736e69645d565149433b332c241c130a020000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b879294969a9ca3a096918c837a6f635d544a3f34251b11060000000000000000000000000814202b37424e5965717c88939faba89d91867a6e635753585c6365696e7174767778797978787674726f6a67636058555048433a352e261f170f070000000000000000000000000000000000000000000000000000070f161c222b32373f454a51565a6164696e7176797c7f8183858687888889898888868583827f7d7a76736f6a65625c58534b474139312d27201811090200000000000000000000000000000000000000030e1a25303a454f585f636464646464646464646464646464646464646464646464646464646464646464625b52483d32271c100500000000000000040e18212a32383d404142424242424242403f3b362f281f160c0400000000000000000000000000000000000000000000000000000000000000020c161f272f363b3f404242424242424241403d38312a21180e040000000008111921282e323536363636363636363636363636363636363636363636353534312c2d2b2a28241f1c18140e0a040000000000000000000000000000000000000008111921282e323536363636363636363635322e282119110800000000000000000000000000000000000000061019212a313a424a51585f636c71797e83888c90959598999b9b9c9c9b9a9a989695908c89847e79726e63615a534c443c342c241b12090100000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b8787888a8e9299a0a09c938e82776d64594d3e352b20160b0000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4d5358585f6366686a6c6d6d6d6d6c6a69666360595755504a463f382f2b251e160f0700000000000000000000000000000000000000000000000000000000060c121a22272f353b41474b5156585f6366686e70737678797b7c7c7d7d7d7d7c7b7a787674716f696763605957534c49433c373029221d171008010000000000000000000000000000000000000000000b16202b353e474f5457595959595959595959595959595959595959595959595959595959595959595857524a42382e23180d02000000000000000008111921282e323536363636363636363534312c261f170f06000000000000000000000000000000000000000000000000000000000000000000050e171f262c303334363636363636363635322e28211911080000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29282622221f1e1c1914100d0904000000000000000000000000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a27231e18110901000000000000000000000000000000000000050e172029313a424a525a61696e747d83898f93989b9ea5a3a5a6a7a7a7a7a6a5a3a69f9c9894908a847e766f6a635c544c443d342b2319110600000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e797c7c7d7e828b8f99a3a39c92897d7266574e453a2f24190e0300000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c43494d4f55575a5d5f6061626261605f5d5a5856504c4a463f3b362f27201b140d05000000000000000000000000000000000000000000000000000000000000030812171e252b30383d41474b4f5557585f6365686a6c6a6f707171727171706f6e686b68666360595856504c48423e39312d272018130d06000000000000000000000000000000000000000000000007111b252e373e45494b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a31281e1409000000000000000000010911181e23272a2a2a2a2a2a2a2a2a292826211c160f070000000000000000000000000000000000000000000000000000000000000000000000060e161c212528292a2a2a2a2a2a2a2a2927231e1811090100000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1d1a17121313110e0a050200000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1e1c19140e0801000000000000000000000000000000000000020c151e273139424a525b626b6f7980878f939a9da3a7a9aeaea9a7a6a5a5a6a7a8abafa9a7a59e9b948f89817a716c645d544d443c332a21160e05000000000814202b37424e5965717c88939faba99d92867b6f63584c4135291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f696e70707173777f8b939da8a2998d8276685e54493e33271c100500000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c403e3f454a4c4e515355555656565553514f4c4b46403f3b36302c261f17110b04000000000000000000000000000000000000000000000000000000000000000001060e151c21282d32373d3f454a4c4f5457595c5f5a61646565666666656564635f585d5a5755504c4b46403e39332f29221d17100803000000000000000000000000000000000000000000000000010b151e262e353a3e404242424242424242424242424242424242424242424242424242424242424241403d38312a21180e040000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1d1d1a17120c0600000000000000000000000000000000000000000000000000000000000000000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1e1c19140e0801000000000000000000040a0e1112131313131313131313131313131313131313131313131212110f0c08080706030000000000000000000000000000000000000000000000000000000000040a0e111213131313131313131312110e0a04000000000000000000000000000000000000000007121c252f37414a525b626b707b828c91979da3a8aca9a7a3a59e9b9a9a999a9b9ca1a8a7a9aea8a49e9b918d847d726d645d544c433a31271e150c020000000814202b37424e5965717c88939fabaa9e92877b7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f63656565676f77838f9aa6a79c9084796e63574b4034291d110600000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035353b3f40434547494a4b4a4a49484643403f3c3733302c26211c160e06010000000000000000000000000000000000000000000000000000000000000000000000050c12161e23272d32353b3f40454a4b4e505351565859595a5a5a5a595857554f514e4c4a46403f3c37332f29241f18130d07000000000000000000000000000000000000000000000000000000040d161e252b303334363636363636363636363636363636363636363636363636363636363636363635322e282119110800000000000000000000000000040a0e1112131313131313131312110f0c080200000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112131313131313131312110e090400000000000000000000000000030507080808080808080808080808080808080808080808070706060401000000000000000000000000000000000000000000000000000000000000000000000000030507080808080808080808070503000000000000000000000000000000000000000000040d16212b353f48515a626b707c848e939ca1a8aca9a59f9c989495908f8e8e8f8f9197979b9ea5a8ada8a29b9590867e726e645c534b42372f251b11070000000814202b37424e5965717c88939fabaa9f93887c7065594e42362b1f1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f484f555759595a5e68747f8b96a2a99f95877b7064584d41362a1e130700000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40352b303334373a3c3e3e3f3f3e3e3c3a383534312c2825211c17120c05000000000000000000000000000000000000000000000000000000000000000000000000000002070e13181d23252b3033353b3e40424547474b4c4d4e4e4f4f4e4e4d4c4a454543403f3b3634312c26241f19150f08030000000000000000000000000000000000000000000000000000000000060d151b202528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18110900000000000000000000000000000000030507080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080808080808070705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e26303b454f58616a707c848f949ca3abaaa59e9b95908c898684838282838486888b90949b9da4aaaba59e9690867e726d635b52483f352b21160e0400000814202b37424e5965717c88939fababa094897d71665a4f43352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f373f454a4c4d4d4f5a66717d8994a0aea594887c71655a4e42372b20140900000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035292528292c2e30323333333332302f2c292826221d1a17120c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13181c2125282b3033343639373c40414242434343434241403e3b35373534312c2826221d19150f0a050000000000000000000000000000000000000000000000000000000000000000040b11161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f111111111111111111111111111111111111111111111111111111111111111111111111111111110f0e0c090601000000000000000000000000000000000000000000000000000002040607111111111111111108070603000000000000000000000007111b252e373e4a555f696f7b838f959da4acaba19b95908a85817d7b7977777777787a7d8084898f949ca0a7aea69f9791867d716b62584f453b30281e140900000814202b37424e5965717c88939fabaea2968b7f7468574e453a2f24190e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f353b3f4042424d5964707c87939eaaa095897d72665b4f43382c21150900000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1c1d2023252627282827262523201e1d1b17120f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c12161a1c212528292b2e2d31343536373738373736353433302b2c292826211d1b17120d0a05000000000000000000000000000000000000000000000000000000000000000000000001070b0e1111131313131313131313131313131313131313131313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a1a1814100b05000000000000000000000000000000000000000000000003080d1012121d1d1d1d1d1d1d1d1313110e0a050000000000000000000b16202b353e47535c636e79828e949da5ada7a09c918c847f7a75726f6a6c6b6b6c6a6f7174797e838b91979ea5aea7a09690857c70685f554a41382e23180d02000814202b37424e5965717c88939fabb0a5998d8276685e54493e33271e150c04030506080706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252b30333436414d5864707b87929eaaa195897e72675b4f44382d21150a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12121417191b1b1c1c1c1b19171512110f0c0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f11161a1c1d1f222326292a2b2b2c2c2c2c2b2a29282521201d1d1a17120f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000030506080808080808080808080808080808080808080808080808080808080808080707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929292929292929292929292929292929292929292929292929292929292929292625231f1b150e07000000000000000000000000000000000000000000070d13181b1d1e29292929292929291f1e1c19140f0801000000000000030e1a25303a454f58636c74808c939ca4ada7a097918a817a736f696663615a606059606365686e72797f8690959ea5aea79e958f83796e635b52483d32271c1005000814202b37424e5965717c88939fabb3a79c9084796e63574b42372f251c130e0e1011141212100d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c2125282a35414d58646f7b87929ea9a1958a7e72675b5044382d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206090b0d0f101111100f0e0c09060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0f11121413181b1d1e1f20202020201f1e1d1c1a161112110f0c0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d313334343434343434343434343434343434343434343434343434343434343434343434343434343431312e2a251e170f07000000000000000000000000000000000000000810171d2226292934343434343434342b2a27241f18110901000000000005111c28333e49545f68717d87919ca3acaaa09791867f756f6a6360595856515454505658585f63686e747d8490949ea6aea59d938b7f736b61574b4035291e1207000814202b37424e5965717c88939fabb4a99e95897d71665b52483f352b231d19191c1d1f1e1d1b18130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000002040405050404020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608090d101212131414151514141312110f0b0706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060808111111111111111111060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000030607081111111111111111110707050300000000000000000008121b232b32383c3f3f40404040404040404040404040404040404040404040404040404040404040404040404040403d3c39352f2820170e05000000000000000000000000000000000007101820272d31343540404040404040403635332e29221a1108000000000006111d2934404b57636e79838f97a1ababa19c91867e736e63605955504c4b474848464a4c4f54585f636c717c8490969fa69f9c9490857b7064584d41362a1e1307000814202b37424e5965717c88939fabb8aea5998e82766c62584f453b322d27242427292b2a2926231d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070808090909090807060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1c1211100c080300000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131d1d1d1d1d1d1d1d1d1312110e0904000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4947443f3830281e150b01000000000000000000000000000000030d17202930373c404b4b4b4b4b4b4b4b4b42413e38322a22180f0500000007121d28333e49535c67727e89939da8aea59b918a7f736e645e56504a46413f3c37363c3f4045494f555c636c707c85909c9c96908b847e786e63574b4034291d1106000814202b37424e5965717c88939fabb6b4a89c91877c70695f554a453d37332e2f3334373534322d27201810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f15191d1f1f2929292929292929281e1d1b17130d060000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f2929292929292929281f1e1c19140e08010000000009131e28323c444c525557575757575757575757575757575757575757575757575757575757575757575757575757575754534e4841382f251b100600000000000000000000000000000008131d27303941474b5757575757575757574d4c48423b32291f140a00000008141f2b36424d58636d78838f9aa3aca99e948d81756e655d554b46403b3634312d2c3134353a3f454a535b626c727e8992918d85807a736e685f54493e33281c1105000814202b37424e5965717c88939fabb6b6aba1978f83796e635e554b47413e393a3e404241403c37312920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606070707070707070606040100000000000000000000010a12191f24282a2b343434343434343434292826221d160f070000000000000000000000000000000000000000000000000000000000000000010911181f24282a2b3434343434343434342a2927231e181109010000000c17222d38424c555c61626363636363636363636363636363636363636363636363636363636363636363636363636363605e5851483f352a1f14090000000000000000000000000000020d18222d37414951566263636363636363635957524b42382e24190e0300030e1a25303a454f5865717d88939da8aea59b90847a6f635e554d453c37312c2926222226282b30353b434b525b646e76818d86817b746f69635f584f453a30251a0e03000814202b37424e5965717c88939fabb6b7b0a89d938b80746e655e56514c484845494b4e4c4b47413931271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f11121212121212121212110f0c0803000000000000000009121a22292f33363640404040404040403f3534312c2720180f060000000000000000000000000000000000000000000000000000000000000008111a22292e3335364040404040404040403635322e28211911080000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23180c000000000000000000000000000004101b26313c47515a616d6e6e6e6e6e6e6e6e65625b52483e33271c11060005111c28333e49545f6875818c98a4ada99e948a7e736a60564e453c312c27211d1b18171b1d20252b303a424b545d64707b827c756f6b636059544f473e352b20160b00000814202b37424e5965717c88939fabbab0a7a09c9c91877e736f64615a5753544e5457595856514a41372d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171a1d1d1e1e1e1e1e1e1e1d1d1b17120c06000000000000050f19222b32393e41424b4b4b4b4b4b4b4b4b403f3c37302820160d030000000000000000000000000000000000000000000000000000000000050f18222a32393e41424b4b4b4b4b4b4b4b4b41403d38312a21180e040000111c28333f4a55616c75797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7772685e53473c31251a0e000000000000000000000000000006121d2934404b56616a777a7a7a7a7a7a7a7a776c62574c41352a1e13070006111d2934404b57636e7984909ca7b2a79b9084796e635950463d342c221d1712100d0c0f11161b212a323b444c57626b7076706c64615a555049453e372e251b110700000814202b37424e5965717c88939fabb5aaa09791979791877f766f6a65625c5f575e636564615a51473c32261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2125282929292929292929292826221c160f0700000000000a151f29323b43494c4e5757575757575757564c4b46403930271d130800000000000000000000000000000000000000000000000000000000000a141f29323b42484c4d5757575757575757574d4c48423a31281e14090000111d28343f4b57626e7985858585858585858585858585858585858585858585858585858585858585858585858585858582776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b85858585858585857c7065594d42362b1f13080008141f2b36424e5965707c88959ea9aea5978b7f74685f554940362d241c130d0804020104070c111a222a323d48525b62646b65625c56514a46403a352e261e150b0100000814202b37424e5965717c88939fabb3a89c9185919c97918a817b75706c6b6b6b686e706f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f262c303335353535353535353534312c261f170f06000000030e19242f39434b5358596363636363636363625856504940372c22170b01000000000000000000000000000000000000000000000000000000030e19242e39424b5257596363636363636363625957524b42382e23190e0300111d28343f4b57626e7985919191919191919191919191919191919191919191919191919191919191919191919191918e82776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86919191919191877c7065594d42362b1f1308000b16222d3945505c67737f8a96a5aea99e95877c7064584f453830261c1408030000000000000207111a232e38424a5257585f5957534b47413c36302b251e160d040000000814202b37424e5965717c88939fabb0a4998d828d99a09c918d85807c7977767677797c7b6f64584c41352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f272f363b3f4040404040404040403f3c3630281f160c03000006111d28333e49535c62656e6e6e6e6e6e6e6e6e63605950463c31251b110700000000000000000000000000000000000000000000000000000006111c28333e48525b62656e6e6e6e6e6e6e6e6e64625b52483d32271c110500111d28343f4b57626e7985919c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8e83776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929c9c9c9c93877c7065594d42362b1f1308000d1824303b47525e6a75818c98a3afa79b9084796c6257483f35281f160c0300000000000000000109141e28313a42484c4d544e4c48423d38312c26201b150d06000000000814202b37424e5965717c88939fababa094897d89929ca29b96908c87848382828385887d7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f464a4c4c4c4c4c4c4c4c4c4a46403830261c1208000008131f2a36414c58626c777a7a7a7a7a7a7a7a796f6a60564b3e352b20160b00000000000000000000000000000000000000000000000000000005131e2a35414c57626c777a7a7a7a7a7a7a7a7a706b62574c4035291e120700111d28343f4b57626e7985919ca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a59a8e83776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929da8a89e93877c7065594d42362b1f1308000e1a26313d4854606b77828e99a5b0a5998d82766b5b5248372f25180f0600000000000000000000040e18212a31383d40414842413e39322d28221c16110b0400000000000814202b37424e5965717c88939faba89d918679828d969fa69f9c9795908e8d8e8f90887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f48505557585858585858585755504940362c22170c010008141f2b36424e5965707c8585858585858585857a6f63584f453a30251a0e030000000000000000000000000000000000000000000000000004101b26323c47515a65707c8585858585858585877c7064594d41362a1f130700111d28343f4b57626e7985919ca8b3b4bab5b3adadadadadadadadadadadadadadadadadadadadadadadadadadada59a8e83776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800101b27333e4a55616c78848f9ba6aea3978c8075695d5246382f1e150700000000000000000000000008111921282e3235363c3635332f29231e17120c07010000000000000814202b37424e5965717c88939faba89d91867a7b8590979fa6a8a59e9c9a99999a93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505960636363636363636363605950463c31261b0f040008131f2a36414c58626c77828e9191919191968a7f73685f54493e33281f150a000000000000000000000000000000000000000000000000010b141d2934404b56616a75818d9191919191918d82766b62574c4035291e120700111d28343f4b57626e7985919ca8b3b7b0aaa8a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29a8e83776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800101c28333f4a56616d7984909ba7ada2968b7f73685c5145392e22170b000000000000000000000000000911181e2327292a312b2a28241f18130e080300000000000000000814202b37424e5965717c88939faba89d91867a717d8691969ea5aaa9a7a5a5a59f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a00000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560696e6f6f6f6f6f6f6f6f6960554a3f34281d11060006111d28333e49535c66727e89949d9c9ca69b8f84796e63574b42392e24190d03000000000000000000000000000000000000000000000006111b25313b465059646f7b85919c9c9c9c9d93887d71655b52483d32271c110500111d28343f4b57626e7985919ca8b3b0a7a09c96969696969696969696969696969696969696969696969696969696968e83776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000000000080e14181c1e1e251f1f1c19150f0904000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e727e8690949ca0a7a8adadab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636e797a7a7a7a7a7a7a7a6f63574c4035291d120600030e19242f39434b57636e79848f9ba6afa89e94897e72665c53483e33271d130900000000000000000000000000000000000000000000000b16202b353f4a55606974808b969faaaea59a8f83776d63584b42382e23190e0300111d28343f4b57626e7985919ca8b3aaa096918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b82776b6054493d31261a0f000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800111c28343f4b56626e7985909ca8ada1968a7e73675c5045392d22160b0000000000000000000000000000080e14181c1e1e251f1f1c19150f0904000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e6e727d848b91969b9da4a1a29f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808686868686868681766b5f54483c31251a0e00000a151f28333e49545f68737f8a959fa9ada49a8e82776c62574c41372d23180c02000000000000000000000000000000000000000000030e19242f3a454e57636f7a84909ca7afa99e94897e72675c53493a31281e14090000111d28343f4b57626e7985919ca8b3a89c91867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e72675b4f44382d21150a000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800101c28333f4a56616d7984909ba7ada2968b7f73685c5145392e22140a000000000000000000000000000911181e2327292a312b2a28241f18130e080300000000000000000814202b37424e5965717c88919191919191867a6e636c717a80868b8f949596969693887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a0000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c92929292928d82766b5f54483c31251a0e0000030e1a25303a454f58636f7a85909ca7b0a79c92877c70655a51473c31261c120700000000000000000000000000000000000000000005101c27333e49545e68737e8a959ea9afa69b9084796e63574c43392921180e040000111d28343f4b57626e7985919ca8b3a89c9085797373737373737373737373737373737373737373737373737373737373726e64594e43372c201509000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800101b27333e4a55616c78848f9ba6aea3978c8075695d5246382e24190c02000000000000000000000008111921282e3235363d3635332f29231e17120c07010000000000000814202b37424e5965717d85858585858585857a6e6363696f747b7f8487898a8b8a8a887d7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a0000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c979d9d9d998d82766b5f54483c31251a0e0000000b16202b353e4a55606974808c97a0abaca3988d81756a61564b3f362c21160c01000000000000000000000000000000000000000007111d2934404b57636e79838f9ba5aeaa9f968b7f74695f554a3f33281c1108000000111d28343f4b57626e7985919ca8b3a89c9085796e6868686868686868686868686868686868686868686868686868686867645d544a3f34291e1308000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000e1a26313d4854606b77828e99a5b0a5998d82766b5b52483d33251b110700000000000000000000040e18212a31383d40414842413e39322d28221c16110b04000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a7769605960636b6f74787b7d7e7f7f7e7c796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21160a060502000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3a9a5998d82766b5f54483c31251a0e00000007111b25313c465059646f7b86919ca8b3a89c91857b6f64584f453b30251a0f040000000000000000000000000000000000000006111c28333e48525b66727d89939da8b1a89c90857b6f63584f453b30251a0f01000000111d28343f4b57626e7985919ca8b3a89c9085796e625c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59544d443a30261b1005000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000d1824303b47525e6a75818c98a3afa79b9084796c62574c3f352b21160d0300000000000000000109141e28313a42484c4d544e4c48423d38312c26201b150d060000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950555a6164686b6f7273747372716e695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d21161212100d0903000000000000000009121a22292f33363740404040404040404033302c261f170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000010b17222c36404b57616b76818d99a3acaa9f968b7f74695f554a3f33281f150a000000000000000000000000000000000000020c161e2a35414c57626c77828e99a4adaba1978c80756a6156483f352b21160b00000000111d28343f4b57626e7985919ca8b3a89c9085796e625651515151515151515151515151515151515151515151515151514f4e4a443d342a20160c01000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000b16222d3945505c67737f8a96a5aea99e95877c7064584f453b30261d1208030000000000000207111a232e38424a5257585f5957534b47413c36302b251e160d04000000030e19242f39434c5358596363636363636363625550484a5156585a6164666768686765635f584f453b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d211e1e1d1b18130d0700000000000000020a12191f24282a2b3434343434343434342825211c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000008121c26323d47515a65717c88939ca7afa79b9084796e63574c43392f241a0e07070707070707070707070707070707070708121c26323d47515a65707c87929ca7b4a89c91867c70645a5147372f251c120700000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4545454545454545454545454545454545454545454545454544433f3a342c241a110700000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080008141f2b36424e5965707c87959ea9aea5978b7f74685f554a40372c221c130d0804020104070c111a222a323d48525b62646b65625c56514a46403a352e261e150b010000000a151f29333b43494d4e5757575757575757574a463f41474b4d5157585b5c5c5c5b5957554f483f362c21160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9a1958a7e72675b5044392d2a2a2a2926231d1710080000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000030d18232e38414d58636c77838e9aa5aea99e95897e72675c53493e33281e141313131313131313131313131313131313131317212c36404b56616a75818d98a3acaca3998d82766b6257494037271e150c0200000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f393939393939393939393939393939393939393939393939383734302a241c130a0100000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080006111d2934404b57636e7984909ca7b2a79b9084796e635950463c312c221d1712100d0c0f11161b212a323b424c57626b7076706c64615a555049453e372e251b1107000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b36373d4041474b4d4f505150504e4c4a453f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86929db0a1968a7e73675c5044393535353534322d27201810070000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000009141e28333e49535c66727e89949ea8aea59a8f83776c63584d41382d231e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e26313b465059646f7b86919ca8b3a89d93887d71655b5248393027170e050000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2926201a130b030000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080005111c28333e49545f6875818c98a4ada99e948a7e736a60564b453c312d27221d1b18171b1d20252b303a424b545d64707b827c756f6b636059544f473e352b20160b0000000009121a22292f33363740404040404040404033302c2d3234383d4041434445454442403f3b362f271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a8697a0aba2968a7f73685c50454141414141403c37312920170d03000000000000000000030608081111111111111111110604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030405050504030100010c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000040e19242f39434b57636e7984909ba6afa79d93887d71655a51473d322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a343f4a55606974808b96a0aaaea59a8f83776d63584b423828201706000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34282222222222222222222222222222222222222222222221201e1b16110a03000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800030e1a25303a454f5865717d88939da8aea59b90847a6f635e554d453c37312c2926222226282b30353b434b525b646e76818d86817b746f69635f584f453a30251a0e03000000020a12191f24282a2b3434343434343434342825212327292d32353538393a3938373433302c261f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560697a85919ca8a3978c8075695b524d4d4d4d4d4c4b47413931271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0f10101110100e0c0a070c18232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000a151f28333e4a545f68737f8b969faaaca3998d81766b61574b403636363636363636363636363636363636363636363636363a454e57636f7a84909ca7b0a99e948a7e72675c53493a3228181006000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c171717171717171717171717171717171717171717151513100c070100000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000b16202b353e4d58636d78838f9aa3aca99e958d81766e655d554b47403b3634312d2c3134353a3f454a535b626c727e8992918d85807a736e685f54493e33281c11050000000002090f15191d1f202929292929292929291d1a17181b1e2327292a2c2d2e2e2d2b292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596d7984909ba7a59a8e83776b615959585858585856514a41372d23180d02000000000000000000000000000000000000000000000000000000000000000000030608081111111111111111110604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104050607070707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a1816131218232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000030f1a25303b454f58636f7a85909ca7b0a89c91867b6f645950464141414141414141414141414141414141414141414141414149545e68737e8a959ea9afa69b9084796e63574c43392921180800000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a09080501000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000007111b25333e49535c67727e89939da8aea59b918a7f736e655e56514a4641403c37363c3f4045494f555c636c707c85909c9c96908b847f786e63574b4034291d1106000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0d1014181c1e1e21222222211f1d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c3648545f6b77828e99a5a89c91867b706965646464646464615a51473c32261b100500000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070c0f1112121313131212110f0c08090706050200000000000000000000000000000005060606060606060606060500000000000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f22242627282827272624211e1e1c232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000b16212b353f4b56606a75808c97a0ababa0978b80746960554d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d57636e79838f9ba5aeaa9f968b7f74695f554a3f33281c110800000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000010b1a252f39434b57636e79838f97a1ababa29c91867e736e63605a55504c4b474848464a4c4f54585f636c717c8490969fa69f9c9490857b7064584d41362a1e13070000000000000000030608081111111111111111110604010205090d10121315161716161412110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000812232f3b46525d6974808c97a5aba0978e82797471706f6f6f6f6f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000305080c0f11121512161a1c1d1e1e1f1e1e1d1d1a1712151212100d0906030000000000000000030607081011111111111111111111110808060300000000000000000000000000000000000000000000000000050a0f14191b202427292b2e30313333343332312f2d2a2927232f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000007111b25313c46505964707b86919ca8b0a79c90847a6f63585858585858585858585858585858585858585858585858585858585c66727d89949da8b1a89c90857b6f63584f453b30251a0f0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110a0a0a0a0a0a0a0a0a0a0a0a0a0a0a06050300000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000b152028333e49545f68717d87919ca3acaba09791867f756f6a6360595856515454505658585f63686e747d8490959ea6aea59d938b7f736b61574b4035291e120700000000000000000000000006060606060606060600000000000002050707090b0b0b0a0806050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5a66727d89959ea9a79c928e847f7d7c7b7b7b7b7b6f64584c41352a1e120700000000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f0700000000000000000000000000000000000000000000000000000000000000000104090e1112171b1d1e202321252829292a2a2a2a2928262223211e1d1b1813110e0a0401000000050a0e1113131c1d1d1d1d1d1d1d1d1d1d1c1413110e0a0500000000000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393535322d2f3b46525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000010b17222c37404c57626b76828d99a3aca99e958a7e736764646464646464646464646464646464646464646464646464646464646c77828e9aa4adaba1978c81756a6156483f362c21160c0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1616161616161616161616161616161611100e0b060100000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000030e1a25303a454f58636c74808c939ca4ada7a097918a817a736f696663615a606059606365686e72797f8690959ea5aea79e958f83796e635b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ca5aca29c948f8b88878787878783786c61554a3e32271b100000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f05000000000000000000000000000000000000000000000000000000000002070c0f14191c1e222628292c2f2c30333435353636353534312c2f2c2a2927231f1c19150f0c0803080f14191c1e1f2729292929292929292929281f1f1d19150f0901000000000000000000000000000000000000060d12171f24292e33353a3e40424547494a4a4b4a4a48464441403d38343b46525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000008131d27323d48525b65717d88939da7aea59b8f8378707070707070707070707070707070707070707070707070707070707070707c87929ca7b4a89c91867c70645a5147382f261c12070000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342821212121212121212121212121212121211d1c1916110b04000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000b16202b353e47535c636e79828e949da5ada7a09c918d847f7a75726f6a6c6b6b6c6a6f7174797e838b91979ea5aea7a09690857c70685f554a41382e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305070811111111111111111111111111111111111111111111111111111111111111111111111111110f0f0d0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6975808c959ea7aca49e9b9694939292928f84786c61554a3e32271b10000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c02000000000000000000000000000000000000000000000000000002080c12161a1e2327292c313435373a363b3f404141414141403f3b363a383534322d2a28241f1b17120c11181f24272a2b3334343434343434343434332b2a28241f19120a0100000000000000000000000000000001070f161d22292f33393e3e45494b4d50525455565656555452504d4b47413f3c46525d6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000000030d18232e38424d58636d77838f9aa5aea89d93897e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b818d98a3acada4998d82766b6257494137271f150c020000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292724201b140d050000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000007111b252e37434a555f686f7b838f949da4acaba19b95908a85817d7b7977777777787a7d8084898f949ca0a7aea69f9791867d716b62584f453a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a8490969fa6aaa8a7a29f9e9e9e9b8f84786c61554a3e32271b100000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c120700000000000000000000000000000000000000000000000000060c12171c2125282e3235373c3f40434647454a4c4c4d4d4d4c4c4a4648464341403d3735332f2826221c171a22282e3335363f404040404040404040403f3736332f29221a12090000000000000000000000000000030a12181f262c31393e42484c4e5457595c5e606161626161605e5b5856514c4b4646525d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000000009141e28333e49535c67727e89949ea9ada4988e89878787878787878787878787878787878787878787878787878787878787878d919ba6b3a89d93887d71665b5248393027170e05000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3939393939393939393939393939393939393934332f2b251e160d0400000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000010b151e26303b454f58616a707c848f949ca3ababa59e9b95908c898684838282838486888c90949b9da4aaaba59e9690867e726d635b52483f352921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f2929292929292929292929292929292929292929292929292929292929292929292929292929262623201b150f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b56606a717d8690959c9fa6a4a5a5a6a6a69b8f84786c61554a3e32271b100000000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c010000000000000000000000000000000000000000000004090f161c22262c3033383d4041464b4c4f51534f5557585859585857555053514f4c4b4742413e3934312c2622222a32383e41424a4b4b4b4b4b4b4b4b4b4b4b42413e39322b22190f05000000000000000000000000030b131a222830363c43494c5257575e6365686a6b6c6d6d6d6c6b696764615a5856504a525d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000040e1a242f39434c57636e7984909ba6afa89f989592929292929292929292929292929292929292929292929292929292929292989ba2abaea59a8f83786d63584b42382920170600000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4444444444444444444444444444444444444444403e3a352e261e140b01000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000040d16212b353f48515a626b707c838e939ca0a7aca9a69f9c989495908f8e8e8f8f9197979b9ea5a8ada8a29b9590867e726e645c534a42372f2519110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e24272a2a343434343434343434343434343434343434343434343434343434343434343434343434343432312f2b251f18100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c25313c465059636d717d858c90969698999a9a9a9a9a8f84786c61554a3e32271b10000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f04000000000000000000000000000000000000000000070e14171f262c31363b3f42484c4d5056585a5d5f585f6363646464646360595f5d5b5856514e4c48423f3c36312c2b333a42484c4d5657575757575757575757564e4d49433b32291f150a0000000000000000000000030c131c232a323840464a53585b6265686e7073757778797979787775736f6b6863605956505d6974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000b151f28333f4a555f69747f8b969faab5a8a2a09e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea4a6abb4a99e958a7e72675c53493a322818100700000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62565050505050505050505050505050505050505050504b49453e362e251b1106000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000007111b252f37414a525b626b707b828b91979ca3a7aca9a7a4a59e9c9a9a999a9b9ca1a8a7a9ada8a49e9b918d847d726d645d544c433a31271e1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282e32353640404040404040404040404040404040404040404040404040404040404040404040404040403e3d3a352f2820180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17222c374049545d636d717b8085888b8d8d8e8f8f8f8f8f83786c61554a3e32271b10000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d110600000000000000000000000000000000000000010710181e23282f363b3f454a4c52575959606366686a6c696e6f6f70706f6f696c6b686664615a5957534c4a46403c362f3b434b5257596163636363636363636363625958534c43392f24190e03000000000000000000030b131c242c343b424950565c62656c7075797c7f8182848485848482807e7b78736f6a6360595d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000000000030f1a25303b454f58636f7b85909ca8b1b2aeacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab0b1b5afa69b9084796e63574c433a292118080000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b57544e473e352b20160b000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000020c151e273039424a525b626a6f7980878e939a9da3a7a9aeaea9a7a6a5a5a6a7a8abaea9a7a49e9b948f89817a716c645d544d443c332a21160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a32383d40424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3931281f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039444c545c636a6f747a7d7f818283838383838381766a5f53483c3025190e00000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1206000000000000000000000000000000000000040b111921282d323840464a4f55575b6264686a6f71747677797a7a7b7b7b7b7a79787674726f6a6965625c5755504a46403a444c535b62646d6e6e6e6e6e6e6e6e6e6e6d65635c53493e33281d11060000000000000000020a131c242c343c444b535960636c70767c8084878a8c8e8f9090908f8e8c8a87837f7a746f6a645d6974808c97a3aea5998d82766b5f54483c31251a0e00000000000000000000000b16212b353f4b56616a75808c97a1abb6b9b8b6afa9a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafb7bbbcb5aa9f968b7f74695f554a3f33281c11080000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6767676767676767676767676767676767676767676767635e574e453a2f24190e030000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000050e162029313a424a525a61686e747c83898f93989b9ea5a3a5a6a7a7a7a7a6a5a3a59f9c98948f8a847e766f6a635c544c443d342b2319110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d575757575757575757575757575757575757575757575757575757575757575757575757575755534f4941392f251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028333c444c535a6163696e717475767777777777777671675d52463b3024190d00000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d12060000000000000000000000000000000000060d151b202931383d44485055585f63676b7074777a7d8081838586868787878686858382807d7b7874706c67636059565049454c545c636c70787a7a7a7a7a7a7a7a7a7a79716c63584d41362a1f1308000000000000000008121a242c343d444d545c626a6f757c82878c909596989a9b9b9c9b9b9a9895938f8a85807a726e636974808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000007121c25313c47515a64707c86919ca8b4bdb9afa69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6afb9bab1a89c90857b6f63584f453b30251a0f010000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085797272727272727272727272727272727272727272727272726e685e54493e33271c10050000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000061018212a313a424a51585f636c71787e83888c90949597999a9b9c9c9b9a9a989595908c88847e79726e63615a534c443c342c241b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b5257596363636363636363636363636363636363636363636363636363636363636363636363636363605e5952493f352b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18232c333c4349515658606365686a6b6b6c6c6c6c6c6a6760574d43382d22170b00000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d120600000000000000000000000000000000060e161e252b303a41474b54596063696e73777c7f8386898b8d8f9095929293929295908f8d8b898683807c78736f69636059544e545d636c717c8485858585858585858585857c7165594e42372b1f140800000000000000071018222b343d444d545d646c707a80878d92979b9ea5a4a5a6a7a7a7a6a5a3a39d9a95908c847e756f6974808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000020c18222d37404c57626b76828d99a4adb7b4a99f9590909090909090909090909090909090909090909090909090969faab5b6aba1978c81756a6156483f362c21160c010000000000000000000000111d28343f4b57626e7985919ca8b3a89c91867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e786e63574b4034291d11060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000081119212a313941484f555c63686e72777c8084878a8c8d8f9090908f8f8e8c8a8884817d79736e69645d565149433b332c241c130a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b626d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f443a2f23180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131b232b333941474b5055575a5d5e5f6060606060605f5d5750473e34291e130800000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000000000000000000000000000000070f171f262e353a444a51575d64696f73797e83878b8f919797999a9c9fa69e9e9ea69f9c9a999797918f8b88837f7a746f6a635e575e646d727d859094919191919191948f847c716c63584d41362a1f1308000000000000030d172029333b444d545e646e727c848c91979ca2a7a9aeaea9a7a5a4a4a4a5a6a8a8a69f9c959089817a6f74808c97a3aea5998d82766b5f54483c31251a0e00000000000000000000000008131d27323d48525b66717d88939da8b3b3a79c9085858585858585858585858585858585858585858585858585909ca8b3b4a89c91867c70645a5147382f261c1207000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f96918a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000091119212931373f454a53575e63666c7175797c7e808283848485848382817e7c7a75716e68635f58544b474139332b231b130c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35404c57626c777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7872695e53483d31261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b232930373c3f464a4c4e51535354555555555553524d4740372e241a0f0500000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000070f1820272f373e4549545a61646d727a7f848a8f93979a9ca0a7a4a6a7a9afa9aaa9afa9a7a6a5a8a19c9a97938f8a847f7a726e6862656e727e8690959ea59c9ca39c938f837b706c635c53493e33281d110600000000000009131d273039434c545d646e727e858f949ca1a8abaca7a6a59e9c9a999898999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000000030d19232e38424d58636d78838f9aa5aeab9f94887d7979797979797979797979797979797979797979797979818c98a3afada4998e82766c6257494137271f150c02000000000000000000000000111d28343f4b57626e7985919ca8b3afa79f9c959595959595959595959595959595959595959595959591857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000009111820272f353b43474e54575c6365696b70737576787879797878777573706e6966635f58554f48443c373029221a130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c858585858585858585858585858585858585858585858585858585858585858585858585858583786c6055493e32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b121820272d31363b3f40434547484949494949494846433e372f271d140a0000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000060f17202830383f474f545d646b6f767e848b90949a9da3a6a8abb0b0b1afadadacacacacadafb0b0b1aba8a6a49d9a95908b847e78706b6f737e8690969fa5aeaba29c928e837b706b625b534c43392f24190e030000000000050f17232d37414a535c646e727e8790969ea4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa5a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e000000000000000000000000000a141e28343f49535c67727e8a959ea9b0a4998d81766b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6f7b85909ca8b3a89d93887d71665b5248393027170e0500000000000000000000000000111d28343f4b57626e7985919ca8b3b7afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19d91857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000810161e252b30363e45494b53585a5b626467696b6c6d6d6d6d6c6b696765635f5857554f4a453f37312d272018120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c879191919191919191919191919191919191919191919191919191919191919191919191918f83786c6055493e32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810171d22262c303334373a3b3c3d3d3d3d3d3d3c3b38342e271f160d040000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000050e171f283038404850585f636d727b828990949b9ea5a7acb1b2afa9a7a5a3a2a1a0a0a0a1a2a3a5a7a9aeb1b1ada8a59e9c95908a827c72747f8791979fa6aeaaa29b928d827a6f6a615b524b433b32291f150a0000000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e00000000000000000000000000040e1a252f3a434c57636e7984909ba6afa89c91867b6f64596262626262626262626262626262625f69747f8b969faaaea59a8f83786d63584b4238292017060000000000000000000000000000111d28343f4b57626e7985919ca8b3bfb9b5b3acacacacacacacacacacacacacacacacacacacacaca89d91857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000060e151b21262e353a3e43494d4e5257595b5e5f616162626160605e5c5957554f4c4a453f3b352f27221d1710080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8f83786c6055493e32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181c212528292b2e303131323232323230302d29241d160e06000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000020c151e2730384049505860686e747e858e929b9ea5a9aeb3ada8a6a69f9c99989695959495959697999b9ea5a5a8abb0aea9a59e9b928e857e808b9197a0a7afa9a19a918d81796f6a615a524a423a322b22190f05000000000007121c262f383f4b56616a717d869197a0a7aea79f9c928e88837f7b797776767676787a7d80858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e00000000000000000000000000000b152028333f4a555f69747f8b969faaaba0978c80746960555656565656565656565656565657636e7984909ba6afa99e958a7e72675c53493a32281810070000000000000000000000000000111d28343f4b57626e7985919ca8b3bfb9b5b3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a89d91857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000050c11161e252b2f33393e4142484c4d5052535556565655555452504e4c4a45403e3b35302b251e17130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090c12171a1d1d202324252626262626262524221e1a140d0600000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000007121c252f374049505960696e78808990959ca2a8aeb0aaa8a49d9a9695908e8c8b8a8989898a8b8c8e9095969a9ca0a7a9afaea9a39c95908a8c909ca1a8b0aba099908c81796f696059514a413a322a221a12090000000000010c17212c363f48545d646f7b8490969fa7aea59e96918a827d7773706b6b6a6a6a6b696e71757a7f858e929ba19c9590959fa9b0a5998d82766b5f54483c31251a0e0000000000000000000000000000040f1a25303b454f58636f7b85919ca8b0a79c90857a6f63574e454b4b4b4b4b4b4b4b4b49535c67727e89949ea9afa69b90847a6e63574c433a29211808000000000000000000000000000000111d28343f4b57626e7985919ca8b3b6afaaa89d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d91857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000002070d141b2024272f3336383d4041444648494a4a4b4a4948474442403f3b3533302b25211c150e080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c8793a7afb9b4b4b5ada8a6a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39a8f83786c6055493e32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112141719191a1b1b1b1b1b191917130f0a040000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000007121a212b353f485059606a6f79818c909c9ea5abb4aba7a09c98938f8b888582817f7e7e7d7d7e7f808284878a8e91979c9fa6aab0aca69f9c95979aa1abb0a8a19c908b80786e686059504941393129221a120a010000000000040f1a25303b465059646e76818d959ea7aea59e9590867f78716c6764625b5f5e5f596063656a6f747b828c919aa19f9c9fa6afb0a5998d82766b5f54483c31251a0e0000000000000000000000000000010c16212c363f4b56616a75818c98a2aba99f958a7f73685e54493e3f3f3f3f3f3f3f414d58636d77838f9aa5aeaa9f968b7f746960554a3f33281d1108000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c929292929292929292929292929292929292929292929291857a6e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000040b1116191f24282a2e323536393b3c3e3e3f3f3e3e3d3b39373433302b2825211b16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87969faab5bab7ada49d9b98989898989898989898989898989898989898989898989898988f83786c6055493e32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b0d0e0f0f0f0f0f0f0e0d0b080500000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000060f17222b303b454f5860696f7a828d929aa1a9aeada8a29b97918d87837f7c797775737372727272737576797b7f82868c90959ca0a7adafa9a7a1a3a5aab0a7a097918a7f756e685f58504840393029211911090100000000000006111d28333f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b6f79818c919aa2a7a9afb6b0a5998d82766b5f54483c31251a0e00000000000000000000000000000007121c26313c47515a64707c87929ca7aea59b8f83796e63574b42382e333333323d48525b65717d88939da7b1a89c91857b6f635850463b30251a0f01000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f969086868686868686868686868686868686868686868686868685796e63574c4034291d12060000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000001060b0e151a1d1f23272a2a2d2f31323333333332312f2d2b292825211c1a16110c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c58646f7b85919ca1aab3b3a89d948f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c83786c6055493e32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000030d161f28323b434a555f696f7a828e929ba2aab4aba49e9b918d86817c7873706e686968676666666768696b6b7073777b80858c91969da4adb5b3acaeb0b5aaa09691877f746f635e574f48403830282018110901000000000000030f1a25303b454f58636e7a84909ba2abaaa09790857c716c635e57534d4c48484747464a4c50565a61696e78808c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e000000000000000000000000000000020c18222d37414c57626c77828e99a4ada89d94897d71665b52483d3227282935404c57626b76818d99a3acaba1978c81756a6156483f362c21170c01000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b77685f554a3e33281c11050000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000030a0f1214191c1e1f2124252727282827262624221f1d1c1a16120f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b727e8a909aa3acb2a69b8f838080808080808080808080808080808080808080808080808080807f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0a0a0a0a0a08070503000000000000000000000000000000020506070c0c0c0c0c0c0c090806040000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000008121c263038434c555e636e79828e939ca3abb1aaa29c948f88817b75706c6865635f585c5b5b5a5b5b5c5d5b6264676b6f747b80868f939da8b3bfb8babfb3a89c91867e736e665f544e473f372f2820181008000000000000000005111c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a51585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e0000000000000000000000000000000009131d27333e48525b66717d89939da8ada4998e82776c62574c40372d26313c46505964707b86919ca8b4a89c91867c70645a5147382f261c120700000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a5f584f453b30251a0f030000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000003060a0e11121316181a1b1c1c1c1c1b1a18161412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a646e75808c929ca4ada89c91867d7575757575757575757575757575757575757575757575757575746f655b4f44392d22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131616161616161313110e0a04000000000000000000000004090d101212181818181818181413120f0b05000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000010c17222c364049535c656f76818d929ca3acb0a9a19a928e847d76706b65625b5957544f51504f4f4f5051525257595a61646a6f757c838f9aa6b2bdc4c3b7aca095897e726e655e5649453e362f271f170f0700000000000000000006121d2934404b57636e79848f9ba5aea89d938b7f746d635b5349453e3635322e302c3033363c41484f575f686f7b84909ba3acb6b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000030d19242e38424b57636e79838f9ba5aea79c92877c70645a51473c3128343f4a56606a75808c97a0abada4998e82766c6257494137271f160c0200000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6363636363636363636363636363636363636363636363615a4f483f352b21160b000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000030507080a0c0e0f101111100f0e0d0a080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a545e636e79828e949da6aba09790857c7069696969696969696969696969696969696969696969696968655e554b41362b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1e1e2121212121211f1e1c19140e08010000000000000000070e13181b1d1e24242424242424201f1d1a150f090200000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000040f1b26313c465059636c737f8a919ba2abb1a9a099908c827a716d64615b57524e4b49454544444344444546484c4d51575c636c707c848f9ba7b2bebebfbaafa3988c80756d645a51473c352e261e160f07000000000000000000030f1a25303b454f5866727d89949ea8ada49a8f83796e635c534b433a352e292723242125282c31373f474f58616a727e89939ca7b3b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000a141f27333e49545e68737e8a959ea9aba2988c81756a61564b3f35303a454f58636f7a85909ca7b0a89d93887d71665b5248393027170e050000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62585858585858585858585858585858585858585858585651493f372f251b1107000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e273139444a545f686f7a848f969fa8a79e958f837a6f685e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5c5b554e453c31271c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a2d2d2d2d2d2d2a2a27231e181109010000000000000810171d2327292a2f2f2f2f2f2f2f2b2b28241f19120a02000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000050f19222b343f4a556069717d86919ca2abb2a9a099908b80786f6a635d57524c4842403e3a35393838383839383d454d545d636c717c848f949ea8b4b4b2b4b8b0a59a91897e726a61564b43392f24160e060000000000000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554c433b2f2b251e1c1914171a1d22272f363f47515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e0000000000000000000000000000000000030e19242f3a454e57636e7a84909ca7b0a89c90857b6f63584f453b333e49545f68737f8a959fa9aea59a8f83786d63584b423829201706000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4741392f271e150c02000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0e0f101110100f0d0b070705020000000000000606060606060604030200000000000000000000040e172029303b454f58616a707c859097a1aba59d938d81786e635d5452525252525252525252525252525252525252514f4b453e352c22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921282d3234353838383838383635322e2821191108000000000007101920272d3234353b3b3b3b3b3b3b3736332f29221b1209000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000a151f29333e48525b636f7a848f96a0aab2aaa199908b7f746e68615a544b48413e393433302b2d2d2c2c2b303e454d555d646d717d8590959ea4adaea9a7a9aeb5aaa19c90857b6f635c53493e332a20150b0000000000000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453c332a201b14110e090c0f12171e262e374149545d66727e89959ea9b0a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000b16202b353e4a55606974808b96a0aaaa9f968b7f74685f554a3e34404b57636e79848f9ba6afa99e958a7e73675d53493a3228181007000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4141414141414141414141414141414141414141403c3730291e160e0500000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f11121417191b1c1c1c1b1a18161312100d090306090a0b111111111111110f0f0d0a06010000000000000000071019212b353f47515a626c727e87919ca2aba49b928b7f746d645b524946464646464646464646464646464646464544413c352d251c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212931383d404144444444444442403d38322a21180e04000000040e17202931373d40414646464646464642413e39332b22190f050000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000030e19242f39414c57626c74808c949ea7b0aca39a918b7f746f635e575149433d38332e29282520211f272e353b464e555e656e727d8590959ea5adaaa59e9b9ea5aeb4a99e958d81756d63584d433a2f251a0f0500000000000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b231a110b0403000104080e161e273039444c57636e7984909ca7b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000006111b25303b465059646f7b86919ca8afa69b9084796e63574c433e49535c66727e89949da8afa69b90847a6e63574c433a2921180800000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3535353535353535353535353535353535353534312d2720180e060000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c11161a1c1d20232527272828272624221e1e1c18140e111416171d1d1d1d1d1d1d1b1a1815110b05000000000000000007111b252e374049525b646e74808b929ba4aba29c91877e726c625a51473f353b3b3b3b3b3b3b3b3b3b3b3b3b3b3a3936312c251d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313a41474b4d5050505050504d4c48423a32281e140a00000009131d27313941474b4c525252525252524e4d49433b33291f150b0000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000006111d28333e49535c64707c86919ca4adafa69c938c80756f655f544e474039322e28241d1c1a161f272f373f454a565f656e737e8690969fa6aea9a19a9490949ea5aeaea59b91887d71655d53493f34281f140a0000000000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b120601000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e000000000000000000000000000000000000010b17212c363f4b56616a75818d98a3aca99e94897e72665c5349414c58626c77828e9aa4adaa9f968b7f746960554a3f33281d110800000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342929292929292929292929292929292929292926221d171008000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e13181b212528292c2e31323333333332302d2a2927231e1a1c1f222229292929292929262623201b150f0800000000000000010b151e273039424b545d636e78818d939da6aba19790857c706a61584f453b302f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2b27221c140d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414a5156585b5b5b5b5b5b5957524b42382e23190e0300020d18232d37414a5156585d5d5d5d5d5d5d5a58534c43392f241a0f0400000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000008131f2a36414c58636c77828e97a0aab4a99f958e82796e635f5649453e363028231e191411121c262f383f474f545f666f747f8791969fa6afaba099908c8490949ea8b4aaa19a8e82776d63584d42382e24190b0100000000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4033271e150a02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e0000000000000000000000000000000000000007121c26323d47515a65707c87929ca7aea59a8e83776c63584d47515a65707c88929ca7b3a89c91857b6f635850463b30251a0f0100000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b18130d0700000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171e23252b303334373a3c3e3f3f3f3e3d3b393535322d2825272b2d2e3434343434343432312f2b251f18100800000000000000050e162028323b4449545e686f7a838f959fa7a89f968f837a6f685f544a443b322920242424242424242424242222201c18120b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a616467676767676764625b52483d32271c11050005101b27323d47515a61646969696969696965635c53493e33281d120600000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000005111c27323d48525b65717c88929ca7b0aca39c90857b70685f554e453a352e262018140e0a0c16212c363f484f585f636f747f8a9197a0a7afa8a19c908b807a84909ba2abb2a79c93887d71665b52483d33251b110700000000000000000e1a26313d4854606b77828e9aa5b0a4998d82766a5b52483d3223160e05000000000000000000000b16212b35424d5964707c8793a6afa5998d82766b5f54483c31251a0e00000000000000000000000000000000000000020c18232d37414c57626c77828e9aa4ada79c93887c71655a514b56616b76818d98a3acaba2988c81756a6156483f362c21170c0100000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1212121212121212121212121212121212100d08030000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161c21272d32353b3e40434648494a4b4a4a49474441403d38333031363839404040404040403e3d3a352f2820180f0500000000000000061018222a2f3a454e57606a707c859097a0aba69d948e82796e635e544c433931271f161818181818181818171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a34404b56616b6f727272727272706b62574c40352a1e13070006121d2934404b56616a6f75757575757575716d63584d41362b1f130800000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000007121e2935404c57626b76828d99a2acb3a79c938a7e736b61584f453e2f2b251e16100904040f1a25303b454f585f686e75808b909ca0a7afa7a097918a8075717d88929ba7b0aca39a8e82776c62574c3e352b20160b0000000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e231806000000000000000000000007111d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000009131d27333e48525b66727d89949da8aca3988d81766b61565059646f7b86919ca8b3a79c92877c70645a5147382f261c12070000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1109090909090909090909090909090909090909090808060300000000000000000000000000000000000000030607121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911171f262c30373d3f454a4c4e515355565656555452504d4b47413e3a3b4144454b4b4b4b4b4b4b4948443f3931281f150b010000000000000008111a202b353e475059626b717d87919ca2aba49c928c80756e645c534a41382f261c12070d0d0d0d0d0d0b0b0906020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333d48525b646f7b7e7e7e7e7e7e7c7064594d42362a1f13080007121e2a35414c58646f7b808080808080807d71655a4e42372b20140900000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000007131f2a36414d5964707c86919ca8b4aca39a8e83786e635b52483f352d201b140d05000005111c28333f4a555f696e79808c9099a0abafa79f9791877f746f6d76818d97a0aab2a79c92877c7064584f453a30251a0e0300000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e22140b000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000040e19242e39424b57636e79838f9ba5aea89c91867b6f645955606974808b96a0aaada4998e82766c6257494137271f160c020000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1515151515151515151515151515151515151515151413110e0a0500000000000000000000000000010406060f1111121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a111921272f363b41474b4f55575a5d5f6061626261605e5c5857514b4945454b4f515757575757575755534f4941392f251b1106000000000000000106111b252e364049525b636d737f8b919ba3aca29a908a7e726c635a51483f362c211b1209000101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39414c57626c76818989898989867b6f64584d41362a1e13070008131f2b36424d5965707c878c8c8c8c8c8a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000006111c28333e48535c6874808b97a1abb2a79c93887d71685e544a41372f251d110b0400000006121d2934404c57636e79818c919aa1a9aea69f9691867e736f6664707b86919ca8b3aca3978c8075685f54493e33281c110500000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000a151f27333e49545e68737f8a959fa9aaa0978b8074696057636f7a84909ca7b0a89d93887d71665b5248393027170e05000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428202020202020202020202020202020202020202020201f1f1d19150f090100000000000000000002070c0f11121b1d1d1d1e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a222a31383f464a5156585f6365686b6c6d6d6d6d6b6a6764615a57544f4e555a5c63636363636363605e5952493f352b20150a0000000000000000010b141e263038424b545d656f76818d939da5aaa19c91867d716b615850463b302b23191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48535c64707c86919595978c81756b61574b4035291e12070008131f2b36424d5965707c8793979797968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000007131f2a35414c57626c78838f9ba8b1aea59a8e82776d63574e453a31271e1506010000000006121d2934404c57636e79828e939da4ada59e9690867e726e655e626b76818d98a3acb3a79c9084796e63574b4034291d120700000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000030e19242f3a454e57636f7a85909ca7b0a79c90847a6f635e68737e8a959ea9aea59b8f83786d63584b42382920170600000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a28241f19120a0100000000000000050c12171a1d1d26292929292935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a323a424850555a6164686e71747678797979787775736f6b66635f58555e65686e6e6e6e6e6e6e6c6962594f443a2f23180d000000000000000000040d161f28313a434c555e636f7a838f959ea7aa9f9690847b6f6960554a453c332a21170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c76818d97a09c91867c70645a51473d32271c10050008131f2b36424d5965707c87939ea3a1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000008141f2b36424e5965707c88949da8b4a99f95897e72665c53473e352921160e05000000000005111c28333f4a555f696f7a838f949ea59e9590857d726d645e555b65707c87939da8b3a99e95887c71655a4e42352b21160b00000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e221409000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000b16202b353e4a55606974808b97a0aaa99e958a7e7367636e79838f9ba5aea99e958a7e73675d54493a322818100700000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3737373737373737373737373737373737373737373737373736332f29221a1209000000000000070f161c2125282932343434343435414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a323b424a525860636b6f74797d8082838485848483817e7b77726e68635c656f737a7a7a7a7a7a7a7872695e53483d31261a0f00000000000000000000050f18212a333c454a5560696f7b849096a0aaa79e948e82796e635e554c433a31281f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48535c65707c87919ca1978d81766b62574a41382e23180d020008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000030e19242f3a454e5768737f8b96a4adb3a79c90847a6e63574c43362e25191006000000000000040f1a25303b454f58606a6f7b848f959d9490857d716d645d544c57626c78838f9aa6b1aea5978b807469584f453b30251a0f03000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e23180d020000000000000000000006121d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000006111b25313b465059646f7b86919ca8aea59b8f83786d66717d89939da8afa79b90847a6e63574c433a292218080000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4343434343434343434343434343434343434343434343434342413e39322b22190f0500000000050f171f262c3033353d404040404040414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172028323a424b535b62696e747b8084888b8d8f9090908f8e8c8a87837e79716c6568737f8585858585858583786c6055493e32261b0f0000000000000000000000071119232c313b465059616b717d86919ca1aaa59c938d81756f655c534a423830261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f2a35414c57626c76828d97a19c91867c70655b52483a31281e1409000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000005101c27333e49545e6876828d99a5b0afa4988c8175695f554a3f33261e140900000000000000010c16212c363f485059616b707c8590948f847c716c635c544d48535c68737f8b96a5aeb1a69a8e8377695f554a3f33281c11050000000000000e1a26313d4854606b77828e99a5b0a4998d82766a5b52483d32271c10050000000000000000000008131f2b36424d5964707c8793a6afa5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000010b17222c36404b56616b76818d98a3aca89d93887d716c77828e99a4adaa9f968b80746960554a3f33281d11080000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4d49433b32291f150a000000020c161f272f363b3f40494b4b4b4b4b4b4b4c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039424b535c626b707980868c909597999a9b9c9c9b9a9896938e89837d746f68737f8b91919191918f83786c6055493e32261b0f00000000000000000000000109131b212c364048515a636d737f8a919aa3aca39b918a7f736d635b524940362e251b110601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26323d47515a65707c88929ba4998e82766c62574b42382921180e04000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000006111d2934404b57636e7984909ca7b3ada495897d7266584f453b3022160d04000000000000000007121c262f384049515a626c717d868f837b706c635c534c44424d5964707c87949ea9b3a89c91857a6e63574c4034291d12060000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4035291e150c02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000008121c26323d47515a65707c88929ca7ada4998e8276707c87929ca7b3a89c91857b6f645850463b30251a0f010000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5958534c43392f24190e03000007121c262f383f464a4c55575757575757575758636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d17222d374049525b626c707c838b91969c9ea5a4a6a7a7a7a7a5a3a39c9a938f867f7570737f8b969c9c9c9a8f83786c6055493e32261b0f0000000000000000000000000208121c262f38414a535c656e75808c939ca5aaa19c91867d716b625950473e352b201a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36404b56616b75818d98a29d94897d71665b52483a322819100700000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000007131e2a36414d5864707b87959ea9b3a89d94867b6f64584c41352b211205000000000000000000020c151f273038414a525b636c727e837b706b625b534b433c414c57626c7984909ba7b2aa9f96887c7065594e42362b1f14080000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b110701000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000020c18232d38414c58626c77828e9aa4ada89c91867c75818c98a2acaba2988c81756a6156483f362c21170c010000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6666666666666666666666666666666666666666666666666666666665635c53493e33281d110600010c17212c363f4850555760636363636363636363636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a626c707c858f939c9fa7a9aeafa9a7a6a4a4a5a6a8a7a49d97918b8075737f8b96a2a8a69a8f83786c6055493e32261b0f00000000000000000000000000020c161f28313a434c555e636e79828e949ea6aaa09790857b706960574e453a2f2a22180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b465059646f7b86919ca79b8f84796e63574b4239292118090000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000914202c37434e5a66717d8894a5aeb2a69b8f84786a61564b4034291d120600000000000000000000050e1720283139424b535c646d727a6f6a625b524b433b333e48525b6b76828d99a5b0afa795897e72675b4f44382d21160a00000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b211a110b0403000104080e161e273039414c57636e7984909ca7b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000009131e28333e49535c66727e89949da8aba1978c807b85919ca8b3a79c92877c70655a5147382f261c1207000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085797171717171717171717171717171717171717171717171717171717171716c63584d41362a1f130800040f1a25303b46505960636c6e6e6e6e6e6e6e6e6e6e6f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b343f4b56606a707c8590959da4aaafaba6a69f9c9a9998999b9ca0a7a7a09c918b7f747f8b96a2ada69a8f83786c6055493e32261b0f0000000000000000000000000000060f172129333b454a555f696f7b8490969faaa79e958f837a6f685e5449443a322820160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606974808b96a09f968b7f73685f54493e33281c11080000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000a16222d3944505c67737e8a96a1adb0a5998d82766b5a51473c31261b10050000000000000000000000060f182029323a434c545d64686e68615a524a423a322e3846515d6874808b97a2aeaea2968b7f74685c51453a2e23170b00000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453b302a201b14110e0a0c0f12171f262f37414a545d66727e89959ea9b0a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000040e19242f39434b57636e79848f9ba6afa89c9085808c969faaada4998e82776c62574a4137271f160c02000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c91857d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7165594e42372b1f14080006111d28333f4a5560696e777a7a7a7a7a7a7a7a7a7a7a7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29343f49535c636f7a838f959ea5adada8a29b9995908e8d8d8d8f91979b9da4a19990897e7f8b96a2ada69a8f83786c6055493e32261b0f000000000000000000000000000000071019222b303b454f58616a707d86919ca1aaa59d938d81786e635d544b423930271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a84909ca79c91857b6f63584f453a30251a0e010000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000c17232f3a46515d6974808b97a3aeafa3978c8075695e5246372d23180d02000000000000000000000000071019212a333b444d54585f635f58514a423a322a2d3944505b67727e8a95a1acafa3988c8175695e52473b2f24180d01000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554a433b2f2b251e1c1914171a1d22272f363f48515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000000a151f28333e49545f68737f8a959fa9aa9f96908c909aa6afa89d93897d71665b5248393027170e0500000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f969189898989898989898989898989898989898989898989898989898989898982776b6054493d31261a0f0006121d2935404c57636e7a838585858585858585858585868b959faaaa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242f39424d58636d76818d949da5aeada49e9b918d88858382818283868a8f939c9fa09b9084808b97a3aea69a8f83786c6055493e32261b0f0000000000000000000000000000000008121b212c363f48515a626c727e89909aa2aba49b928b7f746d645b524940372e251b110701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b67737e8a959ea5988d81756a6156473e352b20160b000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000c18242f3b46525e6975808c98a3afada2968b7f73685c5145392e221309000000000000000000000000000008111a222b343c44474f5457544f474139312a222c37434e5a66717d8894a0abb0a4998d82766a5f53483c3025190e020000000000030f1a25303b454f5866727d89949da8ada49b8f83796e635d534b433a352e2a2723242126282c31383f474f58616a727e89939ca7b6b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca7afa69f9c979aa1aaaea59b8f83796e63574b4238292017060000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c94949494949494949494949494949494949494949494949494949494948e83776b6054493d31261a0f0006111d28333f4a5560696f7b849096919191919191919192959ba4aeaa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c66717d88919ba4adada49d948f88817d7a77767676787b7e838a90969e9e959085909ca8b2a69a8f83786c6055493e32261b0f000000000000000000000000000101010207121c262f38414a535c646e75808c929ca4aba29c91877e726c625a51473f352b211a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c77838f9aa59e94887d71655a5147372e251b1107000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000d1924303b47535e6a75818c98a4afada1968a7e73675c5044392d22160b00000000000000000000000000000109121b232c34373f454a4b4a453f373129211f2b37424e5965707c88939faab0a5998e82766b5f54483c31251a0e030000000000000b16212b35404b57636e79848f9ba4ada89d938b80746d635c5349453e3635322e302c3134363c41484f575f686f7b84909ca3acb6b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000b16202b353e4a56606a75808c97a0abafaaa8a3a5aab4a99e958a7e73685e54493e33271c10070000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b7afaaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8e83776b6054493d31261a0f00040f1a25303b465059616b717d86919ca19c9c9c9c9c9c9d9fa4acb5aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36414d58636d77838e9aa2abafa69d948f847d76716e686b6a6b6a6f73797f8590949e9e9690969faab2a69a8f83786c6055493e32261b0f00000000000000000206090a0b0d0d0d0d0d0c151f273139434b545d636e79828e949da6aba19790857c706a60584f453b302b22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5864707c87939da79b9084796e63574b4137291e150b01000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000e1925303c47535f6a76818d99a4b0aca1958a7e72675b5044382d21160a000000000000000000000000000000020a131b23272e353b3e403e3b352e2720191f2a36424d5964707c87939eaab1a59a8e82776b6054493d31261a0f0300000000000007121c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a52585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000000007111b25313c46505964707b86919ca8b4b5b3aeb0b4afa79c90847a6e63574e453a2f24190e000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b5b9b5b3abababababababababababababababababababababababababababa59a8e83776b6054493d31261a0f00010c17212c363f48515a636c727e89909aa2aba8a8a8a8a9aaaeb5b5aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5865717d88939ca7b4a99f958f837b716d66635f585e5a6163686e737c8490949e9f9c9fa6afb2a69a8f83786c6055493e32261b0f00000000000002080d1114161718181818181818172029323b444a545f686f7a838f969fa8a89f958f837a6f685f544a443b322920170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6874808c97a3a4978c8075685f54493e33281c0d0400000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000e1925303c48535f6a76818d99a4b0aca195897e72675b5044382d21160a00000000000000000000000000000000030b13161e252b30333433302b251e16131f2a36424d5964707c87939eaab1a59a8e83776b6054493d31261a0f03000000000000030f1a25303b454f58636e7a848f9ba2abaaa09790857c716c635e57534d4c48484747464a4c50565b61696e78818c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000000000010b17222c36404b57616b76818d99a3acb6bfbabbb5aa9f968b8074696055473e352b20160b000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa59a8e83776b6054493d31261a0f000007121c262f38414a535c646e74808b929ba4adaaaaaaaaaaaaaaaaaa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6875818d98a3acada49c90857b706b635c57554f535156585f636c707b849097a0a8aaafb6b2a69a8f83786c6055493e32261b0f0000000000040b12171c1f2122242424242424242424222b303b454f58606a707c859097a1aba69d948e82796e635e544b433931271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7984909ba79d94887c7065584f453a30251a0e0000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000d1924303b47535e6a75818d98a4afada1968a7e73675c5044392d22160a000000000000000000000000000000000003060e151b212528292825211b150e141f2b37424e5965707c88939faab0a5998e82766b5f54483c31251a0e03000000000000000b16212b353f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b7079818c919ba2a7a9afb6b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000008121d26323d48525b65717d88939ca7b2bec7bfb3a89c91857b6f64595046362e251b1106000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9a8e83776b6054493d31261a0f0000020c161f273139434b545d636e78818d939da59e9e9e9e9e9e9e9e9e9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7984909ca7b3a89d938a7e736b615a534c4a4547474b4f545b626b707c86919ca4adb7bdb2a69a8f83786c6055493e32261b0f00000000040c141b22272b2d2e2f2f2f2f2f2f2f2f2f2f2f2b353f47515a626c727e87919ca2aba49c928c80756e645c534a41382f261c1207020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5866717d89949ea69b8f83786c6258473e352b20160b0000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000d18242f3b47525e6975808c98a3afada2968a7f73685c5145392e22130800000000000000000000000000000000000000050b11161a1c1d1c1a16110b0914202b37434e5a65717d88949fabb0a4998d82766a5f53483c3025190e020000000000000007111b25303b465059646e76818d959ea6afa69e9590867f78716d6764625b5f5e5f596063666a6f747b828d919ba19f9c9fa6afb0a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000000000030d18232e38414d58636c77838e9aa5aeb8c0b6aca2988c81756a6156483f36261e140b01000000000000000000000000000000000000000000000000000000111d28343f4b57626e7986919393939393939393939393939393939393939393939393939393939393939393939393938e83776b6054493d31261a0f000000050f172029323b4449545f686f7a838f95939393939393939393939393877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717d88959ea9b1a89b8f83786e655b524a433e3b373c3e4549525b626c74808b949da8b3bdb2a69a8f83786c6055493e32261b0f000000020b141d252b313638393b3b3b3b3b3b3b3b3b3b3b3b3b374049525b646d74808b929ba4aca29a908a7e726c635a51483f362c211b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6876818d98a5a5978b8074685c5349372e251b11070000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000c18232f3a46525d6974808b97a3aeaea3978c8074695d5246372c22170c010000000000000000000000000000000000000001070b0f1112110f0b07010a15212d38444f5b67727e8995a1acafa4988d81756a5e53473b3024190d0100000000000000010b17212c363f48545d636f7b8490969fa7aea59e96918a827d7773706b6c6a6a6a6b696f71757a7f858e939ba19c9590959fa9b0a5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000000000000009141e28333e49535c66727e89949ea8b4b5b2a79c92877c70655a5147382f26160d0400000000000000000000000000000000000000000000000000000000111d28343f4b57626e7986878787878787878787878787878787878787878787878787878787878787878787878787878782776b6054493d31261a0f00000000071019222b303a454f58606a707b8487878787878787878787878787877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a5aeaba1978a7f73685e554a413a33302d31353a424a535c636e7a838f9ba6afb9b2a69a8f83786c6055493e32261b0f00000008121b252d353b414445464646464646464646464646464646464b545d636e78818d939da5aaa19c91867d716b615850463b302b231910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7985909ca79e95887c7165594e43392b1e150b010000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000b16222d3945505c67737f8a96a1adb0a4998d82766a5950463c31261b10040000000000000000000000000000000000000000000003050605030000000b17232e3a45515d68747f8b97a2aeaea2978b8074685d51463a2e23170c00000000000000000007121c262f38444b56616a717d869197a0a7aea7a09c938e88837f7c797776767676787a7d81858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000000040e1a242f39434c57636e7984909ba6afaaada4998e82776c62574a4137271f1605000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41362a1e1307000000000008121a202b353e475059626b707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1824303b47525e6975808c98a3afa89c91867b6f63584c453a31292522252b303a434a556069727e8a959fa9b4b2a69a8f83786c6055493e32261b0f0000020d17222b353e454b4f51525252525252525252525252525252525252545e686f7a838f959fa7aa9f9690847b6f6960554a453c332a20150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d88959fa79c9084796e63574b4034291d1106000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000915202c37434f5a66717d8994a6afb2a69b8f83786a60564b3f34281d1107000000000000000000000000000000000000000000000000000000000005101b26313c47515a6a75818d98a4afb1a8958a7e72675b5044382d21160a000000000000000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000000000a151f28333e4a555f68737f8b969f9e9e9e9d93897d71665b5248393127170f05000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b7070707070707070707070707070707070707070707070707070707070707070707070707070706f6b61574b4035291e120700000000000107111b252e374049525b626a6f70707070707070707070707070706e695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313d48545f6b76828e99a5b0a69b8f83786a61564b403429211a181b2029303b465059636f7a85909ca7b3b2a69a8f83786c6055493e32261b0f000006111c27313b454e555a5c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e576069707c859097a0aba79e948e82796e635e554c433a2f251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6975808c97a6a8988d8176685f54493e33281c1105000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000007131f2a36414d5964707b87969faab4a89c91867a6f63584c40352b20160b000000000000000000000000000000000000000000000000000000000006121d2934404b56616a78848f9ba6b2aba197887c71655a4e42372b20140800000000000000000000050f17222d374149535c646e727e8690969da4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa6a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a859093939393938f83796e63574b42392920170700000000000000000000000000000000000000000000000000000000000005111c27323d48525b6264646464646464646464646464646464646464646464646464646464646464646464646464646464615a51473d32271c1005000000000000010b151e263038424a525a61646464646464646464646464646464635f584f453b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26323e4955606c78838f9aa6afa4988d81756a5a51473c312419100b1119212c363f4a55606975808c98a3afb2a69a8f83786c6055493e32261b0f000009141f2b36414b555e6568696969696969696969696969696969696969696969696b717d86919ca6aea59c938c81756f655c53493e34281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c78848f9ba6a197897e7267584f453a30251a0e03000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000006121d2934404b57636e7a85909ca8b3aba097897d7166584f453a30251a0e030000000000000000000000000000000000000000000000000000000009121e2a35414c58646f7b86949da8b4a89c91867b6f63584c4135291e1207000000000000000000000008131d273039434c545d646e727e858f949ca0a7abaca7a6a59e9c9a999899999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000000000000000000b16212b353f4b56606a7580878787878787877f73685e54493e33271c1007000000000000000000000000000000000000000000000000000000000000030e19232e38424b52575959595959595959595959595959595959595959595959595959595959595959595959595959595857514a41382e23180d0200000000000000040d161f28313a424a515658595959595959595959595959595957554f483f362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101b27333e4a55616c78848f9ba6aea2978b8074685d5146372d2217090107121c26313b46505966717d8994a4adb2a69a8f83786c6055493e32261b0f00000a16212d38444f5a656f73757575757575757575757575757575757575757575757575757f8b959fa9aca39b918a7f736d63584d42362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87949da89c91867b6f63584c41352b20160b00000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000005111c28333e4a545f6877828e99a5b1b0a7978c8075685f54493e33281f140a00000000000000000000000000000000000000000000000000000006111b26313c47515a67727e8a95a4adb2a69a8f83786a60564b3f34291d12060000000000000000000000030d172029323b444d545d646d727c838c91979ba2a7a9aeaea9a7a6a4a4a4a5a6a8a8a69f9c949089817a6f74808c97a3a8a5998d82766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000000000007111b25313c465059636f7a7c7c7c7c7c7c7c796e63574e453a2f24190e00000000000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e1409000000000000000000060f18212a313941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333e4a56616d7884909ba7ada2968a7f73685c5045392e22130b00020c17222c36414c58636f7b86949ea8b2a69a8f83786c6055493e32261b0f00000b17222e3945515c68737f808080808080808080808080808080808080808080808080808085909ca7b3aaa19c91867d71665a4e43372c20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8a96a4a69a8f83776a61564b4034251b110700000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d12060000030f1a25303b454f5868747f8b97a5aeb2a79b9084796e63574b42382e2418100600000000000000000000000000000000000000000000000000050e16212a34404b56616a76828e99a5b0afa6988c8075695a51473c31261b1004000000000000000000000000071018222b343c444d545d646c707a80868d92979b9ea5a3a5a6a7a7a7a6a5a8a19c9a95908b847e756f6974808c979c9c9c998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000000000000000020c17222d37404a5560696f707070707070706e695f55473e352b20160b0000000000000000000000000000000000000000000000000000000000000000040e18212a32383d4041424242424242424242424242424242424242424242424242424242424242424242424242424241403d38312921180e0400000000000000000000071119212931373c40414242424242424242424242424242403f3b362f271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca1958a7e72675b5044392d21160a000008121d2934404b56616a78848f9ba7b2a69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959fa9b5b5aaa0979084796d61564a3f33271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6a76828d99a4a3988c8075695a51473c3126150b0100000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717c88919191919191867a6e63574c4035291d12060000000b16212b35424e5a65717d88949ea9b4a99e94887d71665b52483e332820170d030000000000000000000000000000000000000000000000010b151e27313c465059646f7b86919ca8b3aa9f96897e72665b4f44372d22170d010000000000000000000000000008121a232c343d444d545b62696f757c82878c909596989a9b9b9c9b9b999797918f8a85807a726e636974808c91919191918d82766b5f54483c31251a0e0000000000000000000000000000000000000000000000000000000000000008131d27313c465059606364646464646464635f584f45362e251b110600000000000000000000000000000000000000000000000000000000000000000008111921282e32353636363636363636363636363636363636363636363636363636363636363636363636363636363635322e282119100700000000000000000000000009111820272d32343536363636363636363636363636363433302c261f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a000005101b26313c47515a6b76828d99a5b0a69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838e989898989898989898989898989898989898989898989898989c9fa6afb9bab0a79c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b7984909ba7a595897e72675b4f44372d22180a0000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000814202b37424e5965717d85858585858585857a6e63574c4035291d120600000007111d2934404b57636e7984909ba7b2aea5998d82766c62574c443930271d1308030000000000000000000000000000000000000000000107111b252e373f4a55606974808b96a0aab3a89c90857a6f63574c4035291d13080000000000000000000000000000010a131c242c343c444b525960636c70767c8084878a8c8e8f9090908f8e8c8a86837f7a746f69645d6974808585858585858581766b5f54483c31251a0e00000000000000000000000000000000000000000000000000000000000000030d17222c3640495055575959595959595957554f483f35261e140b01000000000000000000000000000000000000000000000000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18100900000000000000000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000020d18222d3747535e6a75818d98a4afa69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838e9aa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a7a9afb6b4b4b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c87959ea99e95877b7064584d41362a1f13090000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d110600000005111c28333e49545f6875808c97a3acb4a89c91877c70655d544940372d221c13070200000000000000000000000000000000000000020a121a212b353f47525b636f7a84909ca7b0ada4988d81766960554a3f34281d1103000000000000000000000000000000030b131c242c343b424950555c62656c7074797c7f8182848485848382807e7b77736f696360595b6670747a7a7a7a7a7a7a7671685d52473b3024190d000000000000000000000000000000000000000000000000000000000000000008121c26303840464a4c4d4d4d4d4d4d4d4c4a453f372f25160d04000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e0700000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000913232f3b46525d6975808c97a3afa69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838e9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a5a79b9084796b62574c4035291e12070000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f04000000030e1a25303a454f5865707c88929ca7b2aba1978e82766d635a51473c312c241c120c0500000000000000000000000000000000000309121a222b303b454f58626b74808b959ea9b3a89d94897d72665950463c31261b0f0400000000000000000000000000000000030b131c232a323840464a53575b6265686e7073757778797979787775736f6b676360595550565f66696e6e6e6e6e6e6e6b6861584e43382d22170c0000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4042424242424242403f3b352f271e15050000000000000000000000000000000000000000000000000000000000000000000000000000040a0e11121313131313131313131313131313131313131313131313131313131313131313131313131313131312100d090400000000000000000000000000000000000003090d101212131313131313131313131313131312110f0c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000c17232e3a46515d68747f8b97a2aea69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838e9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586a75818c98a4a5998d82766b5b52483d32271c10050000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000030e19242f39434c5358596363636363636363625550483f362c21170c01000000000b16202b353e4c57626c77828e9aa3acb1a89c92897d726a61564b453d342c211c150e08020000000000000000000000000001070d131b232b323b434a545f68707c86919ca5aeaea59b8f83796e63574b40362c22170c010000000000000000000000000000000000030b131a222830363c42484c5257575e6365676a6b6c6d6d6d6c6b696764615a5755504a464f565b5d636363636363635f5d5850483e34291f1409000000000000000000000000000000000000000000000000000000000000000000060f171f262c313435363636363636363433302b251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000305070808080808080808080808080808080808080808080808080808080808080808080808080808080707050200000000000000000000000000000000000000000000020506070808080808080808080808080808060504010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00030f1a26323d4954606c77838e919191919191919191919191919191919191919191919191919191919191919191919085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6878838f9aa6a2978b7f74685d5145382e23180d020000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000a151f29333b43494d4e5757575757575757574a463f382f261c1207000000000007111b25333e48535c66717d89939da7b3aba29b90847a6f635f564d443d302c261f17120c080401000000000000000104070b11161d232b333b434c545d636e79828e969faab4a99e948a7e73685f54493e33261c120800000000000000000000000000000000000000030911171f262c31393e42484c4e5457595c5e606161626161605d5b5856514c4a46403c464c50525757575757575754524e4840372e241a100500000000000000000000000000000000000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a292825211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00030f1a26323d4954606c778285858585858585858585858585858585858585858585858585858585858585858585858585796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7a85919ca8a795897e72665b4f44382c211409000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000010b19242f39424d58636d77838f9aa1abb4a99e948d81766f655e544d453b362f27221c17130f0c080908080808080c0f12171b21272d313c434b535c646d74808b929ca7afaca39b9084796e63584f453a3025160c03000000000000000000000000000000000000000001070f161c22292f33383e3e45494b4d50525455565656555452504d4b47413f3c36313c4245464b4b4b4b4b4b4b4847433e372f271e140a000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0f10101110100e0c0a07070502000000000000000106060606060606020200000000000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00030e1a25313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79756b60554a3e33271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87969faaa097877c7065594d42362b1f1308000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000009121a22292f33363740404040404040404033302c261f170f05000000000000000a151f29343f49545d65717d88919ba5aeaea59b928b7f746e645d554a453f38312c26221d1b1712141413141412171a1d21252b30373c454c535c636c727e86919ca3acafa79c92897e72695f55473e352b2016060000000000000000000000000000000000000000000000060d12171f24292e33353a3e40424547484a4a4b4a4a48464441403d3834312c2c32373a3b404040404040403c3b38342e271f170e040000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121313131313131312110f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a18161312100d09040103070a0c0c111111111111110e0d0c090500000000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00010d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a7a89c91857a6e63574c4035291d1206000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000020a12191f24282a2b30333435353433302b2825211c160f070000000000000000050f1a252f3a434d58636d75818d959ea8b1aba299908a7e726e655e554f48423b36312c28262221201f1f1f20202126282c30353b41474b555c636c717d859097a0abb5aa9f968e82776e64584f45372e251b110700000000000000000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393534322d28262223282c2e2f3434343434343431302d29241e170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080808080808060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f22242627282827272624211e1e1c18130f0c0e121517181d1d1d1d1d1d1d1a191714100a040000000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000a15202a353f4851595e6063636363636363636363636363636363636363636363636363636363636363636363636362605b544b42372d22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b96a2a79b8f84786960554a3f33281d1106000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000020a121921282e32353b3e404141403e3b35322d27201911090100000000000000000b16202a333e49535c646f7b859097a1abb6a9a09c91867e736e635f58524a46403c3734312c2c2b2b2a2b2b2c2c3134363b3f454a51565e656d717d8590969fa7b0aba29c91867c70645d54483f36261e150b010000000000000000000000000000000000000000000000000000050a0f14191b202427292b2e30313233333332312f2d2a2927231e1b17181d202323292929292929292524221f1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f14191b202427292b2e30313333343332312f2d2a2927231e1b17181d202323292929292929292524221f1a140e0600000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f000006101b252f3841484f53545757575757575757575757575757575757575757575757575757575757575757575757575655514b443b32281d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4a5998e82766b5950463b30251a0f04000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000008121a222931383d3f454a4b4d4c4b4a453f3d37312921191106000000000000000006101a242f39434b56616a727e87919ca3acb5aaa09691877f756e69625b55504b46403f3c3738373636363738363b3f40464a4f545a61646f737d8590959ea6afada49b918a7f736c62574d44382f26160d040000000000000000000000000000000000000000000000000000000000050a0b1116191c1d1f22242627272827272624211e1e1b18130f0c0e121517181d1d1d1d1d1d1d1a191714100a0400000000000000000000000000000000000000000000000000000000000000000000000004060809111111111111111111110e0605030000000000000000000000000000000000000000000000000000000000000000000004070909111111111111111111110c0c0a0703000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393535322d28262223282c2e2f3434343434343431302d29241e170f06000000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f0000010b151f2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a47423b332b22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26323d4954606c77838e9aa5a3988c8075695e5247362c21170c01000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000071018222b333a41474b4f5457585857544f4b474139322a21160e0500000000000000000b151f29313c47515a646d74808c929ca3acb0a7a097918a8079706c63605956504c4b46454342424242424345464a4c5055585f636a6f767f8690969ea5aeaea59d938d81766e655b52483d34271f1506000000000000000000000000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a18161312100d09040103070a0c0c111111111111110e0d0c0905000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214141d1d1d1d1d1d1d1d1d1d1a11100e0b06010000000000000000000000000000000000000000000000000000000000060b0f1214151d1d1d1d1d1d1d1d1d1d181715120e09030000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171f24292e33353a3e40424547494a4a4b4a4a48464441403d3834312c2c32373a3b404040404040403c3b38342e271f170e040000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f000000050e1720282f35393c3d4040404040404040404040404040404040404040404040404040404040404040404040403f3e3c37322b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6d78848f9ba7a2978b7f74685d51453a2e23120700000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000030d172029333b434a5157585f636464635f5856514a423a32271e150c0200000000000000061018232d37414a545d636e79828e939da4adb0a7a09c918c827c746f69636059585650514f4e4e4d4d4e4f50505557586063686e737b818a91969fa6aeaea59e948f837a6f635e554b42382c24170e050000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0e10101110100e0c0a07060502000000000000000106060606060606020200000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2028292929292929292929251d1c1916110b040000000000000000000000000000000000000000000000000000020a10161a1e2020292929292929292929292323211d18130c050000000009131e28323c444c525557575757575757575655514b443b32281d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161d22292f33393e3e45494b4d50525455565656555452504d4b47413f3c37313c4245464b4b4b4b4b4b4b4847433e372f271e140a0000101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f000000000710171f252a2e31323434343434343434343434343434343434343434343434343434343434343434343434343433312d28221a130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a7985919ca8a1958a7e73675c5044392d22160a00000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000009131d273039434c535a6164686e6f6f6e6864615a524b42372f251b1107000000000000000009131d273039444a555f686f7a838f949da4acb0aba19a938e86807a746f6a666360595c5b5a5959595a5a5c59606366696e73797f858d919ca0a7afada59e9590847b6f6a60564e453a32281c1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282b2b3434343434343434343431292724201b140d05000000000000000000000000000000000000000000000000020b131a2025292b2c343434343434343434342f2e2c28231c150d050000000c17222d38424c555c61626363636363636362605b544b42372d22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a12181f262c31393e42484c4e5457595c5e606161626161605e5b5856514c4b46403c464c50525757575757575754524e4840372e241a100500101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f0000000000070e151b20232526292929292929292929292929292929292929292929292929292929292929292929292929282725221d18110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7a86969faaa094897d72665a4f43382c20150900000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00020d18222d374149535c636b6f757a7b7b7a756f6a625b52483f352b21160b0000000000000000030d172029303b454f58606a6f7b838f939ca3abb5aaa39c96918b847f7a76726f6a6968666565646565666869696f71757a7e838a90959ba2aab0aca49d9590857c706b615950463d352a21180b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060a0d0e0e0d0906050300000000000000000000000000000009121b22292f333637404040404040404040403c34332f2b251e160d04000000000000000000000000000000000000000000000009131b232a30343738404040404040404040403b3a37322c251e150c0300000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a222830363c43494c5257575e6365686a6b6c6d6d6d6c6b696764615a5856504a464f565b5d636363636363635f5d5850483e34291f140900101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f000000000000050b1015181a1a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c8793a6af9f93887c7165594e42372b1f140800000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0005101b26313c47515a636c717b8185868685817b706b62584f453b30251a0f030000000000000000071018212b353f485059616a6f7b838e939ba2aab0aca7a09c95908b85817d7a777573727170707071727375777a7d81858a8f949c9fa6abb4aaa39c948f847c706c625a514940372d241a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f111215181a1a181511100e0b06010000000000000000000000061019222b33393e41434b4b4b4b4b4b4b4b4b4b48403e3a352e261e140b01000000000000000000000000000000000000000000061119232c333a3f42434b4b4b4b4b4b4b4b4b4b4645423c362e251c13090000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000030c131c232a323840464a53585b6265686e7073757778797979787775736f6b686360595650565f66696e6e6e6e6e6e6e6b6861584e43382d22170c00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f0000000000000001060a0d0e0f11111111111111111111111111111111111111111111111111111111111111111111111111100f0c0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0a99e92877b6f64584d41362a1e130700000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0006121d2934404b56616a717d858c909595908c847c70685f554a3e33281c110500000000000000000007111b252f374049515a616b6f7a828d929ca0a7adb0aaa59e9c96918d898683817f7d7c7c7b7c7c7d7f808385888c90959b9da4a9afaea9a19a938e837c706c625b524a413830261c140901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1c1d2124252524201d1c1916110b04000000000000000000000b151f29333b43494d4e57575757575757575757544b49453e362e251b11060000000000000000000000000000000000000000050e172129333c444a4d4f5757575757575757575752504c463e362c23180e0300111d28343f4b57626e79868585858585858585796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000030b131c242c343b424950565c62656c7075797c7f8182848485848482807e7b78736f6a6360595b6670747a7a7a7a7a7a7a7671685d52473b3024190d00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a99d92867a6f63584c4035291e120700000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0007121e2a35414c58636f7b8490959c9f9f9c948f83796e63574c4034291d1206000000000000000000020c151e273038414a515a616a6f7a818a91969da4aaafaea9a69f9c9997918f8c8b898888878788898a8c8e9196989c9fa6a8adb0aaa59e9b908c827b706b625c534b423a312820160c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b212528292c3031312f2c292724201b140d050100000000000000040f1a242f39434c53585a626363636363636363635f57544e473e352b20191006000000000000000000000000000000000000020c161f27313a444c54595a626363636363636363635d5b564f463c32281d120700111d28343f4b57626e79859191919191919085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000000000020a131c242c343c444b535960636c70767c8084878a8c8e8f9090908f8e8c8a87837f7a746f6a645d6974808585858585858581766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a1a89d91867a6e63574c4035291d120600000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000c17232f3a46515d6974808b959ea5a9a9a59d93897e72675b4f44382d21160a00000000000000000000050e1620283139414a515a61696f767f868f939c9fa6aaafafaaa8a7a09c9a98969594939393949496989a9ca0a7a7a9afb0aba7a09c94908980796f6a625b534b423a322921180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12161e252b303334383b3d3c3b3834332f2b251e1611090100000000000006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6b635e574e453a2f2920160e05000000000000000000000000000000000007121c262f38414a545d63666e6e6e6e6e6e6e6e6e6e69665f564c42372c21150a00111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000000008121a242c343d444d545c626a6f757c82878c909596989a9b9b9c9b9b9a9895938f8a85807a726e636974808c91919191918d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1aaa096857a6e63574b4034291d110600000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000f1b26323e4955606c78838f9aa5aeb4b4ada4988d81756a5e53473b3024190d0000000000000000000000060f182029313a4149515960636f737d838b90969c9fa7a9aeb3b0aba8a6a3a2a09f9f9e9f9fa0a2a3a5a8aab0b3afaaa7a09c97918c847e756e69615a524a423b322a211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a22272e353b3e40434748484743403e3a352e262119110901000000000008141f2b36414d58636d717a7a7a7a7a7a7a7a7a7a766e685e5449433931271e150b0100000000000000000000000000000007111a212c363f48525b636d727a7a7a7a7a7a7a7a7a7a7570665b50453a2e23170c00111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000000071018222b343d444d545d646c707a80878d92979b9ea5a4a5a6a7a7a7a6a5a3a39d9a95908c847e756f6974808c979c9c9c998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a89c918579685e54493e33271c100500000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00111c28333f4b56626d7984909ca7b3bebcb1a5998e82776b5f54483d31261a0e00000000000000000000000007101821293139414950555e656c71797f858c91969c9ea5a7a9afb0b1afadacabaaaaaaabacadafb1b0afaaa8a69f9c97918d86807a726d635f58514a423a322a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a222a32373f454a4b4f525454524f4b49453e36322a221a110700000000000914202b37434e5a65717d8685858585858585858581786e635c534a41372e251b11070000000000000000000000000000060f18222a303b465058616b727e868585858585858585858075695d52463b2f23180c00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000000000030d172029333b444d545e646e727c848c91979ca2a7a9aeaea9a7a5a4a4a4a5a6a8a8a69f9c959089817a6f74808c97a3a8a5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8a96a2a79c9085796d624e453a2f24190e0300000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00101c27333e4a56616d7884909ba7b2b9b9afa6998d81766b5f53483c3125190e000000000000000000000000000810192129303840464a555c63696e737b80858b9095989c9fa6a4a6a8aaafababacababafaaa8a6a4a69f9c9996908c86817c756f6a645d554f484139312a221a1109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b333b42474f54575b5e5f5f5e5a57544e47423a322a22170f050000000008141f2b36414d58636d747f8b92919191919191928b7f746d635a51473f352b21191106000000000000000000000000030d161f28323b424a556069707b8590979191919191958e82796e63574c4034291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000000009131d273039434c545d646e727e858f949ca1a8abaca7a6a59e9c9a999898999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a45515c68747f8b96a2a79c9084796d62564a352b20160b0000000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000d1925303c47535f6a76818d99a0aaafafa99f968b7f74685d51453a2e23170b0000000000000000000000000000081018202830363c454b53585f636b6f757b8084898d909596999a9c9fa69fa0a0a09fa69f9c9b999696908d8985817c76706c636059544a453f3731292119110a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172028333b434b53585f63666a6b6b6966635e57524b423b32271f160c0200000006121d28333e49535c636e78818d949e9c9c9ca29c91867d716a61584f453b302921170e05000000000000000000000008121d263038424b545d636e79838f959f9c9c9ca19790857b6f695f554a3f33281c110500111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000000050f17232d37414a535c646e727e8790969ea4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa5a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a45515c68737f8b96a2a79c9085796d62564b352b21160b0000000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000814202b37424e5a65717d88909c9fa6a69f9c90857b6f64584d41352a1e13070000000000000000000000000000000810171f262c313b43484f555a61646a6f74797d8185888a8d8f90969393949494939396908f8d8b8885827e7a75706b65625b565049443b352f27201911090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039434c535c62686e7275777675716e68625b524b42382f261c1207000000040f1a242f394349545e686f7a848f969faaa8aba09790847b6f685f544a443a31271f160c0200000000000000000008121a222c364049525b646e75808c939da5aeaca39c91877d716b61584f453b30251a0f0300111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7aca195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2ada69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a1a89c9085796e624f453b30251a0f0300000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0008131f2a36414d58636c74808a9096979795908a7f736b61564b4034291d120600000000000000000000000000000000070f161c222b32373f454a51565a6164696e7176797c7f8183858687888889888887868583827f7c7a76726f6964625b57524a464038302b251e17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d17222d374049535c636c70797e818282817d78706b625b52483f362c21170c010000000b151f292f3a454e57606a707d86919ca2abb0a79e958e82796e635d544a41382f261c12070100000000000000061018222b313c465059626c727e89919aa3acaea59c928b80746d635a51483f352b21160b0000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000000007121c262f383f4b56616a717d869197a0a7aea79f9c928e88837f7b797776767676787a7d80858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909ba7a8a195897e72675b5044382d21160a0000000b17222e3945515c68737f8b96a2a8a69a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a95a1a89c91857a695f554a3f33281c110500000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0006121d28333e49535c666f747f858a8b8b8a857e736e645a51473d32271b10050000000000000000000000000000000000060c121a22272f353b41474b5156585f6366686e70737678797b7c7c7d7d7d7c7c7b79787674716e696763605957524c48423c363028211c150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a636c717c83898c8e8e8c89837c706c625950463b30251a0f04000000061016202b353e47515a626c737f8a919ba4adaea59c928b80746d635b52483f362c211a1107000000000000040d162029333b434a56606a707c85909ca1aab0a79e948e82786e635d544a41372f251c12070000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000010c17212c363f48545d646f7b8490969fa7aea59e96918a827d7773706b6b6a6a6a6b696e71757a7f858e929ba19c9590959fa9b0a5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909b9c9c9c95897e72675b5044382d21160a0000000b17222e3945515c68737f8b969c9c9c9a8f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a95a1aba097867a6e63574c4034291d120600000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00030f1a242f39434c565f666f737b7e80807e7b736e645e554a41372d23180d02000000000000000000000000000000000000030812171e252b30383d41474b4f5557585f6365686a6c6a6f707171727171706f6e686a6865635f585755504c48423e38312c261f18120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a717d858f9398999998938f857c706960554a3f33281d11060000000006111b252e364049535c656e76818d939da6afaca39c91877e726b615850463b302a21170f0600000000010b151e263039434c555e636f7a838f969faab5aba09790847b6f685f544c433a31271e150c020000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465059646e76818d959ea7aea59e9590867f78716c6764625b5f5e5f596063656a6f747b828c919aa19f9c9fa6afb0a5998d82766b5f54483c31251a0e00101c27333f4a56616d7884909191919191897e72675b5044382d21160a0000000b17222e3945515c68737f8b91919191918f83786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a0b09d91867a6f63584c4035291e120600000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000a151f29333b464e565e656a6f727474726f6a645e554d453931271e1309000000000000000000000000000000000000000001060e151c21282d32373d3f454a4c4f5457595c5f5a61646565666666656564635e575c5a57554f4c4a46403d38332e29221d160f07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7a8490969da4a5a5a39d958f83796e63574c4035291d120800000000010b141e263039434b555e636f7a838f969faab5aba19790857b706960554a443a32281f160c0300000007111b252e374149535c656f76818d949da6afaba29c91867d716a61584f453c332921170e05000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000000006111d28333f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b6f79818c919aa2a7a9afb6b0a5998d82766b5f54483c31251a0e00101c27333f4a56616d7884858585858585857e72675b5044382d21160a0000000b17222e3945515c68737f8585858585858583786c6055493e32261b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a0a99d92867b6f64584c41352a1e120700000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000050f19222b353e464e555a61636769696763615a554d453d342920170e0400000000000000000000000000000000000000000000050c12161e23272d32353b3f40454a4b4e505351565859595a5a5a5a595857544e514e4c4a45403f3b36322e28241f17120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596974808b959ea6adb0b0aca59d948a7f73685c5045362c21170c0100000000040d162028323b454a556069707c85909ca1aab1a89f958f82796e635d544b423830261c12080100061019202b353e47515a636c737f8a919ba4adaea59c928b7f746d635a51473e352c2319100600000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba2abaaa09790857c716c635e57534d4c48484747464a4c50565a61696e78808c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e00101b27323e49545f6a74787a7a7a7a7a7a7a726e64594e43372c2015090000000a16222d38444f5a656f737a7a7a7a7a7a7a7872695e53483d31261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c8893a8b19e93877c7064594d42362b1f130800000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000009121a252e353d45495156585b5d5d5b58565149443d342d2419100700000000000000000000000000000000000000000000000002070e13181d23252b3033353b3e40424547474b4c4d4e4e4f4e4e4d4d4b49454542403f3b3634312c26231e19140f080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a78848f9ba5aeb6bcbcb6ada49a8e83776c5950463b31261a0f040000000000050f18222b313c465059626c727e89919aa3acaea59d938c80756e645b524940362c221a1207050e172129303a454f58616a717d86919ca2abb0a79e948e82786e635c534a41372e251b13080000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a51585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e000e1924303b45505a636a6d6e6e6e6e6e6e6e67645d544a40352a1e130800000009141f2b36414b555e65686e6e6e6e6e6e6e6c6962594f443a2f23180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b8797a1aba094887d71665a4e43372c20140900000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000020a151d252d353941474b4c505152504c4b474039342c241c140800000000000000000000000000000000000000000000000000000004090e13181c2125282b3033343639373c40414242434343424241403e3a35373433302c2826221c19140e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86949da8b5bec7c6bdb3a89c9185796960554a3f34281d110600000000000008121a222c364049525b646e75808c939da6afaca39a91897e726c625950463c312a22180f0c151f27313a4149545f686f7b849096a0aab5aaa09690847a6f685e544c433931261e150b020000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e79848f9ba5aea89d938b7f746d635b5349453e3635322e302c3033363c41484f575f686f7b84909ba3acb6b0a5998d82766b5f54483c31251a0e000b16212c36404a535a5f61636363636363635b59544d443b30261b100500000006111c27313b454e555a5c63636363636363605e5952493f352b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8a195897e72675b4f44382d21160a00000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000040d151d242930373c404144464644413f3c373028241c140c03000000000000000000000000000000000000000000000000000000000004090c12161a1c212528292b2e2d313435363737383737363534332f2b2b292825211d1a17120c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d58646f7b8792a3acb7c1cccbc0b5aa9f96867a6f63574c4035291d12060000000000000108121c263038424b545d636e79838f959fa9b4aaa19c90857c706960554a453b32282016121c262f38414a545d636e78828e949ea7b0aba29c91867d716a61574e453b332920160d04000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5866727d89949ea8ada49a8f83796e635c534b433a352e292723242125282c31373f474f58616a727e89939ca7b3b0a5998d82766b5f54483c31251a0e0007121c26303a424a50545657575757575757504e4a443d342b21160c01000000020d17222b353e454b4f515757575757575755534f4941392f251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f687984909ca7a2968b7f73685c5145392e22170b00000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000000040c141820272d313435393a3a383534312d272018140c03000000000000000000000000000000000000000000000000000000000000000002070b0f11161a1c1d1f222326292a2b2b2c2c2c2b2b2a29272420201d1c1a16120f0c080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a86939da8b3bcc5c5bdb3a89c9085796960554a3f34281d110600000000000000030d161f28323a444a556069707c85909ca1aab5aa9f968f837a6f635e554b423930261e1a212c363f48515a636d74808b929ca5aeada49b918a7f736c635a51473e352b2318100600000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554c433b2f2b251e1c1914171a1d22272f363f47515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e00020d172029323a4045494a4b4b4b4b4b4b4b4443403b342c241a1107000000000008121b252d353b4144454b4b4b4b4b4b4b4948443f3931281f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586c78838f9aa6a3978c8074695d52463a2f23130900000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000000000040810171d222629292d2f2f2d292926221d1710080300000000000000000000000000000000000000000000000000000000000000000000000003070b0f11121413181b1d1e1f20202020201f1e1d1c19161112110f0c070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606978838f9aa3acb4babab6aca2998e82776b5950463b31261a0f040000000000000000060f17212a303b465058626b727e89909aa3acafa69d938d81766e655c534940362e25212a303b454f58616b717d87919ca2acafa69d948d81766f655c534940362e251b12080000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453c332a201b14110e090c0f12171e262e374149545d66727e89959ea9b0a5998d82766b5f54483c31251a0e0000071019222930363b3e3f40404040404040383735302b241c130a010000000000020b141d252b31363839404040404040403e3d3a352f2820180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b3548545f6b76828e99a5a4988d81766a5e5347382d23180d02000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000000000000070d13181b1d1e212323211e1d1b18130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608090d101212131414151414131311100e0b06060504010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b46505967737f8a939da4abafb0aba39c92897e72665b4f44362c21170c0100000000000000000007111a212c363f48525b646d74808c939ca5aeada49b918a7f736c625950473e352b28323a424a555f696f7b859097a1abb5aa9f968f837a6f635e554c433930261e140a020000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b231a110b0403000104080e161e273039444c57636e7984909ca7b0a5998d82766b5f54483c31251a0e00000009111920262c303233343434343434342d2c2a26211a130c0300000000000000040c141b22272b2d2e3434343434343432312f2b251f18100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000711232f3b46525d6975808c97a3a69a8f83776c5a51473d32271c1005000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000000000000003080d101212161818161212100d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060708080909090808070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404c57636e79838f949ba2a3a7a09c938e82776e64594e4237261c1208000000000000000000000107121c262f38424a545d636e79828e959ea7b0aba29c91867c706a60574e453a2f3038424b545d636e79828e959ea8b1aba19c91867c706a60564e453b322820160d04000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b120601000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e000000010910171c212427272929292929292921201e1b16110a03000000000000000000040b12171c1f222229292929292929262623201b150f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a95a1a89c9085796b61564b4035291e1207000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000000000000000000020406070a0c0c0a070604020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c28333e4a555f686f7b838d9196989797918c837a6f635d544a3f3429160c020000000000000000000000020c161f27313a444a555f686f7b849097a0abb5aa9f968f847a6f685e54494339364049525b646e75808c939ca5aeada49b918a7e736c625950463d352b2218100500000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110a0a0a0a0a0a0a0a0a0a0a0a0a0a0706050200000000000000000000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4033271e150a02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e0000000000070d1216191b1c1d1d1d1d1d1d1d161513100c0701000000000000000000000002080d111416171d1d1d1d1d1d1d1b1a1815110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c8893a5aa9f96877b6f64584d41352a1e1307000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050607070707070707070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58616b6f7a81878a8c8c8a86817a6f6a60564d443a30251b0600000000000000000000000000050e17212a303b454f58616b717d87919ca2abafa79d948d81786e635c534a413c465059626c727e89919aa3acafa69d938d81756e645b524940372d241a12080000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1616161616161616161616161616161212100d09030000000000000000000000000e1a26313d4854606b77828e9aa5b0a4998d82766a5b52483d3223160e05000000000000000000000b16212b35424d5964707c8793a6afa5998d82766b5f54483c31251a0e00000000000002070b0e1010111111111111110a090805010000000000000000000000000000000206090a0b111111111111110f0f0d0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86949ea9a694887d71665a4e43372c201208000000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000000000000000030506060606060606060606060606060606060606060606060606060606060606060606060606060606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f1112121212121212121212100c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48515a616a6f767c7f80807f7b756f69605a51473c342a20160c0000000000000000000000000000061119212b353f48515a636d747f8b929ca5aeada49b928b7f736d635a5147434a556069707c85909ca1aab5aa9f968f837a6f635e554b423830261d140a010000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428212121212121212121212121212121211e1d1b18130d070000000000000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e231806000000000000000000000007111d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a7984909ba7a1968a7f73675c5045362c22170c010000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000000001070b0f111212121212121212121212121212121212121212121212121212121212121212121212121212121212110f0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1c1d1e1e1e1e1e1e1e1e1d1b17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f37414a515a61636b7073757573706b636059514940372c231a100600000000000000000000000000000007111b252f37414a535d636e78828e949ea7b0aba29c91867d716a61584f4b555e636f7a838f969faab1aaa19c90857c706960554d453b322820160c04000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2926231d17100800000000000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e22140b000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e000000000000000002050707101111111111111111110908070400000000000000000000000000000000000000000105080a0a1111111111111111110f0605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596b76828e99a5a3988c8175695950463c31261b0f040000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000000000050b11161a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1a16110b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b2125282929292929292929292926221d170f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27313a414951565b62646869696764615b555049403930271c130a00000000000000000000000000000000020c151e27313a4349545f686f7b849096a0aab5aaa09790847b6f685f54535c656e76818d939da6afaca39a91897e726c625950463d342a22180f0600000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3939393939393939393939393939393939393534312d2720181007000000000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e00000000000004090d1012131c1d1d1d1d1d1d1d1d1d1414120f0b060000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1a12110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3745515d68747f8b97a7a69a8f83786960554a3f34281d11060000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000000060e151b21252829292929292929292929292929292929292929292929292929292929292929292929292929292929292825211b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252b303334353535353535353534312d2720180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e162129313940474b5257595c5e5e5c5857524a464038302820170b030000000000000000000000000000000000050e162129303a454f58616a717d86919ca2abb0a79e948e82786e635d5a636c737f8a919ba4adafa69d938c80756e645b524840362d241a11070000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4444444444444444444444444444444444444441403c37302920170d030000000000000000111c28343f4b56626e7985909ca8ada1968a7e73675c5044392d22160b0000000000000000000000040f1a26313b4650596d7984909ba7a5998d82766b5f54483c31251a0e0000000000070e13181c1e1e28292929292929292928201f1d1a1510090200000000000000000000000000030a11171b1e2121292929292929292929261d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202b37434e5a65717d8896a0a89c91857a6f63574c4035291e11070000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000000050e161e252b3033343434343434343434343434343434343434343434343434343434343434343434343434343434343433302b251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272e353b3e4040404040404040403f3c37302820170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019212830373c444a4e5053535353504f4b453c36302820180f0600000000000000000000000000000000000000061019202b353e47515a636c737f8a929ba4adaea59c928b80746d63616a717d86919ca2abb4a99f958f83796e635d544b42382f261c140a010000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625650505050505050505050505050505050505050504c4b47413930271d13090000000000000000101c28333f4a56616d7984909ba7ada2968a7f73685c5145392e221409000000000000000000000006111d28343f4a5560697985909ca7a5998d82766b5f54483c31251a0e000000000810171e2327292a333434343434343434342c2b28252019120a020000000000000000000000030c131b21262a2c2d34343434343434343432292825211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8a097887d71655a4e43352b21160b0000000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0000010b151e272e353b3e40404040404040404040404040404040404040404040404040404040404040404040404040404040403e3b352e271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f454a4b4c4c4c4c4c4c4c4c4b46403930271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101826313b444d555a5b5f5f5f5f5c5a554d453b3126170f0800000000000000000000000000000000000000000007111b252e374149535c656f76818d949da6afaca39c91877d716b686f7a849096a0aab2aaa19c90857c706960554d443a32281f160c03000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5856514a41372d23180d0200000000000000101b27333e4a55616c78848f9ba6aea3978c8074695d5246382e23180d020000000000000000000006121d2935404c57636f7a86959fa9a5998d82766b5f54483c31251a0e00000007101921282d3235353f4040404040404040403736342f2a231b120900000000000000000000010a131c242b303538384040404040404040403d3433302c261f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606977838e9aa6a7968b7f7468584f453b30251a0f0300000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000007111b252e373f454a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a453f372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f474f5457585858585858585856504940382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a35404a555e64676b6b6b6b67655e554b40352a1f1308000000000000000000000000000000000000000000010b151e263039434c555e636f7a838f969faab5aba19790857b6f6e78828e949ea7b0aca39a90897e726b625850463d342a21170f0600000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6767676767676767676767676767676767676767676764615a51473c31261b1005000000000000000e1a26313d4854606b77828e99a5b0a4998d82766a5b52483d32271c10050000000000000000000008131f2b36424d5964707c8793a6afa5998d82766b5f54483c31251a0e0000040e17212931383d40414a4b4b4b4b4b4b4b4b4b43423e3a332b2319110700000000000000000008121a242c343b4043444b4b4b4b4b4b4b4b4b49403f3b362f271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596975808c97a6a5998d8276685f544a3e33281c110500000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00000b16212b353f474f545757575757575757575757575757575757575757575757575757575757575757575757575757575757544f473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f636363636363636363605950483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434e5a646e7376767676736e655a4f43382c21150a00000000000000000000000000000000000000000000040d162029333b454b56606a707c86919ca1abb1a89e958e8279747f8b929ca5aeaea59c938c80756d645b52483f362c241a11070000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857972727272727272727272727272727272727272727272726f6a61564b4034291d1206000000000000000d1824303b47525e6a75818c98a4afa79b9084786b62574c4035291e150c02000000000000000006101a25303b454f5867727e8a95a1aca5998d82766b5f54483c31251a0e000009131e28313a41474b4d565757575757575757574e4d49433c332921170f0600000000000000061018222b343d444a4e50575757575757575757544c4a453f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36434f5a66727d89969fa79c9085796e63574b4034291d130900000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b00030f1a25303b454f585f63636363636363636363636363636363636363636363636363636363636363636363636363636363635f584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f686e6f6f6f6f6f6f6f6f6a605950463b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e828282827f73675c5044392d22160a0000000000000000000000000000000000000000000000061018222b313c465059626c737f8a919ba4adaea59c938c807d87919ca2abb0a79e958e82796e635d544a42382f261c1309010000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c91867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6f64584c41352a1e1207000000000000000b16222e3945505c68737f8a96a6afa89e94877b7064584d44372f251b110701000000000000050e162029333e4a555f6875818c98a4afa5998d82766b5f54483c31251a0e00020d18232d38414a515658616363636363636363625a58534c433a31281f160c020000000000050e172029323b444d54595b6363636363636363636057554f483f362c21160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d2935404c57636e7a85909ca89f95887c71655a4e42372d23180d02000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0005111c28333e4a545f686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e797a7a7a7a7a7a7a7a776960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a75818d8d8d8d81766a5e53473c3024190d02000000000000000000000000000000000000000000000008121a222c374049535c656e75818d939da6afaca39a918c859097a0abb6aba09790847b6f685f554d443a31271f160b03000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f96918a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a887d71655a4e42372b2014090000000000000008141f2b37424e5965717d88959fa9aea5968a7f73685d54483f352b211a110b0403000104080e161e273039414c57636e7984909ca7b0a5998d82766b5f54483c31251a0e0005101c27323d47515a61646d6e6e6e6e6e6e6e6e6e66635c534a41382f261c120802000000020c151e273139434b545e64676e6e6e6e6e6e6e6e6e6b635f584f453b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a55606976828d99a8a6978b8074695a51473c32261b1005000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b0006121d2934404b57636e797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d86868686868686867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25313c48545f6b76828e99998e82776b5f54483d312513080000000000000000000000000000000000000000000000000208131d273039424b555e636f7a838f959fa9b5aaa19a9590959fa7b0aca39c91877d716b61584f453c342a21170e0500000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa79f9c9595959595959595959595959595959595959595959594887c71655a4e42372b2014090000000000000006121d2934404c57636e7985909ca7b2a69b8f83786d63584f453b302a201b14110e0a0c0f12171f262f37414a545d66727e89959ea9b0a5998d82766b5f54483c31251a0e0007121e2935404b56616b6f797a7a7a7a7a7a7a7a7a716d635b524840362c221b130900000007121c252f37414a535c646e727a7a7a7a7a7a7a7a7a776e695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505967737e8a97a1a69a8f83776a61564b4034291d1308000000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000f1b26323e4955606c788385858585858585858585858585858585858585858585858585858585858585858585858585858584786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88929292929291867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26323d4955606c77838f9a9a8f83786c605549372d22170c01000000000000000000000000000000000000000000000000030d162028323b454a556069707c85909ca1aab1aaa69f9c9fa6afaea59c928b80746d635a51483f352c231911060000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b7afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19f94887c71655a4e42372b2014090000000000000005111c28333f4a555f6976818d98a4ada89d93897d72685f554a433b2f2b251e1c1914171a1d22272f363f48515a646e77838e9aa5aeb0a5998d82766b5f54483c31251a0e0007131e2a35414d58646f7b848585858585858585867d716b615950463b312b231911070008121a212b353f48515a636c727e858585858585858585827a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36414c58646f7b86919ca89c91867b6f64584c41372d22180d020000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000f1b26323e4955606c78838f919191919191919191919191919191919191919191919191919191919191919191919191919084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939d9d9d9d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596d7884909b9b9084796d5950463c31261b100400000000000000000000000000000000000000000000000000060f18222a313b465059626b727e89919aa3acb6afa9a7a9afb0a79e948e82786e635d544a41372f251b1309000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3bfb9b5b3acacacacacacacacacacacacacacacacacacacacab9f94887c71655a4e42372b20140900000000000000030f1a25303b454f5866727d89949da8ada49b8f83796e635d534b433a352e2a2723242126282c31383f474f58616a727e89939ca7b6b0a5998d82766b5f54483c31251a0e0007121e2935404b56616b717d869191919191919790857b706960554a453c332a21170f061019222b303b454f58616a717d869191919191919690847b6f695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2934404b56616a77838e9aa7a1978a7e72675a51473c31261b10040000000000000008131f2b36424d5965707c87939eaaa1968a7f73675c5045392d22160b000f1b26323e4955606c78838f9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa9a89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a56606a7985919c9c9185796a60564b3f34291d1206000000000000000000000000000000000000000000000000000007111a222c364048525b646e75808c939ca5aeb8b5b3b5b5aba09790847b6f685f544c433a31271e150b03000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3bfb9b5b3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99f94887c71655a4e42372b20140900000000000000000b16212b35404b57636e79848f9ba4ada89d938b80746d635c5349453e3635322e302c3134363c41484f575f686f7b84909ca3acb6b0a5998d82766b5f54483c31251a0e0005101c27323d47515a636c737f8a919aa39c9c9e958f837a6f635e554c433a31281f160e172029333b434a555f696f7b8490969f9c9ca19c91867d716a61584f453b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a68737f8a97a0a8998d82766a61564b3f34291e13090000000000000008131f2b36424d5965707c87939e9e9e968a7f73675c5045392d22160b000f1b26323e4955606c78838f9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86969fa096867a6f63584c4035291e120700000000000000000000000000000000000000000000000000000108121c262f38424b545d636e79828e959ea9b4c0bfb8aea59c91867d716a61584f453c332921160e0500000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b6afaaa89d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887c71655a4e42372b201409000000000000000007121c28333e4a545f68737f8a949ea8ada49c91867d716c635c544e4743403d383c363b3f40464a52585f686e79828e959ea9b4bcb0a5998d82766b5f54483c31251a0e00020d18232d38414a535c656e75808c929ca5aea59d938d81766f655d544a423830261e161f273139434c555e636e79828e949ea6aca29a908a7e726c635a51483f362c21160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414c58646f7b86919ca89c91857b6f63584c41382d23180b0100000000000008131f2b36424d5965707c8793939393938a7f73675c5045392d22160b000f1b26323e4955606c78838f9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b8792a6a793877b7064594d41362a1f1307000000000000000000000000000000000000000000000000000000020c161f28323a444a555f69707b85909ca7b3bebfb4a99e958b7f746d635a51473e352b231910060000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c9292929292929292929292929292929292929292929292887c71655a4e42372b2014090000000000000000030f1a25303b454f58636e7a848f9ba2abaaa09790857c716c635e57534d4c48484747464a4c50565b61696e78818c929ca5aeb8bcb0a5998d82766b5f54483c31251a0e000009131e28313a434c555e636e79828e949ea6ada49b918b7f736d635b524940362e251c262f38414a535c656e75808c929ca5ada49c928c80756e645c534a41382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d2934404b56616a76828d99a5a0968a7e73675a51473d32251b110600000000000008131f2b36424d5965707c878787878787877f73675c5045392d22160b000f1b26323e4955606c78838f919191919191919191919191919191919191919191919191919191919191919191919191919084786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939f9f94887c71655a4e42372b20140800000000000000000000000000000000000000000000000000000000060f17212a303b465058626b74808b97a2aeb9beb3a79b90847a6e635c534a41372e251b1107000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f96908686868686868686868686868686868686868686868686867d71655a4e42372b2014090000000000000000000b16212b353f4a556069727e89929ba5aea79f9590857d736e68635c5957525353535055575960636b7079818c919ba2a7a9afb6b0a5998d82766b5f54483c31251a0e0000040e172129333b454a555f696f7b8490969faaaba29c91877d716b625950473e352b212c363f48515a636c737f8a919aa3aca69d948e82796e635e544b433931271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a66727e89959fa79a8e82776b61564b3e352b20160b00000000000006121d2934404c57636e797c7c7c7c7c7c7c7a6f63584c4035291e1207000f1b26323e4955606c788385858585858585858585858585858585858585858585858585858585858585858585858585858584786d61564a3f33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a0a095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000020c161f27313a424a556069707c85909ca7b3bfbfb4a99e958b80746d635a51473e352b201810050000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796e63574c4034291d120600000000000000000007111b25303b465059646e76818d959ea6afa69e9590867f78716d6764625b5f5e5f596063666a6f747b828d919ba19f9c9fa6afb0a5998d82766b5f54483c31251a0e000000071019222b303b454f58616a707c85909ca1aaaba09790857c706960574e453a2f2b303b465058616b717d86919ca1aaa89f968f837a6f685f544d443b322920170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414c57636e7a84909ca89c91867b6f64574e453a2f24190e03000000000005111c28333f4a555f696e707070707070706f6a60564b3f34291d1206000f1a26313d48535e6972787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78746a5f54493e32271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000020404050504040200000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1a1968a7e73675c5044392d22160a00000000000000000000000000000000000000000000000000000007121c262f38424a545d636e79838f959fa9b4bfbeb8aea59c91877d716a61584f453a302920160d0400000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e685f554a3e33281c1105000000000000000000010b17212c363f48545d636f7b8490969fa7aea59e96918a827d7773706b6c6a6a6a6b696f71757a7f858e939ba19c9590959fa9b0a5998d82766b5f54483c31251a0e0000000008121b212b353f48515a626c727e89909aa2aba79f958f837a6f685e5449443a333b434a5560696f7b849096a0aaaba19790857c706a61584f453d342b221910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d28333f4a55606975808c97a1a0978b7f73685e54493e33271e14090000000000040f1a25303b454f585f636464646464646463605950463c31261b1004000d18232f3a444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453b3024190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206090b0e0f101111100f0e0c090606040100000000000000000000000000000000000000000000000000000000000b17222e3a45515c68747f8b96a2a2968b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000061119212c363f48525b646e75808c939da6afb5b3b2b4b6aba09790847b6f685f5449433930261e140b01000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e63636363636363636363636363636363636363636363635f584f453b30251a0f030000000000000000000007121c262f38444b56616a717d869197a0a7aea7a09c938e88837f7c797776767676787a7d81858b90969ca39c928e85909ca7b0a5998d82766b5f54483c31251a0e000000000207121c252f374149535c646e74808c929ca4ada59d938d81786e635d544b423a434c555e636e79828e949ea7aba29c91877e726c625a51473f352c241a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505864707c86919ca79b8f84796e63574b41382e23180c0300000000010c16212c363f484f5557595959595959595856504940372d22170c01000a15202b353f4952595e60636363636363636363636363636363636363636363636363636363636363636363636363636363615f5a534a40362c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12121417191b1c1c1c1c1b1917151211100c08040100000000000000000000000000000000000000000000000000010c18232f3b46525d6975808c97a3a3978c8075695e52463b2f24180c01000000000000000000000000000000000000000000000000050e17212a303b465058626b727e89919aa3acb0aaa8a7a8adb0a79e958e82786e635c534941362e251b1106000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6258585858585858585858585858585858585858585857554f483f352b21160b0000000000000000000000020c161f27313c47515a636c727e8791979fa6adaaa39c9a938e8a878483828181828385888c90959c9fa39d938e82808c97a3afa5998d82766b5f54483c31251a0e0000000000020c151e273039424b545d636e78828e949da6ada49b928b7f746d635b5249414a535c656e75818c939ca5ada49b928b80746d645b524940372e251c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f4c57626c76828e99a49d94897d71665b52483d32261c1208000000000007121c262f383f454a4c4d4d4d4d4d4d4d4c4b46403930271d1308000006111b252f3941494f53555757575757575757575757575757575757575757575757575757575757575757575757575757575654504a423a30261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1c1d2023252627282827262523201e1d1b17130f0c07020000000000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4a4988d81766a5e53473c30251106000000000000000000000000000000000000000000000000020c161f27313a424a556069707c85909ca1aab0a7a09c9b9ea4adaea59c928b7f746d635a51473e352b201810050000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453f372f251b1107000000000000000000000000050f17222d374149535c646e727e8690969da4abaca7a39c9a9695908e8d8d8d8e8f9196989c9fa6a19b938f837b808c97a3aea5998d82766b5f54483c31251a0e000000000000050e172029323b4449545f686f7a838f959fa8aba29c91877e726b62595048515a636d737f8a919ba3aca59d938d81786e635d544b423930271e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26323d48525b66717d88939da4998d82766b61574b40362c22170c0200000000020c151f272f363b3f4042424242424242403f3c37302820170d030000010b151f2831393f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4945403a322920170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035292528292c2e30323333333332302f2c292826221d1a17120c0702000000000000000000000000000000000000000000030e1a25313d48545f6b77828e99a5a5998e82776b5f5448352b20160b00000000000000000000000000000000000000000000000007121c262f38424a545d636e79838f959fa9b5aaa096918f949ea6afaca29c91867d716a61574e453a2f2920160d0400000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b41414141414141414141414141414141414141403e3b352f271e150c020000000000000000000000000008131d273039434c545d646e727e858f949ca0a7abaca7a6a59e9c9a999899999b9ca0a7a7a59e9b918d837a74808c97a3aea5998d82766b5f54483c31251a0e00000000000000061018222a303a454f58606a707c859097a1ababa19790857c706a60575059616b717d86919ca1aaa79f958f837a6f685e544d443b322820160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c19242e38424d58636d78838f9aa59c91867b70645950463c31261c12070000000000050e171f262c303334363636363636363534312d2720180f0600000000050f1820282f353a3d3e4040404040404040404040404040404040404040404040404040404040404040404040404040403f3e3b3630292219100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40352c303334373a3c3e3e3f3f3e3e3c3a383534312c2825211c17120c050000000000000000000000000000000000000000040f1b26323e4955606c77838f9aa6a69a8f83786c574e453a2f24190e0300000000000000000000000000000000000000000000061119212c363f48525b646e75808c939da6afaba29c9186848f969faab5aba09790847b6f685e5449433930261e140b01000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3535353535353535353535353535353535353433302b251e160e050000000000000000000000000000030d172029323b444d545d646d727c838c91979ba2a7a9aeaea9a7a6a4a4a4a5a6a8a8a69f9c949089817a6f74808c97a3a8a5998d82766b5f54483c31251a0e000000000000000008121a202b353e475059626c727e87919ca2aba89f958f837a6f685e5560696f7b849096a0aaaba09790857c706a60574e453c342a22181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28343f49535d67737e8a949ea0978b80746960554a3f362c21170c020000000000060e151c212528292a2a2a2a2a2a2a292926221d170f070000000000000810181f252b2f31323434343434343434343434343434343434343434343434343434343434343434343434343434343332302c26201911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035363b3f40434547494a4b4b4a49484643403f3c3733302c26211c160e0701000000000000000000000000000000000000040f1b26313c4650596d7884909ba7a79b908479685e54493e33271c1005000000000000000000000000000000000000000000050e17212a303b465058626b727e89919aa3acada49b928a7f7c85909ca1abb0a79e948e82786e635c534941362e251b1106000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342929292929292929292929292929292929292825211b150e0600000000000000000000000000000000071018222b343c444d545d646c707a80868d92979b9ea5a3a5a6a7a7a7a6a5a8a19c9a95908b847e756f6974808c979c9c9c998d82766b5f54483c31251a0e00000000000000000107111b252e374049525b646d747f8b919ba4ada69d938d81786e635e636e79838f959ea7aba29c91867d716b625950473e352c231a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a252f3a434c57636e7a84909ba49c90847a6f635850463b30251b1107000000000000050c12161a1c1d1f1f1f1f1f1f1f1e1d1b17130d060000000000000000080f151b20232626292929292929292929292929292929292929292929292929292929292929292929292929292929272724211c171009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c403e3f454a4c4e515355565656565553514f4c4b46403f3b36302c261f17110b04000000000000000000000000000000000006111d28343f4b56606a7985919ca8a89c91857a6e63574b4034291d11060000000000000000000000000000000000000000020c161f27313a424a556069707c85909ca1aab0a79e948d8176737e8a919ba4adaea59c928b7f746d635a51473e352b201810060000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1c1a16110c0500000000000000000000000000000000000008121a232c343d444d545b62696f757c82878c909596989a9b9b9c9b9b999797918f8a85807a726e636974808c91919191918d82766b5f54483c31251a0e000000000000000000010b151e263039424b545d636e78818d939da5ada49b928b80746d656f75818d939da5aca39b918b7f736d635b524940362e251b1309010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152028333f4a556069737f8a949e9e958a7f736960554a3f352b21160b0000000000000002070c0f1112131313131313131212100c080300000000000000000000050b1115181a1b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c43494d4f55575a5d5f6061626261605f5d5a5856504c4a463f3b362f27201b150d060000000000000000000000000000000006121e2935404c58636f7a86969faaaaa097867a6f63584c4135291e1207000000000000000000000000000000000000000007121c262f38424a545d636e79838f959fa9b5aaa0968f847a6f6e75818d939da6afaba29c91867d716a61574e453a2f2820170d0300000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c12121212121212121212121212121212110f0b070200000000000000000000000000000000000000010a131c242c343c444b525960636c70767c8084878a8c8e8f9090908f8e8c8a86837f7a746f69645d6974808585858585858581766b5f54483c31251a0e00000000000000000000040d162028323a4449545e686f7a838f959ea7aba29c91877e726d737f8a919ba3aca59d938d81766f655d544a423830261e140b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465058636e79848f9ba49b90847a6e63584f453b30251a0f0300000000000000000104050608080808080808070604010000000000000000000000000001060a0d0f0f11111111111111111111111111111111111111111111111111111111111111111111111111111110100e0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4d5358585f6366686a6c6d6d6d6d6c6a69666360595755504a463f38302b251e160f0700000000000000000000000000000007131f2a36414d5964707b8792a7afb0a793877b7064594d42362a1f130800000000000000000000000000000000000000061119212c363f48525b646e75808c939da6afaba29c91867d716a636f7a838f969faab5aaa09790847a6f685e5449433930271d130801000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1109090909090909090909090909090909090909090807060300000000000000000000000000000000030b131c242c343b424950555c62656c7074797c7f8182848485848382807e7b77736f696360595b6670747a7a7a7a7a7a7a7671685d52473b3024190d0000000000000000000000060f18212a2f3a454e576069707b859097a0aaaba19790857c717d86919ca1aba79e958f83796e635e554c433a31281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f4a555f69737e8a949a9a948a7f73685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e635753585c6365696e7174767878797978787674726f6a67636059555048433a352e261f170f07000000000000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000000000000000000050e17212a303b465058626b727e89919aa3acada49b918a7f736c636069707c85909ca1aab0a79e948e82786e635c534940372d221a1207000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1515151515151515151515151515151515151515151413110e0a05000000000000000000000000000000030b131c232a323840464a53575b6265686e7073757778797979787775736f6b676360595550565f66696e6e6e6e6e6e6e6b6861584e43382d22170c00000000000000000000000007111a202b353e475059626b717d86919ca1aaa89f968f837c859097a0abaaa09690847b6f6960554e453c332a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26303b454f58636e79838f8f8f8f8f84796e63574c4034291d12060000000000000000000000000000000000000306070811111111111111110706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506070707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63575d63666d71767a7d7f8183848585848382807d7a77726e696360585349453e37302820180f070000000000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f14080000000000000000000000000000000000020c161f27313a424a556069707c85909ca1aaafa79d948d81766e655c59626c727e8a919ba4adaea59c928b7f736c635a51473c312b22180f060000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428202020202020202020202020202020202020202020201f1e1c19150f08010000000000000000000000000000030b131a222830363c42484c5257575e6365676a6b6c6d6d6d6c6b696764615a5755504a464f565b5d636363636363635f5d5850483e34291f14090000000000000000000000000106111b252e364049525b636d737f8a919ba3aca69d948f8590959ea7aaa19c91867d716b615950463e352b231911070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16212b353f4a545f68727e8383838383837d71655a4e43372c20140900000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1212100c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070c0f1112121313131212110f0c070a07060502000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6361646d71777d8185888b8d8f8f9090908f8d8b8986827e7a736e69635c544f474038302820170f0500000000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000000000000000007121c262f38424a545d636e79838f959fa9b5aa9f968f837a6f635e55525b646e75818c939da6afaba29c91867d716a61564b453b322820170d0300000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a28241f19110a010000000000000000000000000000030911171f262c31393e42484c4e5457595c5e606161626161605d5b5856514c4a46403c464c50525757575757575754524e4840372e241a100500000000000000000000000000010b141e263038424a535c656f75818d939ca5ada49d9791979ea5aca39a918a7f736d635a51483f362d251b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c25303b454f58646e72777777777777716d63584d42362b1f1408000000000000000000000000000001080f15191c1e1f29292929292929291e1d1b17130d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305080c0f11121512161a1c1d1e1e1f1e1e1d1d1a1712151212100d090603000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e636b6f767d83888d909597999a9b9c9c9b9a999797918e89847f79716d635f585049403830271f160d04000000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f140800000000000000000000000000000000061119212c363f48525b646e75808c939da6afaba29c91867c706a60564e4b545e636f7a838f969faab5aaa09790847a6f635e554b433930271d130801000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3737373737373737373737373737373737373737373737373635332e29221a110800000000000000000000000000000001070f161c22292f33383e3e45494b4d50525455565656555452504d4b47413f3c36313c4245464b4b4b4b4b4b4b4847433e372f271e140a000000000000000000000000000000040d161f28313a434c555e636e79828e949ea7ada7a09ca0a7aea59c928c80756e655c534a41382f261d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16212b353f47545d64666c6c6c6c6c6c65635c53493e33281d120700000000000000000000000000010a11191f24282a2b3434343434343434342926221d170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090e1112171b1d1e202321252829292a2a2a292928252123211e1d1b1813110e0a0401000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6d717b81888f93989c9fa6a4a6a7a7a7a7a6a4a7a09c9994908a837d746e686059504940382f261e140b010000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000000000000050e17212a303b465058626b727e89919aa3acada49b918a7f736c62595046444a556069707c85909ca1aab0a79e948d81766f655c534940372d221a1207000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4343434343434343434343434343434343434343434343434342413e39322a22190f0500000000000000000000000000000000060d12171f24292e33353a3e40424547484a4a4b4a4a48464441403d3834312c2c32373a3b404040404040403c3b38342e271f170e0400000000000000000000000000000000050f17212a333c454a5560696f7b8490969faab0aaa8aaafa69e948e82796e635e554c433a31271f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37444d54595b6060606060605a58534c43392f251a0f040000000000000000000000000008111a22292e33353640404040404040404034312d2720180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f14191c1e222628292c2f2c30333435353636353433302c2f2c2a2926221f1d19150f0c080300000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e737d848d929a9da3a7a9a7a5a4a4a4a5a6a8abb0aba8a59e9b948f8780786f69605950483f362e251b11060000000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f14080000000000000000000000000000020c161f27313a424a556069707c85909ca1aaafa69d948d81766e655c5349403b465059626b727e89919aa3acaea59b928a7f736c635950463c312b22180f060000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4c48423b32291f150a000000000000000000000000000000000003080f15191f24252b2f333436393b3d3e3f3f3f3e3d3b393534322d28262223282c2e2f3434343434343431302d29241e170f06000000000000000000000000000000000000071119232b303b465058616b717d86919ca5aeb5b3b5aa9f9690847b6f695f554d453b332921170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e27343c444a4e4f5555555555554e4d49433c332a20150b00000000000000000000000000050f19222a32393e41424b4b4b4b4b4b4b4b4b3f3c37302820170d03000000000000000000000000000000000000000000000000000000000000000000000000000002080c12161a1e2327292c313435373a363b3f404141414141403f3b363a383534312d2a28241f1b17120d08030000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a737f8790959ba2a7a5a59e9b9a999899999b9ca0a7a8aaaea9a49d97918b827a6f6a605950473e352b20160d0400000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000000000007121c262f38424a545d636e79838f959fa9b5aa9f968f837a6f635e554b4238364048525b646e75808c939da6afaba29c91867d716a60564b453b322820160d0300000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5957534b42392e24190e03000000000000000000000000000000000000050a0f14191b202427292b2e30313233333332312f2d2a2927231e1b17181d202323292929292929292524221f1a140e06000000000000000000000000000000000000000009121b212c363f48515a636c737e8a959ea9b4bfb3a89c90857c706a61584f453d342b22191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e16232c343a3f424449494949494943423e39332b23191006000000000000000000000000000a151f29323b42484c4e5757575757575757574b46403930271d130800000000000000000000000000000000000000000000000000000000000000000000000000060c12171c2125282e3235373c3f40434647454a4c4c4d4d4d4c4c4a4648464341403c3736332f2826221d18130d0701000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d9186797f8a91979ea5a39c9a9695908e8d8d8d8e8f9197989c9fa6aaada8a19c928e827a6f6960574e453a2f261e150b01000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f140800000000000000000000000000061119212c363f48525b646e75808c939da6afaba29c91867c706a60564e453b322f38424b545d636e79838f959fa9b4aaa0968f847a6f635e554b433830261d120801000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6666666666666666666666666666666666666666666666666666666665625c53483e33281c11060000000000000000000000000000000000000000050a0b1116191c1d1f22242627272827272624211e1e1b18130f0c0e121517181d1d1d1d1d1d1d1a191714100a04000000000000000000000000000000000000000000010b141e263039434c555e636f7a84909ca7b3bcb1a59a8e82796e635c534a41372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131c232a303437383d3d3d3d3d3d3736332f2a231b120900000000000000000000000000030e19242e39424b53575963636363636363636256504940372d22170c010000000000000000000000000000000000000000000000000000000000000000000004090f161c22262c3033383d4041464b4c4f51534f5557585859585857555053524f4c4b4742413e3934312c26221d16110b040000000000000000000000000000000000000000000814202b37424e5965717c88939fabaca094897d87919ca1a39c9a928e8a878483828181828485898d90969ca0a7adaba29c938e82796e685e544942372e251b1107000000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000000050e17212a303b465058626b727e89919aa3acada49b918a7e736c625950463d342a28323a444a556069707c85909ca1aab0a79e948d81766e655c534940372c221a1107000000000000000000111d28343f4b57626e7985919ca8b3a89c9085797171717171717171717171717171717171717171717171717171717171706c62574c41352a1e13070000000000000000000000000000000000000000000001060b0e10111316181a1b1c1c1c1b1a18161312100d09040103070a0c0c111111111111110e0d0c0905000000000000000000000000000000000000000000000006111b252e364149535c656f76818d959ea9b4beb2a79c928b7f736d635a51473f352b2119100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292c2c3232323232322c2b28252019120a020000000000000000000000000006111c28333e48535c62656e6e6e6e6e6e6e6e6d605950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000070e14171f262c31363b3f42484c4d5056585a5d5f585f6363646464636360585f5d5b5856514e4c49433f3c36312d27201b150d0601000000000000000000000000000000000000000814202b37424e5965717c88939fabb3a79c90859097a09f9c928e88827e7b797776757676787a7d81858c91969da4ababa39c938d81786e635c53473e352b20160c020000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f14080000000000000000000000020c151f27313a424a556069707c85909ca1aaafa69d938d81766e645b524940362d24212a303b465058626b727e89919aa3acada49b928a7f736c625950463c312a22180f060000000000000000111d28343f4b57626e7985919ca8b3a89c91857d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7065594e42362b1f140800000000000000000000000000000000000000000000000000030506080b0d0e10101110100e0c0a07060502000000000000000106060606060606020200000000000000000000000000000000000000000000000000061019202b353e47515a636c737f8a929ba5aeb4b2b4aca39c91867d716a61584f453b302921170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161b1e2021262626262626201f1d1a15100902000000000000000000000000000007131e2a35414c57626c777a7a7a7a7a7a7a7a776a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000010710181e23282f363b3f454a4c52575959606366686a6c696e6f6f706f6f6e696c6a696663615a5958534c4a46403c37302b251e161108020000000000000000000000000000000000000814202b37424e5965717c88939fabb4a99f9590959f9e96908a827c7773706b6b6a6a6a6b6a6f71757b80868f939ca2abaca39b918b7f736c62584f453a30251c12070000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000000007121c262f38424a545d636e79838f959fa9b5aa9f968f837a6f635e554b423830261c19212c363f48525b646e75808c939da6afaba29c91867c706a60564b453b32281f160d0300000000000000111d28343f4b57626e7985919ca8b3aa9f969189898989898989898989898989898989898989898989898989898989898981766a5f53483c3025190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1620292f3a454e57616a717d86919ca2abaea9a7a9aeaba09790847b6f685f544a443a31271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101315151b1b1b1b1b1b1414120f0b060000000000000000000000000000000008141f2b36424e5965707c85858585858585857a6f63584c4035291e1207000000000000000000000000000000000000000000000000000000000000040b111921282d323840464a4f55575b6264686a6f71747677797a7a7b7b7b7b7a79787674726f6a6965625c5856504b47413a352e26221a120c0600000000000000000000000000000000000814202b37424e5965717c88939fabb9afa69f9c9f9e9590857e77716c6764615b5f5e5f596063666a6f747c838e929ca2ababa29c91867c70685f54493f352b21160b0000000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f140800000000000000000000061119212c363f48525b646e75808c939da6afaaa19c90857c706960554d453b32281f16121c262f38424a545d636e79838f959fa9b4aaa0968f837a6f635e554b423830261d120801000000000000111d28343f4b57626e7985919ca8b3afa69f9c94949494949494949494949494949494949494949494949494949494948d82766a5f53483c3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060a0b0b0b0b0b0b0b0b0b09080704000000000000000000000000000000000000000000010b151e2731394149545e686f7a849096a0aaaca59e9b9ea5ada79e948e82796e635d544a41382f261c1207010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090a0f0f0f0f0f0f0908070400000000000000000000000000000000000008141f2b36424e5965707c87919191919191867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000000000060d151b202931383d44485055585f63676b7074777a7d8081838586868787878686858382807d7b7874706c68636059565149453e37322a221c160f07000000000000000000000000000000000814202b37424e5965717c88939fabb6b6afa9a79e9590847c736e65635c5857525353535056585a61636c707a828e929ca4adaaa0968f83796e63584f453b30251a0f0300000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000000050e17212a303b454f58626b727e89919aa3acada49b918a7e726c625950463d342a22180f0c161f27313a444a555f69707b85909ca1aab0a79d948d81766e655c534940362c221a1107000000000000111d28343f4b57626e7985919ca8b3b7afaaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0998d82766a5f53483c3025190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e1011161717171717171717171514120f0b060000000000000000000000000000000000000007111b252e37414a535c636e78828e949ea7aca39c9490949da4ada59c928b80746d635b52483f362c211a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939c9c9c9c92867a6f63584c4035291e120700000000000000000000000000000000000000000000000000000000060e161e252b303a41474b54596063696e73777c7f8386898b8d8f9095929293929296908f8d8c898683807c78736f6a63615a544f47423b312c261f1710080000000000000000000000000000000814202b37424e5965717c88939fabb6bfb5aaa09690857c706c645e58534d4b48484747464a4c51565b62696f79818e939da6afa79d938a7e73695f554a3f33281e140900000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f14080000000000000000020c151f27313a424a555f69707c85909ca1aaafa69d938d81756e645b524940362d241a1107050e17212a303b454f58626b727e89909aa3acada49b918a7f736c625950463c312a22170f060000000000111d28343f4b57626e7985919ca8b3b5b9b5b3abababababababababababababababababababababababababababa4998d82766a5f53483c3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b1116191c1d21222222222222222222201f1d1a1510090200000000000000000000000000000000061019212b353f47515a636d747f8b929ca5aea59c928e848f949da6aca39c91877e726b61584f453b302a21170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060a0a0a0a0a0a0808060300000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939fa8a89d92867a6f63584c4035291e1207000000000000000000000000000000000000000000000000000000070f171f262e353a444a51575d64696f73797e83878b8f919797999a9c9fa69e9e9ea69f9c9a999795948f8c88837f7a746f6a635f58534b453b362f282018100800000000000000000000000000000814202b37424e5965717c88939fabb6b7aca39c91867d716c625c554c4943403d383c363c3f41474b525960696f7a838f969faaaca39b9084796e63574c41382e23180d02000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000000007121c262f38424a545d636e79838f959fa9b5aa9f968f837a6f635e554b423830261c140a0100061119212c363f48525b646d75808c939ca5aeaba29c91867c706a60564a453b32281f160d0300000000111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4998d82766a5f53483c3025190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202427292d2e2e2e2e2e2e2e2e2e2c2b2925201a120b020000000000000000000000000000050e172129303b454f58616b717d86919ca2aba79e958e827a838f969faaaba19790857b70695f554a443a32281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121616161616161413110e0a050000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000070f1820272f373e4549545a61646d727a7f848a8f93979a9ca0a7a4a6a7a9afa9aaa9afaaa8a6a4a3a49d9b97948f8b85807b736e68625c554a464038302821191008000000000000000000000000000814202b37424e5965717c88939fabb6b3a89d938b7f746d635b534b453e3935322e302c3134373c424950586069707c85909ca5aea99e94897e72675b52483d32271c1005000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f140800000000000000081119212c363f48525b646e75808c939da6afaaa19c90857c706960554d443a32281f160c0300000007121c262f38424a545d636e79828e959ea8b1aa9f968f837a6f635e554b423830261c120800000000111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e998d82766a5f53483c3025190e00000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e252b2f3334393939393939393939393736342f2a231b120900000000000000000000000000020c151f27313a414a545f686f7b849097a0ababa09790847b707c85909ca1aba89e958e82796e635d544b423830261c120801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e2121212121211f1f1d19150f0901000000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000000000000000000000000060f17202830383f474f545d646b6f767e848b90949a9da3a6a8abb0b0b1afadadacacacacadafb0b0aeada8a6a49d9b95908b857f79706c655e55504840393129211910070000000000000000000000000814202b37424e5965717c88939fabb7aca39a8f83796e635c534b433b332f292723242226282d313840485059626b747f8b949ea8aea59a8e83776b61574b4035291e1207000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000000040e18212a303b454f58626b727e89919aa3acada49a91897e726c625950463d342a22170f0600000000020c151f27313a444a555f696f7b859097a1abafa79d948d81766e655b524940362c22171107000000111d28343f4b57626e7985919393939393939393939393939393939393939393939393939393939393939393939393938d82766a5f53483c3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e353a3e404445454545454545454543423f3a332b231a100600000000000000000000000007121c262f38414a545d636e79828e959ea7aba29c91867d716c737e8a919ba4ada59c938c80756e645b524940362c221a12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222628292d2d2d2d2d2d2b2a28241f19120a010000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000000000000000000050e171f283038404850585f636d727b828990949b9ea5a7acb1b2afa9a7a5a3a2a1a0a0a0a1a2a3a5a7a9aeb1b2ada8a69f9c95908a837c736e6360595149413a312920180f0600000000000000000000000814202b37424e5965717c88939fabb3a89d93887d71685f544c433a322b241f1c1814171b1d222830384049525b636e7a84909ba7b0a79c93877b7064584d41362a1e1309000000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f140800000000000009141e28313a424a555f69707c85909ca1aaafa69d938c81756e645b524840362c241a1107000000000000050e17212a303b454f58616b727e87919ca3acada49b918a7e736c625950463c312b21170c010000111d28343f4b57626e7986878787878787878787878787878787878787878787878787878787878787878787878787878781766a5f53483c3025190e0000000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e45494b505151515151515151514e4d49433c332a20150b0000000000000000000000071119212c363f48515a636d74808b929ca5aea59c928b7f746d646e75818d939da6aca39a91897e726c625950463c312b22180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134353838383838383736332f29221a12070000000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000000000000000020c151e2730384049505860686e747e858e929b9ea5a9aeb3ada8a6a69f9c99989695959495959698999c9ea5a5a8abb1afa9a69f9c938f867f766f69615a514a4139312820170e05000000000000000000000814202b37424e5965717c88939fabb1a89a8f83786d63584f453b332a221a15100d090c0f13171f273038424a556069737f8b97a0abaca3968a7f73685c5045372d23180d020000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f14080000000000020d18232e38424a545d636e79838f959fa9aaa99f958f83796e635d544b42382f261c14090100000000000000061119212b353f48515a636d74808c939ca5aeaba29c91867c706960554a443b31261b1005000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e54575b5c5c5c5c5c5c5c5c5c5a58534c433a2f251a0f04000000000000000000060f17212a303b454f58616b727e87919ca3aca79e948e82786e635e636f7a838f969faaaaa19c90857c706960554a453b322820160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4044444444444442413e39322b22170f0600000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000000000000000007121c252f374049505960696e78808990959ca2a8aeb0aaa8a49d9a9695908e8c8b8a8989898a8a8c8e9095969a9ca1a8aaafafa9a39d96918a817a6f6a615a514a413830271f150c020000000000000000000814202b37424e5965717c88939fababa1978a7f73675d53473e352b221a120a0502000104080f171f28303b465058636f7b86919ca8b0a4998d82766b5a51473c31261b10050000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000005101c27323d48525b646e75808c939da69e9ea19c90857c706960554d443a32281f160c0300000000000000000007121c252f37414a545d636e79828e959ea89e9e9f968f837a6f635e554a40352a1f1308000007121e2a35404c57626b7070707070707070707070707070707070707070707070707070707070707070707070707070706f6b61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e636768686868686868686866635d53493f34291d12070000000000000000020c161f28313a424a555f696f7b859097a1abaaa09690847a6f685e556069707c85909ca1aaaa9f968f837a6f635e554b433930261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a4c5050505050504e4c49433b32281f160c02000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000000000000007121a212b353f485059606a6f79818c909c9ea5abb4aba7a09c98938f8b888582817f7e7e7d7e7e7f808284878a8e91979c9fa6aab0aca79f9c918d827a6f6b615a514940382f261c12070000000000000000000814202b37424e5965717c88939faba89c91867b6f64584d43372e251b120901000000000000060f17212c363f4b56616a77828e9aa5b1a79b9084796a61564b4034291d12060000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000007121e2935404c57626b727e899193939393939391897e726b625950463d342a21170f0600000000000000000000020c151e27313a444a555f686f7b8490979393939393948d81766e645a4e43382c21150a000005111c27323d48525b6264646464646464646464646464646464646464646464646464646464646464646464646464646464615a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e73737373737373737373716d63584d42362b1f1408000000000000000008121c262f38424b545d636e79828e959ea8aba29c91867d716a61575059626c727e89919aa3aca69d938d81766e655c534940362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3640495055575b5b5b5b5b5b5958534b43382f261c1208000000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000000000000060f17222b303b454f5860696f7a828d929aa1a9aeada8a29b97918d87837f7c797775737372727273737576797c7f82868c90969ca0a7acafaaa29b938e837b6f6a615950483f362c2119100700000000000000000814202b37424e5965717c88939faba69b8f84786b61564b4033261e150a02000000000000000007121c26313c47515a68747f8b97a2aea99e95867b6f64584c41352a1e12070000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000007131f2a36414d5864707b8587878787878787878780756e645b52483f362c241a1107000000000000000000000000050e172129303b454f58616b717d868787878787878787877e73675b5044392d21160a0000030e19232e38424b52575959595959595959595959595959595959595959595959595959595959595959595959595959595856514a41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e787e7f7f7f7f7f7f7f7f7f7d71665a4e43372c2015090000000000000007111a212c364048525b646e75808c939ca5ada49b918a7f736c635a5148525b646e75818c939da6ada49b918a7f736c625950473e352b2018100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606367676767676765635c534840362c21170d030000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000000000030d161f28323b434a555f696f7a828e929ba2aab4aba49e9b918d86817c7873706e686968676666666768696b6c7073777b80858c91979ca3aab5aba39c938f837b6f6a60584f453b302920170e04000000000000000814202b37424e5965717c88939faba4988d81766a5a51473d3223160d04000000000000000000020c18222d37434f5a66727d8994a0abaea593887c7165594e42372b2014080000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000007121e2935414c58636f7b7c7c7c7c7c7c7c7c7c7c796e635d544b42382f261c13090100000000000000000000000000061019212b353f48515a636d717b7c7c7c7c7c7c7c7c7c7b7064584d41362a1e13070000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413931271e130900000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e78808a8b8b8b8b8b8b8b8b837a6f63584c4135291e1207000000000000060f17222a313b465059626b727e89919aa3aca69d948d81766f655c5349424b545d636e79838f959fa9aba29c91867c706a60574e453a2f2920160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f727272727272716c635950463b31261c12080000000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000000000008121c263038434c555e636e79828e939ca3abb1aaa29c948f88817b75706c6865635f585c5b5b5a5b5b5c5e5b6264676b6f747b80868e939aa1abb0aca49d948f837a6f695f554a443931271e1309000000000000000814202b37424e5965717c88939faba2978b8074685d5146372d231706000000000000000000000008131f2a36424d5964707c87939eaaaca095897e72665b4f44382c21150a0000000008131f2b36424d5965707c87939eaaaa9f93877c7065594e42362b1f1408000000000006121d2934404b56616a6f707070707070707070706e695f554d443a32271f160b0300000000000000000000000000000007111b252f37414a545d636b70707070707070707070706b61574b4035291e1207000000040e18212a32383d4041424242424242424242424242424242424242424242424242424242424242424242424242424241403d37312920170e04000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e78808c919696969696938f837a6f6a60564b3f34291d12060000000000030d161f28323b424a556069707c85909ca1aaaa9f968f837a6f635e554c433a444a556069707c85909ca1aaaa9f968f847a6f685e5449433931271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a7e7e7e7e7e7e7d716960554a40362c22170d0300000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000000000000010c17222c364049535c656f76818d929ca3acb0a9a19a928e847d76706b65625b5957544f51504f4f4f5051525257595a61646a6f747c828c919ca0a7afada49d938e82796e635d544a41372d23160d040000000000000814202b37424e5965717c88939faba1968a7f73675c5045392d22130b000000000000000000000007121e2935404c58636f7a86929da9ada1958a7e73675b5044392d21160a0000000008131f2b36424d5965707c87939e9e9e9e93877c7065594e42362b1f1408000000000004101b26313c47515a616364646464646464646464635f584f453d342a21170f0500000000000000000000000000000000020c151e27313a434c545b626464646464646464646464615b52483d32271c10050000000008111921282e32353636363636363636363636363636363636363636363636363636363636363636363636363636363534322d2720191007000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e78808c919aa1a2a39d938f837a6f6a605a51473c31261b1004000000000008121c263038424b545e636f7a838f959fa9aaa19c90857c706a60564e453b303b465059626b727e89919aa3aca79d948d81786e635c534a41372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606977838989898989847a6f635950463c31271d130800000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000000000000040f1b26313c465059636c737f8a919ba2abb1a9a099908c827a716d64615b57524e4b49454544444344444547484c4d51575a61636c7079808a91979fa7afaca39c928c80756d645a51473d32261e140b0100000000000814202b37424e5965717c88939faba1958a7e72675b5044392d21160a000000000000000000000006121d2934404c57636e7a86919da8ada1968a7f73685c5045392e22160b0000000008131f2b36424d5965707c87939393939393877c7065594e42362b1f14080000000000020d18222d3741495156585959595959595959595957554f483f362c24191107000000000000000000000000000000000000050e162129333c434a5257585959595959595959595857524a41382e23180d0200000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e171008000000000000000000000000000000000000000000000000000000000000000000050d161e262e363e474e575e686e78808c919aa1aaa39d938f837a6f6a605a514940372d22170d0100000000010c17222c364049525b646e75818c939da6ada49b918a7e736c625950463d352c363f48525b646e75808c939ca5ada49b928b7f746d635a51473f352b2116100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505966727e89939595958b7f736960554a40372c22170c02000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000000050f19222b343f4a556069717d86919ca2abb2a9a099908b80786f6a635d57524c4842403e3a35393838383939383d4042474b51565b62696e757e8691969fa7b0aca39a90897e726b61564b43362e251b110600000000000814202b37424e5965717c88939faba1958a7e72675b5044392d21160a000000000000000000000006121d2934404c57636e7a86919da8ada1968a7f73685c5045392e22160b0000000008131f2b36424d5965707c87878787878787877c7065594e42362b1f140800000000000008131d27303941474b4c4d4d4d4d4d4d4d4d4d4d4c4a453f382f261c13090100000000000000000000000000000000000000061019232c333a42484c4d4d4d4d4d4d4d4d4d4d4d4b48413a31281e140900000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e07000000000000000000000000000000000000000000000000000000000000000000040d161e262e363e474e575e686e78808c919aa1aaa39d938f837a6f6a605a5149403930271d13080000000000040f1b26313c465059626c727e8a919ba4ada69d938c81756e645b524940362d262f38424a545d636e79828e959fa8aba29c91867d716a61584f453b302a20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404b57636e78838f9ba49c90847a6f635950463c31261c1207000000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000000a151f29333e48525b636f7a848f96a0aab2aaa199908b7f746e68615a544b48413e393433302b2d2d2c2c2d2e2e3235383d40474b52585f636e727e869197a0abb6aaa19c90857b6f645c53473e352b20160b00000000000814202b37424e5965717c88939faba1968a7f73675c5045392d221309000000000000000000000007121e2935404c58636f7a86929da9ada1958a7e73675b5044392d21160a0000000006121d2934404c57636e797c7c7c7c7c7c7c7c796e63574c4034291d1206000000000000030d17202930373c404142424242424242424242403f3b362f271f150b0300000000000000000000000000000000000000000008131b232a31383d404142424242424242424241403d38312921180e040000000000000000040a0e11121313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000010b141e262e363e474e575e686e78808c919aa1aaa39d938f837a6f6a605a51494039302820170d03000000000006111d28343f4a556069707c85909ca1aaa99f958f837a6f635e554b423830261f27313a444a555f69707b859097a1ababa09790847b6f685f544a443a30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c27333e49545e68727e89949d9e958b7f746a60564b3f362c21160c010000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000000030e19242f39414c57626c74808c949ea7b0aca39a918b7f746f635e575149433d38332e2928252021212121212224272a2e32373c42484f555e646d727e87919ca1aab4a99f958d81766d63574e453a2f24190e03000000000814202b37424e5965717c88939faba2978b8074685d5146372d23180d020000000000000000000008131f2a36424d5964707c87939eaaaca095897e72665b4f44382c21150a0000000005111c28333f4a555f696e70707070707070706e6960554a3f33281d11060000000000000007101820272d313435363636363636363636363433302c261f170e0500000000000000000000000000000000000000000000020b131921282e3235363636363636363636363635322e2821191108000000000000000000000003050708080808080808080808080808080808080808080808080808080808080808080808080808080807060502000000000000000000000000000000000000000000000000000000000000000000000506111b252e363e474e575e686e78808c919aa1aaa39d938f837a6f6a605a51494039302820180f06000000000008141f2a35404b555e636f7a838f969f9c9ca19c90857c706960554d443b32281f17212a303b454f58616b727e87919ca39c9c9e948e82796e635d544a3f34291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e79848f9ba59c90857a6f63584f453b30251a0f040000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000006111d28333e49535c64707c86919ca4adafa69c938c80756f655f544e474039322e28241d1c1a16111515151614191c1e23272d31383f454a545d646d737f8a919aa4adafa69b91887d71685e54493e33271f150b000000000814202b37424e5965717c88939faba4988d81766a5a51473d32271b1005000000000000000000010915202c38434f5a66727d8994a0abaea593887c7165594e42372b1f140800000000040f1a25303b454f585f63646464646464646463605850463b30251a0f0400000000000000000810171d222629292a2a2a2a2a2a2a2a2a2a292825211c150e06000000000000000000000000000000000000000000000000020911181e2327292a2a2a2a2a2a2a2a2a2a2a2927231e18110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151e202b353e474e575e686e78808c919aa1aaa39d938f837a6f6a605a51494039302820180f080000000000000a16212d38434f5a656e76818d94919191919190897e726b625950463d342a22181119212c363f48525b646d74808c939191919191928b80746d63594d42372b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a545f68737f8a959f9f958b7f74695f554a3f332820150b0000000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000000000008131f2a36414c58636c77828e97a0aab4a99f958e82796e635f5649453e363028231e1914110e0b070a090a0a0a0e1114181d22272f363b444d545d656e75808c939da7b0aba29b8f83786e63574b43392f241a0c020000000814202b37424e5965717c88939faba69b8f84786b61564b4034291e150b01000000000000000007111b26313c47515a68747f8b97a2aea99e95867b6f64584c41352a1e120700000000010c16212c363f484f55575959595959595959575550483f362c21170c01000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1d1c1a16120c05000000000000000000000000000000000000000000000000000000080e14181c1e1e1f1f1f1f1f1f1f1f1f1e1e1c18140e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151e262e2f3a454e575e686e78808c919aa1aaa39d938f837a6f6a605a51494039302820180f08000000000000000b16222d3945505c67737f85858585858585858580756e645b524840362c241a1107121c262f38414a545d636e79828585858585858585877d72665a4f43382c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b25303b454f58636f7a85909ca59b9084796e63574c43392f251a0e0400000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000005111c27323d48525b65717c88929ca7b0aca39c90857b70685f554e453a352e262018140e0a0503000000000000000305090d13171f262c303c444d555e636f7a838f97a0abb3a89d93897e72665c53493e33251c12070000000814202b37424e5965717c88939faba89c91867b6f64584d43372e251b110701000000000000060f18212a34404b56616a77828e9aa5b1a79b9084796a61564b4034291d1206000000000007121c262f383f454a4c4d4d4d4d4d4d4d4d4c4a463f382f261c1207000000000000000000000003080d1012121313131313131313131312110f0c0702000000000000000000000000000000000000000000000000000000000004090d1012131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151e262e363f4649545e686e78808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000a16212d38434f5a656e737a7a7a7a7a7a7a7a7a7570665d544b42382f261c1409020c151f27313a444a555f686e777a7a7a7a7a7a7a7a7a726d63594d42372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16212b353f4a55606975808c98a39e958a7e72675c53493e33281e130900000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000007121e2935404c57626b76828d99a2acb3a79c938a7e736b61584f453e2f2b251e161009040000000000000000000000000003080e151c212c343c454a556069707c86919ca6afada49a8e83776d63584d3f352b21160b0000000814202b37424e5965717c88939fababa1978a7f73675d53473f352b211a110b0402000104090f171f28303b465059636f7b86919ca8b0a4998d82766a5a51473c31261b10050000000000020c151f272f363b3f404242424242424242403f3b362f271f160c020000000000000000000000000002040607080808080808080808080605040100000000000000000000000000000000000000000000000000000000000000000002050707080808080808080808070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151e262e363f464f575f636e78808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e69665f564d443a31281f160c0300050e172129303b454f585f636b6e6e6e6e6e6e6e6e6e66635d544a3f34291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c46505964707c87929ca59a8f83786d63584d41382d23180d02000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000000007131f2a36414d5964707c86919ca8b4aca39a8e83786e635b52483f352d201b140d050000000000000000000000000000000000050c121b232c313b465059626c75818c969faab3a79c93887d7165584f453b30251a0f0300000814202b37424e5965717c88939fabb1a89a8f83786d63584f453b302a201b14100d090c0f131820273038404a556069737f8b97a0abaca3968a7f73685c5045372d23180d02000000000000050e171f262c30333436363636363636363433302c261f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151e262e363f464f575f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f080000000000000000000006111c26313b454e555a5c6363636363636363635e5c564f463c342a21170f06000000061119212b353f484f5557606363636363636363625a59544c443a30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222c36404c57626c77828e9aa59d93887d71655a51473d32271b1005000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000006111c28333e48535c6874808b97a1abb2a79c93887d71685e544a41372f251d110b04000000000000000000000000000000000000000207131b212c364048535c646f7b85909ca8b1aca3988c8175695f554a3f33281c110500000814202b37424e5965717c88939fabb3a89d93887d71685f544a433b2f2b251e1c1814171b1d232830384049525b636e7a84909ba7b0a79c93877b6f64584d41362a1e13090000000000000000060e151c212528292a2a2a2a2a2a2a2a292825211c160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c08040000000000000000000000000000000000000000000000000000000000000000020506071011111111111111070705020000000000000000000000000000050d151e262e363f464f575f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f080000000000000000000000020c17212b353d454b4f5057575757575757575752504c463f362c23191107000000000007111b252f373f454a4c545757575757575757574f4d4a443c332a20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26333d48525b66727e89959ea3998d82766b61564b4034291f150a000000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000007131f2a35414c57626c78838f9ba8b1aea59a8e82776d63574e453a31271e1506010000000000000000000000000000000000000000000308121c262f38434b56616a75808c97a1abb3a79c90847a6e63574c4034291d120800000814202b37424e5965717c88939fabb7ada49a8f83796e635c534b433a352e292723242226282d313840485059626c747f8b949ea8aea59a8e83776b61574b4035291e1203000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1d1d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e08010000000000000000000000000000000000000000000000000000000003090d1012121c1d1d1d1d1d1d1d1312100d09040000000000000000000000050d151e262e363f464f575f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f080000000000000000000000000007111b242d353b4043454b4b4b4b4b4b4b4b4b4645423d362e261c1309010000000000020c151e272f353b3e40494b4b4b4b4b4b4b4b4b43423f3a332c231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242e38424c57636e7984909ca79c91867b6f64584d43392f24190c020000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120700000000000000000000000000000008141f2b36424e5965707c88949da8b4a99f95897e72665c53473e352921160e050000000000000000000000000000000000000000000000020c161f28313c47515a64707b86919ca8b4a99e95897d71665a4f43362c22170c01000814202b37424e5965717c88939fabb6b3a89d938b7f746d635b5349453e3635322e302c3134373c42495058606a707c86919ca5aea99e94897e72675a51473d32271c10050000000000000000000002070c0f1112131313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a020000000000000000000000000000000000000000000000000000070d13181b1d1e27292929292929291e1e1c18130e07000000000000000000050d151e262e363f464f575f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f080000000000000000000000000000010b141c242b313538394040404040404040403b3a37322d261e150b0300000000000000050e161e252b3033343d404040404040404040383734302a231b130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28333f4a555f6975818c98a5a0978b7f74685c53493e33251c12070000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e12070000000000000000000000000000030e19242f3a454e5768737f8b96a4adb3a79c90847a6e63574c43362e2519100600000000000000000000000000000000000000000000000000060f17232d37414c57626b77828e9aa5b1aea5978c8074695950463c31261b0f04000814202b37424e5965717c88939fabb6b7ada49c91867d716c635c544e4743403d383c373c3f41474b525960696f7a838f969faaaca39b9084796e63574c41382e23180d02000000000000000000000000010405060808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a010000000000000000000000000000000000000000000000000810171d2226292a33343434343434342a2927231e17100800000000000000050d151e262e363f464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000000000000000000040c141b21262a2d2d3434343434343434342f2e2c28231c150d05000000000000000000060e151b21252829313434343434343434342c2b2925201a130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5865717d88949ea79b8f83786c63584c3f352b21160b0000000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000005101c27333e49545e6876828d99a5b0afa4988c8175695f554a3f33261e140900000000000000000000000000000000000000000000000000000009131d27323d48525b67737f8a96a5aeb1a69a8e83776960554a3f34281d1106000814202b37424e5965717c88939fabb6bdb5aaa09690857c716c635e57534d4c48484747464b4c51565b626a6f79828e939da6afa79d938a7e73695f554a3f31281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a1108000000000000000000000000000000000000000000000006101820272d3134353e404040404040403535322d28211910070000000000050d151e262e363f464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f08000000000000000000000000000000000000040b11171c1f21222929292929292929292423211d19130c050000000000000000000000050c11161a1c1d2629292929292929292920201e1a16100a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35404b57636e7984909ba79d93887c7165584f453b30251a0f0300000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207000000000000000000000000000006111d2934404b57636e7984909ca7b3ada495897d7266584f453b3022160d04000000000000000000000000000000000000000000000000000000030d18232e38424d58646f7b87949ea9b3a89c91857a6f63574c4035291d1206000814202b37424e5965717c88939fabb6b6afa9a79e9590857d736e68635c5857525353535056585a61646c707a828e929ca4adaaa0968f83796e63584f453b3021180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090b0b111111111111110807060300000000000000000003070a0b0c111111111111110706040100000000000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e04000000000000000000000000000000000000000000050e16202930373c40414a4b4b4b4b4b4b4b41403d38312921170e04000000030c151e262e363f464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f08000000000000000000000000000000000000000001070c111416161d1d1d1d1d1d1d1d1d181715120e09030000000000000000000000000002070b0f11121a1d1d1d1d1d1d1d1d1d1514120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c28333e49545f6875808c97a5a4988c8075695f554a3f33281c110500000000000000000000000000000008141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1207010101000000000000000000000007131e2a36414d5864707b87959ea9b3a89d94867b6f64584c41352b211205000000000000000000000000000000000000000000000000000000000009141e2935404b57616b7884909ba7b2aaa097887c7165594e42372b1f1408000814202b37424e5965717c88939fabb9afa69f9c9f9e9590867f78716c6764625b5f5e5f596063666a6f757c838e929ca2ababa29c91867c70685f54483f352b211007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111416171d1d1d1d1d1d1d1413110e0a05000000000002090e121517181d1d1d1d1d1d1d1212100c0803000000000000000000000000000000000000000000000000000000000000000009131e28323c444c525557575757575757575655514b443b32281d13080000000000000000000000000000000000000000010b151e27303941474b4c56575757575757574d4b47413a31281e130900000009131c252e363f464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000000000000000000000000000000000206080a0b1111111111111111110c0c0a07030000000000000000000000000000000000000305060f1111111111111111110909070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5865717c88959ea79c90847a6e63574c4034291d140a00000000000000000000000003060808141f2b36424e5965707c87939faaa99d92867a6f63584c4035291e120d0d0d0c0c0a0703000000000000000914202c37434e5a66717d8894a5aeb2a69b8f84786a61564b4034291d1206000000000000000000000000000000000000000000000000000000000005101c27323d47515a6a76818d99a4b0b0a795897e72675b4f44382d21150a000814202b37424e5965717c88939fabb4a99f9590959f9e96918a827c7773706b6b6a6a6a6b6a6f72767b80868f939ca2abaca39b918b7f736c62584f45372f251c120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12181c202223292929292929291f1e1c19150f08010000050c12181d202223292929292929281e1d1b17130d06000000000000000000000000000000000000000000000000000000000000000c17222d38424c555c61626363636363636362605b544b42372d22170c010000000000000000000000000000000000000007111b252e37414951565861636363636363636256514a41382d23180d0200030e18232c363e464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35404b57636e7984909ba79e95887d71665a4e43382e24190e03000000000000000000050a0e111314181f2b36424e5965707c87939faaa99d92867a6f63584c4035291e18181818181715120e090300000000000a16222d3944505c67737e8a96a1adb0a5998d82766b5a51473c31261b10050000000000000000000000000000000000000000000000000000000000020d18232e3846515d6874808b97a2aeaea2978b7f74685d51453a2e23170b000814202b37424e5965717c88939fabb3a79c90859097a09f9c928e88827e7b797776767677787a7d81858c91979da4ababa39c928d81766f655b52473e35271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c22272b2d2e343434343434342b2a28241f19110a01050d151c22282b2e2f34343434343434292926221d170f070000000000000000000000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f03000000000000000000000000000000000000071119212b353f47515a61636d6e6e6e6e6e6e6e6d615a51473d32271c10050007121d28323c464f565f667075808c919aa1aaa39d938f837a6f6a605a51494039302820180f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c27333e49545e6875818d98a7a5978c8075695b52483d33271c11050000000000000001090f15191d1f1f24242b36424e5965707c87939faaa99d92867a6f63584c40352924242424242423211d19130c05000000000c17232f3a46515d6974808b97a3aeafa3978c8075695e5246372d23180d020000000000000000000000000000000000000000000000000000000000000914212d3844505b67727e8a95a1acafa4988c81756a5e52473b3024190d000814202b37424e5965717c88939fabaca094897d87919ca1a39c9a938e8a878483828181828485898d90969ca0a7adaba29c928e82796e635e554b42372e25170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151d252c3236393a404040404040403635332e29221a11080c151d252c3237393a404040404040403534312d2720180f060000000000000000000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c10050000000000000000000000000000000000060f17212a303b454f58616a6f787a7a7a7a7a7a7a776b61564b4035291e1207000a15212c37424c565f667075808c919aa1aaa49d938f837a6f6a605a51494039302820180f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e5766727e8997a0a69b8f84786c62574c41352a1e1207000000000000010a12191f24282a2b2f2f2f36424e5965707c87939faaa99d92867a6f63584c40352f2f2f2f2f2f2f2e2c28231c150d050000000c18242f3b46525e6975808c98a3afada2968b7f73685c5145392e221309000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d88949fabb0a4998d81766a5f53473c3025190e000814202b37424e5965717c88939faba89d9186797f8a91979ea5a39c9a9695908e8d8d8d8e8f9197989c9fa6aaada8a19c928d827a6f6960554e453b32261e15060000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c252d353c4144454b4b4b4b4b4b4b42413e39322a22190f121c252e363c4145464b4b4b4b4b4b4b403f3c37302820170d0300000000000000000000000000000000000000000000000000000000111d28343f4b57626e79868585858585858585796e62564b3f34281c110500000000000000000000000000000000030c161f28323a424a545f686f7b84858585858585857b6f64584d41352a1e1307000c17232e3a45505b667075808c919aa1aaa89d938f837a6f6a605a51494039302820180f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35414c58636f7b86919ca89d94877c7064594d42362c21160c01000000000009121a22292f3336373b3b3b3b424e5965707c87939faaa99d92867a6f63584c403b3b3b3b3b3b3b3b3a37322d261e150c0300000d1924303b47535e6a75818c98a4afada1968a7e73675c5044392d22160b0000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88939fabb0a5998e82766b5f54483c31251a0e000814202b37424e5965717c88939faba89d91867a737f8790959ba2a7a5a59e9b9a999899999b9ca0a7a8aaaea9a49d97918b817a6f69605850463e352a22160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18222c353e454c5051575757575757574d4c48423b32291f1518222c363e464c5052575757575757574c4b46403930271d130800000000000000000000000000000000000000000000000000000000111d28343f4b57626e79859191919191919085796e62564b3f34281c11050000000000000000000000000000000008121c263038424b545d636e79828e949191919191877b6f64584d41352a1e1307000c18232f3b46525d6975808c919aa1aab2a69b8f837b6f6a605a51494039302820180f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d29343f4b56606a77838e9aa5a4968b7f7468584f453b30251a0f0400000000050f19222b32393e414246464646464e5965707c87939faaa99d92867a6f63584c46464646464646464645423d362e261c130900000e1925303c47535f6a76818d99a4b0aca1958a7e72675b5044382d21160a0000000000000000000000000000000000000000000000000000000000000008131f2b36424d5964707c87939eaab1a59a8e82776b6054493d31261a0f000814202b37424e5965717c88939fa8a89d91867a6e737d848d919a9ca3a7a9a7a5a4a4a4a5a6a8abb0aba8a59e9b938f8780786f69605950483f362d251a11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27323c454e565b5d636363636363635957524b42392e24191d28323c464f565b5d636363636363625856504940372d22170c01000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c110500000000000000000000000000000008121b222c364049525b646d74808b929ca59c9c9c92877b6f64584d41352a1e1307000915202c38434f5a66727d8691969fa7afa89c90857d716d635c534c433b332b221b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a68747f8b97a7a59a8e8277695f554a3f33281c1105000000000a151f29323b43494d4e5252525252525965707c87939faaa99d92867a6f635852525252525252525252504c463f362d23190e03000e1925303c48535f6a76818d99a4b0aca195897e72675b5044382d21160a0000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaab1a59a8e83776b6054493d31261a0f000814202b37424e5965717c88939c9c9c9c91867a6e6d717b81888e93989c9fa6a4a6a7a7a7a7a6a4a7a09c9994908a837d746e686059504940382f261d140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b36414c565f65686e6e6e6e6e6e6e65625b52483e33281c202b37414c565f66696e6e6e6e6e6e6e63605950463c31261b1004000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c11050000000000000000000000000000061019222b313c465059626b727e89909aa3aca8a89e92877b6f64584d41352a1e1307000914202b37424d59636d727e8691969fa7aa9f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d17222d37434e5a66717d8897a0a89c91857a6e63574c4034291d1206000000030e19242f39434c5358595e5e5e5e5e5e5e65707c87939faaa99d92867a6f635e5e5e5e5e5e5e5e5e5e5e5c564f463d32281d1207000d1924303b47535e6a75818d98a4afada1968a7e73675c5044392d22160a0000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965707c88939faab0a5998e82766b5f54483c31251a0e000814202b37424e5965717c88919191919191867a6e636b6f767d83888d909596999a9b9c9c9b9a999797918e89847f79716c635e575049403830271f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505b656f747a7a7a7a7a7a7a776c62574c41352a1e222e3945505b666f747a7a7a7a7a7a7a766a60564b3f34291d1207000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000050e162029333b434a556069707c85909ca1aab3b4a99e92877b6f64584d41352a1e13070007121e29343f4a545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935404c58636f7a86919ca89f96887c7165594e42372b20140900000006111d28333e49535c63656969696969696969707c87939faaa99d92867a6f696969696969696969696969665f564c42372c21150a000d18242f3b47525e6975808c98a3afada2968a7f73685c5145392e221308000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d88949fabb0a4998d81766a5f53483c3025190e000814202b37424e5965717d85858585858585857a6e6361646d71777c8185888b8d8f8f90908f8f8d8b8986827e7a736e69635c544e47403830281f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f858585858585857c7065594d42372d23232f3a46525d697480858585858585867a6f63584c40352b21160b000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000020c151e273139434c555e636f7a838f959fa9b1bab5a99e92877b6f64584d41352a1e130700040f1a25303a444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a78838f9ba6a6968b7f73685c5145382e23180d02000008131f2a36414d58636c717575757575757575757c87939faaa99d92867a7575757575757575757575757570665c50453a2e23170c000c18232f3a46525d6974808b97a3aeaea3978c8074695d5246372c22170c010000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a1acafa4988d81756a5e53473b3024190d0008131f2a36414d58636c717a7a7a7a7a7a7a7a776960565c63656c71767a7d7f8183848484848381807d7a76726e696360585349453e3630281f170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c8794919191918b7f74685a51473d3227202b37424e5a65717c889591919197897e7267584f453b30251a0f030000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000007111b252f37414a535c656f76818d939da6afb9c1b5a99e92877b6f64584d41352a1e130700000b16202a333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596a75818c98a4a4998d82766b5b52483d32271c1005000008141f2b37424e5965717d808080808080808080818d99a4b0afa3988c808080808080808080808080808075695e52463b2f24180c000b16222d3945505c67737f8a96a1adb0a4998d82766a5950463c31261b10040000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b97a2aeaea2978b8074685d51463a2e23170c0006111d28333e49535c63656e6e6e6e6e6e6e6e6d60595053585c6365696e7174767778797978787674726f6a67636058555048433a352e261f170f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c78848f9b9c9c9a8f83776b61564b4034291d2934404b57636e7984909b9c9c988d8176695f554a3f33281c11050000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000007111a212b353f48515a636d737f8a919ba4adb6bfc8b5a99e92877b6f64584d41352a1e1307000006101a232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3744505b67737e8a95a8a79c9084796b61574b4035291e120700000a16212d3944505b67727e8a8c8c8c8c8c8c8c8c8d919ba6b1b0a59a918c8c8c8c8c8c8c8c8c8c8c8c8c867a6e62574b4034281d11000915202c37434f5a66717d8994a6afb2a69b8f83786a60564b3f34281d1107000000000000000000000000000000000000000000000000000000000005101b26313c47515a6a75818d98a4afb1a8958a7e72675b5044382d21160a00030e19242f39434c535859636363636363636362555048494d5358585f6366686a6c6d6d6d6d6c6a69666360595755504a463f382f2b251e160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b6975808c97a5a89c91867b6f64584d41362c2227333e49545e6875818c98a6a79c90857a6e63574c4034291d140a0000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000060f18222a303b454f58616b717d86919ca2abb4bdc7c1b5a99e92877b6f64584d41352a1e13070000000a131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121f2b36424e5965707c8797a1a99e95877b7064584d41362a1e130700000a16212d3944505b67727e8a9598989898989898999ba2abb5b4aaa19a98989898989898989898989891857a6e62574b4034281d110007131f2a36414d5964707b87969faab4a89c91867a6f63584c40352b20160b000000000000000000000000000000000000000000000000000000000006121d2934404b56616a78848f9ba6b2aba197887d71655a4e42372b20140800000a151f29333b43494d4e5757575757575757574a463f3e43494d4f55575a5d5f6061626261605f5d5a5856504c4a463f3b362f27201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39434e5a65717d88959ea9a1978a7e73675950463c3126242f3a454e5766727d89969fa99f95887d71665a4e43392e24190e0300000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000030d162028323a424a555f686f7b849097a0aab2bbc5ccc1b5a99e92877b6f64584d41352a1e1307000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a86919ca8a594897d71665a4f43382c20150900000a16212d3944505b67727e8a95a1a3a3a3a3a3a3a4a6abb2bbbab2aaa5a3a3a3a3a3a3a3a3a3a3a39c91857a6e62574b4034281d110006121d2934404b57636e7a85909ca8b3aba097897d7166584f453a30251a0e030000000000000000000000000000000000000000000000000000000009121e2a35414c58646f7b86949da8b4a89c91867b6f63584c4135291e12070000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b3633393e3f454a4c4e515355555656565553514f4c4b46403f3b36302c261f17110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2934404b57636e7984909ca7a8998e82766960554a3f3428202b35404c57636e7a85909ca8a6978c8075695b52483e33281c110600000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000008121d263038424b545d636e79828e959ea7b0babdbec1c6b5a99e92877b6f64584d41352a1e130700000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606978848f9ba7a2968b7f73685c5145392e22130800000a16212d3944505b67727e8a95a1a8a8a8a8a8a8aaacb0b6bebcb4aeaaa9a8a8a8a8a8a8a8a8a8a89c91857a6e62574b4034281d110005111c28333e4a545f6877828e99a5b1b0a7978c8075685f54493e33281f140a00000000000000000000000000000000000000000000000000000006111b26313c47515a67727e8a95a4adb2a69a8f83786a60564b3f34291d120600000009121a22292f33363740404040404040404033302c292f33353b3f40434547494a4b4a4a49484643403f3c3733302c26211c160e06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6875818d98a6a89c91857a6f63574c40352b2028333f4a55606976818d99a7a79b8f84786c62574c41352a1e130900000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000008121b222c374049525b646e75808c929ca5aeb3b2b1b3b6bcb5a99e92877b6f64584d41352a1e13070000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596b76828e99a5a4988d81756a5e5347372d22180d02000a16212d3944505b67727e8a959c9c9c9c9c9c9c9fa1a6aeb6b4aba49f9d9c9c9c9c9c9c9c9c9c9c9c91857a6e62574b4034281d1100030f1a25303b454f5868747f8b97a5aeb2a79b9084796e63574b42382e2418100600000000000000000000000000000000000000000000000000050e16212a34404b56616a76828e99a5b0afa6988c8075695a51473c31261b1004000000020a12191f24282a2b3434343434343434342825211f24252b303334373a3c3e3e3f3f3e3e3c3a383534312c2825211c17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5866727d89969faa9f96897d7266584f453a302525303b46505867727e8a97a0a89e94877c7065594d42372d23180d02000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000061019232b313c465059626c727e89909aa3acada8a7a6a7acb4b5a99e92877b6f64584d41352a1e1307000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c3646525d6975808c97a3a69a8e83776c5a51473c31261b1004000a16212d3944505b67727e8a919191919191919193969da6b0aea49b9492919191919191919191919191857a6e62574b4034281d1100000b16212b35424e5a65717d88949ea9b4a99e94887d71665b52483e332820170d030000000000000000000000000000000000000000000000010b151e27313c465059646f7b86919ca8b3aa9f96897e72665b4f44372d22170d010000000002090f15191d1f202929292929292929291d1a1715191c212528292c2e30323333333332302f2c292826221d1a17120c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35404c57636f7a85919ca8a6988d8175685f54493e3328212c36414c58636f7b86919ca8a4968b7f74685a51473d32271b1005030303030300000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000050e172129333c434b56606a707c85909ca1aaada49d9b9a9da3acb6a99e92877b6f64584d41352a1e130700000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000812222d3944505c67737e8a96a1a79c9085796a61564b4034291d1206000a16212d3944505b67727e858585858585858585878d96a1acaa9f948b86858585858585858585858585867a6e62574b4034281d11000007111d2934404b57636e7984909ba7b2aea5998d82766c62574c443930271d1308030000000000000000000000000000000000000000000107111b252e373f4a55606974808b96a0aab3a89c90857a6f63574c4035291d130800000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0a0c12161a1c1d2023252627282827262523201e1d1b17120f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407111d28343f4a55606976828d99a8a79c9084796e63574b4034291d29343f4b56616a77828e9aa5a69a8e83776b61564b4034291d12080f0f0f0f0f0b0b0906020000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000020c151f27313a434c555e636f7a838f969faaafa69d948f8f939da7b3a99e92877b6f64584d41352a1e13070000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8894a0a99f95867b6f63584c4135291e1207000a15212c38434e59646e727a7a7a7a7a7a7a7a7a7c87939faaa99d92867a7a7a7a7a7a7a7a7a7a7a7a7a7a766c61564a3f33281c11000005111c28333e49545f6875808c97a3acb4a89c91877c70655d544940372d221c13070200000000000000000000000000000000000000020a121a212b353f47525b636f7a84909ca7b0ada4988d81766960554a3f34281d1103000000000000000000030608081111111111111111110604010002070b0f11121417191b1b1c1c1c1b19171512110f0c080401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13161b26313c46505967737e8a97a1a99e95887d71655a4e42382e2326313c47515a68737f8a96a4a89c91867b6f64584c41362c22171b1b1b1b1b1b171614110d0802000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000007121c262f38414a535c656f76818d949da6afaa9f968f84838f9aa6b1a99e92877b6f64584d41352a1e1307000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d5965707c8793a7afa693877c7065594d42362b1f13080008131f2a35404a555e64676e6e6e6e6e6e6e6e707c87939faaa99d92867a6f6e6e6e6e6e6e6e6e6e6e6e6e6c665d52483d31261b0f0000030e1a25303a454f5865707c88929ca7b2aba1978e82766d635a51473c312c241c120c0500000000000000000000000000000000000309121a222b303b454f58626b74808b959ea9b3a89d94897d72665950463c31261b0f040000000000000000000000000006060606060606060600000000000000030506090b0d0f101111100f0e0c09060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191e2224222c36414c58646f7b86919ca8a5978c8074695b52483d3227222d37414d5864707b87939da8a1978a7e73675950463b31262626262626262622221f1c17120b040000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000008111a212c363f48515a636d747f8b929ba4adaaa19c90857c828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b8697a0aba094887d71665a4f43372c2015090005101b26303b444d55595b6363636363636365707c87939faaa99d92867a6f636363636363636363636362615d554c43382e23180d0000000b16202b353e4c57626c77828e9aa3acb1a89c92897d726a61564b453d342c211c150e08020000000000000000000000000001070d131b232b323b434a545f68707c86919ca5aeaea59b8f83796e63574b40362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303234404b56616a77838e9aa6a69b8f83786b62574c403532323235404b57616b78838f9aa6a8998d82766960554a3f3432323232323232322e2d2b27221b140c0400000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000050f18222a303b454f58616b717d86919ca2abaca39a918a7e77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85919ca8a1958a7e72675b5044382d21160a00010c17212b343d444a4e505757575757575965707c87939faaa99d92867a6f63585757575757575757575756524c453c33291e140900000007111b25333e48535c66717d89939da7b3aba29b90847a6f635f564d443d302c261f17120c080401000000000000000104070b11161d232b333b434c545d636e79828e969faab4a99e948a7e73685f54493e33261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c3d3d3c47515a68747f8b96a4a89d94877c7064594d41373d3d3d3d3d48525b6874808b97a5a89c91857a6f63574c40353d3d3d3d3d3d3d3d393936312c251d140b02000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000040d162028323b424a555f696f7b849097a0abaea59c938c807577828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f687984909ba7a2968b7f74685c51453a2e22170b000007111b242c343b4043444b4b4b4b4b4e5965707c87939faaa99d92867a6f63584c4b4b4b4b4b4b4b4b4b4a48433c342c23190f05000000010b19242f39424d58636d77838f9aa1abb4a99e948d81766f655e544d453b362f27221c17130f0c080908080808080c0f12171b21272d313c434b535c646d74808b929ca7afaca39b9084796e63584f453a3025160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373d434647494949494d5964707c87949da8a4968b7f73685a5147494949494949494e5965707c88949ea89f96897d7266584f454949494949494949494544413c352d251b1208000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500010b141e263039424b545e636e79828e959ea7b0a79e958e82796e77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586c78838f9aa6a3978c8075695e52463b2f24180c0000010a141c242b3035383940404040424e5965707c87939faaa99d92867a6f63584c4040404040404040403f3d38332c241c120900000000000a151f29343f49545d65717d88919ba5aeaea59b928b7f746e645d554a453f38312c26221d1b1712141413141412171a1d21252b30373c454c535c636c727e86919ca3acafa79c92897e72695f55473e352b20160600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d373f474d5153555555555557626c78838f9ba6a59a8e82776a615655555555555555555557626c7884909ba7a6988c8175685f5455555555555555555555514f4b453e352c22170d020000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050006111b252e364049535c646e75808c939ca5aeaba09790847b6f6977828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b332b2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b354954606b77838e9aa5a4988d81756a5e53473b3024190d000000030c141b21262a2c2d34343436424e5965707c87939faaa99d92867a6f63584c40353434343434343433312e29231c140b020000000000050f1a252f3a434d58636d75818d959ea8b1aba299908a7e726e655e554f48423b36312c28262221201f1f1f20202126282c30353b41474b555c636c717d859097a0abb5aa9f968e82776e64584f45372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6060606060605b6974808c97a5a89c91867b6f6360606060606060606060605c6975808c98a6a79c9084796e6360606060606060606060605c5a554e453c31271c11060000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1100071119202b353e47515a626c727e8a919aa3acaba29c91867d716b6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c433b33291f150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071125313d48545f6b77828e99a5a4998d81766a5f53473c3025190d00000000030a11171b1f212129292b36424e5965707c87939faaa99d92867a6f63584c4035292929292929282826231e19120b03000000000000000b16202a333e49535c646f7b859097a1abb6a9a09c91867e736e635f58524a46403c3734312c2c2b2b2a2b2b2c2c3134363b3f454a51565e656d717d8590969fa7b0aba29c91867c70645d54483f36261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6c6c6c6c6c6c6c6c717c88959ea9a0978a7e726c6c6c6c6c6c6c6c6c6c6c6c6c6c717d88959fa99e95887c716c6c6c6c6c6c6c6c6c6c6c6c68655e554b41362b1f14090000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050f17212a2f3a454e57606a707c85909ca1aaada49b928b7f746d636b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c534c43392f241a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925313c48535f6b76828d99a5a4998d82766b5f53483c3125190e000000000001070c101315161d1f2b36424e5965707c87939faaa99d92867a6f63584c4035291e1e1f2023262523201b150e07000000000000000006101a242f39434b56616a727e87919ca3acb5aaa09691877f756e69625b55504b46403f3c3738373636363738363b3f40464a4f545a61646f737d8590959ea6afada49b918a7f736c62574d44382f26160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b46515d6771767777777777777777777884909ba7a7998d81777777777777777777777777777777777985909ca7a5978c8077777777777777777777777777736f655a4f44392d22160b0000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110c161f27313a4249545e686f7a838f969faaafa69d948d81766f655c6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000020b131b232c333c444c545d636d727e8691969fa7a69f9690857d716d635c53493e33281d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303c47535f6a76818d99a4a5998e82766b5f54483d31251a0e000000000000000105080a0a141f2b36424d5965707c87939faaa99e92867b6f64584c41352a29292a2c2e32312e2a251f18100700000000000000000b151f29313c47515a646d74808c929ca3acb0a7a097918a8079706c63605956504c4b46454342424242424345464a4c5055585f636a6f767f8690969ea5aeaea59d938d81766e655b52483d34271f15060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818383838383838383838385909ca7a89c9186838383838383838383838383838383838385909ca8a79c9085838383838383838383838383837f73685c5145392e22170b0000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c07121c262f38424a545d636e78828e949da6afaa9f968f837a6f635e5f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000020b131b232c333c444c545d636d727e869196929292929690857d716d63584d41362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a75818d98a4a59a8e82776b6054493d31261a0f000000000000000000000007131e2a36414d5864707b8792a7b0aa9e93877b7064594d423535353536373a3d3c39352f2820180e0500000000000000061018232d37414a545d636e79828e939da4adb0a7a09c918c827c746f69636059585650514f4e4e4d4d4e4f50505557586063686e737b818a91969fa6aeaea59e948f837a6f635e554b42382c24170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838f8f8f8f8f8f8f8f8f8f90959fa9aa9f96918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90969faaa99f95908f8f8f8f8f8f8f8f8f8f8f8f8c8075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c121a212c363f48525b636d747f8b929ca4adaaa19c90857c706a60565f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000020b131b232c333c444c545d636d727e858787878787878787857d71655a4e43372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1824303b47525e6a75818c98a3a69a8e83776c6054493d32261b0f000000000000000000000006121e2935404c58636f7a8696a0aaaca094897d7266584f45414040414243464948443f3830281f150b010000000000000009131d273039444a555f686f7a838f949da4acb0aba19a938e86807a746f6a666360595c5b5a5959595a5a5c59606366696e73797f858d919ca0a7afada59e9590847b6f6a60564e453a32281c1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838f9a9a9a9a9a9a9a9a9a9c9fa6afafa79f9c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6afafa69f9c9a9a9a9a9a9a9a9a9a9a9a988c8075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c18222b303b465059626b717d87919ca2abaca39a90897e726c6259505f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000020b131b232c333c444c545d636d727b7b7b7b7b7b7b7b7b7b7b6f64584c41352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b47535e6a75818d98a4a59a8e83776b6054493d32261a0f000000000000000000000006111d28343f4b56606a7985919ca8aea2978b8074685f544f4d4c4c4c4d4f5154534f4841382f251b100600000000000000030d172029303b454f58606a6f7b838f939ca3abb5aaa39c96918b847f7a76726f6a6968666565646565666869696f71757a7e838a90959ba2aab0aca49d9590857c706b615950463d352a21180b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838f9ba6a6a6a6a6a6a6a6a7a9afafb7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a8aaafb0b6afa9a7a6a6a6a6a6a6a6a6a6a6a3988c8075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428162029323b434a556069707b859097a0abaea59c928c80756e645b52545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000020b131b232c333c444c545d636a6f7070707070707070706f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d98a4a5998e82776b5f54483d31261a0e0000000000000000000000040f1b26313c4650596c78838f9ba6b2a79b9084796e635f5858585758595a5d605e5951483f352a20150a0000000000000000071018212b353f485059616a6f7b838e939ba2aab0aca7a09c95908b85817d7a777573727170707071727375777a7d81858a8f949c9fa6abb4aaa39c948f847c706c625a514940372d241a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838f9b9f9f9f9f9f9f9f9f9f9fa2a4a9b1b5b3a9a4a29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3a4aab1b4b3a8a2a19f9f9f9f9f9f9f9f988c8075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e273039434b555e636e79838f959ea7b0a79e948e82796e635d544b545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000020b131b232c333c444c545a616464646464646464646464615a51473d32271b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925313c48535f6a76828d99a4a5998d82766b5f54483c31251a0e0000000000000000000000010c17222c3746525e6975808c98a5aea89e948b7f746e6866646363636466686c6962594f44392e23180d00000000000000000007111b252f374049515a616b6f7a828d929ca0a7adb0aaa59e9c96918d898683817f7d7c7c7b7c7c7d7f808385888c90959b9da4a9afaea9a19a938e837c706c625b524a413830261c14090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838f93939393939393939393939799a0a9b8a9a0999693939393939393939393939393939393979aa1aab2a89f98959393939393939393938c8075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428252e374149535c656e75818d939da5aeaaa09690847b6f685f554d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000020b131b232c333c444a5156585858585858585858585856514a41372d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25313c48545f6b76828e99a5a4998d81766a5f53483c3025190e0000000000000000000000000812212c38434f5b66727d89959ea9aea59c91867f7974716f6f6e6f7071747772695e53483c31251a0e000000000000000000020c151e273038414a515a616a6f7a818a91969da4aaafaea9a69f9c9997918f8c8b898888878788898a8c8e9196989c9fa6a8adb0aaa59e9b908c827b706b625c534b423a312820160c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4955616c78838888888888888888888888888b9099a7b0a4998f8b888888888888888888888888888888888b909aa4aea2988f89888888888888888888888075695e52463b2f24180d0100000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34212b353f47515a636c737f8a919ba3acaba29c91867d716a61584f4548545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000020b131b232c333941474b4c4d4d4d4d4d4d4d4d4d4c4b47413931271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313d4854606b77828e9aa5a4988d81766a5e53473c3024190d00000000000000000000000006121d2935404c57636f7a84909ca5aeaba097918b847f7d7b7a7a7a7c7d7f82776c6054493d32261b0f00000000000000000000050e1620283139414a515a61696f767f868f939c9fa6aaafafaaa8a7a09c9a98969594939393949496989a9ca0a7a7a9afb0aba7a09c94908980796f6a625b534b423a322921180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7f8b97a0aba2968b7f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808b97a4ada195897e7c7c7c7c7c7c7c7c7c7c7b6f64584d41362a1e13070000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342a303b454f58616a717d86919ca1aaada49b918a7f736d635a51483f48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000020b131b232930373c404141414141414141414141403d37312920170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26323d4954606c77838e9aa6a3988c8175695e52473b3024180d00000000000000000000000006111d28343f4a556069747f8b949ea6afa7a09c948f8b888786868687898b867a6e62574b4034281d110000000000000000000000060f182029313a4149515960636f737d838b90969c9fa7a9aeb3b0aba8a6a3a2a09f9f9e9f9fa0a2a3a5a8aab0b3afaaa7a09c97918c847e756e69615a524a423b322a21191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707070707070707070707070707b86919ca8a3988c81757070707070707070707070707070707b87939da8a2968b7f737070707070707070706f6b61574b4035291e12070000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34313a424a545f686f7b8490969faaafa69d938d81766f655c534a413748545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000020b131820272d3134353636363636363636363534322d27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c4650596d78848f9ba7a2978b8074685d51463a2f23170c000000000000000000000000040f1a26313b465059636f7a8490969fa7aeaba49d9b979492919192939491857a6e62574b4034281d1100000000000000000000000007101821293139414950555e656c71797f858c91969c9ea5a7a9afb0b1afadacabaaaaaaabacadafb1b0afaaa8a69f9c97918d86807a726d635f58514a423a322a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b626465656565656565656565656a77828e9aa5a79b9084796e656565656565656565656565656b78838f9aa6a59a8e83776a656565656565656564615a51473d32271c10050000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3038424b545d636e79828e949ea7afa89f958f837a6f635e554c43393d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000020810171d2326292a2a2a2a2a2a2a2a2a2a2a2927231d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a56606a7985909ca8a1968a7f73675c5045392d22160b000000000000000000000000010c17222c36404a556069717d8691979ea5abada8a7a29f9e9d9d9d9e9c91857a6e62574b4034281d11000000000000000000000000000810192129303840464a555c63696e737b80858b9095989c9fa6a4a6a8aaafababacababafaaa8a6a4a69f9c9996908c86817c756f6a645d554f484139312a221a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b525759595959595959595959595a68737f8a96a4a99e94887c716559595959595959595959595b6874808b97a5a89c91867b6f64595959595959595857514a41382e23180d020000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f364049525b646d74808b929ca5aeaba19790857c706960554e453b333d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000070d13181b1d1e1e1e1e1e1e1e1e1e1e1e1d1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86969faaa095897d72665b4f43382c2115090000000000000000000000000008121c26313c465059636c727e8690959ca0a7a8adadaba9a9a8b0a89c91857a6e62574b4034281d110000000000000000000000000000081018202830363c454b53585f636b6f757b8084898d909596999a9c9fa69fa0a0a09fa69f9c9b999696908d8985817c76706c636059544a453f3731292119110a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28323a42484c4d4e4e4e4e4e4e4e4e4e4e5864707b87939da8a5978b8074695b524e4e4e4e4e4e4e4e4e5965707c88949ea8a0978a7e736759504e4e4e4e4e4d4b47413a31281e1409000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3c465059626b727e87919ca2acaca39c91877e726b625950463d35313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000003090d1012121313131313131313131212100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b8793a6afa793887c7165594e42372b20140800000000000000000000000000020c17222c364049535c646e727d848d91979b9da4a1a2a3a3a2a7a09c91857a6e62574b4034281d110000000000000000000000000000000810171f262c313b43484f555a61646a6f74797d8185888a8d8f90969393949494939396908f8d8b8885827e7a75706b65625b565049443b352f272019110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a32383e41424242424242424242424b57616b78838f9aa6a69b8f83786b62574c424242424242424c58626c7884909ba7a7998d82766960554a4242424241403d38312921180e04000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3b434a556069707c859097a1abaea59c928b80746d645b524940362d313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000205060707070707070707070707060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717c88949faba097877b7064584d41362a1e1307000000000000000000000000000008121c263038434b545d646d717b81868c8f949596979797969597918e867a6e62574b4034281d1100000000000000000000000000000000070f161c222b32373f454a51565a6164696e7176797c7f8183858687888889888887868583827f7c7a76726f6964625b57524a464038302b251e17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22282e33353637373737373737373d48525b68747f8b97a4a89d93877b7064594d4137373737373e49535c6975808c98a6a89c91857a6f63574c403537373635322e282119100706030000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b434c555e636f7a838f959fa8afa79e948e82796e635d544b42383026313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b66727e8995a0a89c91857a6e63574c4034291d12060000000000000000000000000000030d161f28323b444d545c636b6f767c808487898a8b8c8c8b8a8885837f74685c51453a2e22170b0000000000000000000000000000000000060c121a22272f353b41474b5156585f6366686e70737678797b7c7c7d7d7d7c7c7b79787674716e696763605957524c48423c363028211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f24272a2b2b2b2b2b2b2b2b2e38424d5965707c87949da8a4968b7f73685a51473c312b2b2f39434e5a66717d88959fa99f96897d7266584f453b302b2a2927231e18161313110e0a05000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4a535c656f76818d939da6afaa9f9690847b6f685f544d443a31281f313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000040708090b0b0b0b0b0b0b0b0b0a0a08050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45515d68747f8b97a2a69b8f8478695f554a3f33281c1105000000000000000000000000000000060f17222b343d444c535a61646b7075787b7e7f8080807f7e7c7a77746f655b4f44392d22160b000000000000000000000000000000000000030812171e252b30383d41474b4f5557585f6365686a6c6a6f707171727171706f6e686a6865635f585755504c48423e38312c261f18120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f1f1f1f1f1f1f212a35414c57626c78848f9ba6a59a8e82776a61564b403429212934404c57636e7a85909ca7a6988d8175685f544a3e3328212121212121211f1e1c19140f080100000000111d28343f4b57626e7985919ca8b3a89c9085796e625648515a636c737f8a919ba4adaaa19c91867d716a61584f453c342a2126313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000060b0f121415171717171717171717161513100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576a76818d98a4a5998d82766b584f453b30251a0f040000000000000000000000000000000007121a242c343c434a51565b6264696b6f72737475747472716f6968655e554b41362b2014090000000000000000000000000000000000000001060e151c21282d32373d3f454a4c4f5457595c5f5a61646565666666656564635e575c5a57554f4c4a46403d38332e29221d160f0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e111313141a2025292b2c2d333e48525b6974808c97a5a89c91867b6f63584c41362c2d2d333f4a555f6976818d98a7a79c9084796e63574b40342d2d2d2d2d2d2d2d2b2a28241f18110901000000111d28343f4b57626e7985919ca8b3a89c9085796e62564f58616a717d86919ca2abaca39b918a7f736c635a51473f352c231926313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000020910151a1d1f2022222222222222222221211f1b17110b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6877838f9aa6a3978b8074695d5146362c21160c0100000000000000000000000000000000010a131c242b333941474b5257595a616466676869696867656360595b554e453c31271c1106000000000000000000000000000000000000000000050c12161e23272d32353b3f40454a4b4e505351565859595a5a5a5a595857544e514e4c4a45403f3b36322e28241f17120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a131b232a30343738393939424e5a65717c88959ea9a0978a7e73675950463b393939393b454f5866727e8996a0a99e95887d71655a4e433839393939393939393635332e29221a1108000000111d28343f4b57626e7985919ca8b3a89c9085796e6256555f686f7b849096a0aaaea59d938d81756e655c534941372e251b1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000020b131a2025292b2c2e2e2e2e2e2e2e2e2e2d2c2a26211b140c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca8a7958a7e72675b5044382d211207000000000000000000000000000000000000030b131b232931373d42484c4d5157585b5c5d5d5d5d5b5a5755504f4b453e352c22180d020000000000000000000000000000000000000000000002070e13181d23252b3033353b3e40424547474b4c4d4e4e4f4e4e4d4d4b49454542403f3b3634312c26231e19140f080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f4243444444444b57636e7984909ba7a7998d82766960554a444444444444444c58636f7a85919ca8a5978c8075695b524844444444444444444442413e39322a22180f050000111d28343f4b57626e7985919ca8b3a89c9085796e62545d636e79828e949ea7b0a79e958f83796e635e554b433930271e151a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000009131b232a2f343637393939393939393939393835312b241c150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87969faaa097887c7065594e42362b1f140800000000000000000000000000000000000000030a121920272d32383d4041474b4d4f5051525251504e4c4a4640413c352d251c12080000000000000000000000000000000000000000000000000004090e13181c2125282b3033343639373c40414242434343424241403e3a35373433302c2826221c19140e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f5050505050545f6875818c98a6a89c90857a6f635750505050505050505056606a76828e99a8a69b8f84786c6257505050505050505050504d4c48423b32291f140a0000111d28343f4b57626e7985919ca8b3a89c9085796e625b646e75808c929ca5aeaba09790857b706960554d453b322920160e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000006101a232b333a3f42434545454545454545454443403b342d261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a6a89c91857a6f63574c4035291d12060000000000000000000000000000000000000000020810171e23282e3235383d40414445464646454442403f3b3636312c251d140b0200000000000000000000000000000000000000000000000000000004090c12161a1c212528292b2e2d313435363737383737363534332f2b2b292825211d1a17120c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444d54595b5b5b5b5b5b5b5866717d89959fa99f96897d7266585b5b5b5b5b5b5b5b5b5b5967737e8a97a1a89d94877c70655b5b5b5b5b5b5b5b5b5b5b5957524b42392e24190e0300111d28343f4b57626e7985919ca8b3a89c9085796e59626c727e89909aa3acaba29c91877d716b625950463d342b221810061a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000b15202a333c43494d4f515151515151515151504e4a443d362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f586874808b97a2a69a8e83776960554a3f34281d110600000000000000000000000000000000000000000000070e13181e2327292e32353638393a3b3a3a38373534312c2627221c140d0400000000000000000000000000000000000000000000000000000000000002070b0f11161a1c1d1f222326292a2b2b2c2c2c2b2b2a29272420201d1c1a16120f0c0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a545d646667676767676767676e7a85909ca7a6988c817568676767676767676767676767676f7b86919ca8a4968b7f7468676767676767676767676765625b52483e33281c110600111d28343f4b57626e7985919ca8b3a89c9085796e606a707c85909ca1aaada49c928b7f746d635b52483f362d241a12080e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000040f1a252f3a434c54585a5c5c5c5c5c5c5c5c5c5b5a554d463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6877828e99a5a3978c8075695950463b31261a0f04000000000000000000000000000000000000000000000004090e14181c1e2327292a2c2d2e2f2f2e2d2b292826211c1c18120b040000000000000000000000000000000000000000000000000000000000000000000003070b0f11121413181b1d1e1f20202020201f1e1d1c19161112110f0c070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e59646d7272727272727272727276818d98a4a79c90847972727272727272727272727272727277838e9aa6a69a8e8377727272727272727272727272706c62574c41352a1e130700111d28343f4b57626e7985919ca8b3a89c9085796e636f7a838f969faaafa69d948e82786e635d544a42382f261c140a010e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000007121d29343f49545d636668686868686868686867645e564f463f362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca7a495897e72665b4f44362c21170c010000000000000000000000000000000000000000000000000004090e1114181c1e1e21222324232321201d1d1a17120c0d0802000000000000000000000000000000000000000000000000000000000000000000000000000003050608090d101212131414151414131311100e0b0606050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e7e7e7e7e7e7e7e7e7e7e818d98a4a99e958b7f7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828e99a5a89c91877f7e7e7e7e7e7e7e7e7e7e7e7e7c7065594d42362b1f130800111d28343f4b57626e7985919ca8b3a89c9085796e6f76818d949da6afaa9f968f837a6f685e544c443a31271f160c03030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000008141f2b36424d58636d71737373737373737373736e665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87959fa89d94867b6f64584c41352a1e1208000000000000000000000000000000000000000000000000000000000205090d101213151617181817161412110f0c080202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070808090909080807060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838a8a8a8a8a8a8a8a8a8a8d919ba6aea599908b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8e929ca6aba197918a8a8a8a8a8a8a8a8a8a8a8a8a7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3a89c9085796d737f8b929ba4adaaa19c90857c706a60574e453c332a21170f0500030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000915202c37434f5a66717d7f7f7f7f7f7f7f7f7f7e7570665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5867737e8a95a6a69b8f84786a61564b4034291d120200000000000000000000000000000000000000000000000000000000000000020507070a0b0c0c0c0b0a0806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838f959595959595959595989ba1aab6a9a0999795959595959595959595959595959595999ca2abb1a8a19c9695959595959595959595958b7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3a89c908579717d86919ca2abaca39a918a7e726c625a51473e352c231911070000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000007121e2935414c58636f7a838b8b8b8b8b8b8b8b8a807570665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6876818d98a4a6988c8175695a51473c32261b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407090911111111111111110606040100000000000000000000000000000000000000000000000000020506071111111111111111080806030000000000000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838f9ba1a1a1a1a1a1a1a1a4a6aab1b5b1a9a4a2a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a5a6abb1b8b1aba8a1a1a1a1a1a1a1a1a1a1a1978b7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3a89c9085797b849097a0abaea59c938c80756e645c534940362e251b1309000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000006121d29343f4b56616a6f7a838f939696969696918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7984909ca79f96897d72665a4f43372d23180d0200000000000000000000030507081011111111110908060400000407080910111111100706040200000000000000000000000000000000000000000306070809090909090909090909090909090909090909090909090807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214151d1d1d1d1d1d1d1c12110f0c070200000000000000000000000000000000000000000003090d1012121d1d1d1d1d1d1d1d1413110e0a05000000000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838f9ba4a4a4a4a4a4a4a4a4a4a4a6abb2b3afada8a6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a6abb2b6b4aca7a6a4a4a4a4a4a4a4a2978b7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3a89c908579828e959ea7b0a79e958e82796e635e544b423930261e140b02000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000004101b26313c47515a616a6f7a838f939da3a2a19a918c807570665f564f463f362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88959ea89c90857a6f63574c4035291d1309000000000000000000040a0e1112131c1c1c1c1c1c1414120f0b0b0f1214151b1c1c1c1c1212100d080300000000000000000000000000000000050a0e11131414141414141414141414141414141414141414141414141313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161a1e202129292929292929281d1d1a17120c0500000000000000000000000000000000000000070d13181b1d1e28292929292929291f1f1d19150f090100000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838f9898989898989898989898989ba2abb4ada49d9a98989898989898989898989898989898999ba2abb6aca39c9a9898989898989898978b7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3a89c9085818c939ca5aeaba09790847b6f695f554d443b322820160d0400000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000020d18222d374049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6874808b97a5a8998d82766960554a3f34281d11030000000000000001080e14191c1e1f282828282828201f1d1a15151a1d1f2027282828271e1d1b18130d070000000000000000000000000001080f15191c1f1f20202020202020202020202020202020202020202020201f1e1c19140f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292b2c3434343434343434292825211c160f0700000000000000000000000000000000000810171d2326292a34343434343434342b2a28241f19120a01000000000000000000000000000000000000000000000000000000040f1b27323e4955616c78838d8d8d8d8d8d8d8d8d8d8d8d8d919ba4ada89d938f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d929ba6afa79c938e8d8d8d8d8d8d8d8d8d8b7f74685d51453a2e23170b00111d28343f4b57626e7985919ca8b3aa9f96908c919aa3acaba29c91867d716b61584f453d342a22180f050000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000008131d2730394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77838e9aa6a1978a7e73675950463b31261a0f04000000000000010911181e23272a2a3333333333332b2b28251f2025292b2c3333333333292926221d1710080000000000000000000000010a12191f24282a2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a28241f1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a30343738404040404040403f3533302c261f170f0500000000000000000000000000000007101820272d31343540404040404040403736332f29221a1209000000000000000000000000000000000000000000000000000000000c17232f3a46515d697480818181818181818181818181818d939da8a69a8f8381818181818181818181818181818181818d959fa9a69a8e82818181818181818181817e72665a4f43382c20150900111d28343f4b57626e7985919ca8b3afa69f9c989aa1aaada49b928b7f746d635a51483f362c241a1108000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000030d17202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca89c91867b6f64584c41362c21170c0100000000000008111921282e3235363f3f3f3f3f3f3736332f292a2f3436373e3f3f3f3f3534312d27201810070000000000000000000008121a22292f33353637373737373737373737373737373737373737373737373635332e29221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f42434b4b4b4b4b4b4b4b403f3b362f271f160c0200000000000000000000000000030d17202930373c40414b4b4b4b4b4b4b4b42413e39322b22190f050000000000000000000000000000000000000000000000000000000b17222e3945505b666f7475757575757575757575757578838f9aa6a59a8e82777575757575757575757575757575757985909ca7a4988d8175757575757575757575726d64594d42372b20140900111d28343f4b57626e7985919ca8b3b6afaaa8a3a5aaafa69d948d81766f655c534a41382f261c130a01000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000061018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a67737e8a97a0a69a8e82776b61564b4034261c1208000000000000040e18212a32383d40414a4a4a4a4a4a43423e3933303a3f42434a4a4a4a4a41403c37302920170d030000000000000000050f19222a32393e4142434343434343434343434343434343434343434343434342413e39322a22180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f57575757575757564c4a463f382f261c12070000000000000000000000000009131d27303941474b4c57575757575757574e4c49433b32291f150a0000000000000000000000000000000000000000000000000000000915202b36414c565f66696a6a6a6a6a6a6a6a6a6a6a6a74808b97a5a89c91867b6f6a6a6a6a6a6a6a6a6a6a6a6a6a6976818d98a6a79c9084796e6a6a6a6a6a6a6a6a66645d544a3f34291e120700111d28343f4b57626e7985919ca8b3bfb9b5b3afb0b5aa9f968f837a6f635e554c433a31271f150c0300000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b56616b77828e9aa79f968a7e72675a51473d3227160c020000000000000a141e28323a42484c4d5656565656564e4d49433b3b43494d4f55565656564c4b47413930271d130800000000000000000a151f29323b42484c4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4c48423b32291f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444d54595b6363636363636362575550483f362c21170c010000000000000000000000020d18232d37414a51565862636363636363635958534b43392f24190e03000000000000000000000000000000000000000000000000000007121d27323c464e565b5d5e5e5e5e5e5e5e5e5e5e5e65707c88949ea9a0978a7e7267595e5e5e5e5e5e5e5e5e5e5866727e89969fa99e95887d71655e5e5e5e5e5e5e5a59544c443a30251a0f0400111d28343f4b57626e7985919ca8b3bfc3c0bfbab3aaa19c90857c706a60564e453c332921170e050000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b86919ca89c90857a6f63574c41372d231806000000000000030e19232e38424b5257596262626262625a58534c43464a54585a61626262615856514941372d22180c02000000000000030e19242f39424b5357595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5957524b42392e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a545d64666e6e6e6e6e6e6e6d63605950463b30251a0f04000000000000000000000005101b26313c47515a61646e6e6e6e6e6e6e6e65635c53493e33281d11060000000000000000000000000000000000000000000000000000030e18222c353e464c50515353535353535353535358626c7884909ba7a7998d827669605553535353535353535357636f7a85919ca8a5978c8075695b5253535353534f4d4a443c332a20160b0100111d28343f4b57626e7985919ca8b3bfcbc8beb5aca39a90897e726c625950463e352b23191006000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b68737f8b97a1a4988d81756960554a3f31271e130900000000000005111c27323d48525b62646d6d6d6d6d6d65635c534850555d63666c6d6d6d6d63615a51473c31261c120800000000000006111c28333e48535c6265656565656565656565656565656565656565656565656565625b52483e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e59646d727a7a7a7a7a7a7a796e6960554a3f33281d1308000000000000000000000006121d2934404b56616a6f7a7a7a7a7a7a7a7a716c63584c41362a1f120800000000000000000000000000000000000000000000000000000008121c252e353c41454647474747474747474749535c6975808c98a6a89c90857a6f63574c474747474747474a55606976828d99a7a79b8f84786c62574c4747474743423f3a332c231a10060000111d28343f4b57626e7985919ca8b3bfcac0b7aea59c928c80756e645b524940372d251b120800000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c77838f9aa89e94887d71665950463c31261b0f0400000000000007121e2a35404c57626b70797979797979716d6358525960636d7178797979796f6a61564b40362c22170b01000000000007131f2a35414c57626c707171717171717171717171717171717171717171717171706c62574c41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e8585858585858585796e63574c41372d22180d020000000000000000000007121e2a35414c58646f7b86858585858585857d7165594e42362c22170c010000000000000000000000000000000000000000000000000000020c151d252c3236393a3b3b3b3b3b3b3b3b39434f5a66717d88959fa99f96897d7266584f453b3b3b3b3b3c46505967727e8a97a0a89d94877c7065594d42383b3b383734302a231b130a000000111d28343f4b57626e7985919ca8b3bfc4bab0a79e948e82796e635d544b423830261d140a0200000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505964707c87939da69b8f84796e63574b40362c22170c0100000000000008131f2a36414d5964707c8484848484847d71655b5b62696e757d84848484847b6f635950463b31251b1107000000000008141f2b36424e5965707c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b6975808c919191919195897e72665a51473c31261b100400000000000000000005111c27323d48525b68737f8a9791919191918b7f74685950463c31261b0f04000000000000000000000000000000000000000000000000000000040d151c22272b2e2f303030303030303034404c57636e7a85909ca7a6988d8175685f544a3e3330302c36414c58636f7b86919ca8a4978b7f74685a51473d32302c2b2925201a130b02000000111d28343f4b57626e7985919ca8b3bfbdb5aaa09690847b6f685f554d443a322820160c040000000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606975808c98a39f958a7f73685e54493e30261c12080000000000000007121e2a35404c57626b76828e9090908d82766b62636c707980878f9090908b80746960554a3f352b21160b00000000000f1a26313d4954606b7783888888888888888888888888888888888888888888888882766b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b78848f9b9c9c9ca6998d82766a61564b4034291e140900000000000000000007131e2a35404c57626b77838f9a9c9c9c9c9a8e82776a60564a3f34281d110600000000000000000000000000000000000000000000000000000000040c12181d2022232424242424242428333f4a555f6976818d98a7a79c9084796e63574b403429242934404b56616a77828e9aa5a69a8f83776b61574b40352920201e1a16100a0200000000111d28343f4b57626e7985919ca8b3bdb4aba29c91867d716a61584f453d342a21180f06000000000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121d2935404c57636f7a85909ca79c90857a6f63574e453a2f1f160d030000000000000005111c27323d48525b66717d88939c9c91867c70686e737c838c91979c9c9c90847a6f63584f453b30251a0f03000000000f1a26313d4954606b77838e9494949494949494949494949494949494949494948e82766b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87949da8a8a8a89c91857b6f63584c42382e23180d0200000000000000030e19242f3a454e5764707c87939da7a8a8a89c91857a6f63584c4035291e1409000000000000000000000000000000000000000000000000000000000002080e121517171919191919191a25303b454f5866727e8996a0a99e95887d71655a4e43392e2426313c47515a68737f8a96a3a79d93877b6f64584d41372d2217120f0b06000000000000111d28343f4b57626e7985919ca8b3b6ada49b918a7f736c635a51483f352c241a110700000000000000000000000000030e1a26313d48545f6b77828e99a5b1a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d28333e49535c67737e8a959fa0978c80756a6056473e352b200f060000000000000000030e19232e38424d58636d77838e9aa1978c81756f787f868f939c9c9ca09e958a7f73685f544a3e332820150b000000000f1a26313d4954606b77838e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998e82766b5f54483d31251a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5867737e8a96a4adb7b5aaa0968a7f73675b52483d32271c10050000000000000005101c27333e49545e6874808b97a3acb6b5aaa096897d72665a4f43382e23180d020000000000000000000000000000000000000000000000000000000000000307090b0c0d0d0d0d0d0b16212b35404c58636f7a85919ca8a5978c8075695b52483e3328222d37414d58646f7b87939da7a3968a7f73675950463c31261b10040100000000000000111d28343f4b57626e7985919ca8aaafa69d938d81766f655c534a41372f251c13090100000000000000000000000000030e1a26313d48545f6b77828e99a5aaa99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da3aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e181f2a36414d58636c78838f9aa69c91867b7064595046362e251b11000000000000000000000a141e28343e49535c66727e89949d9c90857a7b828a91969d97919197a09b8f84796e63574b433a2f251a0f050000000f1a26313d4954606b77838e9aa5abababababababababababababababababa5998e82766b5f54483d31251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6876828d99a4b0bcbab0a79a8e83776b62574c4035291f150a0000000000000006111d2934404b57636e79848f9ba7b2bcbab0a7988c8075695b52483d32271c10050000000000000000000000000000000000000000000000000000000000000000000000010101010007121d28343f4b56606a76828e99a8a79b8f84786c62574c41352a1e2935404b57616b77838f9aa6a5998e82776a60564b3f34291d12070000000000000000111d28343f4b57626e7985919c9e9ea89f958f837a6f635e554c433931271e150b030000000000000000000000000000030e1a26313d48545f6b77828e999e9e9e9e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da4aaa19a918c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d48525b65717d88939da2998d81766b6257494037261e140b01000000000000000000040e1a252f3a434b57636e79838f9b9f968d82848e929c9c95908686919c9e94897e72675d54493f34291f150a0000000f1a26313d4954606b77838e9aa5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a5998e82766b5f54483d31251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7985909ca7b3bfc0b2a79c93877b7064584d43392f24190b010000000000040f1a25303b46505865717d88949ea8b4bfbeb2a69b8f84786b61574b4035291e110700000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505967737f8a97a1a89d94877c7065594d42382d2327323d47515a68747f8b96a4a89c91857a6f63584c40362c21160c0100000000000000111d28343f4b57626e798591939393939790857c706960554e453b332920160e05000000000000000000000000000000030e1a26313d48545f6b77828e939393939392877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da4aaa19a918c807570665f564f463f362e261e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414c57626c76818d99a49c92887c71655b5248383026160d0400000000000000000000000b152028333e49545f68737f8a959e9b928d90959c9c928e847d808c97a19a8f83786d63584d43392f24190c0200000f1a26313d4954606b77838e9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d998e82766b5f54483d31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c88959fa9b4c0c1b6aca3978b7f74685c53493e33251b1107000000000006111d28333f4a55606975818c98a4adb7c2bfb3a89d94877b7064584d41352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37414d58646f7b86919ca8a4978b7f74685a51473d3227232d38424d5964707c87949da8a096897e7267584f453b30251a0f0400000000000000111d28343f4b57626e7986878787878787867e726b625950463d352b2219100600000000000000000000000000000000030e1a26313d48545f6b778287878787878787877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da4aaa19a918c807570665f564f463f362e251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b64707c86919ca1978d82766c63584a423828201605000000000000000000000000030e1a25303a454f58636e7a84909ba29b999c9d96918b827b717c86919c9d93887d71665c53493e33251b110700000f1a26313d4954606b77828e9191919191919191919191919191919191919191918e82766b5f54483d31251a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505968747f8b97a6afb9c3c6bcb2a69b8f83786c63584c3f352b21160b000000000006121d2934404c57636e7a84909ca7b3bec7c2b7ada4968a7e7367584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000008121d2934404b56616b77838e9aa6a69a8f83776b61574b4035291e2a35414c57626c78838f9ba6a7998d8176695f554a3f33281c11060000000000000008131f2a36414d5964707c7c7c7c7c7c7c7b726d645b524940362d241b120800000000000000000000000000000000000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c796e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da4aaa19a918c807570665f564f463e362c23180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b75818d97a09c91877c70655c53493a3128180f06000000000000000000000000000b16202b353e4a556069747f8b969fa2a19b948f867f786f6b76828d99a3998e82776c62584c3f352b21160b00000f1a26313d4954606b7782858585858585858585858585858585858585858585858582766b5f54483d31251a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a77838e9aa5b1bdc8c7bfb3a89d94887c7165584f453b30251a0f0300000004101b26313c47515a66727e89959fa9b4c0c8c7bbb0a4998d8176685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a68747f8b96a4a79d93877b6f64584d41372d2227333d48525b6974808b97a5a79c90857a6e63574c40352b20160b0000000000000007121e2a35404c57626b70707070707070706b645d544b423830261d140a0200000000000000000000000000000000000007121e2935404b57616b6f70707070707070706e685f554a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000081018202830394049515a616a6f7a838f939da4aaa19a918c807570665f564f463c32281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505964707b86919a9a978d81766c62574c43392a211807000000000000000000000000000007111b25303b465059636f7a8590979797918d837c736e6865717d8893979792887c7065584f453b30251a0f030006121d2934404b57636e797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574b4034291d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8b3bfbdbcbfb7ada4978c8075685f544a3e33281c120800000006121d29343f4b56616a76828d99a5aeb8bebdbebfb3a79c9085796e63574b4034291d120800000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37424d5964707c87949d9ea3968a7f73675950463c3126242e38424e5965717c88949e9e9f95897d7166574e453a2f24190e0300000000000005111c27323d48525b626464646464646464625b544d443a31281f160c040000000000000000000000000000000000000005101c27323d47515a61646464646464646464635f584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000081018202830394149515a616a6f7a838f939da4aaa19a918c807570665f564c42372c21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606975818c8f8f8f8f877c70645c53483b32291911080000000000000000000000000000010b17212c363f4b56606a75808b8b8b8b89817a706c635e636c77828b8b8b8b8b8176685f554a3e33281c11050005111c28333e4a545f686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685f54493e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8997a0aab5b5b1b0b3b5b3a79b9084796e63574b40362c22170c01000007121e2935414c58636f7b85919ca8b3b4b2b1b2b6b4a99f95887c7165594e42372c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000009131e2a35414c57626c78848f939393938e82776a60564b3f34291d2934404b57636e798490939393938c8175685e54493e33271c1005000000000000030e19232e38424b5257595959595959595857524a443c342a21170f060000000000000000000000000000000000000000020d18232d38414a515758595959595959595957554f483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000081018202830394149515a616a6f7a838f939da8aaa19a918c807570665b50453a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a82838383838380756c62574b42392b2219090000000000000000000000000000000007121c26313c47515a646f7b808080807e756f69625c545c65717d80808080807f796e63574c4034291d120600030f1a25303b454f585f636363636363636363636363636363636363636363636363635f584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b6975818c98a7b0b2aba6a4a8aab0a99e95897d71665950463c31261b0f040005101c27323d48525b67737e8a96a0aaaea9a7a5a7acb3afa6978b7f74685950463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b697480878787878787867a6f63584c4035291e27333e49545e68758087878787878784796e63574b4034291d1106000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4c48423a342c231911070000000000000000000000000000000000000000000009141e28313a41474b4d4d4d4d4d4d4d4d4d4c4a453f372f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000081018202930394149515a616a6f7b838f9ba6b2aaa19a918c8075695d52463b2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f7777777777777570665b52483b32291a120900000000000000000000000000000000020c17222d37404b56616b6f74747474726e636059534c58636c717474747474746e685f554a3e33281c110500000b16212b353f474f5457575757575757575757575757575757575757575757575757544f473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b78848f9ba7b2aba29b999ca0a7aea5988d81766960554a3f34281d13090007121e2935404c57626b77828e9aa7aea59e9b9a9ca3acb1a59a8e83776a60564b3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424c58636f7a7c7c7c7c7c7c7c796e63574c4035291d242f3a454e57636f7a7c7c7c7c7c7c7c796e63574b4034291d120600000000000000040e18212a32383d404142424242424241403d38312a231b13090100000000000000000000000000000000000000000000040e18212931383d40414242424242424242403e3b352f271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d85909ca8afa79f9691867d71665a4f43382c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505960636b6c6c6c6c6c69665f564b42382a22190a01000000000000000000000000000000000008131d27323d47515a61646868686866645d55504949535c6365686868686868635f584f453b30251a0f03000007111b252e373f454a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b49453e372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b87949da8b1a69b928d9197a0aaa89c90857a6f63574c41372d23180d0207131e2a36414d5864707b86919ca8a99e94908e939ca7b3a89c91857a6f63584c4035291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28343f4b56606a6f707070707070706e6960554a3f33281d202b353e4b56606a6f707070707070706e685f544a3e33281c1105000000000000000008111921282e3235363636363636363635322e282119130b0300000000000000000000000000000000000000000000000007101921282d32353536363636363636363433302b251e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969faaa79f9691867e716d63594d42372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3640495055576060606060605d5c564f463a32281a1208000000000000000000000000000000000000030d18232d38414a5156585d5d5d5d5b59544a4640434b5358595d5d5d5d5d5d57554f483f352b21160b000000010b151e272e353b3e404040404040404040404040404040404040404040404040403e3a352e261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5867737f8a96a4adb0a7998d8286919ca8aa9f96897e72675a51473c32261b1006111d28333e49535c68747f8b97a1aba79b9084828e9aa5b1aaa097897d72665b4f43382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505960636464646464646463605950463b30251a1b25313c465059606364646464646464635f584f453b30251a0f030000000000000000010911181e23272a2a2a2a2a2a2a2a2a2927231e1811090300000000000000000000000000000000000000000000000000000810181e2327292a2a2a2a2a2a2a2a2a292825211b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d54493f34291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a4c54555555555552504c463e362a22180a010000000000000000000000000000000000000009131e28313a41474b4d515151514f4e4a443c363b43494c4e5151515151514c4a453f372f251b110700000000050e161e252b30333434343434343434343434343434343434343434343434343433302b251e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6876828d99a4b0aba097897e828e99a6afa6998e82766a61564b4034291e140a131f2a36414c58636c78838f9ba8ada4978c807f8b97a6afb0a7988c8075695b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404950565859595959595959575550483f362c211717222d3740495056585959595959595957544f473f352b21160b0000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1e1c18140e080000000000000000000000000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1d1c1a16110c05000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443a30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f404949494949494645423d362e261a11080000000000000000000000000000000000000000040e17212931383d40414646464644423f3a312c32393e4142464646464645403e3b352f271e150c020000000000060e151b212528292929292929292929292929292929292929292929292929292825201b150d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7985909ca7b3a89c91867a7e89959fa9a89c91867b6f64584c42382e23190f1a25303b454f5865717c88949da8a89d93877c7d88959fa9b2a69b8f84786b62574c4035291e1107000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26303840464b4c4d4d4d4d4d4d4d4c4a463f382f261c12131d27303940464b4c4d4d4d4d4d4d4d4b4a453f372e251b1107000000000000000000000000040a0e1112131313131313131312100d09040000000000000000000000000000000000000000000000000000000000000004090d101213131313131313131312110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332a20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134353d3d3d3d3d3d3b3a37322d261e15090100000000000000000000000000000000000000000007101921282d3234353a3a3a3a383734302a22292f3336373a3a3a3a3a3a3433302b251e160e0500000000000000050b11161a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1a16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c88959fa9b1a69a8e83777a85909ca7aba0978a7f73685b52483d32271c111c28333e4a555f6875808c98a4ada79a8f83787985909ca7b3a89d94877b7064584d41352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16202830373c3f4042424242424242403f3b362f271f160c0d17202830373c3f4042424242424242403e3b352e271e150b010000000000000000000000000000030507080808080808080707050200000000000000000000000000000000000000000000000000000000000000000000000205070708080808080808080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231a100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222628293132323232322f2e2c28231c150d0500000000000000000000000000000000000000000000000810171e2327292a2e2e2e2e2c2c292520171f24282a2b2e2e2e2e2e2e292825211b150e0600000000000000000001070b0f1112121212121212121212121212121212121212121212121211110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596874808b97a6afafa6978b807475818d98a5aea79a8f83776b62574c40352a1f151d2934404c57636e7984909ca7aba0978b7f7376828d99a4b0ada4968a7e7367584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262c313435363636363636363533302c261f170f05060f1820272d313435363636363636363433302b251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e2626262626262323211d18130c0500000000000000000000000000000000000000000000000000070e13181b1e1e2323232321201e1b161015191d1f1f2323232323231d1c1a16110c0500000000000000000000000000030506060606060606060606060606060606060606060606060606050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a77838e9aa6b1aa9f96887d71717d88949ea9a79d93877c7064594d43392f241b26313c46505966727d89959ea9a89c91867b6f737f8a96a5aeb0a4998d8276685f544a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a292825211c160f070000070f171d222629292a2a2a2a2a2a2a292825211b150e0600000000000000000000000000000000000000000000000000000000000000000000000004090c0f1111111111111111111111111111111111111111111111100f0e0d0b090706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121a1b1b1b1b1b181715120e090300000000000000000000000000000000000000000000000000000004090d10121317171717151513100c060a0e11131417171717171712110f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86919ca8b3a89c90857a6e6e7984909ba7aca3978b8074685c53493e33261d28343f4a56606a76818d98a5aea6998e82776b707c87949ea8b3a79c9085796e63574b4034291d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1d1d1a17120c0500000000060d13171b1d1e1f1f1f1f1f1f1f1d1c1a16110b05000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1b1a1817151212100d090604010000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060f0f0f0f0f0f0c0c0a070300000000000000000000000000000000000000000000000000000000000000020506070c0c0c0c0a090705010000030608080c0c0c0c0c0b060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050607070707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8997a0abb0a5998e8276696874808c97a4ada79b8f84786c63584d3f362c212935404c58636f7a85909ca8aa9f968a7e72676b7884909ba7b2a99f95887c71655a4e42372c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121313131313131312110f0c070200000000000003080c1012121313131313131312110f0b07010000000000000000000000000000000000000000000000000000000000000000000000030b12181e222628282929292929292929292929292929292929292928282727252422211e1d1b1813110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607070b0e1111121313131212110f0c0809060604010000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6975818c98a7b0aea5968b7f736865707c87939da8a89d94887d7165584f453b3027323d47515a67727e8a969faaa89c90857a6f636a75818c98a8b1afa6978b7f74685950463c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080808080808080606040100000000000000000000010406070808080808080806050300000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d3133343434343434343434343434343434343434343434333332312f2e2c2a2926231e1d1b17120f0b070100000000000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0908070400000000000000000000000000000206090b0b0c0c0c0c0c0c0c0b0907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d10121211161a1c1d1e1e1f1f1e1d1d1b17121412110f0c0703000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b78848f9ba7b2a99e95877c7065626c78838f9aa7ada4988c8175695f554a3f332934404b56616b77828e99a6aea5988d8176696067727e8997a1abb1a59a8e83776a60564b3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040404040404040404040404040403f3f3f3e3d3b3a383534322d292826221d1a16110b080300000000000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867e716d635d544c443c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c10111216161616161616161616161616161616161514120f0b060000000000000000000002080d11141617181818181818171715120e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1013181b1d1e2120252829292a2a2a2a2928262222201d1d1a17120f0b0701000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b87949da8b3a79b9084796e635b68737f8b97a0aba79c90847a6e63574c40372c35414d58646f7b86919ca8a99e95887d716659636f7b86919ca8b4a89c91867a6f63584c4035291e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060711111111111111110f0e0c090601000000000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a494847454341403c373534312c2825211b17130d070200000000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c443c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e212121212121212121212121212121212120201d1a1610090200000000000000040b12181c2022232424242424242322201d18120c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d13171b1d2226292a2c2b30333435353636353534312c2e2b292825211c1a16110b07020000000000000000000000000000000000000000000000000000000000030f1a25303b454f5867737f8a96a4adb0a4988d8176685e58646f7b86919ca8a99e95897d72665950463c333e48525b68737f8b97a0aba79b9084796e6357616a78838f9aa6b1aba097897d72665b4f43382e23180e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1012121d1d1d1d1d1d1d1d1a1a1814100b05000000000000000000000000000000000000000000000000000000000000000009131e28323c444c52555757575757575757575757575757575757575757575656555452514f4c4b4744403f3c3733302b25221d16110c050000000000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c443c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161d222628292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2925201a130b020000000000040d141c22272b2d2e2f2f2f2f2f2f2f2e2b27221c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e14181d2226292d31343538353a3e404041414141403f3c363a373433302c2825211b17120c050000000000000000000000000000000000000000000000000000000005111c28333e4a555f6876828d99a4b0ada4958a7e73675756616b77828e99a6aea5998d81766a60564b3f35414c57626c78838f9aa7ada4978c8075685f545a6974808c97a6afb0a7988c8175695b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e29292929292929292625231f1b150e07000000000000000000000000000000000000000000000000000000000000000c17222d38424c555c616263636363636363636363636363636363636363626261615f5e5c5a5856514f4c4b46403e3b35312c27211b150e07020000000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c443c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820272c31343538383838383838383838383838383838383736342f2a231b130900000000020b141d252c3236393a3b3b3b3b3b3b3a3936322c251d150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171e23272d3134373c4041434645494b4c4d4d4d4c4c4a46484543403f3b3633302b25211c160f0803000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85909ca7b3a89d94877b6f6458515a67727e8a969faaa89c91857a6f63584c413a454f5865707c87939da8a89d93877c7065584f5a66717d88969faab2a79b8f84786b62574c4035291e110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171d22262934343434343434343431312e2a251e170f070000000000000000000000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c6b69686664615a5b5856504b4a453f3c37302b251e16120c05000000000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c443c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16202830373c3f40444444444444444444444444444444444443423f3a332b231a100600000008121c252d353c4144454646464646464645413c352e251b130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161c21282d32373c3f41474b4c4f524f5457585859585857555053514e4c4a46403e3b35302c261f17130d06000000000000000000000000000000000000000000000000000914202b37424e5a65717d88959fa9b2a69b8f83786b61574c57636f7a85909ca8aa9f968a7e73675a51473e49545f6874808c97a4ada79a8f83786c62574c57636e7a85919ca8b3a89d94877b7064594d41352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820272d31344040404040404040403d3c39352f2820170e050000000000000000000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79797878767574726f6a6a6763605957544f4b46403b352f27211c160f0701000000000000000000000000000000000000020a121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c50505050505050505050505050505050504f4d49433c332a20160b0000020d18222c353e454b4f5152525252525251504c463e352c231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a12171f262c30383d40464b4c5156585b5d585f6363646464646360595f5c5a5755504b4a453f3b362f27221d160f07010000000000000000000000000000000000000000000004101b26313c47515a6874808b97a6afb0a7988c8075695a514a55606976818d98a5aea69a8e82776b61564b404b57636e7984909ba7aba0978b7f74685c534a55606977828e99a5b1ada4968a7f7367584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f4b4b4b4b4b4b4b4b4b4947443f3830281e150b0100000000000000000000000000000000000000000000000000000000111d28343f4b57626e7986858585858585858585858585858585858585858585848382817f7d7b7876726f6a66635f5856504a453f37302c261f17110902000000000000000000000000000000000009121b232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3740495056585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58544c433a2f251a0f040006111c27323c454e565b5c5d5d5d5d5d5d5d5b564e463c332a20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141a22272f363b41474b5056585a616366696b686e6f6f70706f6f696c6a686563605857544f4a463f38312c272018110a0200000000000000000000000000000000000000000006121d29343f4b56606a77838e9aa6b1aba097897d72665b4f46505966717d89959ea9a89c91867b6f64584d46505966717d88949ea9a89c91867b6f64584d46505968747f8b96a5aeb0a4998d8276685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303940464b57575757575757575754534e4841382f251b100600000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919191919191919191919191919191919191969190908f8e8c8b898684817e7a76726e68636059554f48433b362f272119120a03000000000000000000000000000000061019232b333b434c535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596063676767676767676767676767676767676766635d54493f34291d1207000914202b36414b565f656869696969696969665f564c443a30251a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c242a32383f464a5157596063676a6f727477787a7a7b7b7b7b7a79787674716e6966635f58555048443c373028221a120a02000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b4a89c91867a6f63584c404b57636e7984909ba7aba1978b7f73685b524a55606975818d98a5aea6998e82776b61564b424e5965707c88959ea9b3a79c90857a6e63574c4034291d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d3740495056626363636363636363605e5851483f352a1f140900000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9f9c9c9b9b99989694948f8d8985827e79746f6a635f58534a463f38312a221b130b0300000000000000000000000000000b151f29333b434c535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a6f7272727272727272727272727272727272716d63584d42362b201408000b16222d39444f5b656f74757575757575746f665d544a3f34291f150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d252d343b424850555a61646a6f73777b7d808284858686878786868583827f7d7a76726e68636059544b464039322a231b120b02000000000000000000000000000000000000000a15212c38444f5b66727e8997a0abb1a69a8e83776a60564b3f4a545f6875808c97a4ada89a8f83786c62574c57636f7a85909ca7aa9f968a7e72675a5147404b57636e7984909ca7b3a99f95887c71655a4e42372d22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c465059606d6e6e6e6e6e6e6e6e6b6861584e44392e23180c01000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8afaaa8a7a7a6a5a3a2a49e9b9896918e89847f7a736e68635c555048423a332b241c130b03000000000000000000000000040f1a252f39434c535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d71665a4f43372c201509000b17232e3a45515c68747f80808080808080746d63594d43392f241a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c151e252e353d454b535960636b6f757a7f8286898c8e8f91969293929295908f8d8b8885817d79736e69645d565049423b332b231b120a01000000000000000000000000000000000005111c27323d48525b6a75818c98a7b0afa6978b8074685950463c454f5865707c88939da8a89d93877c706558515a67727e89959fa9a89c90857a6f63584c413e49545e6876818d99a4b0afa6978b8074685950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a777a7a7a7a7a7a7a7a7772685e53473c31251a0e03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b4b9b5b3acacacacacacacacacacacadadaeafb0afaeada8a7a7a09c9994908b847f79716d636059524b433b342c241c130b03000000000000000000000006121d28333e49535c636d717d8590969fa6a79f9691867d716d635d544c433c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c878989898989898989898989898989898982776c6054493d32261a0f000b17232e3a45515d68747f8b8c8c8c8c8c897d72665c53493e33291f140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252e363e464d555c62696e747b80858a8e919797999b9ca0a79e9ea69f9c9a999695908d89847f7a726d636059524b433b332b231a1108000000000000000000000000000000000007121e2a35404c57626b78848f9ba7b2aa9f96887d71655a4e43373f4c58626c78838f9ba8ada4978c8074685f56616a76828e99a6aea5988d81766a60564a3f3a454e5767737e8a95a4adb1a69a8e83776a60564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a858585858585858582776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b7afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a2a3a5a6a8abb0b2b0aaa8a59e9b95908a837d756e69625b534c443d342c241c130a020000000000000000000008141f2b36424d58636d717d859096929292929691867d716d635d544c433c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c879395959595959595959595959595958e83776c6054493d32261a0f0007121e2935404c58636f7a8590979797978e82776d63584d42392e24190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000008131b252d363e464e565e656c70797f858c90969a9ca0a7a5a6a8aab0aaaaafa9a7a6a4a69f9c98948f8a837e766f6a625b534c433c332a221810070000000000000000000000000000000008131f2a36414d5964707c87949ea8b3a89c90857a6e63574c40343e48535c68747f8b97a1aba79b9084796e6358646f7b86919ca8a99e95897d71665950463c35414d58646f7b87949da8b4a89c91867a6f63584c4035291e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a869191919191918e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa79f9c959595959595959595959595969698999b9ca0a7a6a8adb3aea8a59e9c948f878079706b635c544d443d342c231b1208000000000000000000000914202b37434e5a65717d858787878787878787857d716d635d544c433c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939ea1a1a1a1a1a1a1a1a1a1a1a19a8e83776c6054493d32261a0f0006121d29343f4b56606a74808c969fa39c93887d71655b52483e33281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000071018232c353e464f565f666e737c838b90969c9fa6a8abb0b1b0aeadacacacacadafb1b0afa9a7a49d9b948f89817a706c635c534c433b322920170d030000000000000000000000000000030f1a25303b454f5867737f8a96a4adb0a5998e8276695f554a3f3339424d58646f7b86919ca8a99e94887d71665b68737f8a97a0aaa79b9084796e63574c403635404b57616b78848f9ba6b2aba097897e72665b4f44382e23190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929c9c9c9c9a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f969189898989898989898989898a8a8b8c8d8f9197979a9da4a7a9aeaea9a49d97918c837c716d645d544d443c342b2219100600000000000000000007121e2a35414c58646f7b7b7b7b7b7b7b7b7b7b7b716d635d544c433c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaacaba6a4a3a3a3a3a3a3a39a8e83776c6054493d32261a0f0004101b26313c465059646f7b85919ca7a3998e82766c62574c42382e23180e04000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029333c454e565f666f747f868f949c9fa6aaafb3aea9a7a5a3a1a0a0a0a1a2a3a5a8aaafb3ada8a49d9b918d837c716d635d534b423930271d1308000000000000000000000000000005111c28333f4a555f6976828d99a5b0aea5968a7f7368584f453b3035404b57616b77828e9aa6aea5988c817569626b77838f9aa7ada4978c8075685f554a3e30323d47515a6975808c98a7b0b0a7988c8175695b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da8a8a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c91867e7e7e7e7e7e7e7e7e7e7e7e7f7f80828386888b8f93979c9ea5a9aeada8a19c938f857d726e645d544d443b332921170e05000000000000000006121d2934404b56616a6f7070707070707070706f6a635d544c433c332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaaba29b9997979797979797978e83776c6054493d32261a0f00010c17222d37404b56616b75818c97a0a69c92877c70655b52483d32271d130900000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139444c555e667074808a91969da4aaafafa9a7a59e9c9997969594959596989a9c9fa6a8abb0ada8a29b948f857d716d635b524941372d22170f060000000000000000000000000006121d2934404c57636e7a85909ca7b3a99e95877c7065594d42352b323d47515a67737e8a969faaa79c90857a6e64707c87939da7a89d93887c7065584f453b302e38434f5b66727d8997a0abb2a79b8f84786b62574c4035291e11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c908579727272727272727272727373747576787a7d8083878b90959c9fa5aab1aba49d9590867e726e645d544c433a31271e150c020000000000000005101b27323d47515a616464646464646464646464615a544c433c332c231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa69b928d8c8c8c8c8c8c8c8c8c83776c6054493d32261a0f000008131d27323d47515a64707c86919ca8a2988d81766b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000040d16232d37414a545d656f74808b909c9fa7adafaaa69f9c9795908d8c8a898989898b8c8e9196999ca0a7abb3aba49d9590867d716c625a51473c31281f160c030000000000000000000000000914202b37434e5a65717d88959fa9b3a79b9084796c62574c4135252e38414c58636f7a85919ca8a99f95897e726874808b97a3aca89b8f83786c6258483f352b2935404c58636f7a86919ca8b4a89e94877b7064594d41352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e676767676767676767676768696b696f7174787b80848a90959aa1a9aeada59e9691877e726e645c534a41372f251c120700000000000000020d18232d37414a5156585858585858585858585856514a433c332c231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa4998d818080808080808080807f73675c5045392e22160b0000030d18232d37414c57626b76818d99a2a89c91867b70645a51473d32271d1308000000000000000000000000000000000000000000000000000000000000000000000000010b141e26323c47515a636d737f8b9099a0aaafaca69f9c95908c888482807f7e7d7d7e7f808385898d91979ba2a9aeada69f9690857c706a61564b443830261c1208000000000000000000000004101b26313c47515a6974808b97a6afb0a4988d81766a5b52483e332728343f4b56606a76818d99a5aea6998d82766e79848f9ba7aba1978b7f74685c5349372f2528343f4b56606a77838e9aa5b1ada4968a7f7367584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625b5b5b5b5b5b5b5b5b5c5c5e59606365686b70747a7f858c919b9ea5adaea7a09791867e726d635a51483f352b21160e040000000000000009131d27313941474b4c4d4d4d4d4d4d4d4d4d4c4b474139332c231b130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d747474747474747474736e655a4f44382d21160a00000009131e27323d48525b65707c87929ca7a0978c80756a61564b40372c22170c02000000000000000000000000000000000000000000000000000000000000000000000006111b252e363e4b56616a727e87919ca1a9b5aba39c96908b85807c79767473727272727375777a7d81868d919c9ea5adafa69f9590847b6f635e554940362c22170c020000000000000000000006121d29343f4b56616a77838e9aa6b1ada4958a7e72675b5044382e2426313c46505966727d89959ea9a89c91857b717d88949da8a89c91867b7064584d43392a1e26313c4650596874808b97a6afb0a5998d8276685f554a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625650505050505050505051525055575a5b6264696f737a808990959da4acb0a7a09791867d716b61584f453b30281e140a00000000000000040e17202931373d404141414141414141414141403c373029231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72696969696969696967655e554b40352a1f1408000000040e19232e38424c57626c76828e99a3a79c91857b6f645950463c31261c120700000000000000000000000000000000000000000000000000000000000000000000000b16202b353e47535d646f7b849097a1abb1aba29b938e857f7a75716e686967676666676869696e72767b818990959da4adafa69e948d81766e645950463c31261c12080000000000000000000007121e2935414c58636f7b86919ca8b4a89d93877b6f64584d41352a1e222c37404c57636e7984909ca7aaa0968a7f75818c98a4ada79a8e82776b61574b4035291e222c37434e5a65717d88959fa9b3a79c90857a6e63574c4034291d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b44444444444444454546464a4c4e52575960636a6f757d848f939ca3acb0a7a09690847b6f695f554a42382e231910060000000000000007101920272d3234353636363636363636363534312d272018130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665d5d5d5d5d5d5d5c5a554e453b31261c11060000000009141e28333e48535c65717d88939ca79f968b80746a60564b3f362c21170b01000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636d76818d959ea8b1aba29b918d827b746f6965635e575c5b5b5b5b5c596063666b70767d858f949da4adaea59b928a7e726960554a40362c21170c010000000000000000000a15212c38444f5b66727e8997a0abb2a69b8f83786b61564b4034291e1d28333f4a555f6975808c98a4ada79a8e827a85909ca7aa9f968a7e73675b52483d32271c1d2934404c57636e7a85909ca7b3a99f95887d71655a4e43372d22170d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f383838383839393a363c3f4043484c50555a60636d717b838e929ca3acb0a79e958e82796e635b52483d322a20150b00000000000000000810171d2327292a2a2a2a2a2a2a2a2a2a2a2926231d17100802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b525252525252504f4b453d352b21170d0200000000040e19242e39424d58636d77828e9aa4a69c90857a6f635950463b30251b110700000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68717d88929ba5aeaca39b918d8179706b63605957544e504f4f4f50515055575b62646d727b838f949da6afaba29b90847a6f635950463b31261a0f04000000000000000005111c27323d48525b6a75818c98a7b0b0a7988c8075695a51473d32271b1a25303b454f5865717c88949da8a79c938b7f8b959fa9a89c91857a6f63584c41382e23181c28333f4a555f6976828d99a5b0afa6978b8074685a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342d2d2d2d2d2e2e2c313435383d40464a51565d636b6f7a828e939ca4adaea59c938b7f746b62574c433a2f251a0f050000000000000000070e13181b1d1e1e1e1e1e1e1e1e1e1e1e1d1b18130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f46464646464544403b352d241b11070000000000000a151f29333e49535c66727d89939da89f958b7f746960554a3f352b21160b00000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e78838f9aa2abafa69c938d81786e69625b55504b4945454443434445464a4c52575d636b707b848f969faab4a99e948b80746960554a3f34281e1309000000000000000007131e2a35404c57626b7884909ba7b2aaa097897d72665a4f43382d231816212b353f4d58636c78838f9ba6aca39c9185919ca5aea5998d81766a60564b3f31281e141a25303b454f5868737f8a96a5aeb1a69a8e83776a60564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428212121222222222628292e32363b40474b545a616a6f7a828e939da6afaca39c91867c70645c53493f34291f150a00000000000000000004090d1012121313131313131313131212100d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f433b3b3b3b393835312b241d140b01000000000000050f1a252f39434b57636e79838f9ba4a69b90847a6e63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000005101b27323d47515a66717d89939da8b5aa9f968e82796e685f58524a46403e3a3538383838363b3f42484c545b616a707c85909ca3acaea59c90847a6f63574c41372d23180d020000000000000008131f2a36424d5964707c87949ea8b3a89c91857a6f63584c4035291e13121c25333e49535c68747f8b97a3acaaa0969196a0aaa99e95897d72665950463c3121180e16212b35424d5964707c87949ea9b4a89c91867b6f63584c4135291e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1616161612171b1d1e23262c31373c444a515960696f7a838f969faab5aa9f968e82776d63584d43392f241a0c020000000000000000000002050607070707070707070707070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382f2f2f2e2d2a26211b140c0400000000000000000b151f27333e49545e68727e8a949ea89e958a7f73685f544a3e332820160b0000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b76828e99a4adafa69c90857c706960584f48423c36332f2b2d2c2c2d2c3033383d444a525a626c737f8a939da7b3a99e958a7e73675a51473d32271b1005000000000000030f1a25303b454f5867737f8a96a5aeb1a59a8e83776a60564a3f34281d110c19242f39434d5864707b87939ca7b0a7a09ca0a7b0a79c90847a6e63574c40372c221207121e2a35414c57626c7884909ba7b2aba097897e72665b4f44382e23190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110a0a0b080c0f1114181c21272d313a41495059606a707c85909ca3acafa79c92887d71665c53493e33261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c232322211f1c17110b04000000000000000000030e19242f3a454e57636e79848f9ba5a59b8f84796e63574b443a30251a0f0500000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b86919ca8b4a99f958b80746b625850473f37312c272420212121212125282e323a414a525b636e78838f9aa4adaea59a8e83776b61564b4034291d120600000000000005111c28333f4a555f6976828d99a5b0afa6978b8074685950463c31261b0f0a151f2935404c57626b77828e9aa7b0b0aaa8aab0ada4988c8075695f554a3f30271d1305111c27333d48525b6a75818d98a8b1b0a7988c81756a5b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000010406090c12171d2229313840495059626c727e8a929ca7b0aca39a8e82776c63584d40362c21170c01000000000000000000000000000000000003060808111111111111111111060401000000000000000000000000000001040709091111111111111111100e0c0803000000000000000000000000000205080a0b11111111111111100f0d0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2118161614110d070100000000000000000000000b16202b353e4a555f68737f8a959ea89d94897e72675d544a3f34291f150b0000000000000000000000000000000000000000000000000000000000030e1a25303a454f5867737f8a97a1abb3a79c90857a6f635b52483f372f27221c191611151512171a1e232931394249545e68727d89949ea8b4a89c91867b6f64584c41352a1e120800000000000006121d2934404c57636e7a85909ca8b3a99f95887d71655a4e42362c22170c05101c27323d48525b67737e8a96a0aab5b5b3b5b3a89d94887c7165584f453b30251a0f030e19242e38444f5b67727e8997a1abb2a79b8f84786b62574c40352a1e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000002080d1319212830384049525b646e77828e97a0abb2a79c92887d71655950463b31261a0f04000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000060b0f1314151d1d1d1d1d1d1d1c1c1a17130d070100000000000000000001070c111415161d1d1d1d1d1d1d1b1b1916110c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150b0a0806020000000000000000000000000006111b25303b454f58636f7a84909ca6a49a8f83786d63594d43392f241a0f050000000000000000000000000000000000000000000000000000000005111c28333e49545f6876828e99a8b1aea5988c80756a60564b42382f261e17120e0b06090a070c0f141921292f3a454e57636e79848f9ba7b2aba1978a7e73675c5044372c22170c0100000000000914202b37434e5a65717d88969faab3a79c90857a6e63574c4034291d1208020d18232e38424c58636f7b85919ca8b3bfbfbeb2a69b8f83786c6358483f352b21160b000a141e2a35414c58646f7b86919ca8b4a89e94877c7064594d41352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000308101820283039424b545e64707c86919ca8b4aca3988c81756960554a3f34281d11060000000000000000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000030a10161a1e202129292929292929282725221d17110a0200000000000000030b11171b1f212229292929292929272624201c160f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000010b16212b353f4a556069747f8b959fa89d93897d72665c53493e33291f140a0000000000000000000000000000000000000000000000000000000006111d2934404b57636e7985909ca8b3a99e95887c71655950463a31271f160e080300000000000104091119202b353e49545f6874808b97a6afb1a8988d81766a5950463c31261b0f040000000004101b26313c47515a6974808b97a6afb0a5998d8276685f554a3e33281c11030009141e29343f4b56606a76828d99a5aeb8c1b6aca3978b7f74685c5349372f251c12070006121d2934404b56616a78838f9aa6b2ada4968a7f7367584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000070f172028323a444c57626c76818d98a3acb3a79c90857a6f63574c4035291d1309000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000030b131a2025292b2c343434343434343333302c27211a120a010000000000030c141b21262a2c2d3434343434343433322f2b262019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000007111b25313b465059636f7a85909ca7a49a8e82776d63584d42392e24190e0400000000000000000000000000000000000000000000000000000008131f2b36424d5964707c87969faab3a79c9084796e63574b40372921170e060000000000000000000006111b25303a454f5865717c88969faab2a69b8f84786a60564b3f34281d11060000000006121d2934404b56616a77838f9aa6b1aea5968a7f7368584f453b30251a0f030004101b26313c47515a66727e89959fa9b4beb2a79c93877b7064584d43392a1e150c020005101b26323c47515a6975808c97a7afb0a5998d8276695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000070f18212a323d48525b65707c87939ca7b2a99f95897e72665b4f44382d23180d02000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000a131b232a30343738404040404040403f3e3b37312a231a110700000000010b141c242b31353839404040404040403e3d3a36302921190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000020c17212c36404b56606a74808c969fa79c93887d71655b52483e33281e14090000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a95a6afb0a4998d8276685e54493e33271c11060000000000000000000000010b16202b35404b57636e7a85919ca8b3a89c91867a6f63584c4035291e12060000000007121e2935414c58636f7b86919ca8b4a99e94877c7064594d42352b21160b0000010d17222d37404c57636e7a84909ca7b3bab0a79a8e83776b62574c4035291e0e050000020d18232d37434f5a66717d89969faab3a89c90857a6e63574c4034291d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000007111a242e38424c57626c77838e9aa6b1afa6988c81756a5a51473d32271b100500000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c0200000006101a232c343a3f42434b4b4b4b4b4b4b4b4946413b332a21170d0300000007111b242d343b4043444b4b4b4b4b4b4b4a49454039312920160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000008121c26313c465059646f7b85919ca7a3998e82766c62574c42382e23180e0400000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaea2978b7f7468574e453a2f24190e0100000000000000000000000007111c28333e4a545f6877838e9aa6b1aba197877c7065594d42362b1f1308000000000a15212d38444f5b66727e8997a0abb2a79b9084796c62574c4135251b110700000008131d28333f4a555f6975818c98a4adb5aaa0968a7e73675b52483d32271c100000000009131d2935404c57636f7a85919ca8b3aa9f96887d71655a4e43372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000010a141e28333e48525b68737f8a96a5aeb2a69b8f84786b61564b4034291e1206000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c12070000010b16202a343c444a4e4f575757575757575655514b433b31271d13080000020c17212b343d454b4f505757575757575755545049423930261c11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000020c17222d37404b56616a75818c97a0a69c92877c70655b52483d32271d130900000000000000000000000000000000000000000000000000000d1924303b47535e6a75818d98a4afaca095897e72665b4f44352b20160b00000000000000000000000000030f1a25303b454f586a76818d98a4afb1a894897d72665a4f43382c20150900000005111c27323d48525b6a75818c98a7b0afa4988d81756a5b52483d3327150c02000000040f1a25303b454f5865717d88949da8b3a89c91857b6f63584c42382e23180d0200000006111d28343f4a55606977828e9aa5b1afa6978b8074695a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000050f19242e39424d5864707b87949ea8b3a89d94877b6f64584d41352a1e1307000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c0100040f1a25303a444d54595b6363636363636362605b544b41372c22170c000005111b26313b454e555a5c63636363636363615f5a524940362b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000008131d27323d47515a64707c86919ca8a2988d81766b62574c41372d23180d03000000000000000000000000000000000000000000000000000e1a25313d48545f6b77828e99a5b0ab9f94887c71655a4e42372b20110600000000000000000000000000000b16212b3546525d6974808b97a3aeada1968a7e73675c5044392d22160b00000007131e2a35414c57626c7884909ba7b2ada4958a7e72675b5044382e24190a00000000010c16212c363f4d58636c78848f9ba7aea5998d82766a61564b3f31281e140900000000040f1a26313b46505968747f8b96a5aeb1a69a8e83776a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000a141f2935404b57616b7884909ba7b2ada494897d72665a4f43382c21150900000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040007131e29343f4a545d64666e6e6e6e6e6e6e6d6b645b51463b30251a0e030008141f2a35404b555e65676e6e6e6e6e6e6e6d6a635a50453a2f24190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000030d18232d37414c57626b76818d99a2a89c91867b70645a51473d32271d1308000000000000000000000000000000000000000000000000000f1a26323d4954606b77838e9aa5b1aa9e93877b7064594d42362a1f130800000000000000000000000000000711222e3945515c68737f8b96a2adada2968b7f73685c5145392e22170b00000008131f2a36424d5964707c87949ea8b3a89d93867b6f64584c41352a1e140a000000000007121c26333e49535c6874808b97a3a99f95897e72665a51473c3121180e0400000000010c17222c36424e5965717c88959ea9b4a89c91867b6f63584c4135291e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000005101c27323d48525b6a76818d98a4b0ada2968a7f73685c5145392e22170b00000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d1106000914202b37424e59646d727a7a7a7a7a7a7a79746b6055493e33271c1005000a15212c38434f5a656e737a7a7a7a7a7a7a78736a5f54493d32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000009131d27323d48525b65707c87929ca7a0978c80756a61564b40372c22170c020000000000000000000000000000000000000000000000000f1b26323e4955606c78838f9aa6b1a99e92877b6f64584d41362a1e130700000000000000000000000000000b16222d3945505c67737f8a96a1adaea2978b7f74685d51453a2e23170c0000040f1a25303b454f5868737f8a96a5aeb2a69b8f83786b61564b4034291d12060000000000020c1a242f39434d5964707c87939ca79c90847a6e63574c40372d22120800000000000008121d2934404b57636e7984909ca7b3aba097897e72665b4f44382e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d31261a0f00000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020d18232e3845515d68747f8b97a2aeafa3988c8075695e52473b2f24180d0000000000000000000814202b37424e5965717c85858585858585857a6e63574c4035291d1206000915212c38434f5b66727e8585858585858585796d62564b3f33281c1105000b16222d3944505c67737f8585858585858583786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000040e18232e38424c57626c76828e99a3a79c91857b6f645950463c31261c1207000000000000000000000000000000000000000000000000101b27323e4a55616c78838f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d51463a2f23170c000005111c28333f4a555f6976828e99a5b0b0a7978c8075695a51473d32271b10050000000000000a151f2935404c57626b77838e9aa4988c81756960554a3f30271d130600000000000005111c28333e49545f6876818d99a4b0b0a7988c81756a5b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b1a59a8e83776b6054493d311f160d03000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000914212d3844505b67727e8995a1acb0a5998e82766b5f54483c31251a0e0000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d1206000915212c38434f5b66727d8991919191919085796d62564b3f33281c1105000b16222d3944505c67737e8a91919191918f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000009141e28333e48535c65717d88939ca79f968b80746a60564b3f362c21170c020000000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000006121d2934404c57636e7a85909ca8b3aaa096897d72665a4f43372d23180d0200000000000005111c27323d48525b67737f8a969d94887d71655850463b30251a0f04000000000000030e1a25303a454f5867737e8a96a4adb2a79b9084786c62574c40352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121e2935404c58636f7a86929da9b1a59a8e83776b6054493830261c1208000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000914202b37434e5a65717d88949fabb1a59a8e82776b6054493d32261a0f0000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d1206000915212c38434f5b66727d89959c9c9c9c9085796d62564b3f33281c1105000b16222d3944505c67737e8a969c9c9c9b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4a69c90857a6f635950463b30251b11070000000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000914202c37434e5a65717d88969faab3a89c91857a6f63574c4035291e130900000000000000030e19232e38424c58636f7b85919b8f84796e63574b40362c21170c01000000000000000b16202b35414d5864707b87949da8b3a89e94877c7064594d42362c21160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f37404c58636f7a86929da9b1a59a8e83776b5c534940362c22180f060000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000008141f2b36424e5965707c88939faab2a69a8f83786c6055493e32261b0f0000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0a8a79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1a8a69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000a151f29333e49535c66727d89939da89f958b7f746960554a3f352b21160b0100000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0004101b26313c47515a6974808b97a6afb1a59a8e82776960554a3f34281d1104000000000000000009141e2934404b56616a76828d978b8074685e54493e33261c1207000000000000000007111e2935404c57626b78848f9ba7b2aea5968a7f7368584f453b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212b353f48525b636f7b86929da9b1a69a8e83776d635950463c312820160d0300000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000008131f2a36424d5964707b87939eaab2a79b8f83786d61554a3e33271b100000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000050f1a242f39434b57636e79838f9aa4a69b90847a6e63584f453b30251b110600000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0006121d2934404b56616a77838f9aa6aaafa6978b7f74685950463c31261b0f04000000000000000004101b26313c47515a66727e8993877c7064574e453a2f24160c02000000000000000005101c27323d48525b6975818c98a7b0aaa5998d8276695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f27303b454f58626c747f8b96a2aeb4a89c91877d716960554a433830261d120800000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000007131f2a36414d5964707b87939eaab2a79b8f84786d61554a3e33271b100000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000b151f27333e49545e68727e89949ea89e958a7f73685f554a3e352b20160b00000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0007121e2935414c58636f7b86919c9e9e9e9f95887c71655a4e42362c22170c010000000000000000020d18222d37414c57636e7a858e83776b6257473e352b201605000000000000000000020d18232e38444f5b66727e8997a09e9e9e9c90857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f4a555f69707c86919ca8b3b6aba1978f847a6f635d534940372c22180f06000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000000008141f2b36424e5965707c87939faab2a69a8f83786c6155493e32271b0f0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000030e19242f3a454e57636e79848f9ba5a59b8f84796e63574e453a2f24190e03000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000a15212d38444f5b67727e899793939393939085796e63574b4034291d12080000000000000000000008131d28333f4a55606975818a7f73675b5248362e251b11060000000000000000000009141e2935414c58636f7b8691939393939396887d71655a4e43372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212c363f48535c636e79838f96a0aab5bab1a89d948c80756d635950463c312820170d030000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000814202b37424e5a65717c88949fabb1a69a8e82776c6054493d32261a0f0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000b16202b353e4a555f68737f8a959ea89d94897e72685e54493e33271f150b000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000d1924303b47535e6a758187878787878787878176685f544a3e33281c110300000000000000000000040f1a25303b46505965717d857b6f63584c4238291e140b010000000000000000000006121d29343f4b56606a778287878787878787878074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27303b454f58626c74808b939da7b0babfb8ada49a91887d716a60564b443930271d13080000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000a15212d38444f5b66727e8995a0acb1a5998e82776b5f54483d31251a0e0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000006111b25303b454f58636f7a84909ba6a49a8f83796e63574b43392f241a0f050000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0007131e2a36414d5864707b7c7c7c7c7c7c7c7c7b6f63584f453b30251a0f0300000000000000000000010c17212c36404b57636e7880756a61564b4034291d0d04000000000000000000000004101b26313c47515a646f7b7c7c7c7c7c7c7c7c7b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f4a555f69707c86919ca3acb7b5b3b5b5aaa19b90847a6f635d544940372d2218100700000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000000b17222e3a45515c68747f8b96a2aeafa4988c81756a5e52473b3024180d0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000010b16212b353f4a556069747f8b959fa89d93897d72665c53493e33291f140a0000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0007121e2935404b57616b7070707070707070706f6a6156473f352b21160b00000000000000000000000007121c27333e49545e686e7a6e635a51473c31261b10000000000000000000000000010d17222d37404b56616b6f70707070707070706f6b61564b4034291e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17212c363f48535c636e79838f96a0aab4b0aaa8aab0b4a89e948c81756d635a51473c312920170d03000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000005101b26313c47515a6a75818d98a4afaea2968b7f74685c51453a2e22170b0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000007111b25313b465059636f7a85909ca7a49a8e82776d63584d42392e24190e0400000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0005101c27323d48525b6164646464646464646463615a5147372e251b1107000000000000000000000000030e19242f3a454e5760696e6960554941372d22180d0200000000000000000000000008131d27323d47515a6164646464646464646464615a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28303b465059636c74808b939da7b0ada7a09ca0a7b0aea59b91897d726a60564b443930271d1309000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000000006121d2934404b56616a78838f9ba6b2aea595897e72665b4f44382c21150a0000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000020c17212c36404b56606a74808c969fa79c93887d71655b52483e33281e140900000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00020d18232e38414a5257585959595959595959585651494137271e150b01000000000000000000000000000b16202b353e4750596063605950463930271d130800000000000000000000000000030d18232d37414a51565859595959595959595856514a41382d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38404a556069717d86919ca4adada49d969196a0a7b0aaa19b90847a6f635d544941372d221910070000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000000000020b121e2a35414c58646f7b86949da8b3a99e94877b7064594d41362a1f13070000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000008121c26313c465059646f7b85919ca7a3998e82766c62574c42382e23180e04000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000009141e28313a41484b4d4d4d4d4d4d4d4d4d4c4b4741393027160e05000000000000000000000000000006111b252e363f485055575550483f362920170d03000000000000000000000000000009131e27313941474b4c4d4d4d4d4d4d4d4d4d4b47413a31281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17222c364048535c636e79838f97a0abb1a89d948f859197a0aab4a99e948d81766d645a51473c312920170e0400000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000008121c27323d47515a67737e8a95a4adb3a79b9084796b62574c4035291e12070000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75818c97a0a69c92877c70655b52483d32271d1309000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000040e18212931383d4041424242424242424241403c373029201706000000000000000000000000000000010b141e262f383f464a4c4a463f382f26181007000000000000000000000000000000040e17202931373d4041424242424242424241403d38312921170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313b465059636c74808c939da7b0aba1978f837d86919ca4adaea59b91897e726a61564b443931271d130900000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000000000000061019232b35404b57616b77828e99a5b1afa7988d81766a5b52483d32271c11050000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000008131d27323d47515a64707b86919ca8a2988d81766b62574c41372d23180d030000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000007101921282e32353636363636363636363534312d272018100700000000000000000000000000000000040d161f272f363b3f403f3b362f271f1608000000000000000000000000000000000007101920272d32343536363636363636363534322d2821191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038404a556069717d87919ca4adada49c91877d74808b939da7b0aba29b90847b6f635d544a41372d23191007000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000060e172029323d47515a646f7b86919ca8b4aa9f968a7e73675b5044382e23190e030000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d98a2a89c91867b70645a51473d32271d13080000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000910181e2327292a2a2a2a2a2a2a2a2a2a2926221d171008000000000000000000000000000000000000050f171f262c30333533302c261f170f050000000000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2927231e1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222c364049535c636f7a838f97a0abb1a89d948c80756e79838f97a0aab4a99e958d81766e645a51473d322921170e040000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000000000000060e161e273139414b56616a75808c97a0abb3a89c91857a6f63584c4035291e1409000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c87929ca7a0978c80756a61564b40372c22170c0200000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000070e14181c1e1e1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000000000000070f161c212528292825211c160f070000000000000000000000000000000000000000070e13181b1d1e1f1f1f1f1f1f1f1f1e1e1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028313c465059636d75808c949da7b0aba1978f837a6f69707c86919ca4adaea59b91897e726a61564b443a31281e13090000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000001070f161e262f37414a535d646f7b85909ca7b0ada4998d81766a60564b3f34291d1204000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000040e18232e38424c57626c76828e99a3a79c91857b6f645950463c31261c120700000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000004090d10121313131313131313131212100d090300000000000000000000000000000000000000000000050c12171a1d1d1d1a17120c050000000000000000000000000000000000000000000004090d10121313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039404a556069717d87919ca4adada49c91877d7169626c74808b939da7b0aba29c90857b6f645e544a41382d2319110500000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000000000001050b11171f272e373f48515a636d76818d969faab3a89d93897d72665950463c31261b1004000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000009141e28333e48525b65717d88939ca79f968b80746a60564b3f362c21170c02000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000020507070808080808080808070605020000000000000000000000000000000000000000000000000002070c0f1112110f0c0702000000000000000000000000000000000000000000000000000205060708080808080808080706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018222c374049545d636f7a848f97a1abb1a89d948c80756d635c636e79838f96a0aab4a99e958d81766e645a51473d322921160d04000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000205070c0f151b212830373f474f58616a717d88919ba6afada49a8f83786e63574b40372d22170c01000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4a69c90857a6f635950463b30251b1107000000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172028313c465059636d75818c949ea8b1aba1978f837a6f635c555f69707c86919ca3acaea59b928a7e726b61564b453a31261e140b010000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1108080909090d1012171a1e252b303840474f585f696f7b84909ba2abb0a79d93897e72685e54493e30271d130800000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000a151f29333e49535c66727d89939da89f958b7f746960554a3f352b21160b010000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039404b56606a717d89919aa4adada49c91877d716960554f58626c747f8b939da7b0aba29c90857b6f645e554a41362e251b11060000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c141414141513181b1d2125282e353b424950585f686e79828e959ea9b6aba0978f83796e63574e453a2f20170d0300000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b3f3328110700000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000050f1a242f39434b57636e79838f9aa4a69b90847a6e63584f453b30251b11060000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090b0b111111111111111111110807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018222d374049545d636f7a84909ba1aab0a79d948c80756d63595048535c636e79838f96a0aab4a99f958e82776e655b52473e352b20160d0400000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281f1f1f202021222226292c3033373f454a525960686e78818d929ca5aeada49c91877d71685f54473e352b200f060000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d62564b352b21160b00000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000b151f27333e49545e68727e89949da89e958a7f73685f554a3e352b20160b0000000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111416171d1d1d1d1d1d1d1d1d1c1312110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313c47515a636d75818d949ea9b6aba0978f837a6f635c5348424a555f68707c86919ca3acafa69c928a7e736b61574e453a2f261e150b01000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342b2b2b2b2b2c2c2d2d3134363b3f43474f545b62696f79818c919ba3acafa69d948c80756c63584f45362e251b11000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915212c38434f5b66727d8995a0aca79c9085796d624f453b30251a0f03000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e79848f9ba5a59b8f84796e63574e453a2f24190e0300000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12171c202222292929292929292929281f1e1c19140e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273039414b56616a727d89919ba5aeada49c91877d716960554c433b454f58626c747f8b939da7afaba29c90857b70685e544942372e251b1107000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f363636363637373839373c4041464a4c54585f636c707a818c919ba2abb5aa9f968f837a6f635c53473e35261e140b010000000000000000000000000814202b37424e5965717c88939faba99d92867b6f63584c4135291e1207000915212c38434f5b66727d8995a0aca79c908579685f554a3e33281c1105000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a545f68737f8a959ea89d94897e72685e54493e33271f150b00000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b22272b2d2e343434343434343434332a2a27231e18110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222d374149545d636f7a84909ba1aab0a79d948c80756d635950463b353f48525b636e79838f969faab5aa9f968e82786e635b52473e352b20160e050000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4242424242424243434546474b4c5055575d63686e737c838d929ba1aab1a9a09c90857c706a60564c43372e25160d04000000000000000000000000000814202b37424e5965717c88939fabaa9e92877b7064584d41362a1e1307000915212c38434f5b66727d8995a0aca89c91857a6e63574c4034291d1206000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000006111b25303b454f58636e7a84909ba6a49a8f83796e63574b43392f241a0f05000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252c3136393a4040404040404040403f3635322e28211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029313c47515a646d76818d949ea9b6aba0978f837a6f635c534840362f37424a555f68707c86919ca3acafa69c928a7f736b62584f453a30271e150c0200000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564e4e4e4e4e4e4e4e4e4f5052515658586063676d71797f868f939ca2aab5a9a0998f897e726c625950463b33261e150500000000000000000000000000000814202b37424e5965717c88939fabaa9f93877c7065594e42362b1f1408000915212c38434f5b66727d8995a0acaba197867b6f64584c41352a1e1307000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000010b16212b353f4a556069747f8b959fa89d93897d72665c53493e33291f140a000000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b252d353c4144454b4b4b4b4b4b4b4b4b4b41403d38322a211810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139414b56616a727e89919ba5aeada49c91877d716960554c43382f27303b454f58626c747f8b939ca6afaca39c90857c70685f544942372f251b110700000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6259595959595959595a5a5a5c5d5a616366696e72777d838a91969da4abb0aaa099908b7f736e645b524940372b22160d0400000000000000000000000000000814202b37424e5965717c88939fabab9f94887d71665a4e43372c201409000915212c38434f5b66727d8995a0acb1a893877c7065594d42362b1f1208000b16222d3944505c67737e8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000007111b25303b465059636f7a85909ca6a49a8e82776d63584d42392e24190e040000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17222c353e454b4f51575757575757575757564d4c48423a322820170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232d37414a545d636f7b84909ca2abb0a79d948c80756c635950463b3328212b353f48525b636e79828e969faab5aa9f968e82786e635b52483f352b21170e05000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e65656565656565656565666667696a6a6f72767a7e83898f939c9fa6adaea7a09c908b7f746f655d544b423830261a12060000000000000000000000000000000814202b37424e5965717c88939fabada1968a7f73675c5045382e23180b010a15212c38444f5b66727e8995a0acaca094897d72665a4f43362c21170c010b16222d3945505c67737f8a96a1ada69b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000010b17212c363f4b56606a74808b969fa79c93887d71655b52483e33281e14090000000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313c454e555a5c636363636363636363625957524b423930271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000040e172129323d47515a646e76818d959ea9b6aba0978f837a6f635c534840362b221b252f37424a545f68707c86919ca3acafa69c938b7f736c62584f453b30271e150c020000000000000000111d28343f4b57626e7985919ca8b3a89c90857970707070707070707070717172737476787b7e81858a8f939a9da4aaafaba59e9691897f746f655e554d443a322820160a020000000000000000000000000000000814202b37424e5965717c88939fabafa4988d81756a5a51473d32251b11060a16212d3944505b67737e8a95a1adaea3978b8074695950463b31261a0f050b17232e3a45515d68747f8b96a2aea69b8f84786c61554a3e32271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7a3998e82766c62574c42382e23180e0400000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b36414b555e65686e6e6e6e6e6e6e6e6e6d64625b524940372f251c120703000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313a414b56616a727e89919ba5aeada49c91877d716960554c43382f261b151e27303b454f58626c737f8b939ca6afaca39c91867c70685f554a42372f251c12070000000000000000111d28343f4b57626e7985919ca8b3a89c90857c7c7c7c7c7c7c7c7c7c7c7c7d7d7e80818486898d90959a9da3a8adafa9a29b9590867e746f655f564e453c342a22180f06000000000000000000000000000000000814202b37424e5965717c88939fabb2a69b8f83786b61574b3e352b20160d0b16222e3945505c68737f8a96a2adb1a59a8e82776960554a3f34281f150c0c18232f3a46525d6974808c97a3aea69a8f83786c6055493e32271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75808c97a0a69c92877c70655b52483d32271d130900000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d39444f5a656f747a7a7a7a7a7a7a7a7a79706b625a51483f352b211c130a01000000000000000000000000000000000000000000000000000000000000000000000000051019232d38414a545e646f7b85909ca2abb0a79d948c80746c635950463b33281f160e16212b353f47525b636e78828e969faab5aa9f968e82796e635b52483f352b21170e0500000000000000111d28343f4b57626e7985919ca8b3aa9f969087878787878787878787878888898a8b8d8f9495989c9fa6a7acb0aaa69f9c928d847d726e655f564e453e352c231a110700000000000000000000000000000000000814202b37424e5965717c88939fabb4a89c91867b6f64574e453a2f271d130e18232f3a46525d6974808c97a3aeb3a89c90857a6f63574c43382f261c120f1a26313b4650596a76818d98a4b0a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000008131d27323c47515a64707b86919ca8a2988d81766b62574c41372d23180d03000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a45515c68747f858585858585858585857c706a61584f453b302c231a12080000000000000000000000000000000000000000000000000000000000000000000000040d162129323d47515a646e76818d959ea9b6aba0978f83796e635c534840362b22170f07111b252e374249545f68707c85909ca3acafa79c938b7f746c62584f453b30271f160c02000000000000111d28343f4b57626e7985919ca8b3afa69f9c93939393939393939393939394949697999b9ea4a4a7a9afafaaa7a09c95908a817b716d645d564e453e352d251c13090100000000000000000000000000000000000814202b37424e5965717c88939fabb6aba1978b7f74685e544940372d231d191d28333e49535c6b77828e99a5b0b5aa9f968a7e72675c53483f362c221d191d28343f4a55606978838f9aa6b0a5998d82766b5f53483c3125190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d98a2a89c91867b70645a51473d32271d1308000000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d39444f5a656f75818c929191919191958f837a6f695f554a453c342b22191007000000000000000000000000000000000000000000000000000000000000000000010b141e26313a414b56616b727e8a929ba5aeada49c91877d716960554c43382f261b1207010b151e27303a454f58626b737f8a929ca6afaca39c91867c70695f554a43382f261c1207000000000000111d28343f4b57626e7985919ca8b3b7afaaa89f9f9f9f9f9f9f9f9f9f9f9fa0a0a1a3a4a7a8adb0b1ada8a69f9c96918c857e766f6a635c544d453e352d251d140b030000000000000000000000000000000000000814202b37424e5965717c88939fabbab1a89b8f84796e635950463c322d2724242c36414d58636c7984909ba7b3b9afa69a8e83776c63584f453b312c2623252b35404c57636f7a85919ca8afa3988c8175695e52473b2f24180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c87929ca6a0978c80756a61564b40372c22170c020000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b36414b555e636e79828e949da59ca59d948e82796e635e554d443b322921170f06000000000000000000000000000000000000000000000000000000000000000006111b252e36414a555e646f7b85909ca2abb0a79d948c80746c635950463b33281f160a0200050e16202b353e47525b636e78828e969faab5aaa0968f83796e635c53483f362c21170f060000000000111d28343f4b57626e7985919ca8b3b5b9b5b3aaaaaaaaaaaaaaaaaaaaaaababacadaeb0afb0aaa8a6a49d9b96918c86807b736e64615a534c443d352d251d140c04000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b3a89d94897e726a60564b453d37332f2f333c47515a65717c88959ea9b4b9b2a79c93887d71695f554a443c37322e30353e48525b66727e8997a0aaafa6968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000030d18232e38424c57626c76828e99a3a79c91857b6f645950463c31261c12070000000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313c454a555f696f7a838f959ea7ada49c928c81756f655d544b433a31281f160d04000000000000000000000000000000000000000000000000000000000000040d16202b353e47525b656e76828e959fa9b6aba0978f83796e635c53483f362b22170f0600000007111b252e374249545f68707c85909ca3acb0a79d938b80746c625850463b30281f160c0200000000111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9b0aaa8a7a5a4a7a09c9a97948f8b85817c756f6a655e56514a433b342c251d150d0400000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b7ada49b90847a6f635e554b47413e3a3a3e444b56616a75808c97a5aeb6afaaa8a39b8f83796e635d544b46403d383b3e454c57626c76828d99a7b0aa9f96887d71655a4e43372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e48525b65717d88939ca79f968b80746a60564b3f362c21170c0200000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17222c303b454f58616a707c859096a0aaaca39b918b7f746d645c534a413830261e150b0100000000000000000000000000000000000000000000000000000000010b151e262f3a454e57616b737e8a929ca6afada49c91877d716960554c43382f261a120700000000010b151e26303a454f58626b737f8a929ca6afada49c91867c706960554a43382f261c120800000000111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9da09c9b9a989697918f8b87847f7b75706b63615a554b474139332b241c150d040000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6bdb4a99e958c81756e655e56514b494545494b545e646f7b85909ca7b3aea69f9c9f9d938b80746d645d56504c4847454a4f545f65707c86919ca8b3a89c90857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4a79c90857a6f635950463b30251b110700000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081216212b353f48515a626b717d86919ca1aaaaa19c91877e726c625a514940372e251b11070200000000000000000000000000000000000000000000000000000007111b252e373e49545e68707b85909ca2abb0a79d938c80746c635950463b33271f160a020000000000040d16202b353e47525b636e78828e969faab5aaa0978f83796e635c534840362c21170f06000000111d28343f4b57626e798591939393939393939393939393939393939393929297918f8e8c8b8885837f7c78746f6a64625b565149453c373029221b130c04000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b6afaaa59b918a7f736f64615a57544e4e54575e646e75818c959fa9aea59e9690969f9c91877e726e6360595752534f55585f636f76828e97a0abaea5998e82766960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29333e49535c66727d89939da89f958b7f746960554a3f352b21160b01000000000000101b27323e4a55616c78848f9ba6b2a99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1adaea3978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f374049525b636d727e8a909aa2ababa19790857d706b615950473e352b201b12090100000000000000000000000000000000000000000000000000000b16202b353e47525b636e78828e959fa9b5aba0978f83796e635c53483f362b22170f050000000000000007111b252e374249545e68707c85909ca3acb0a79d938c80746c635950463b31281f160d030000111d28343f4b57626e798687878787878787878787878787878787878787878686858482817f7d7a7774706c6863615a57524b474139312d272018120a0300000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb9afa69f9c9f9c91877f766f6a65635e57575e63656e727e8a919aa6afa99e959085909ca09791867e756f6a64625b5f585f63686e747f8b929ca7b0a99e95897e72675850463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242f39434d59636d78838f9aa4a69b90847a6e63584f453b30251b1106000000000000101b27323e4a55616c78848f9ba6aaa99e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a95a1aaaaa3978b8074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273039424b535c646e74808b919ba3aca89f9690847b6f6960584f453a302b231a110800000000000000000000000000000000000000000000000000030e1a25303a454f58626b737f8a929ca6afada49c91867d716960554c43382f261a12070000000000000000010b151e262f3a454e57626b737f8a929ca6afada49c91877d716960554a433830261c1208000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7b7a7a78777573716f696865625b5856514c48423c373029231d171008020000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb5aa9f9690969f97918a817b75706e686a6a686e71767e86919ca1aaaea59c90847d89939ca0969189807a74706b6b6a6a686e72797f8b9099a2abada49b90847a6f63574c40362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29343f4a545d67727e89949da89e958a7f73685f554a3e352b20160b000000000000101b27323e4a55616c78848f9b9e9e9e9e92867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a959e9e9e9e978b8074695d52463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172028313a434c555e636e78818d939ca5aea69e948f837a6f685f5449453c332a2118100600000000000000000000000000000000000000000000000005111c28333e49545f68707c85909ca3acb0a79d938b80746c635950463b33271f160a02000000000000000000040d16202b353e47525b636e78828e969faaaaaba0978f837a6f635c534940362c22170c010007121e2a35404c57626b70707070707070707070707070707070707070706f6f6f6e686b6a68656360595957524c4b47413d38312d272018130d0700000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb3a89c9085909ca19c918d85807c7977767677797d818a9196a0aab4a99e958b8077838e96a0a09c918c84807c78777676777a7d828b9099a0a9b0a79d948b7f736960554a3f34261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a25303a444b57636e79848f9ba5a59b8f84796e63574e453a2f24190e030000000000101b27323e4a55616c78838f939393939392867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e8a9393939393938b8074695d52463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212a333b4449545e686f79828e949ea6aea59d938d81786e635e554c433a322920170e050000000000000000000000000000000000000000000005111c27323d48525b636e78828e969f9e9e9ea0978f83796e635c53483f362b22170f05000000000000000000000006111b252e364249545e68707b85909ca29e9ea79d948c80756d635950463c31261b0f040005111c27323d48525b626464646464646464646464646464646464646464646363635e575e5c5a5755504d4c4842403c37322e28221d171009030000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabada2968a7f8a929ca29b95908c88848281818284888d929ca0a7b0aba29b90847a707c86919ca1a19a95908b87848281818384898e9299a0a9b5aba0978f83796e635950463b3126160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000b162028333e4a545f68737f8a959ea89d94897e72685e54493e33271f150b0000000000101b27323e4a55616c788387878787878787867b6f64584c41352a1e120700000000000000000000000000000a16222d3944505b67737e87878787878787878074695d52463a2f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119232b2f3a454e5760696f7b8490969fa7aca39b928c80756e655c534b423930271f150c0200000000000000000000000000000000000000000007131e2a35404c57626c737f8a9293939393939391867d716960554c43382f261a1207000000000000000000000000010b141e262f3a454e57616b737f8a9293939393939391877d716960554a3f34281d110600030e19232e38424b5257595959595959595959595959595959595959595958585757544e53514e4c4a4642413e3934312d27231e18130d0700000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d918679828e949ea59f9c9795908e8d8d8e9094999ba2aab0aba39b91897e726c747f8b919ba2a59e9b9794908e8d8d8e90959a9ca3a9b0aba19c91867d716960554840362c21170500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6a49a8f83796e63574b43392f241a0f050000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c796e63574b4034291d1206000000000000000000000000000006121e2935404c58636f7a7c7c7c7c7c7c7c7c7b6f63584c41352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109121b202b353e475059616a707c859097a0ababa29a908a7f736d635b524941382f261c120703000000000000000000000000000000000000000008131f2a36424d5964707c8587878787878787878780746c635850463b32271f160a0200000000000000000000000000040d16202b353e47525b636e7882878787878787878787847a6f63574c4035291e120600000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4c4b4945474543403f3b3635332e2926221d19140e08030000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a7b848f949da4a7a59e9c9a99989a9b9ea5a6abafaaa29c938d81766e636e78818c919ca0a7a7a59e9b9999999a9c9ea5a7acada7a09c908b7f736d63595046382f261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959fa89d93897d72665c53493e33291f140a0000000007121e2935404c57626b7070707070707070706e685f544a3e33281c1105000000000000000000000000000006111d28343f4b56606a6f70707070707070706f6a61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206111b252e364048515a626c727e86919ca1aaaaa19c91867d716c625a51483f362c211c130a010000000000000000000000000000000000000007121e2935414c58636f7b7c7c7c7c7c7c7c7c7c7c796e635c53483f362b22170f0500000000000000000000000000000006111b252e364149545e686f7a7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291e12060000040e18212a32383d404142424242424242424242424242424242424242414140403e3a3539373534312c2a28241f1b18130d090400000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a707c848f939ca0a7a9a7a5a4a4a5a7a9aeaea9a69f9c928d82796e635e686e78818a91969ca3a8a9a7a5a4a4a5a7a9aeada8a49d97918b80746f655c53483f36281f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25303b465059636f7a85909ca6a49a8e82776d63584d42392e24190e0400000005101c27323d48525b62646464646464646464635f584f453b30251a0f03000000000000000000000000000004101b26313c4650596063646464646464646463615a51473c31261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e262f38414a525b636d737f8a919aa2abaaa09790857c706a61584f453b302c231a12090000000000000000000000000000000000000006121d2934404b56616a6f707070707070707070706e695f554b43382f261a120700000000000000000000000000000000010b141e262f3a454e57606a6f707070707070707070706f6960554a3f34281d110600000008111921282e3235363636363636363636363636363636363636363636353534332f2b2e2b292826221e1c1914100d0803000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e707b838c91979c9fa6a5a6a7a7a7a6a5a59f9c96908b817a6f6960575f686e767f868e92999ca0a7a5a6a7a7a7a6a4a49d9a948f877f7470665e554c43382f26170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17212c363f4b56606a74808b969fa79c93887d71655b52483e33281e1409000000020d18232e38424a525758595959595959595957544f473f352b21160b000000000000000000000000000000010c17222c37404950565859595959595959595856514941372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f283139424b545d656f75808c929ca4ada79f958f837b6f695f554a453c342b2219100700000000000000000000000000000000000004101b26313c47515a616364646464646464646464635f584f453b32271f160a010000000000000000000000000000000000040d16202b353e47505960636464646464646464646463605950463c31261b0f04000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29292927242022201d1d1a1712110e0a04020000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e6b707980868c909697999b9b9c9b9b999795908c857f786f6a605950585f636f737c82898d9197989a9b9b9c9b9a9896938f8a837d736f665f564e453b33271f1607000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7a3998e82766c62574c42382e23180e0400000009141e28313a42484c4d4d4d4d4d4d4d4d4d4b4a453f372e251b11070000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4c4b47413930271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172029323b444c555e636e79828e939da5aea69d948e82796e635f564d443b322921180f060000000000000000000000000000000000020d18222d3741495156585959595959595959595957554f483f352b22170e050000000000000000000000000000000000000006111b252e364049505658595959595959595959595755504940362c22170c010000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1d1c1916111412110f0c0806030000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63696e757c8185898b8d8f9090908f8e8b8984807b746e68605950484f545e656c70777d82868a8c8e8f9090908e8d8a87837e79716d655e564f463e352b23170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75808c97a0a69c92877c70655b52483d32271d1309000000040e18212a31383d40414242424242424242403e3b352e271e150b0100000000000000000000000000000000030d16202830373c3f40424242424242424241403c37302920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a333c454a545f686f7a838f959ea6ada49c928d81756f655d544b433a31281f160e05000000000000000000000000000000000008131d27303941474b4c4d4d4d4d4d4d4d4d4d4d4c4a453f372f251a12060000000000000000000000000000000000000000010b141e26303840464a4c4d4d4d4d4d4d4d4d4d4d4c4a46403830261c120800000000000000040a0e1112131313131313131313131313131313131313131313121211100e0b06090606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a77696060636b70757a7d8082838485848382807d7a756f6b635f585049404549555c62656d72767b7e80838484858483817f7c78736e68635c554e463e362d251b120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26323c47515a64707b86919ca8a2988d81766b62574c41372d23180d0200000008111921282e32353636363636363636363433302b251e160e05000000000000000000000000000000000000060f1820272c31343536363636363636363534312d272018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c303b454f58606a707b8490969faaaca39b918b7f746e645c534a413830271e150b0100000000000000000000000000000000030d17202930373c404142424242424242424242403f3b352f271e150a01000000000000000000000000000000000000000000040d161f2830363c3f4042424242424242424242403f3c3630281f160d0300000000000000000003050708080808080808080808080808080808080808080707060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d6059555b6264696e72747678797978787674726e6964615a544f4740383a454b53585d63666a6f72757778797978777673706c67635f58534c453e362e251d140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2115090605020000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d97a1a89c91867b70645a51473d32271b1005000000000911181e2327292a2a2a2a2a2a2a2a2a292825211b150e060000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109131b212b353f475059616b717d86919ca0a9aba19c91877e726c635a514940372e251b1107020000000000000000000000000000000007101820272d313435363636363636363636363433302b251e170e050000000000000000000000000000000000000000000000050f181f262c313435363636363636363636363534312c261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c53585963636363636363636255504a525758606366696b6c6d6d6d6c6b6966636058565149453e3730303b42484c54595a616467696b6c6d6d6d6c6a6864625b57554f48433b352d251e150c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c21151212100d09030000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c86919c9ea0978c80756a61564b4034291d12060000000000080e14181c1e1e1f1f1f1f1f1f1f1f1d1c1a16110b0500000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14181f252e374049525b636c727e899099a2ababa19790867d716b615950473f352b211b130901000000000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a2a2a292825211c150e0600000000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a292826221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305070811111111111111110d0c0a070400000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a4642484c5055575a5d5f61616261615f5d5a5755504b47413a352e262a32393e444a4d5156585b5e6061626261605e5c5957524c4a453f37332b251d150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c211e1e1d1b18130d07000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e38424c57626c76828d9393939391857b6f64584c41352a1e120700000000000004090d101213131313131313131312110f0b070100000000000000000000000000000000000000000000000003080c10111213131313131313131212100d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020711181e23292f33383d414a535c646e747f8b919ba3aca89f9690847b6f6a60584f453b302b231a11080000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1d1c1a16120c05000000000000000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1f1f1e1d1b17120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131d1d1d1d1d1d1d1d181716120e0903000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b383d3f464a4c4f5154555656565554514f4c4a463f3d38302b251e22292f333a3f41474b4c505254555656565553504d4c48423e3b352f27221b140c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43382c2a2a2a2926221d17100800000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e48525b65717d878787878787878074695d52463a2f23180c00000000000000000205070708080808080808080605030000000000000000000000000000000000000000000000000000000000010406060808080808080808070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c121921282e32393e41474b4d51545d666f76818d939ca4ada69e958f837a6f685f544a453c332a22181006000000000000000000000000000000000003080d1012121313131313131313131312110f0b0702000000000000000000000000000000000000000000000000000000000003080c0f11121313131313131313131312110f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f29292929292929292423211d19130c0500000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302e32363b3f40434648494a4b4a49484643403f3b36322d28201b15191f242a3034373d40414446494a4a4b4a49474542413e3833302b251e16120a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f43383535353534312d27201810070000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424d58636c717c7c7c7c7c7c7c7b7064584d41362a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c212931383d43494d5156585c5a6164656e79828e949da7aea59d938e81796e635e554c433a322920170e0500000000000000000000000000000000000002040607080808080808080808080605030000000000000000000000000000000000000000000000000000000000000000000001040606080808080808080808080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e24272a2a34343434343434342f2e2c28231d150d050000000000000000000000000000000000000000000000000000020a12191f24282a2b343434343434343434282523262c303334383a3c3e3f3f3f3e3c3a383433302c26231e16110b0f15192025272d323435383b3d3e3f3f3e3d3c393635332e2825211b150e0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f434141414141403c37302920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000a141f29333e49535c636b70707070707070706b61574b4035291e12070000000000000000000000000000000000000000000000000000030506080b0d0e10101111100f0e0c0a070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a0c0e0f10101110100f0e0c0a070705020000000000000000000000000000000000000000000000000000000000000000070f171e252b303a41484b53585a6164686b6b6f7171727b838f97a0abada49c928c80756e655d544b423930271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282e32353640404040404040403b3a37332d261e150c03000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a181c212528292c2f313233333332312f2c292825211c18130e0701050a10161a1d2327292a2d2f313233333332302e2b2a27241f1a16110c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b4f4d4d4d4d4d4c4b47413930271d13090000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242f39434c535b626464646464646464615b52483d32271c1005000000000000000000000000000000000000000000000003070b0f11121416181a1b1c1c1c1c1b1a18161312100d09050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090d1012131518191b1c1c1c1c1c1b1918151312100d09050200000000000000000000000000000000000000000000000000000000060f171f272f353b454a52575c63656b6f7376797b7c7d7d7d7f86919ca8b4aba29a908a7f736d635b524941382f261c1207020000000000000000000000000000000000000000000000000000000000000004090c0f111111111111111111100f0d0b070200000000000000000000000000000000000000000000000000000307090b0c11111111111111111111111008070603000000000000000000000000000000000000000000000000000000000000050f18212a32383d40424b4b4b4b4b4b4b4b4645423d362e261d130900000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c12171a1d1d20232527272827272523201d1d1a17120c090400000000060b0e13181b1d1e212426272828272625221f1e1c19140f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72665b5858585858585856514941372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b434b5257595959595959595857524a41382e23180d02000000000000000000000000000000000000000001060b0e11161a1c1d1f2224262727282827272524211e1e1c1814110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1114181c1e1e212325262728282827262523211e1e1c1814100d090400000000000000000000000000000000000000000000000000050e171f282f373f454a555b61646c71767b7f828586888989898a9197a0abb6b3aaa19c91867d716c625a51483f362c211b1208000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1b1b1916110c06000000000000000000000000000000000000000000000000080d121517171d1d1d1d1d1d1d1d1d1d1d1c1313110e0a05000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d575757575757575752514c463f362d23190e04000000000000000000000000000000000000000000000000000000000003060808111111111111111111060402070c0f111215181a1b1c1c1c1b1a171512110f0c0702000000000000000004090d10121216181a1b1c1c1c1b19161313110e0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d72666464646464646463615a51473c31261b10050000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b333a42484c4d4d4d4d4d4d4d4d4b48413a31281e14090000000000000000000000000000000000000001070b1116191c212528292b2e3031323333333332312f2d2a2927231e1c19140e0a05000000000000000000000000000000000000000000000000000000000000000000000000060b0e14191c1e2327292a2c2f3032333334333332312f2d2a2927231e1c18140e0a0500000000000000000000000000000000000000000000040d161f272f3840484f555e656b70767d82868b8e909594949594969ca0a7b0babab5aba09790857c706a615850463b302b23181007000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929272624201c160f08000000000000000000000000000000000000000000010712181d2022232929292929292929292929271f1e1c19140f080100000000000000000000000000000000000000000000000000030e19242e38424b52575963636363636363635e5c564f463d33281d12070000000000000000000000000000000000000000000000000000000000000000000606060606060606060000000001040606090c0e101011100f0e0c0906060401000000000000000000000000020506070a0d0f101011100f0d0b080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa095897d726f6f6f6f6f6f6f6f6f6a61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000009121b222a32383d404142424242424241403d38312921180e04000000000000000000000000000000000000040b11161b2024272b30333437393b3d3e3f3f3f3e3e3c3b383635322e2a27231e19150f08030000000000000000000000000000000000000000000000000000000000000000050a10151a1e23272a2e323536383a3c3d3e3f3f3f3e3d3c3a383635322e2927231e19150f080300000000000000000000000000000000000000010b141e262f38404850585f636e737b82888e9197999c9fa6a0a0a0a2a8abb0b8bebfbab0a79f958f847b6f6960554a453c332920170d0300000000000000000000000000000000000000000000000000020b131b22282d3133343434343434343433322f2b262019110800000000000000000000000000000000000000050b111622272b2e2f3434343434343434343434332b2a27241f1811090100000000000000000000000000000000000000000000000005111c27323d48525b626d6e6e6e6e6e6e6e6e69665f564c42372c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa1958a7f7b7b7b7b7b7b7b7b7b7b6f63584c41352a1e1207000000000000000000000000000000000000000000000000000000000000000000000000000000020a121921282e3235363636363636363635322e2821191108000000000000000000000000000000000001060d151b20252b2f33353b3e40424547484a4a4b4b4a4948464441403d3835322e28241f18130d07000000000000000000000000000000000000000000000000000000000001070f14192025282e3235383d4041444648494a4a4b4a4a4948464441403d3835322e28241f17130d0600000000000000000000000000000000000006111b252e363f48505960696e757f858e92999ca0a7a7a9afb1aba8a8aab0acafb2b4b8b8afa69d948e82796e635e554c433931271d13090000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040403e3d3a36302921190f060000000000000000000000000000000000060e151b212c3236393a40404040404040404040403f3635332e29221a110800000000000000000000000000000000000000000000000007131e2a35404c57626c777a7a7a7a7a7a7a7a7570665c51453a2e23170c000000000000000000000000000000000000000000000000000000000003060808111111111111111111060401000000000000000000000000000000000005090c0e0e111111111111110b0a090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa3988f8a87878787878787878782776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000020911181e23272a2a2a2a2a2a2a2a2a2927231e1811090000000000000000000000000000000000040b11161e252b30353a3e40454a4c4e5052545556565656555352504d4c4842403d38332f29221d171008020000000000000000000000000000000000000000000000000000050b11161f242a2f34383d4042474b4d4f52535556565656565553524f4d4b4841403d38332e29221d170f0702000000000000000000000000000000050e16202b353e474f5860696f79818a90969ca2a8abaaa8a4a1a8a19c9ca0a7a0a3a7a9aeb3b6ada49c938d81766f655d534a41372d231810070000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4a49454039312920160c02000000000000000000000000000000070f161e252b303c4145464b4b4b4b4b4b4b4b4b4b4b4a42413e38322a22180f05000000000000000000000000000000000000000000000008131f2a36424d5964707c85858585858585858075695e52463b2f24180d010000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c070200000000000000000000000000040a101417191a1d1d1d1d1d1d1d161614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaaa89f989592929292929292928e83776c6054493d32261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1e1e1c18140e080000000000000000000000000000000000050d141b20262e353a3e45494b4f5557595c5e606161626261615f5d5b5857524d4c48423e39312d272018120a04000000000000000000000000000000000000000000000000060e151b21282e333a3f42484c4d5157585b5d5f606162626261605f5d5b5857524d4c48423e39312d272018120a0300000000000000000000000000010b151e272f3a454e575f696f79828c919c9fa6aba9a69f9c999593979191979395979b9ea5a8adb5aca39b918b7f736d635a51473c322920170d030000000000000000000000000000000000000000000009131e28323c444c5255575757575757575755545049423930261c110700000000000000000000000000000810171f272e353b464c50515757575757575757575757564d4c48423b32291f140a000000000000000000000000000000000000000000000008131f2a36424d5964707c879191919191918c8075695e52463b2f24180d0100000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000060e141a1f2225252929292929292922211f1c17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939eaab1a8a3a19e9e9e9e9e9e9e9a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1112131313131313131312100d09040000000000000000000000000000000000070f161e252b2f373e45494e5457585f6365686a6b6c6d6d6d6d6c6b696764625b5957524c49433c373029231b140c04000000000000000000000000000000000000000000000810161e252b30383e43494d5257595a616466696a6c6d6d6e6d6d6c6a696764615b5857524c48423c373028221b140c0400000000000000000000000007111b252e373f49545e686e79828e929ba1aaaba69f9c96908d8a878685858687898c90949a9da4aab0aba29c91867d716a61564b443930271d1309000000000000000000000000000000000000000000000c17222d38424c555c616263636363636363615f5a524940362b20160b0000000000000000000000000109111820282f373f454a565b5d6363636363636363636363615957524b42382e24190e030000000000000000000000000000000000000000000008131f2a36424d5964707c87939c9c9c9c988c8075695e52463b2f24180d010000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000060f171e242a2e3031343434343434342e2d2a27211b140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939ea6a6a6a6a6a6a6a6a6a6a6a69a8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305070808080808080807070502000000000000000000000000000000000000070f171f262e353a43474f54575e6366686e71737577787979797878767572706b6964625b58534b474139332b241d150d04000000000000000000000000000000000000000109111820272e353b42484c53585b6264696b6f72747677787979797877767472706b6964625b57534b464039332b241c140c0400000000000000000000000b16212b353f47535c636e78818d929ca2aaaaa29c95908b85817e7c7a7a7a7a7b7d8084898f939ca0a7afaba09790847b6f645e554941372d22180e040000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6d6a635a50453a2f24190d0200000000000000000000020a11192129303840474f545f66686e6e6e6e6e6e6e6e6e6e6e6d65625b52483e33271c11060000000000000000000000000000000000000000000008131f2a36424d5964707c87939ea8a8a3988c8075695e52463b2f24180d01000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000000040e171f272e34393c3d40404040404040393836312b241d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939a9a9a9a9a9a9a9a9a9a9a9a9a9a8e83776c6054493d32261a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f282f363e454953585f63686e71757a7c7f818284848584848382807e7b7874706b65625c565149433c352d251d150d04000000000000000000000000000000000001091119212830373f454a52575d63666b7074787b7e80828384848584848382807e7b7874706b65625c565049433b342d241d140c03000000000000000000030f1a25303b454f58636c747f8b919ba3aba9a19a928e857f7a7673706f6a696e707275797e838b91979fa6afa79e958e82766e645a51473c31281e1409000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a78736a5f54493d32261b0f04000000000000000000030a121a22293139414850585f636f747a7a7a7a7a7a7a7a7a7a7a78706c62574c41352a1e13070000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d0100000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000000a141e2730373e4347484b4b4b4b4b4b4b4544403b352d241b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c878f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e83776c6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060c0c0c0c0c0c0c0a0a080502000000000000000000000000000000050e171f28303840474e545c62686e72797d8185888a8c8e8f909090908f8d8c8a8784807c76706c63615a534c453d352e251d150c03000000000000000000000000000000000811192129313940474f545b62646d71777c808387898c8d8f8f909090908f8d8c898783807b76706c636059534c453d352d241c130a01000000000000000005111c28333e4a545f68717d86919ca2aba9a09a908c827b746f6a6765636060636466686e72797f8690959fa6aea59c928a7e736a61564b42382e23190d030000000000000000000000000000000000000000111d28343f4b57626e79868585858585858583786d61554a3e33271b100400000000000000000106131b232a323a4149515960686e75808585858585858585858585847c7065594d42362b1f13080000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d01000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c1207000000000005101a242e3740484e525457575757575757504f4b453d352b21170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c838383838383838383838383838383838381756a5e53473b3024190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f111218181818181818161514100c0701000000000000000000000000020c151f273038404850575e636c70797e83888d909596989a9b9b9c9c9b9a999795948f8b86827c756f6a635c554e463e352e251c1309010000000000000000000000000000061018212a313a414951585f636c70777d82878b8f939597999a9b9c9c9c9b9a999795938f8b86827c756f6a635c554d453d352c241a120600000000000000030f1a25303b454f58636e79838f97a0aaaba29a908b80786f6a636059595856555759575e63686e737d8590959fa7aba29c90857b6f635b52483d32261d12080000000000000000000000000000000000000000111d28343f4b57626e79859191919191918f84786d61554a3e33271b100400000000000000040b111c242b333b424a525a61696f79808b9091919191919191938e837b706c62574c41352a1e13070000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d01000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c010000000009141f2a343e4850585d5f636363636363635c5a554e453b31271c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b7077777777777777777777777777777777777570675c51463a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d2324242424242422211f1b17110b03000000000000000000000007121c262f384049505960686e747c838a8f93989c9fa6a4a5a6a7a7a7a7a6a5a3a49d9b97918d87817b716d655e564e463e352c241a110600000000000000000000000000050e162029313a424a525a61686e747c82888e92979b9da4a3a4a6a7a7a7a7a7a6a4a3a49d9b97918d87817a716d655e554e453d342b22170e0500000000000005111c28333e4a555f68737f8a939da7ada49b918b80746e68615a56504e4c4b4a4c4d4e54585f636d717c859097a0aba99e958c80756b62574c40372c22170c0100000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9b8f84786d61554a3e33271b1004000000000000050d141b202c343c434b525b616a6f7a818c919aa09c9c9ca19a928d827a6f6b625b52483e33271c11060000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d0100000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f04000000000c17222e39434e5861686b6e6e6e6e6e6e6e68655e554b40362a1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b62646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a6760574d42382c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212628292f2f2f2f2f2f2f2d2c2a26211b140c03000000000000000000081119212c363f48505960696f787f878f939b9da4a7a9afafadabaaa9aaaaacadafada8a8a19c97918c847d736f665f564e463d342a22170e050000000000000000000000010b151e273039424b525b616a6f797f868e92999ca3a6a8adaeafacabaaaaaaabacafaeada8a8a19c97918c847d736e655e554d443b32271e150c02000000000006121d2934404c57636e7984909ba4ada89e948d81766f635e57514b4642403f3f404145494f545c636c717d87919ca5aea59c91867c70645950463c31261b0f0400000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a69b8f84786d61554a3e33271b10040000000000060e161e252b2f3d444c535b626b707a828d929ba1a9b0aba099918c81796f6a615a524b42382e24190e030000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d0100000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d1106000000020e1925303c47525d6871767a7a7a7a7a7a7a736f655a4f44382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e18232e38424a52575960606060606060606060606060606060605e5c574f473d33291e1308000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134353b3b3b3b3b3b3b393835312b241c140b0100000000000000040e18212a303b454f5860696f7a818b91979da3a8adaea9a7a4a1a09e9e9e9fa0a2a5a8aaafaba8a19c9590867f746f665f564d443b32271f160c020000000000000000000007111b252e374149525b626b707a828b91969ca3a7acb0aba8a6a3a09f9f9e9f9fa1a3a6a8abb1aba8a19c9490867f736f655e544b43372f251c120700000000040f1b26313c46505967727e89949ea8ada49b8f847a6f635f544e47413c3735343334353a3f454a535c636d74808b949ea8aaa0978c80756a60564b3f34281d110600000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b100400000000070f171e262e353a454d545c636c707b838e939ca2aaafa7a09c908b80786e69605a514a423b32291f140a000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1206000000030e1a25313d48545f6b7682858585858585857f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a42484c4d555555555555555555555555555555555553514d473f362d23190f040000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f40464646464646464443403b342d241b11070000000000000009141e28313a424a555f696f7a828d929ca0a7acaca7a59e9c989694939292939496999c9fa6a8adaba59e97918a80746f665e544b42382f261c1207000000000000000000000b16212b353f47515a626b707b838e929ca0a7acaea9a7a09c9a9795949392939495989a9ca1a8aaafaba59e96918a7f736e645c53483f352b21160c0300000006111d28343f4a56606a76828e99a5aea89d93897e726a605649453e36312c292828292b2f353b434b545d636f7a84909ba6afa79c90857a6f63584c4035291e120800000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b10040000000810171f272f363e4549555d646d717c848f949ca3abaea69f97918a7f756e6860595149413a322a22180f05000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e91919191918a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a31383d404149494949494949494949494949494949494746423d362f261d130900000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c52525252525252504f4b453d342b21170c020000000000030e19232e38424a555e636e79828e929ba2abaea9a39c9a95908d8a8887878787898b8d90969b9da4aaaea7a09c908b7f746e645b52483f362c21170d030000000000000000030f1a25303b454f58616a707c848f949ca2aab0aaa59e9b97918f8c898887878788898c8f91979c9fa6acaea7a09c8f8a7e726c62584f453b30261c120800000006121e2935404c58636f7a85919ca8b2a69b8f83796e635950463a352e26221e1d1d1d20252b303b434a556069737f8a969faaaa9f96897e72675b4f44362c21170c01000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b10040001091118202830373f474e545e656e727d8590949da4acada59e9690867f746f635f58504840393129221a110800000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e999c9c9c968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e3235363d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b3a38332d261e160d030000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c3640485055575d5d5d5d5d5d5d5c5a554d453b31261b1005000000000005111c27323d48525b656e75818d929ca3abaca59e9b928e8984817f7d7c7b7b7c7d7f82858a8f949c9fa6adaba099908a7e726c625850463b30271d130900000000000000040e18212a333e4a545f686f7b838f949da4acada7a09c95908b8683807e7d7c7b7c7d7e8083868c90969ca3a9b0aaa09c91867c70695f554a40362c22170c0100000915202c37434f5a66717d8997a0aaaea5968a7f73685e544940362b251e1613111111161b212a313b465059636f7a85919ca8afa6988d81756a5950463b31261a0f04000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b1004020a12192129313840484f575e636f737e8690959ea5adaca49e9590857e736e655f544f473f383028211911090100000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5a8a2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181e2327292a3232323232323232323232323232323232302f2c29231d160e05000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b46505960636969696969696967655e554b40352a1f140800000000050f19222a35404c57626b737f8a919ba3acaba39c949089827d79767371707070707274767a7e838a90969da4ada9a09c91867c706960554a41372d22180c0200000000000009141e28323d48525b636e79828e949da5adaca49d96918b847f7b77757271707070717275787c80858e9299a0a9b5aa9f968f83796e635950463c31261b0f0400000c17232e3a46515d6874808b97a7b0a99e94877b7064574e453830261b140d080606060b111a222c36404a56606a76828d99a5b0a79b8f84786960554a3f34281d1106000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b10030b131a222a3139414950585f686e747f8791969fa6aeaca39d948f847d726d645e5649453e372f2720181008010000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14181c1e1f26262626262626262626262626262626262423211e19130d050000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f75757575757575736e655a4f43382c21150a000000000a151f29343f49535c64707c85909ca1ababa29c928e847e77726e686766646464656668696f73797f858f949da4adaa9f968f83796e635a51473c31261c12080000000000020e18232e38404c57626b747f8b929ca4adaca39c938f867f7a746f6a6967666564656567696c70757b828b9099a0a9afa69d938b7f736960554a3f34281d130800000d1925303c47535f6a76818d98a4b0a79b9084786b6157473e35281f160b04000000000108121c26313c46505968737f8b96a2ada89c91857a6f63574c4035291d1206000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b1007131b232b323a424a515960696e78808a9197a0a7afaba39c938f847c716c635d554d453a352e261f170f0800000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b191816130f090300000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f79808080808080807f73675c5044392d22160a000000030e19242e39424d58636d76828e969faaaca39c928e827b726d66635f585a595858595a596063686e737c848f949da5aea79d938b7f746a61564b40362c21170c010000000005111c27323d48525b64707c86919ca3acaca39c928e837c746e6963615a5b5a5958595a5b5b62646b6f787f8b9099a2abada49c90847a6f63574c40372d22170c01000f1a26323d4954606c77838e9aa5b1a5998e82776b5b5248362e25180f06000000000000020c17222c36434f5a66727d8994a0acaba097877c7064594d42362a1f1308000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b0b111c242c333b434a525a61696f79818c909ca1a8b0aaa29b928e837b706b635c544c453d302b251e160f070000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0d0c0b080400000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68737f8a8c8c8c8c8c897e72665b4f44382d21150a00000006111c28333e48525b66717d88929ca6afa69d938e82796f6a645d57554f4e4d4d4d4d4f5055585f636c707b838f959ea9ada49c90857b6f635950463b31261a0f040000000007121e2935404c57626b76818d96a0aaafa69d938e827a706c63605856514f4e4d4d4d4e4f52575a61686e747f8b919ba6afa99e958a7e73675950463c31261b1004000f1b27323e4955616c78838f9ba6afa4988d81756a5e534738301e1407000000000000000008121f2b36424e5965707c88939faab0a793887d71655a4e42372b201408000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b151b202c343c434b535b626a6f7a828d919aa1abb1aba19a918d827a6f6b625b534c443c342d201b150d06000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e79848f979797978f83796e63574b4034291d120600000007131e2a35414c57626c77828e9aa2abaa9f968f837a6f69615a544c4a45434241414243464a4f555b626b707b84909ca2aba99f958b80746960554a3f34281d12080000000007131f2a36414d5964707c86919ca7b0a99f958f837a6f6a625c55504b4744434241424344484c51575e636f76818d969faaaea59a8e82776a60564b3f34291d120600101b27333e4a55616d78848f9ba7afa3988c8175695e52473b2f241208000000000000000008131f2a36424d5964707b87939eaaaba094887d71665a4f43372c201509000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e3327161e252b303d444c545c636b707b838e929ba2aab0a8a19c908c81796f6a615a524b433b332c241c110b0400000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68727e8a949ea39e948a7e73685f544a3e33281c11050000030e19242f3a454e5765707c87929ca7aea59c90857b70696059514a443e3b3536363636363c3f454a525a626b717d89919ba7afa69c90847a6f63574c40362c21170c01000005111c27323d48525b6974808b97a1abada49c90857b70696059534a463f3c373736363637383d41474e545f646f7b85909ca8b3a89c91867a6f63584c4035291e120700101b27323e4955616c78838f9ba6afa4988c81756a5e5247372c22170c010000000000000008131f2b36424d5965707c87939faaaba094887d71665a4e43372c201409000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271f262e353a454d545d636c717c838f939ca2abafa7a097918b80786e696059514a423a322b231b1407010000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131316161616161616161616161616161616161313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000009111d2934404b57636e79838f9ba4a69b90847a6e63584f453b30251a0f03000005101c27333e49545e6875808c98a3aca89e948a7f736b61595048413933302b2a2a2a2b2c31353b424a525b636d76818d96a0aaa99e958a7e72675950463b31261a0f04000007121e2935404c57626b78848f9ba8b1a89d948a7f736b61595049423b36312d2c2b2a2b2b2e32363e454b57616b75808c98a6afaba097897d72665a4f43382c201509000f1b26323d4955606c77838e9aa6b0a4998d82766a5950463c31261b0f04000000000000000814202c37434e5a65717d88949fabb0a793887d7165594e42372b201408000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e3320272f373e4549555e646d717d848f949da3acaea69f9691877f756e685f5850494139322a221a130b03000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f21212121212121212121212121212121211f1e1c19140f08010000000000000000000000000000000000000000000000000000000000000000000000000008121d28333e49535c66727d89939da89f958b7f73696055473f352b21160b00000006111d2934404b57636e7984909ba7b1a89b9084796e635b52484038302925211f1e1f1f22252b303a424a545d64707b86919ca8aea5998d82766960554a3f34281d1106000007131f2a36414d5964707c87949da8b2a79b8f84796e635b52494038302c2622201f1e1f2024262e353d47515a66717d88959fa9b0a7968b7f74685d51453a2e23170b000e1925313c48535f6b76828d99a5b0a69a8f83786a60564b3f34281f140a02000000000007101a25303a454f5867737e8a96a1adaaa097877c7064594d41362a1f1307000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e332830383f474f545f656e727d8590959da4acada59e9590867e736f635e574f48403831292119120a0200000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f24282a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2a27241e181109010000000000000000000000000000000000000000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4a69c90857a6f63585046372e251b110700000008141f2b37424e5965717c88949ea9aba1978b7f74695f554a41382f27201a1611131312171b2129313a434b57616b76818d99a6afa89c90857a6f63574c4035291d120600000a16212d3844505b67727e8a95a4adaea5968b7f73685f544a41383028211c181313131314161e252e38414c57636e7a85909ca7afa4988d81756a5e53473b3024190d000c18232f3b46525d6975808c97a3afa89c91867a6f63584c42392e241b120a050201040810182129333e49545f6875818c98a4afa89c9185796e63574c4034291d1206000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e333139404850585f636f747e8690969ea5adaca49d9590857d726e655e544e473f38302820191109010000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22292e33353638383838383838383838383838383838383635322e28211a1108000000000000000000000000000000000000000000000000000000000000000000000009141e28333e48535c65717d88939ca79f968b80746a6056483f36271e150b010000000b17222e3945515c68737f8b96a5aea89c91867b6f64584f453a31281f17100b070707080c1119212a323d48525b66717d89969faaaa9f96887d71655a4e43372b20140900000c18232f3a46515d6974808b97a3a5a59e94877b7064584f453a31282018120c090807080a0d141e28333e4a555f6878838f9ba6b0a5998e82766b5f54483c31251a0e000a16212d3944505b67737e8a95a5aeaba097897e72665b52483e332b231b14100d0c0f13182028313a414b57636e7984909ba7b2a69b8f8378685f554a3e33281c1105000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e323a4149505860686e757f8a91979fa6aeaba39c948f847c716d645d5549453e362f272018100801000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a32393e4142444444444444444444444444444444444442413d38322a21180f05000000000000000000000000000000000000000000000000000000000000000000030e19232e38414c57626c76828e99a3a79c90857b6f63595046382f26160e05000000020d1925303c47535f6a76818d99a4b0a69a8e83776a6156483f362921170f07000000000002071119232e38414c57636e7a85909ca8afa6968b7f73685c5145392e22170b00000e1925303c47535f6a76818d99999999999084786b6257473f352921170f07020000000000040f1a25303b454f586b77828e99a5b1a59a8e82776b6054483d31261a0f0008131f2a36424d5964707c87949ea9b0a7998d82766c62574c453c332b241f1b18171a1d22283038414a545d66717d89959ea9afa6988c81756a584f453b30251a0f03000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e3a424a515960696e78808b909ca0a7afaaa29c938e837b706c635d544d453a352e261f170f070000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b42484c4d50505050505050505050505050505050504d4c48423a32281e140a00000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b65707c88929ca7a0978c80756a6156494036271f16060000000005101b26313c47515a6c78838f9ba6aea3978c8074695a5147382f26191107000000000000000009141e28333f4a55606977828e99a5b0a4988d81766a5e53473c3024110600000e1a25313d48545f6b77828e8e8e8e8e8e8e82766b5b5248372e2519100700000000000000000b16212b3548535f6a76828d99a4b0a59a8e82776b6054483d31261a0f0007131e2a35404c57626b7884909ba7b2a89c91877c70655e554c433c332e2926232125282d31394049515a646e77828e9aa5aeaa9f96897e72675b4f44352b21160b00000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3b434b525a616a6f79818c9199a0aab0a9a19b928e827b706b625c534c443d2f2b251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39424b5257595b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524b42382e24190e03000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b76818d99a2a89c91867b70645a5147383026170e050000000006121d2934404b56616a7985909ca8aca195897e72675b4f44372d1f1509000000000000000000040f1a25303b4650586974808c97a3aea59a8e83776b605449352b20160b00000c18232f3b46525d697580828282828282827f73685c5145382e1e15090000000000000002050f1a25303b454f586b77828e9aa5b0a4998d82766a5f53483c3125190e0005111c27323d48525b6974808c97a2ababa1978e82776e655d534c453e3934312d2c3033373c42495159616b727e89929ca7b1a89c90857a6f63574c4035291d110700000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a444c535b626b6f7a828d919aa1a9b0aba09a918d827a6f6a625b534b433c342c201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b6265676767676767676767676767676767676764625b52483d32271c11050000000000000000000000000000000000000000000000000000000000000006101b27323d47515a64707c86919ca8a1978d81756b6157494137281f1606000000000007121e2a35414c58636f7b86969faaab9f93887c7165594e42372b1f1408000000000000000000010c17212c3644505c67737e8a96a1ada79b9084786d614e453a2f24190e03000c17232e3a45505c66707577777777777777736f655a4f44382d210e08090909090a0a080d10151c28333f4a555f6978838f9ba6afa4988c81756a5e53473b3024190d00030e19232e38424d5965707c87929ca7b1a89c928a7f736d635d554c4842403c37363b3f40474b535a616a6f7b85909ca3acaba1978d81766960554a3f34281d110200000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a4d545c636c707b838e929ba2aaafa7a09c908b81796f69615a524a423b332b241c110b040000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707272727272727272727272727272727272706c62574c41352a1e1307000000000000000000000000000000000000000000000000000000000000020c161d2934404b56616b75818c97a0a89c91867c70645b5248393027180f06000000000008131f2a36424d5964707c8793a6afa99e92877b6f64584d41352a1e1307000000000000000000000712202c38434f5a66727d8994a0aca89c908579685e54493e33271c1005000a15212c37424c565f66696b6b6b6b6b6b6b68655e554b41362b1f131415151515151613181b1f262c34404c57636e7a85909ca8afa7968b7f73685c51453a2e22170b00000a141e2a35414c57626c76828e99a1abaca39c91867d716d655e57524c4b474848464a4c51565c626a6f7a838f959ea9afa69c91877c70655950463c31261b0f0400000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554d555d646c717c848f939ca3abafa69f97918a80756e6860595149423a322a231b130601000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000008121c26313c47515a646f7b85919ca7a3998d82766c62574a41382920170700000000000008141f2b36424e5965707c88939faaa99d91867a6f63584c4035291e1206000000000000000000000914202b37434e5a65717d88949faba89c91857a6e63574b4034291d11060007121d28323d464f565c5d5f5f5f5f5f5f5f5c5a554e453b31271d1f1f212121212121222226292f363d48525b66717d88969faaaa9f96887d71655a4e43372b201409000006111c28333e48525b65717d88919ba5aeaaa09690857d736e65625b58565153535055575a60636c707a828e939da5aeaa9f968d81766c62574940362c22170c0100000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d6155565e656d727d8590949da4acaea69f9691877f746f635f5850494139312a221a120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d68748089898989898989898989898989898989897f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000010c17212c363f4b56606a74808c969fa79c92887d71655b52483a31281810070000000000000814202b37424e5a65717c88939faba89d91867a6e63574c4034291d12060000000000000000000008141f2b37424e5965717c88939fababa197867a6f63574c4035291d120600030e18232d363e464c505254545454545454514f4b453e352b24282a2b2c2c2c2c2c2d2e2d3134383f454b57616b75808c98a6afa89c91857a6f63574c4035291d12060000030e19242e39424d58636c75818d959ea7b0a79f9690867f77706c6764615a5f5f596063666a6f747c838e939ca3acaba29c90857b70645b52483830261c12080000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61545f666e737e8690959ea5adada59e9590867e736e665f554f48403830292119120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b9595959595959595959595959595958b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000040f1a26313b465059636f7a85909ca7a39a8e82776c63584b423829211808000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faab19d91867a6f63574c4035291e1206000009131c262e363d424546484848484848484544413b352d292f33363638383838383939373c3f43484f555f64707b85909ca8aca3998d81766960554a3f34281d11060000000a141f29333e49535c636f7b849097a0abafa69f96918a827c76726f6a6b6b6a6b696e71757a80868f949ca3acaca39b928a7f736b61574b4239281f160c030000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d585f636f747f8690969ea5aeaca49d9490857d726e655e564a453f3730282018110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a1a1a1a1a1a1a1a1a1a1a1a1a1968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000006111d28343f4a556069747f8b959fa89d93897d71665c53493a3228191007000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e12060000030c151e262d32373a3b3d3d3d3d3d3d3d393836312b2a32393e41424343434343444546474b4c53585f636f76818d969faaa89c93887d71665950463c31261b0f04000000050f1a242f39434b56616a717d87919ca0abafa7a09c928e87827e7b7877767677787a7d81858b91969da4acaca49d938d81766f655b52483b3229170f06000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d60686e75808a91979fa6aeaba39c938f847c716d645d554e463b352f271f1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2a3a3a3a3a3a3a3a5aaacaca2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a84909ca6a49a8f83786d63584c43392a22180900000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000050d151c23282c2e2f313131313131312e2d2b2729323b42484c4e4f4f4f4f4f5050515156585c63696e75808b929ba6aba1978e82786e63574b40362c22170c01000000000a151f29313c47515a636d737f8a909ca1a8afaaa39c97918e898684828282828385888c90959ca0a7adaba39c938f837a6f635e554a41382a22180700000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d696f79808b909ca0a7afaaa29b928e837b706c635c544d453d302b251e160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b9797979797979797979aa1aaada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000005111c28333e4a555f68737f8a959ea89d94897e72665d54493b33291a110800000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e120600000000050c13181d2123232626262626262622211f242f39424b5358595b5b5b5b5b5b5c5d5a6163676d7179808b909aa2aba39c91877d71685e54493e33261c12080000000000050f18222d374149535c656e74808b91979fa6acaca8a19c999594908e8d8d8e8f9196989c9fa6aaafa9a29b938e837b6f6a60564e453a31281a110800000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786a6f79818c9199a0abb0a9a19a928d827a6f6b625b534c443c352d211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939faba99d92867b6f63584c4135291e1207000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b8c8c8c8c8c8c8c8c8c909aa5ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba5a59b8f83796e63574b433a292219090100000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000003090e121517181a1a1a1a1a1a1a17161d28333e48535c626566666666666768686a6a6f73777d838c909aa0aaa49c928c80756c63574e453a2f24160c0300000000000009131d273039434c555e666f747f8790959ca3a9aeaba8a5a59e9b9a9999999b9ca0a7a7a9afaaa69f9c918d827b6f6a615950463d35292118090100000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f8478707a828d929ba1a9b0aaa099918c81796f6a615a524b433b342c241c110c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabaa9e92877b7064594d41362a1f1307000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d808080808080808080808c97a3ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000005101c27333e49545e68727e8a949ea89e948a7e73685f544a3e33281c12090000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e12060000000000000003070a0c0c0e0e0e0e0e0e0e0b131f2a36414c58626c70727272727272737476787b7f83888f939aa1aba39c938e82796e635c53473e352b20160600000000000000030d172029333c454e565f666f737e858e939b9ea5a7acb0aea8a7a5a4a4a5a6a8aab0aea9a7a09c95908a817a6f6a615a514940362d241910070000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84787b838e939ba2aaafa7a09c908b80786e69605a514a423b332b231c140702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabaa9f93887c7065594e42362b1f1408000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d717474747474747474747a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000109111d2934404b57636e79838f9ba5a69b90847a6e63584f453b30251a0f020000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e12060000000000000000000000010303030303030308141f2b36424e5965707c7d7d7d7d7d7e7f7f8184868a8e939b9da4a8a19c938e837b6f685f554b43362e251b11060000000000000000071018232b353d464e565e656e727c828a90949a9da3a4a7a9aeababababafaaa8a5a59e9b97918c857e766f69615a5149413830261d1409000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f837c848f939ca3abaea69f97918a7f756e6860595149413a322a221b130b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fababa094887d71665a4f43372c20150a000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f49545d636669696969696969696f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000008121d28333e49535c66727d89939da89f958b7f73696055473f352b21160b000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000000000000000000000010d1924303b47535e6a758189898989898a8a8b8d8f91979a9ca3a8a39d97918c827a6f6a61584f453b32261e140b0100000000000000000008121b242d353e464e555d646b70787e848a8f9396999b9ea59fa0a09fa69f9c9a9795908c86817b736e6360595149413930281f160c04000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a79c90858590949da4acaea59e9690867e746f635f58504840393129221a120a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabada2968b7f73685c5145392e24190d030000030e1a26313d48545f6b77828e99a5ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3a434c54585a5d5d5d5d5d5d5d636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4a69c90857a6f63585046372e251b1107000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000000000000000000000010d1924303b47535e6a75818d95959595959697999b9ca1a8a7a59e9c938f8780796f6a615a51483f352b22160d0400000000000000000000020a141c252e353e454d545b62686e73797e83878a8d909493949494949396908e8b8884807b756f6a645e5550484139302920180f0600000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a99f959090959ea5adafa69e9590857e736e655f544f473f3830282119110902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb0a4998d82766a5c53483e33271d13080000030f1a25303b454f586c77838f9aa6ada1968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a333c43494d4f52525252525257636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000009141e28333e48535c65717d88939ca79f968b80746a6056483f36271e150b01000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000000000000000000000010d1924303b47535e6a75818d98a0a0a0a1a2a2a4a6a8abb1a99e959089837d756e69605a514a41372f251a1205000000000000000000000000040c151d252d353d444a52575e63696e73777b7f828486878889898888868583807d79756f6b63615a554a4640383029201810070000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c9c9fa6aeb5aa9f9690847d726d645e5649453e372f27201810080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb2a79b9084796c62574c40372c22180f060105111c28333f4a555f6978848f9ba7ada1968a7e73675c5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232b333a3f424346464646464c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000030e19232e38414c58626c77828e99a3a79c90857b6f63595046382f26160e0500000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000000000000000000000010d1924303b47535e6a75818d98a4ababacadaeb0b2b4b6b3a79c90847d77716d6360595149413930271e150a0100000000000000000000000000040d151d252c343a42474e54585f63676b707376797a7c7c7d7d7d7c7b797774716e6864615a565149443b362f2820181008000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b6afa9a7a7a9afb6b3a89c90857c716c635d554d453a352e261f170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb4a99e94877c70655950463c31282017110b0d131d2934404c57636e7a85919ca8aca195897e72675b5044382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b232a2f3436373b3b3b3b404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000005111c27323d48525b65707c88929ca7a0978c80756a6156494036271f16060000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000000000000000000000010d1924303b47535e6a75818d98a0a0a0a0a1a2a5a7a9afb3a99e958e827c726e665f564e453c332920160e05000000000000000000000000000000040c141c242a31363e45494f55575b6264686a696f7071717271706f6a6b6966635f5857514b474139312c261f17100800000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c9c9fa6afb5aa9f968c807570665f564f463e362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb8aea5988c81756a60564b43383028201b18191d262f38424e5965717c88969faaafa694887d71665a4e43372c20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c2f2f2f35404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000007121e2935404c57626b76818d99a2a89c91867b70645a5147383026170e050000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000000000020507070808080808080d1924303b47535e6a75818d94949494949596999c9fa6a7aca59c928e867e746f665e554c443931271e130900000000000000000000000000000000040b131921262e353a3f454a4c5257595c59606364656666656564615a5d5a57544f4b47413c373029221c160f070000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f969090969fa6afafa69a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b3a89c90857a6f635c534940382f2b252324272d363f48535c68737f8a96a6afaa9f96877b7064594d41362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2023232935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000006101b27323d47515a64707c86919ca8a1978d81756b6157494137281f1606000000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e12060000000000000004090d101213141414141414141924303b47535e6a75818888888888898a8b8e90959a9ca3aaa39c96918a80746f655d544a41372d23180f0500000000000000000000000000000000030911161e252b2f363b3f42484c4d51505557595a5a5a5a59585651524e4b4a453f3d38312d272018120c06000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90858590969fa6afaaa19a908c807570665f564f463e362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b5aa9f968c80746c63595048413a35322d2e33373c454f58636d78838f9aa6b2a89c9085796e63574b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121415181e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000020c161d2934404b56616b75818c97a0a89c91867c70645b5248393027180f06000000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f2a36424d5964707c7d7d7d7d7d7d7e7f8285898e939c9fa6a69f9c908b7f746d635a51473d32291f140a000000000000000000000000000000000000050d141b20262c3033383d404145464a4c4d4e4f4f4e4e4c4b474643403e3b35322e28221d1710080200000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f837d8690969fa6afaaa19a908c807570665f564f463e362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b9afa69c91877d716a60595149453e3c37383e40474b555f69717d88939da8b1a59a8e8377685f544a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070809121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000008121c26313c47515a646f7b86919ca7a3998d82766c62574a41382920170700000000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e120600000000000810181e2327292a2b2b2b2b2b2b2b2a2a2a35414c57626c70717171717172737476797e838a90969ea5aaa09c91877d716b61564b42392e24190c02000000000000000000000000000000000000040b11161c2125282e323536363b3f4042424343434241403c37373433302b25231e18130d07000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84787d8690969fa6afaaa19a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6bfb6aba0978f837a6f69615a544e4b474748484c51565f636e79838f9aa4adaca3978b7f7468584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000010c17222c363f4b56606a74808c96a0a79c92887d71655b52483a312818100700000000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e12060000000007101921282d32353536363636363636363532333d48525b62646666666666666768686e72777e8590949ea5aba19790847b6f645b52483e33261c12080000000000000000000000000000000000000001060c12161a1e2327292a2c3134353637373837363534312d2c292825211b18140e090300000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f8478717d8590969fa6afaaa19a908c807570665f564f463e362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b6afaaa79d948e82796f6a635e575651535352575a61636f74808c939da8b2a79c93877c7065594d42352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000040f1a26313b465059636f7a85909ca7a39a8e82776c63584b4238292118080000000000000000000000000000000914202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291e1206000000040e18212931383d40414242424242424242403d3838424b5257595a5a5a5a5a5b5b585f63666e737c8490959ea9a89e958d81756c62574c40362c22170c01000000000000000000000000000000000000000002070c0f14191c1e1f222628292b2b2c2c2b2b2a292623201d1c1a16110b0904000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d717d8590969fa6afaaa19a908c807570665f564f463e362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb9afa69f9c9f9c928e827b726e6864615a5e5f5b62646a6f757f8b909aa3acaca39a8e83776c62574c4135251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000006111d28343f4a556069747f8b969fa89d93897d71665c53493a32281910070000000000000000000000000000000814202b37424e5a65717c88949faba89d91857a6e63574c4034291d12060000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291d120600000009141e28313a41474b4d4e4e4e4e4e4e4e4d4c48423a3a42484c4d4e4e4e4e4e4f504f54575e646b707c85909ca3aca59c91867c70655950463b31261a0f04000000000000000000000000000000000000000000000104090e111212171a1d1d1f202020201f1e1d1b181312110f0b07010000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d6d717d8590969fa6afaaa19a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000000000814202b37424e5965717c88939fabb5aa9f9690969f9c938e847e79736f6a6b6a6a6b6c70747a818b9099a1aab0a79c93897e72665b52483e3328150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000030f1a25303b454f58636f7a84909ca6a49a8f83786d63584c43392a2218090000000000000000000000000000000008141f2b37424e5965707c88939faaa99d91867a6f63574c4035291d1206000000000000000000000814202b37424e5a65717c88949fabaaa096857a6e63574b4034291d12060000020d18232d38414a515758595959595959595957524b4238383d414243434343434344454a4b555b626c727e89929ca7aba0978c81756960554a3f34281d110600000000000000000000000000000000000000000000000000030507080c0f11121314151514141212100d090605030000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d636d717d8590969fa6afaaa19a908c807570665f564f463e362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000020506070909090909090909090909131f2a36424d5964707c87939eaaafa3988c8075695e52463b2f24180d090909090909090909090808060300000000000000000814202b37424e5965717c88939fabb3a89c9085909ca29c959089837e7b7876767677787c7f858c9199a0a9b5aaa0968e83776e64594b42392e241905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000005111c28333f4a555f69737f8a959ea89d94897e72665d54493b33291a11080000000000000000000000000000000008131f2b36424d5964707c8793a7b0a99d92867b6f63584c4135291e1207000000000000000000000915202c37434e5a66717d8894a0aba89c918579685f544a3e33281c1105000005101c27323d47515a61646565656565656564625b52483d32333536373737373738353b3e454b525b646e77828e9aa6afa79c90857a6f63574c4035291d120600000000000000000000000000000000000000000000000000000000000104060608090909090807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d5c636d717d8590969fa6afaaa19a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000000004090d1012131515151515151515151515151f2a36424d5964707c87939eaaafa3988c8075695e52463b2f241815151515151515151515151413120e0a050000000000000814202b37424e5965717c88939fabada1968a7e8a929ba39e9c938f8a86848281828384878b90959ba1a9b5aaa19c91867c70655d544a3b32291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000030e19242f3a454e57636e7984909ba5a59b8f83796e63574b433a29221909010000000000000000000000000000000007131e2a35414d58646f7b8797a0abaa9e93877c7065594d42362b1f1207000000000000000000000a16212d3844505b67727e8a95a1aca79c9084796d624f453b30251a0f03000007121e2935404b57616b6f70707070707070706b62574c40352a2a2a2c2c2c2c2c2c2b30333a424b545d66727e89969faaa99f95887d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d615c636d717d8590959fa6afaaa19a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000070e13181b1e1e202020202020202020202020202a36424d5964707c87939eaaafa3988c8075695e52463b2f24202020202020202020202020201f1d19150f0902000000000814202b37424e5965717c88939faba89d918679818d939da3a39d9a97918f8e8d8d8e9094979c9fa5aaafaaa19a918a7f736c62574d443a2a22180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000005101c27333e49545e68727e8a949ea89e948a7e73685f544a3e33281c1209000000000000000000000000000000000006121d2934404c57636e7a85919ca8aba094897d71665a4f43362c21160c010000000000000000000817232e3a45515d68747f8b97a2aea69a8f83776c605549352b21160b00000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c7064594d42362c221f20202020202121252a323a444c57636f7a85909ca8afa6978b7f74685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000407090911111111111111111111111111111111111111111111111111111111111111111111111111111111111111100f0d0b0702000000000000111d28343f4b57626e7985919ca8b2a69b8f84786d61535c636c717d8590959fa6afaaa19a908c807570665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000810171e2327292a2c2c2c2c2c2c2c2c2c2c2c2c2c2c36424d5964707c87939eaaafa3988c8075695e52463b2f2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a28241f19120a020000000814202b37424e5965717c88939faba89d91867a7a838f939ba2a8a8a19c9b9998999a9b9ea5a7a9aeaca79f9c908c80756e655b52483c342a1a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000109111d2934404b57636e79838f9ba5a69b90847a6e63584f453b30251a0f02000000000000000000000000000000000005111c28333e4a555f687884909ba7aea2968b7f7468584f453b30251a0f05000000000000000006111c27333e48525b6a76818d99a4b0a4998d82766a5f53483c312511070000010d1824303b47525e6975818787878787878783786c5950463c31261b141414141411161a222a343f4a55606977838e9aa6b0a4998d82766a5f53483c3025190e020000000000000000000000000000000000000000000000000000060b0f1214151d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1b1916110c060000000000111d28343f4b57626e7985919ca8b2a69b8f84786d6155535c636c717d8590959fa6afaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000000007101921282d323435373737373737373737373737373737424d5964707c87939eaaafa3988c8075695e52463b37373737373737373737373737373736332f29221a12090000000814202b37424e5965717c88939fa8a89d91867a6f7b838d929b9ea5a8a8a6a5a4a4a5a7a9aeafaaa8a29c96918a807570665e554b42392c231a090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000008121d28343e49535c66727d89939da89f958b7f73696055473f352b21160b000000000000000000000000000000000000030f1a25303b454f586b77828e99a5b0a4998d8276695f554a3f33281e150c03000000000000050e161e2a35414c57626c7884909ba7b1a8978b8074695d51463a2f23170c0000010c18232f3b46525d6975808c93939393939084796960554a3f34281d1107090909070b111a26313b4650596a76828d99a4b0a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000020a10161a1e202029292929292929292929292929292929292929292929292929292929292929292929292929292929292929272624201c160f0800000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554c535c636c717d8590959fa6afaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000000040e17212931383d4041434343434343434343434343434343434d5964707c87939eaaafa3988c8075695e524643434343434343434343434343434342413e39332b22190f0500000814202b37424e5965717c88939c9c9c9c91867a6e6f7a818990959b9da4a3a5a6a7a7a7a6a5a79f9c99928e867f7570665f564e453b32291c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4a69c90857a6f63585046372e251b1107000000000000000000000000000000000000000b16212b3546515d6974808b97a6afa89c90857a6e63574c43372f251c130d0704010205080e161e27303b46505864707c87949ea8aba197897d72665a4f43382c2115090000000b17232e3a45515d68747f8b969f9f9f9e95867a6f63574c40352b21170f09050303050c17222c3647525e6a75818c98a4afa69b8f83786c61554a3e32271b10040000000000000000000000000000000000000000000000020b131a2025292b2c3434343434343434343434343434343434343434343434343434343434343434343434343434343434343433322f2b2620191108000000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a4c535c636c717d8590959fa6afaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000000000000000009131e28313a41474b4d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5964707c87939eaaafa3988c8075695e524f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4d49433b33291f150a00000814202b37424e5965717c88919191919191867a6e696f767e848a8f9396989a9b9b9c9b9b999796918d88827c736e665f564f463d352a22180b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000a141e28333e48535c66717d88939ca79f968b80746a6056483f36271e150b01000000000000000000000000000000000000000711202c38434f5a66727d89969faaaa9f96897e72665c53483f352b221d1712100c0d1013171e262f373f4a55606974808b97a5aea89c91867b6f64584c41352a1e12070000000a15212d38444f5b67727e8995a6afaea594887d7165584f453b30271f1814110e0e11151c27323d47515a6b76828d99a5b0a69a8f83786c6055493e32261b0f0400000000000000000000000000000000000000000000000a131b232a30343738404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e3d3a36302921190f060000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a434c535c636c717d8590959fa6aeaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000000000000020d18232d38414a5156585a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a64707c87939eaaafa3988c8075695e5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58534c43392f24190e03000814202b37424e5965717d85858585858585857a6e63636e727a7f83878a8c8e8f9090908f8e8c8985817d77706b655e564f463f362d241a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000030e19232e38414c58626c77828e99a3a79c90857b6f63595046382f26160e05000000000000000000000000000000000000000006121d2935404c57636f7a85909ca8afa6998e82776d63584f453b312c27211d1b17181c1e22272f363f48515a636e7a84909ba7b0a79a8e83776a61564b4034291d120600000008141f2b36424e5965707c88969faaaea3978b8074685f554a41383028231e1c19191c1e252b34404b56616a78838f9aa6b1a59a8e83776b6054493d31261a0f030000000000000000000000000000000000000000000006101a232c333a3f42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a49454039312920160c0200111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3b434c535c636c717d8590959fa5aeaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000000000005101b27323d47515a616466666666666666666666666666666666666666707c87939eaaafa3988c80756966666666666666666666666666666666666665635c53493e33281d12060008131f2a36414d58636c717a7a7a7a7a7a7a7a7769605d64696f73787b7f8183848485848382807d7a76716d64625b554d463e362e261d140901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000005111c27323d48525b65707c88929ca7a0978c80756a6156494036271f160600000000000000000000000000000000000000000006111d28343f4a55606976828d99a5aea79c92887d71695f554a453c37302c2926222327292d31373f474f58616b737f8a959ea9aaa0978b7f74685a51473c31261b100500000006121d2934404c57636e7a85909ca8b2a79b9084796e635a51484038322e2a272424272a2f353c465059646f7b86919ca8b0a4988d81766a5e53473c3024190d02000000000000000000000000000000000000000000000b16202a333c444a4d4f5757575757575757575757575757575757575757575757575757575757575757575757575757575757575755545049423930261c110700111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e3b434c535c636c717d8590959fa5aeaaa19a908c807570665f564f463f362e261e150d0500000000000000000000000000000000000006121e2934404b56616b6f71717171717171717171717171717171717171717c87939eaaafa3988c807571717171717171717171717171717171717171716c63584d41362a1f13080006111d28333e49535c63656e6e6e6e6e6e6e6e6d605954596063676b7073757778797979787674726f6a65635c57524b453d362e261e150c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000007121e2a35404c57626b76818d99a2a89c91867b70645a5147383026170e05000000000000000000000000000000000000000000040f1a26313b46505966727e89949ea8aca29a8f83796e635e554b46403b3634312d2d3235373c42484f575f686f7b85909ca5aea79c91867b6f64584d41372d23180d0200000005111c28333e4a555f6876828e99a6afa89e948a7e736a61585049433d3835322e2e3235373f454a56606a737f8a97a0abafa6978b7f74685d51453a2e23170c00000000000000000000000000000000000000000000040f1a25303a444c54595a63636363636363636363636363636363636363636363636363636363636363636363636363636363636363615f5a524940362b20160b00111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e333b434b535c636c707c8590959ea5aeaaa19a908c807570665f564f463f362e261e150d05000000000000000000000000000000000007131e2a35414d58646f7b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8a95a1adb0a5998d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d71655a4e42372b20140800030e19242f39434c5358596363636363636363625550485055575b6264676a6b6c6d6d6d6c6b696663605958534c48423a342d261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000006101b27323d47515a64707c86919ca8a1978d81756b6157494137281f160600000000000000000000000000000000000000000000010c17222c36404b57636e7984909ba4ada89d938c80746e655e56504a46403f3c37383d4041474b52585f686e79828e959fa9aba0978d81766b61564b4034271d130900000000030f1a25303b454f5867737e8a969faaaea59c90847b6f696059534c4842403d38383d4043484f555e636f7a84909ba7b0aa9f96887d71665a4e43372c2014090000000000000000000000000000000000000000000007121e29343f4a545d63666e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50453a2f24190d00111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33323b434b535c626c707c8590959ea5aeaaa19a908c807570665f564f463f362e261e150d05000000000000000000000000000000000a16212d3944505b67727e89898989898989898989898989898989898989898a8f98a3aeb2a69b928d898989898989898989898989898989898989898983776c6055493d32261b0f00000a151f29333b43494d4e5757575757575757574a4640464a4c5257595c5e6061616261615f5d5b5856504d49433d38322a241c150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000020c161e2934404b56616b75818c97a0a89c91867c70645b5248393027180f06000000000000000000000000000000000000000000000008121c28333e4a545f68737f8a949da8ada49a908a7f736f63605955504c4b464949474b4d51565b62696e78808c929ca6aea59c91867c70655a51473d3227170d0300000000000b16212b35404c58636f7a85909ca6afa99e958e82796f6a635c57524d4c484949484c4d53585f636f75808c949ea9b3a89c90857a6f63574c4035291d1206000000000000000000000000000000000000000000000914202b37424d59636d727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78736a5f54493d32261b0f00111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e332b323b434b535c626c707c8590959ea5aeaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000000000a16212d3944505b67727e8a9494949494949494949494949494949494949495989fa8b2b5aba29b99949494949494949494949494949494949494948f83776c6055493d32261b0f0000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b363b3f42484c4d505254555656565554524f4c4b46403e39322e282119140c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000008121c26313c47515a646f7b86919ca7a3998d82766c62574a413829201707000000000000000000000000000000000000000000000000030f1a25303b454f58636e79838f9ba1aaaaa19c91877f756f6a63605858565054545156585a61636b7079818c919aa3aca99f958d81756c62574a41372d23180700000000000007111d28343f4b56606a75808c969faaaea59c928e827a716c64625b59575255545257595c63696e747f8b919aa5aeaca2988d81766960554a3f34281d1106000000000000000000000000000000000000000000000915202c38434f5a66727d8585858585858585858585858585858585858585858585858585858585858585858585858585858585858583786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33222b323b434b535c626c707c8590959ea5aeaaa19a908c807570665f564f463f362e261e150d0500000000000000000000000000000a16212d3944505b67727e8a95a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1a3a8b0b8bbb3aba6a5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8f83776c6055493d32261b0f00000009121a22292f33363740404040404040404033302c3134383d40414547494a4a4b4a49484643403f3c37332f29231e181109030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000010c17222c363f4b56616a75808c96a0a79c92887d71655b52483a3128181007000000000000000000000000000000000000000000000000000b16212b353f4a555f69727d89919ba4adaba197918a817a736e696663605960605a6164676a6f747b828c919aa1aaaaa19c90857b6f645c53483931271e130900000000000004101b26313c465059646f7b85909ca3acaca39c928e837d75706b6764625b60605b6264676d7179808b9099a1aaafa69c92887d71655950463b31261a0f04000000000000000000000000000000000000000000000915202c38434f5a66727d8991919191919191919191919191919191919191919191919191919191919191919191919191919191918f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e3327222b323b434b535c626c707c8590959ea5aeaaa19a908c807570665f564f463f362e261e150d05000000000000000000000000000a16212d3944505b67727e8a95a1abababababababababababababababababadaeb2b5b5b5b5b5b2b0abababababababababababababababababa69a8f83776c6055493d32261b0f000000020a12191f24282a2b34343434343434343428252226282e323536393b3d3e3f3f3f3e3c3a383534312c26241f19140e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000040f1a26313b465059636f7b85909ca7a39a8e82776c63584b423829211808000000000000000000000000000000000000000000000000000007111b25303b454f58646d75818c939da5aea8a19c918d847e7a75716f6a6c6b6c6c6b6f72767b80858e939ba1aaaca29a91897e726b61564b42392920170e04000000000000010c17222c37404b56616b737f8a929ca5aeaba29c948f86807c7673706c6d6c6c6d6c7073777d838c9099a0a9b5aa9f968e82776d63584840362c22170c01000000000000000000000000000000000000000000000915202c38434f5a66727d89949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b8f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271a222b323b424b535c626c707c8490959ea5aeaaa19a908c807570665f564f463f362e261e150d050000000000000000000000000a16212d3944505b67727e8a95a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa69a8f83776c6055493d32261b0f0000000002090f15191d1f202929292929292929291d1a171a1e2327292a2d30313333333332312f2c292826221d1a15100a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000006111d28343f4a556069747f8b969fa89d93897d71665c53493a32281910070000000000000000000000000000000000000000000000000000010b16212b353f48545d636f7a838f959ea5aeaba19b95908a84807d7a7978777778797b7e81858b90969ca3aaaca39c928c80756e645a51473b3229191007000000000000000008131d27323d47515a636e79828e949ea5adaba49d97918c86827e7c7978777778797c7e82888f939aa1a9b0aaa19c91867c70645c5349382f261c120800000000000000000000000000000000000000000000000915202c37434f5a66717d8994a0a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a69b8f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b1a222a323b424b535b626c707c8490959ea5aeaaa19a908c807570665f564f463f362e261e150d0500000000000000000000000a16212d3944505b67727e8a959e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9a8f83776c6055493d32261b0f000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c0f14191c1e1f22242627282827272523211e1d1b17120d0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000030f1a25303b454f58636f7a84909ca6a49a8f83786d63584c43392a2218090000000000000000000000000000000000000000000000000000000007121c252f37444a56606a707b8490959ea5acaba59e9b95908c898684838383838587898d90969c9fa6acaaa29c938e82796e635d544a41372a221908000000000000000000030d18232d37414a545f686f7b8490949da4acada7a09c97918d8a87858483838485878a8e939a9da3aab4aaa19b918a7f736c62574c4339281f160c0200000000000000000000000000000000000000000000000914202b37434e5a65717d88949fabb4b4b4b7afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a69b8f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b121a222a323b424b525b626c707c8490959ea5aeaaa19a918c807570665f564f463f362e261e150600000000000000000000000a16212d3944505b67727e8a9393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938f83776c6055493d32261b0f00000000000000000306080811111111111111111106040104090e11121316181a1b1c1c1c1b1a181512110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000005111c28333f4a555f69737f8a959ea89d94897e72665d54493b33291a110800000000000000000000000000000000000000000000000000000000020c151e27313c465059616b707c8490949ca3aaaea9a59e9b989495908f8e8e8f909595999c9fa6aaaea8a19a928e827a6f685f554d443931271a11080000000000000000000009131e27303b454f58616a707c848f949ca2aaafaaa7a09c999696908f8f8e8f9095969a9ca3a7acaea9a19a918c80756f655b52483b3329170f0600000000000000000000000000000000000000000000000008131f2b36424d5965707c8793a4adb7c0b7afa79f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b8f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b0a121a222a323b424b525b626c707c8490959ea5aeaaa19a918c807570665f564f463f362e26170e05000000000000000000000a16212d3944505b67727e878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878783776c6055493d32261b0f0000000000000000000000000606060606060606060000000000030507070b0d0f101011100f0e0c09060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000030e19242f3a454e57636e7984909ba5a59b8f83796e63574b433a29221909010000000000000000000000000000000000000000000000000000000000050e17222c364049525b626c707c848e929c9fa7abaea9a7a3a59e9c9a9a9a9b9c9fa6a4a8aaafaaa59e9b908c827a6f6a60584f453d342920170a0100000000000000000000040e16212b353f47515a626b707c838e929c9fa6abb0aba8a4a69f9c9b9a9a9b9c9fa6a5a7acb0aaa59e9b908b81796e635e554b42382b2219070000000000000000000000000000000000000000000000000006121e2935404c58636f7a86949da8b3bab0a79f9691919191919191919191919191919191919191919191919191919191919191918f84786d61554a3e33271b1000111d28343f4b57626e7985919ca8b2a69b8f84786d61554a3e33271b100a121a222a323b424b525b626c707c8490959ea5aeaaa19a918c807570665f564f463f36271f150c0200000000000000000006121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000005101c27333e49545e68727e8a949ea89e948a7e73685f544a3e33281c12090000000000000000000000000000000000000000000000000000000000000008121d263038414a535c626c707b828b91969ca1a8a9afafaea9a7a6a5a6a6a7a9afb0ada8a69f9c94908980796f69605950483f352c2419100700000000000000000000000007111b252e374149525b626b707a828a90969ca0a7a9aeb0afaaa8a7a6a6a6a7a9afb1aea9a7a09c95908980786e685f544e453a32281b12090000000000000000000000000000000000000000000000000006111d28343f4a56606a78848f9ba7b2b5aaa0969185858585858585858585858585858585858585858585858585858585858585858583786c6155493e32271b0f00111d28343f4b57626e7985919ca8aaa69b8f84786d61554a3e33271b10010a111a222a323b424b525b626c707c8490959ea5aeaaa19a918c807570665f564f46382f261c120700000000000000000006111d28343f4b56606a6f7070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706b61574b4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000109111d2934404b57636e79838f9ba5a69b90847a6e63584f453b30251a0f0200000000000000000000000000000000000000000000000000000000000000030d161f28313a424b535b626b6f797f868d91979c9fa6a6a8aaafababababaea9a7a5a49d9b96908b847e756e686059504940372f251c130800000000000000000000000000010b151e273039424b525b626a6f787f858d91979c9ea5a5a7a9afababababafaaa8a5a59e9c96918c847e746e685f584f453d352a21180a0200000000000000000000000000000000000000000000000000040f1b26313c4650596a76818d98a6afb3a89c91857a79797979797979797979797979797979797979797979797979797979797979797873695f53483d31261a0f00111d28343f4b57626e7985919c9e9e9e9b8f84786d61554a3e33271b1004010a111a222a323b424b525b626c707c8490949ea59e9ea19a918c807570665f56483f362c21160c01000000000000000004101b26313c4650596063646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464615b52483d32271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000008121d28343f49535c66727e89939da89f958b7f73696055473f352b21160b000000000000000000000000000000000000000000000000000000000000000000060f182129323b424b525a61686e747c81868c9095979a9c9fa69fa0a09fa59e9b9996948f8b85807a726d635f585049403830271e150b030000000000000000000000000000050e162029323a424b525a61686e737b81868c909597999c9fa69fa0a09fa69f9c9a9795908c86807a726d635f584f473f352d241a11080000000000000000000000000000000000000000000000000000010c17222c3644505b67727e89969faab5aaa096897d726e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594f453a2f24180d00111d28343f4b57626e79859193939393938f84786d61554a3e33271b1004000109111a222a323a424b525b626c707c849094939393939393918c80757066584f453b30251a0f040000000000000000010c17222c37404950565859595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595857524a41382e23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000040e181f2b36424d58636d77838e9aa4a69c90857a6f63585046372e251b110700000000000000000000000000000000000000000000000000000000000000000000071019222a323a424a51585f636b70767c8185898c8e909693949494949395908e8b88837f7b746f69645d554f484038302820160e0500000000000000000000000000000000061018212a323a424951575e636b6f757b8084888b8e909593949494949396908e8c8884807b756f6a645d544f473f372e251d14090100000000000000000000000000000000000000000000000000000008121e2935404c58636f7a85919ca8b3b0a7998d81766b626262626262626262626262626262626262626262626262626262626262615f5952493f352b20150a00111d28343f4b57626e79868787878787878783786d61554a3e33271b100400000109111a222a323a424b525b626b707c84878787878787878787878075695f554a3f33281c110500000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b48413a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000a141e28333e49535c66717d88939ca79f968b80746a6056483f36271e150b01000000000000000000000000000000000000000000000000000000000000000000000009111a222a323941484f555b62646c70757a7d808385868888898988878684827f7c78746f6a636059544a453f37302820180f06000000000000000000000000000000000000081119212a323940474e545a61646b7074797d80828586878889898888868583807d7a74706b63605a5449453e372e271e150c040000000000000000000000000000000000000000000000000000000006111d28343f4b56606a76818d99a3acb4a89c91867b70645d5457575757575757575757575757575757575757575757575757575755534f4941392f261b11060008131f2a36414d5964707c7c7c7c7c7c7c7c7c7064584d41362a1f1307000000000109111a222a323a424b525b626b707b7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d1206000000000000000000030d16202830373c3f40424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403d38312921180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000030e19232e38414c58626c77828e99a3a79c90857b6f63595046382f26160e05000000000000000000000000000000000000000000000000000000000000000000000000010a111a212931373f454a52575b6264696e727477797b7c7d7d7d7c7c7a797674706c6863615a555049443b352f271f170f070000000000000000000000000000000000000001091119212830363e454951575b6264686e717477797b7c7d7d7d7d7c7b797774716e6964615b565149443a352e261e160e05000000000000000000000000000000000000000000000000000000000004101b26313c46505965717d88939ca7b3aba0978d81766e645b524b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4948453f3931281f160c010007121e2a35404c57626b7070707070707070706b62574c4035291e120700000000000109111a212a323a424b525b626a6f70707070707070707070706e695f554a3f33281c110500000000000000000000060f1820272c31343536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e282119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000005111c27323d48525b65707c88929ca7a0978c80756a6156494036271f160600000000000000000000000000000000000000000000000000000000000000000000000000000109111920272f353b42484c5257585f6366696c6a6f7071727171706f6a6b6865625c5856514a464038302b251e160f070000000000000000000000000000000000000000000109111820262e353a41474b5257585f6365696b6a6f7071717271706f6e686966635f5857524b474039302b251e160e06000000000000000000000000000000000000000000000000000000000000010c17222c37404d58636d77838e9aa2abb0a79b91897e726c625b534b443a353f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3d3a352f2821180f06000005111c27323d48525b62646464646464646464625b52483d32271c10050000000000000109111a212a323a424b525a61636464646464646464646464635f584f453b30251a0f040000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e1810090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000007131e2a35404c57626b76818d99a2a89c91867b70645a5147383026170e05000000000000000000000000000000000000000000000000000000000000000000000000000000010810161e252b30383d42484c4f55575a5d5a61646565666665656360595c5958534c4b47403c363028211b150e060000000000000000000000000000000000000000000000010810161e252b2f383d42484c4f54575a5d5a606365656666666564635e575a57554f4b48413c373028201b150d06000000000000000000000000000000000000000000000000000000000000000008131d27333e49535c66717d89929ca5aeaba29c90857c706b635c5449453e36303434343434343434343434343434343434343432312f2b261f181008000000030e19232e38424b525759595959595959595857524a42382e23180d02000000000000000109111a212a323a4249515658595959595959595959595957554f483f362c21160c01000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000006101b27323d47515a64707c86919ca8a1978d81756b6157494137281f1606000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21282e32383e3f454a4c4f52515658595a5a5a5a59585650514e4c49433f3c37312c261f17110c050000000000000000000000000000000000000000000000000000050d141b20282d32383d3f454a4b4e51515658595a5a5a5a595857544e4e4c4a453f3d38312d272018110b04000000000000000000000000000000000000000000000000000000000000000000030d1a242f39434d58636d76828e959ea7b0a99f9590847c716c645d544e474139302c261f282828282828282828282828282828272624201b160f0800000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4c48423a31281e140900000000000000000001091119212a323940474b4c4d4d4d4d4d4d4d4d4d4d4d4c4a453f382f261c1207000000000000000000000000000003080c10111213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000030c161e2934404b56616b75818c97a0a89c91867c70645b5248393027180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161e23282e33363b3f404346474b4c4e4e4f4f4e4d4c4a464542413e3934312d27221c160f070200000000000000000000000000000000000000000000000000000000040b11161e23282e32353b3e404346474b4c4d4e4f4f4e4e4c4b494543403f3b35322e28221d170f070100000000000000000000000000000000000000000000000000000000000000000000000b151f29343f49545d646f7b859097a0abaea59e9590847d726d635e575149433b362f27201b151d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110c06000000000000040e18212a32383d40414242424242424241403d38312a21180e040000000000000000000001091119212830373c3f414242424242424242424242403f3b362f271f150c020000000000000000000000000000000001040606080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000008121c26313c47515a646f7b86919ca7a3998d82766c62574a41382920170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e14191f24262c30333438373c4041424343434342403f3c363736332f2926221d17120d060000000000000000000000000000000000000000000000000000000000000001060e14181e23252b30333437373c3f4142434343434241403e3a353433302b25231e17130d060000000000000000000000000000000000000000000000000000000000000000000000000006101a25303a444b56616b717d86919ca0abaea59e9590857e746e68615a534a463f38302b251e1610081111111111111111110f0f0d0a0601000000000000000008111921282e323536363636363636363635322e28211911080000000000000000000000000109111820272d31343536363636363636363636363433302c261f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000010c17222c363f4b56616a75808c96a0a79c92887c71655b52483a31281810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f14191c212528292c2d3234353737383737363534312c2b2a28241f1b18130d08030000000000000000000000000000000000000000000000000000000000000000000004090e14181b212528292b2d3134353637373837373534332f2b292825211c18140e08030000000000000000000000000000000000000000000000000000000000000000000000000000000b16202a323d47515a636d737e8a8f9ca1a8aea59e96908780786f6a635d555048423a352e262119120c06000505050505050403020000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2927231e1811090000000000000000000000000000010810171d222629292a2a2a2a2a2a2a2a2a2a2a292825211c150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305061011111111111111110a090705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000040f1b26313c465059636f7b85909ca7a39a8e82776c63584b4238292118080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12161a1c1d202326292a2b2b2c2c2b2b292826221f1f1d1915100d0803000000000000000000000000000000000000000000000000000000000000000000000000000004090b11161a1c1d20222629292b2b2c2c2c2b2a292724201d1c1a16120c09040000000000000000000000000000000000000000000000000000000000000000000000000000000000061018232d38414a535d646e737f8a9197a0a7aea69f97918b827b716d6360585249453e373129221c160f0701000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1e1c18140e080000000000000000000000000000000000060d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f11121b1d1d1d1d1d1d1d1d151513100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000006111d28343f4a556069747f8b969fa89d93897d71665c53493a32281910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f111213181b1d1e1f202020201f1e1d1b171213110e0a040200000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f111213171b1d1e1f202020201f1e1d1c191611110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313a434c555e656e737f8791979fa6aea8a19c928e847d756e69625b544f47413a312c261f17110902000000000000000000000000000000000000000000040a0e111213131313131313131312100d09040000000000000000000000000000000000000003080d101212131313131313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161a1c1d27292929292929292921201e1b16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000030f1a25303b454f58636f7a84909ca6a49a8f83776d63584c43392a2218090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506090d10121214141515141312110f0c08080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080d1012121414151514141211100e0b0605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172129333c444d555e656e737e8690969ea5acaba29c9490878079706c635f58524a443b362f282119130701000000000000000000000000000000000000000000000305070808080808080808070705020000000000000000000000000000000000000000000000020406070808080808080808080808060504010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b212528293334343434343434342d2c2926201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000005111c28333f4a555f69737f8a959ea89d94897e72665d54493b33291a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607080909090908060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070809090909080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b343d454e555e656e727e8690959da3aaaba59e97918c837c736e68615b544a464038312a231b110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252b3033343e4040404040404040383734302a241c130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000030e1a25303a454f58636e7984909ba5a59b8f83796e63574b433a2922190901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242c353d454e555e646d727d848f939aa1a9aea8a19c938f867f78706b645d555048423a332c201b150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060707070707070707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f353b3e404a4b4b4b4b4b4b4b4b44433f3a342c24160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000005111c28333e49545f68737e8a949ea99e948a7e73685f544a3e33281c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000305060605030000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608080c0e0e0d0a0606040100000000000000000000000000000000000000000000000000000000000000000000020b141c242d353d454d545d636c717b838c919c9fa6acaba49d96918b827b726e636059524b443c302b251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f1112121212121212121212110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f373f454a4c5557575757575757574f4e4a443d34271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000006111d2934404b57636e79838f9ba5a69b90847a6e63584f453b30251a0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080a0c060b0e101112110f0b070d0b0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131418191a191612110f0c0803000000000000000000000000000000000000000000000000000000000000000000030c141d242d353d444c545c636b7079808990959ca3abada7a09c928e857e756f69625b544c453a352e261f170f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1e1e1e1e1e1e1e1e1d1d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f484f55576163636363636363635b59544d44372f251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000007121d29343f49535d66727e89939da89f958b7f73696055473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050a0e11131316181116191c1d1d1c1a161219161412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000003080f15191d1f1f23252624221e1d1b17120d06000000000000000000000000000000000000000000000000000000000000000000040c141c242c343c444c535b61696e757e858e939ca0a7adaaa39c959089817a706b635d5549453e372f271f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222628292929292929292929292825211c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f636c6e6e6e6e6e6e6e6e66645d54483f352b21160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000008141f2b36424d58636d77838e9aa4a69c90857a6f63585046372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1114191c1e1f22232520242729292825212624221f1d1c1a16110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000060d12171f24282a2b2f3131302d292826221d160f07030000000000000000000000000000000000000000000000000000000000000000040c141c242c333b434a525960636e727b828b91979da4abaca69f9c918d837c726d655e544f473f382f271f160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c31343535353535353535353533302c261f170f05000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f686e787a7a7a7a7a7a7a7a726e64584f453b30261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0006111d28333e49535c66717d88939ca79f968b80746a6056483f36271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c12161a1c1d24272a2b2d2f312b2f33343433302b31302d2b292825211c1a16110b070200000000000000000000000000000000000000000000000000000000000000000000070f161d22292f3336363a3c3d3c393534312c262018130b040000000000000000000000000000000000000000000000000000000000000000040c131b232b323a414850555d646b707980868f949ba1a9aea9a19b938f857e736f635f584f483f382f271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f404040404040404040403f3b362f271f160c020000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a8385858585858585857e72685f554a40362c21170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0008131f2a36414c58626c77828e99a3a79c90857b6f63595046382f26160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e14181c212528292e333536393b3c353a3e40403f3b353d3b39373433302b2825201b17120c050000000000000000000000000000000000000000000000000000000000000000070f1820262c31393e41424648484744403f3c373028241c140c040000000000000000000000000000000000000000000000000000000000000000030b131a222931383f464a545b61686e747d848d919c9ea5acaaa49d9590877f756e685f5850483f372f251b110702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c4c4c4c4c4c4c4c4c4c4a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68727e899391919191918f83796e635950463b31271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0008141f2b37424e5965707c8892939393978c80756a6156494036271f160600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070e13181e23252b303334383e41424446484945494b4c4a454a48474542403e3b3533302b25211c160f08030000000000000000000000000000000000000000000000000000000000060f18202830373c43494c4e52535453504c4b464038342c241c140a020000000000000000000000000000000000000000000000000000000000000000020a121921272f363b444a52585f636c717a818990959ca3abada69f97918b80786e69605950483f352b211b120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3640485055575858585858585858575550483f362c21171006000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e78838f9aa39c9c9d948a7e736960554a40372c22170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000e1925303c48535f6a7681878787878787867b70645a5147383026170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161d23282e32353b3f4043484c4d505253554e545757554f555453504e4b4a45403e3a35302c261f17130d07000000000000000000000000000000000000000000000000000000030d162028303840464b5358595d5f605e5c58565049443d352d241a1209000000000000000000000000000000000000000000000000000000000000000000010910171f262c303a41474f545c636a6f757e858e929ca1a8afa7a09c918c81796e6960584f453b302b22170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596063636363636363636363605950463b302a20150b000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f49545e68727d89929ca7ada49b90847a6f635950463c31271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0007131f2a36414d5964707c7c7c7c7c7c7c7b706b6157494137281f16060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b20272d32383d3f454a4c4f5257595b5d5f61615e63635f6261605e5c5957544f4b49453e3b362f27221d171008010000000000000000000000000000000000000000000000000008121d263038404950565c6265696b6b6a67636059544d453d352b22190f0500000000000000000000000000000000000000000000000000000000000000000000070f161c212931373f454a535960636e727b828b91979fa6adaba19a928d81796e685f554a453b33271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6e6960554a433a2f251a0f0500000000000000000000000000000000000000000000000000000000000000000000000007111b252f3a454e57636d77828e9aa2aba99e948b7f736a60564b41372d23180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0007121e2935404c57626b70707070707070706b625b5248393027180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020911161e252b30373d41484b4f55575b5b626467696b6c6d686e6e696e6d6b6a6765635f5857544f4a463f38312d2720181109010000000000000000000000000000000000000000000000010c17222c374049505960636c7074767776736f6a645d554e453b33291f150a0000000000000000000000000000000000000000000000000000000000000000000000050c121921272e353b434950565d646b6f79808790959da4acaaa29b928d81796e635e554c43372f251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a7a7a7a7a7a7a7a7a7a6e635d53493f34291f150a000000000000000000000000000000000000000000000000000000000000000000000000020c16202b353e47545d65717d88929ca8aea59c90857a6f635a51473c32281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0005111c27323d48525b626464646464646464625b524a413829201707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a121921262e353a41474b5257585f63666a6c707374767879797a7a7a7978777573716e6866635f58555048443c373029221a120a0100000000000000000000000000000000000000000000040f1b26313c465059606a6f767c808282817e7a726e655e554c43392f24190e040000000000000000000000000000000000000000000000000000000000000000000000020710161e252b303840464a545a61686e747e858f949ca3ababa29b928d81756f655c53483f352b21160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f868686868686868683776d63584d42392f24190e0400000000000000000000000000000000000000000000000000000000000000000000000006111b252e36444d58636d76828e97a1aba99e958b80746a61564b42382e23180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00030e19232e38424b5257595959595959595857524a423a31281810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131b222a31373e454951565b6164696e7276797c7e8082838485858685858482817f7c7976726e68636059544b474139322a221a120a0100000000000000000000000000000000000000000006111d28343f4b56606a6f7a81888b8d8e8d8a847e736e655c53493e33271e130900000000000000000000000000000000000000000000000000000000000000000000000000060e151b212830363c444a51585f636d727c848e939ca2ababa29b918b7f746d63584f453b30271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636e7a8490929292929293887d71665c53483e33281e1409000000000000000000000000000000000000000000000000000000000000000000000000010b141e26333e49535c65707c87919ca7aea59c90857b6f645b52483d32291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000009141e28313a42484c4d4d4d4d4d4d4d4d4c48423a31292118080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131c232b333a42474f545a61646b7074797e8184878a8c8d8f9090919791908f8e8c8a8884817d79736e69645d565149423b322b221a1208000000000000000000000000000000000000000006111d28333e49535c636f7a838d91979999989590897f736c63584d41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000050b11181f262c313a41474f545d646c707b828e929ca2abaaa19c91867d71695f554a40372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a556069747f8b969f9d9da3998e82776c62584c42382e23180d03000000000000000000000000000000000000000000000000000000000000000000000000040d16242f39434c57626c76818d96a0aaaa9f968c80756b62574c42392e24190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000040e18212a31383d404142424242424241403d38312a21191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c343b434a52585f636a6f757b8084898d90959597999b9b9c9ca09c9c9b9a989695908d89847f7a726e63615a524b433b322a221810070000000000000000000000000000000000000008131f2a36414c58636c76818d939ba2a5a5a59e9c91867d71655a51473d32271b1005000000000000000000000000000000000000000000000002040607080808080808080806050301070f161d222931373f454a545b626a6f7a828e929ca3acaba0978f83796e635a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465059636f7a85909ca7b0a79c92887c70655b52483d32271d1308000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333e48525b64707c86919ca6afa69c91867b70645b52483e33291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000008111921282e3235363636363636363635322e28211911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b343c444c535b62686e737b80868c9095989b9ea5a3a5a6a7a8a8aba8a8a7a5a4a59f9c9894908a847e766f6a625b534c433b322920170d0300000000000000000000000000000000000008141f2b37424e5965717c88919ba4abb0b1aea9a0978e82776b61564b4034291d120600000000000000000000000000000000000000000003080d101212141414141414141412110f0b07060d121921272e353b444b525a61696f79828e939ca5aea79d948b7f736a61564b3f34291e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f4b56606a75808c96a0aaaca2998d81766b62574c41372d22180c03000000000000000000000000000000000000000000000000000000000000000000000000050f19242e39424c57626b75808c969faaaaa0968d81766c62574c43392f24160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b000000010911181e2327292a2a2a2a2a2a2a2a2927231e1811090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e182129333c444d545c636b70787f858c91969b9ea5a7a9aea9a7a5a4a3a2a2a2a4a5a7a9aea9a7a59e9b949089817a706c635c534b423930271d13080000000000000000000000000000000000010c18232f3b46525d6975808c97a2abb4bbbcb8b0a79c92867b6f64584d41352a1e13070000000000000000000000000000000000000000060d13181b1d1e1f1f1f1f1f1f1f1f1d1c1a16110b050810161e252b303a424a515960696f79828e959ea9ada49c90857b6f63584c42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c47515a646f7b86919ca8b1a89c91867b70645a51473c31261c1208000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323d48525b646f7b85909ca6afa79c91867c70655c53493e33261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000001080e14191c1e1f1f1f1f1f1f1f1e1e1c18140e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a434c545d646d717c828a90969ca0a7a9aca7a6a59f9c9a9897979697989a9c9fa6a7a9aea8a59e9b928d847c716c635c534941372d22160e0500000000000000000000000000000000030e1a26313d4854606b77828e9aa5b1bbc4c8c0b8aca394897d71665a4f43382c201509000000000000000000000000000000000000000810171d222629292b2b2b2b2b2b2b2b292825211b150e06060e151b212a32394149505860696f7b84909ba3aca99f958a7f73675b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17222d37404b56616b75818d97a1ababa0978c80756a61564b40362c22170c02000000000000000000000000000000000000000000000000000000000000000000000000050f18232e38424b56616b74808c959fa9aba0978d82766c63584d44362e251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606121e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000004090e1112131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414a535c646e727d858e929c9fa6aaaba8a39c9a9695908e8d8c8b8b8b8c8e9095979c9fa6aaaea9a29b948f857d716c625a51473c31271e150c02000000000000000000000000000000040f1b26323e4955606c77838f9aa6b1bdc9cfc4bab0a795897e72675b4f44382d21150a00000000000000000000000000000000000006101820272d31343536363636363636363433302b251e160e05050b111a2229303840485059616a727e89939ca7afa69a8f83776c62574c40352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27323d47515a64707c86919ca8b0a79c90857b6f635950463c31251b11070000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d47515a636f7a85909ca5aea79b92887d71655d54473e352b20160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f1112131e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000305070708080808080807070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b636d727e8690959ca3aaaca8a19c98938e8b8784838180807f80818285888c90959c9fa6acaba49d9590857c706a61564b44372f251b1107000000000000000000000000000000030e1a25313d48545f6b77828e99a7b0bac3c7bfb5aaa096887d71665a4e43372c2015090000000000000000000000000000000000030d17202830373c3f414242424242424242403e3b352e271e150b0101071118202830384048515a646e77838e9aa7b0a79d93877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d38414c57626c76828d99a3acaa9f968b80746960554a3f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000040e18232d37414b56606a747f8b959ea9aba29a8e82776d63574e453a2f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d1e1e1e2935404c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b717d8691969ea5acaba39c97918d88837f7c797775757474747577797c80858b90969ca3aaada69f9590847a6f635d54483f352b21160b000000000000000000000000000000000c17232e3a46515d68747f8b96a0aab5b9bbb6aea59c91857a6f63584c4035291e1206000000000000000000000000000000000008131d27303940474b4c4e4e4e4e4e4e4e4e4b4a453f372e251b110700010810171f272f38414a545d67737e8a96a0aaaca3958a7e73675b5044392d21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28333e48525b65717d88939ca7afa69c90847a6f63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000009131e27313c47515a636f7a84909ba4ada79c92897d71685e54493f352b21160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161d222628292a2a2a35404c57636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000306080811111111111111111106040100000000000000000000000000000000000306090b0c111111111111111111110d0605030000000000000000000007131e2a36414d5864707b8590969fa7aea7a09c938e87817c7773706c6c6a696868696a686e71757a7f858e939ba1aaafa69e948d82766d64584f453b30251a0f0300000000000000000000000000000007131e2a36414d5864707b86919ca2a9afafaca69e958d81766a60564b3f34281d110600000000000000000000000000000000020d18222d374049515658595959595959595957544f473f352b21160b000000070f171f283139444c57636f7a85919ca8afa3988c8175695e52473b2f2412080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e38424d58636d77828e9aa4ada99e958a7f73685f554a3e332820160b00000000000000000000000000000000000000000000000000000000000000000000000000040e17222d37404a556069737f8a949da8aca39a8f83786e63584f453b30261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262c31343535353535404c57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000000000080d121517171d1d1d1d1d1d1d1d1d1d1912110f0b07020000000000000006111d2934404b57636e78818c919aa1a7a097918b827c76706c6865625b5e5d5d5c5d585f6365696f747c828c919ba1aaaea59c92897e72685f554a3e33281e140900000000000000000000000000000007121e2935404b57616b747f8b919c9fa6a3a39c9590857b6f645950463c31261b10040000000000000000000000000000000004101b26313c47515a61636565656565656565635f584f453b30251a0f03000000060f172029343f4a55606977838f9aa6b1a69a8f83776c605549362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28333e49535c66727d89939da8aea59b8f84796e63574c433a2f251a0f050000000000000000000000000000000000000000000000000000000000000000000000000008131d27313b465059636e79848f9ba4ada89d93897e72685f554a40362c21170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16202830373c3f4041414141414c57636f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000010612181c20222329292929292929292929241d1c1a16110c0500000000000005101c27333e49545e686e78808c919a9f9691878079706c65625c59575253525151514f54575960636b7079818c919ba3acaba29b8f84796e63574c41382e23180d02000000000000000000000000000005101c27323d48525b636e78818b9095979897938e857d716b61574940372c22170c010000000000000000000000000000000006121d29343f4b56616a6f70707070707070706e685f544a3e33281c11050000000007101b26313c4650596975818c98a3afa79b9084796d5950463b31261a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242f39434b57636e79838f9ba5aea89e94897e72675d54493f34291f150a00000000000000000000000000000000000000000000000000000000000000000000000000030d17222c36404a555f69727e8a939da8aca39b8f83796e635950463b31271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26303840464b4c4d4d4d4d4d4d57636f7a86919da9a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000040b111622272b2e2e3434343434343434343430292825211b150e060000000000030e19242f3a454e575e686e78808c919691867e746e68625c57534d4c48474646454645494b50555b62696e78808c939ca7afa89d94897e72675b52483d32271c10050000000000000000000000000000020d18232e384149545e686e787f858a8c8c8b88827c716d635a51473930271d1308000000000000000000000000000000000007121e2935414c58636f7a7c7c7c7c7c7c7c7c796e63574b4034291d120600000000010c17222c3645515d68747f8b97a2aea89c9185796960554a3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f27333e49545e68737e8a949ea9ada49a8f83786d63584d43392f24190e040000000000000000000000000000000000000000000000000000000000000000000000000008121c26303b454f58636e79838f9aa3aca89d948a7e736960554a40372d22170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404950565858585858585858636f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000000050d141b202c3236393a404040404040404040403b3433302b251e160e0500000000000b16202b353e474e575e686e78808c91867d726e635f58534c4842413e393b3a3a353a3e40464a52585f686e79828e969faaada49a8e83776b61574b4035291e120700000000000000000000000000000009141e282f3a454e575e686e737a7e80817f7c77706c635c534a41382820160d0300000000000000000000000000000000000a16212d3844505b67727e87878787878787867b6f64584c41352a1e120700000000000812222d3945505c67737f8a96a1adaaa096867a6f63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba6afa89d93897d71665c53493e33281e140900000000000000000000000000000000000000000000000000000000000000000000000000020c16212b353f49545f68727d89939ca7ada49b90847a6f635950463c31271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606364646464646464646f7a86919da9a2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000060e161e252b2f3c4144464b4b4b4b4b4b4b4b4b4b47403e3b352f271e150c020000000006111b252e363e474e575e686e7880867e726d645d554f48433e3935332e3333332b3033363c42484f575f68707c86919ca7b0a79c93877b7064584d41362a1e1309000000000000000000000000000000040e16202b353e474e575e636a6f72747574716c64625b534c433a3128180f060000000000000000000000000000000000000a15212c38434f5b66727d89939393939393877b7064594d41362a1f140900000000000a16212d3944505b67737e8a95a1acb0a792867b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a555f69737f8b959fa9ada49a8e82776c63584c42382e23190d030000000000000000000000000000000000000000000000000000000000000000000000000007121c25303a454f58646d77828e9aa2aba99e948b7f736a60564b41372d23180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a6f6f6f6f6f6f6f6f6f6f7a86919da9a2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c120700000000070f171e262e353a464c505157575757575757575757534c4a453f372f251b110700000000010b141e262e363e474e575e686e787d726e645d544a453f3736393b3d3e3e3f3e3d3c3a3835373f474f58626b74808c97a0aaaca3968a7f73685c5045372d23180d0200000000000000000000000000000006111b252e363e474e545a60636769696865635c57524b433b3329211807000000000000000000000000000000000000000914202b37434e5a65717d8894a69f9f9f94897d71665a4f43382e2319110a050302050a17222e3945515c68737f8b96a2adaba197867a6f63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b25303b454f58636f7a85909ca6afa79c92887c71655b52483d32271d130900000000000000000000000000000000000000000000000000000000000000000000000000020c16202b353e47545d65717d88929ca8aea59c90857a6f635a51473d32281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a7b7b7b7b7b7b7b7b7b7c87939eaaa2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c010000070f171f272f363e4549565b5d636363636363636363635e57554f483f352b21160b0000000000040d161e262e363e474e575e686e716d645d544c443b3e4042454648494a4a4a4948464441403c3f48525b646f7b86919ca8b0a5998d82766b5a51473d32271b1005000000000000000000000000000000010b141e262e363e45495156585b5d5e5d5a58534c48423a332b221910070000000000000000000000000000000000000007131e2a35414d58646f7b87969faaaaa2968b7f74685b52483d3229211915100e0d10141a26313b4650596974808c97a3aea89c9185796e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16212c363f4a56606a74808b969faaaca3998d81766b62574c41372d23180d030000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37444d58636d76828e97a1aba99f958b80746a61564b42382e23180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d687480878787878787878787878c96a0ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040008101820282f373f474e545f66686e6e6e6e6e6e6e6e6e6e6a635f584f453b30251a0f030000000000050d161e262e363e474e575e6365635c544d443e45494b4d505254555556555553514f4c4b4741424b56616b77828e99a5b0a79b9084796b61564b4034291d120600000000000000000000000000000000040d161e262e353a40474b4c505252514e4d49433e38322a221b1209000000000000000000000000000000000000000006111d2934404b57636e7985909ca8b1a59a8e82776b62574c433a312a241d1c19181c1f242c343f4a55606977828e99a5b0a79b908478685f54493e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7b0a89c91867c70645a51473c32261c120800000000000000000000000000000000000000000000000000000000000000000000000000010b151e26333e49535c65707c87919ca7aea59c90857b6f645b52483d32291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b929292929292929293969da6ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d11060911192028303840484f575e636f747a7a7a7a7a7a7a7a7a7a756e685f554a3e33281c1105000000000000050d161e262e363e474e54575a58534c44494c4e5457595c5e5f60616161605f5d5b5856514c4a47515a67737f8a96a7b0a99e95867b6f64584d41352a1e130700000000000000000000000000000000000b15202a333c43494d4e4f4f4f4f4f4f4f4d4c48423b32291f140a000000000000000000000000000000000000000005101c27333e49545e6877828e99a5b1a89c91867c70645c534a423a332f2927242327292e333b454f58636f7a85919ca8b1a59a8e83776b584f453a30251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17222c36404b56616a75818c97a0ababa0978c81756a61564b40362c22170c0200000000000000000000000000000000000000000000000000000000000000000000000000040d16252f39434c58626c76818d97a0aaaa9f968c80756b62574c42392e24190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b979e9e9e9e9e9e9e9ea0a6b1ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1209111921293139404850585f686e757f8585858585858585858581796e63574c4034291d120600000000000000050d161e262e363e45494b4e4d49494d5358575e636567696b6c6d6d6c6c6b696663615a5755504e5965707c8897a0abaea594887c71655a4e42372b20140800000000000000000000000000000000040f1a252f3a434c53585a5b5b5b5b5b5b5b5957524b42382e24190e0300000000000000000000000000000000000000030e19242f3a454e5768747f8b96a3acaba1978c81756d635a524a443e3934332f2e3235393e454a555f69727e89969faab0a7988c8075695e5246352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26323c47515a64707c86919ca8b0a79c91857b6f645950463c31251c120700000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333e48535c64707c86919ca6afa69c91867b70645b52483e33291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2a6a6a6a6a6a6a6a6a6a6a6a2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d12121a222a31394149505960696e78808b90919191919191908b80786e685f554a3e33281c11050000000000000000050d161e262e353a3e4043474b53585c6365686e7073757678787978777674726f6a676360585557636e7a85919ca8aca195897e72675b4f44382d21150a0000000000000000000000000000000007121d28343f49535c63666767676767676765625b52483e33271c110600000000000000000000000000000000000000000b16202b35414d5964707c87939ca7b1a89c91877d716b625b544d4943403e3a383d4042484c555d636e79838f9ba6afaaa096897e72665b4f44382d21110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d99a4b0aa9f968b80746960554a3f352b21160b0100000000000000000000000000000000000000000000000000000000000000000000000000061019242f39424c57626b75818c969faaaaa0968d81766c62574c43392f24160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b979a9a9a9a9a9a9a9a9a9a9a9a9a968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d121b222a323a424a515960696f79818c9199a09c9ca097918a7f756e685f584f453b30251a0f03000000000000000000050d161e252b2f3c444a51565d63666c7175797c7e8082838484848382807e7b77736e69635f585f697984909ba7ada1968a7f73675c5045392e22160b0000000000000000000000000000000008141f2b36424d58636d7172727272727272706c62574c41352a1e1207020000000000000000000000000000000000000006111e2935404c57626b77838e9aa3acaba19790847b706b645e58534e4b494549484b4d52575e656e74808b949da8b3a89c91857b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b66727d8995a0acafa69c90857a6f63584f453b30251b110600000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323d48525b646f7b85919ca6afa79c91867c70655c53493e33261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1b232b333b424a525a616a6f7a818d919aa1a9a69f9691877f746f635e574f483f352b21160b000000000000000000010b141e262e353a464d545a61646d71777c8084878a8c8e8f8f908f8f8d8b8986827e7a736e68635c6c78838f9aa6ada2968b7f74685c51453a2e22170b000000000000000000000000000000000914202c37434e5a66717d7e7e7e7e7e7e7e7c7065594d42362c211b110c0500000000000000000000000000000000000005111c27323d48525b66727e89939da7b0a89e958f837c726e65635c5957544e545257585b62656f737e899099a4adaca3998d82766a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57626b76818d99a4b0b4a99f958a7f73695f554a3e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000050f19232e38424b56616b74808c959fa9aba0978d82766c63584d44362e251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737f83838383838383838383838383838383837e72675b5044382d21160a0000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d242c333b434b525b626a6f7a828e929ba2aaa69f9690867e736e655f544e473f372f251b110700000000000000000006111b252e363e4549565d646b6f767d82888c90959698999a9b9b9b9a999797918e8a847f79716c656c77838e9aa5aea2978b8074685d51463a2e23170c000000000000000000000000000000030f1a26313d4954606b7782898989898989898074695850463b302b211b150e060000000000000000000000000000000000030e19232e38424b57636e78838f97a0abaea59d948f857e76716c6865635e57605b6164676c70767f86919ca0a9b0a79c93897d71665a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a64707c86919ca8b4b9afa69b9084796e63574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323d47515a636f7b85909ca5aea79c92887d71655d54473e352b20160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5a656e737777777777777777777777777777777777726e64594e43372c2015090000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c403529242c343c444c535b626b707b838e939ca2aba59e9590867d726e655e5649453e362f271e150c02000000000000000007121a202b353e474e545f666d727b81888e92989b9ea5a3a5a6a6a7a6a6a5a7a09c9a95908a837d736f6b77828e9aa5aea2978b8074695d51463a2f23170c000000000000000000000000000000030f1a26313d4954606b77838e95959595958d81756960554a433b302b251e161008020000000000000000000000000000000009141e27333e49545e68717d87919ca3acada49d95908a827c7773706e686c6c6c6b7073767c828b9197a0aab5aba0978e83776d63584940372d22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151d2934404b56616a75808c97a0abb6bfb4a99e948a7e72685e54493e33271f150a0000000000000000000000000000000000000000000000000000000000000000000000000000040e18232d38414b56616a747f8b959ea9aba29a8e82776d63574e453a2f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d544a40352a1e13080000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035292d353d444c545c636c707c838f939ca3aba49e9590857d716d645d554e453a352e261e160e050000000000000000060f18222b2f3a454e575e636f747e858d929a9ca3a7a9aeaeaea9a7a6a6a6a7a8aaa8a59e9b938f867f756e77828e9aa5aea2978b8074695d51463a2f23170c000000000000000000000000000000020e1925313c48535f6b76828d99a0a0a09b90847a6e635d534c443b352f272019120a03000000000000000000000000000000030e19242f3a454e57636c74808b929ca3acada69f9c928d88827f7c7978777778797b7e82878d929ca0a7b0aba29c91867c70655d54493930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c465059646f7b85919ca7b0babeb8aea59b8f83796e63574b43392f24190e04000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313c47515a636f7a84909ba4ada79c92897d71685e54493f352b21160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313b454d555a5c60606060606060606060606060606060605b59544d443b30261b10050000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40352b303d454d545d636c717c848f949da4aca49d948f847c716c635d544d453d2f2b251e160e060000000000000000030d161f28333b4349545e686e75808790959ba2a7acada8a6a2a59e9c9b9a9a9b9ca0a7a5a8a49d97918b807877828e9aa5aea2978b8074695d51463a2f23170c000000000000000000000000000000000c18232f3a46515d6974808b97a4ada99e948b80746d635c544a453f373129221a1406010000000000000000000000000000000b16202b353e47535c636e79828e939ca3abafa9a29c99928e8b88858483838484878a8d91979ca2aab0aaa29b928b80746c62584c433a2820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a55606974808b969faab8b4b2b4b3a89d93897d72665c53493e33281e140a0000000000000000000000000000000000000000000000000000000000000000000000000000040e18222d37414a556069737f8a949ea8aca39a8f83786e63584f453b30261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212b343d454b4f505555555555555555555555555555555555504e4a443d342b21160c010000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035353a464e555d646d717d8590959da4aca39c938f847c706c635c544c443d352d201b140d0500000000000000000008121d263038434c555e636e78808b91979fa6abaca7a49d9b979495908f8e8f8f919696999ca0a7a09c918c8077828e9aa5aea2978b8074695d51463a2f23170c000000000000000000000000000000000914202c37434e5a65717d88949da8aea59c91877d716d645e554f484139332b241c110b04000000000000000000000000000006111b252e36434a545f686f7a828e939ba1a9aeaba6a39c9a969690908f8e8f909595999ca1a8abaea9a19a928d81786e635c53493c332a18100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca6afaea9a7a9aeada49a8e82776c63584d42382e23190e04000000000000000000000000000000000000000000000000000000000000000000000000000008131d27313c465059636e79848f9ba4ada89d93897e72685f554a40362c21170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d343b40434449494949494949494949494949494949494443403b342c241a1107000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40373e4549565e656e727e8690959ea5aba29c938e837b706b625b534c443c342c241c110b04000000000000000000010c17222c364049535c656f75808c919ca1a8afaaa39c9a948f8b8886848383838485878a8e91979ca0a19a918a7f828e9aa5aea2978b8074695d51463a2f23170c0000000000000000000000000000000006111d2934404b57636e79838f9ba3acaba09790857d726e635f58514a433b342c201b140d0500000000000000000000000000010b141e26303b454f58606a6f7a828d919c9fa5aab0aca7a5a69f9c9b9a9a9b9c9fa5a5a8abb0aaa59e9c918c81796e685f544b43392b231a08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68737f8a959fa9aea59e9b9ea5aea79c92887c71655b52483d32271e13090000000000000000000000000000000000000000000000000000000000000000000000000000030d17222c36404a555f69727e8a939da8aca39b8f83796e635950463b31271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b313538393d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d383735302b241c130a01000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c403f474f545f666e737e8690969fa6aaa29b928e827a6f6b625b524b433b332c241c14060100000000000000000000040f1b26313c465059636c737f8a909aa1abaea69f9c938e8983807d7a79787778787a7c7e82868c91979da19c918684909ba7aea2978b8074695d51463a2f23170c0000000000000000000000000000000005101c27333e49545e68727e89929ca5aea79f9590867e756e68615a534c443d2f2b251e160d0400000000000000000000000000040d16212b353f475059606a6f79818990959ca0a7a9aeb1afaaa8a7a6a6a6a7a9aeb0aea9a7a09c95908980796e6960584f453b32291b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109121d2934404c57636e7984909ba5aea59e9490949ea8aca3998d82766b62574c41372d23180d03000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303b454f58636e79838f9ba3aca89d948a7f736960554a40372d22170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b21262a2c2d32323232323232323232323232323232322d2c2a26211a130c0300000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40484f585f636f747f8791979fa6aaa19a918d827a6f6a615a524a423b332b231b130b0400000000000000000000030d172029343f4a56606a717d86919ca1aaaea59e96908a827d7874716f6a6c6c6c686e7073767b80868f939ba0969190959ea9aea2978b8074695d51463a2f23170c00000000000000000000000000000000030e19242f3a454e57646e77828e959ea6afa69f96918a80796f6a635c554d463a352e261e140b010000000000000000000000000007111b252e374049515a60696e757e858c91969b9ea5a5a7a9afababababafaaa8a5a59e9c96918c847e756e69605850473e352b22190b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121e29343f49545d67727e8a949ea8a99e9590849097a1aba89c91867c70645a51473d32261d12080000000000000000000000000000000000000000000000000000000000000000000000000000030d16212c363f4a545f68727e89939ca7ada49b90847a6f635950463c31271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b11171b1f2122262626262626262626262626262626262621201e1b16110a030000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4850585f686e75808a9197a0a7a9a19a918c81796f69615a514a423a322a221b130b03000000000000000000000009131d27323d48525b636f7a848f97a0abaea59e9490857f78716d686563605960585f6364676b6f757c838d919ba09c9b9ea5aeaea2978b8074695d51463a2f23170c00000000000000000000000000000000000b16202b353e47545d646f7b8490969fa7afa79f9c908c827b716c645e5649453e362e251b110602000000000000000000000000010b151e2730384049515860636e727b80868b909597999c9fa69fa0a09fa69f9c9a9795908c86817b726e635f5850483f372e251a120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18202b37424d59636d78838f9aa5aea69c90847c87919ca8aba1978c81756b61564b40372c22170c02000000000000000000000000000000000000000000000000000000000000000000000000000007121c26303b454f58646d77838e9aa3aca99e948b7f746a60564b41372d23180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101415161b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b161513100c0701000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c515960696e78808b909ca1a8aba099908b80786e69605951494139312a221a120a020000000000000000000000020d18232d37404c57626b74808c949da7afa69e9490847c736e68635d5a585650554f5457595a61646c707a818d919ba3a7a9aeb5aea2978b8074695d51463a2f23170c000000000000000000000000000000000006111b252e36444b56616b717d8590969fa6adaaa19a928e847d736e665f544e473e352b201b130900000000000000000000000000050e1620283039404850555d646a6f757b8084888b8e909593949494949396908e8c8884807b756f6a645d554f483f382f261e150a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e49535c66717d89939da8aa9f968b8076828d99a3aca89c91857b6f645950463c31261c12070000000000000000000000000000000000000000000000000000000000000000000000000000020c16212b353f47545d66717d88929ca7aea59c90857a6f635a51473d32281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0a0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0a090805010000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6357515a60696f79818c9199a0aba7a09c908b80756e685f58504940393129211911090200000000000000000000000005101b26313c47515a64707c86919ca4adaa9f9690847c706c635e57544e4c4a4649454a4b4d51575b62696f78818d929ca5aeb8baaea2978b8074695d51463a2f23170c0000000000000000000000000000000000010b141e26323d47515a636c717d8690959da4abaaa39c9490867e746f635e574e453a2f2c2319100700000000000000000000000000060f18202830383f464a545a61636b6f74797c80828586878889898888868583807d7a75706b63615a544a453f372f271f160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38414c58636c77828e9aa4ada89c91857b717d88939da7aa9f968b80746a60564b3f362c21160b01000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37444d58636d77828e99a2aba99f958b80746a61564b42382e23180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63575a616a6f7a828d919aa1a9a79f97918a7f746f635f584f484038302820191109010000000000000000000000000006121d2934404b56616a75818c96a0aaaca39c90857c706b625c544e4743403f3c363b3e4042474b525960686e79828e959ea9b4baaea2978b8074695d51463a2f23170c000000000000000000000000000000000000040d16232d37414a535c636d717d858f949ba2abaca59e96918a80756e685e5449453c332921180e0400000000000000000000000000070f1820272f363b444951565a6164686e717477797b7c7d7d7d7d7c7b797774716e6964625b565149443b352f271f170e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b65717c88929ca7aba1978c81756d77838f9aa5aea79c90857a6f63584f453b30251b11060000000000000000000000000000000000000000000000000000000000000000000000000000010b151e27343e49535c65707c88929ba7aea59c90857b6f645b52483d32291f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070b0b0b0b0b0a080602000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e635b626b6f7a828e929ba2aaa69f9691867f736f665f544f473f3830282018100800000000000000000000000000000007121e2a35414c58646f7b85919ca7b0a79c938a7f736c625b5349453e363534312c303334383d424850585f696f7b84909ca4adb7aea2978b8074695d51463a2f23170c0000000000000000000000000000000000000009131e273139434c535d636d717c838d929ca0a7aea7a09c908b80786e635e554c443a31281e14090000000000000000000000000000080f171f262c303941474b5156585f6365696b6a6f7071717271706f6e686966635f5857524b474139302b251e170e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57626b76818d99a3aca89c91867c7067727e89949ea8a99f958b7f73695f554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000050e16252f3a434c58626c76818d97a0abaa9f968c80756b62574c42392e24190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d10121317171717161614110d070100000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63626b707b838e939ca2aba59e9690867e736e655e5649453e372f271f17100800000000000000000000000000000005101b26313c47515a68737f8a969faaaca39a8e82776e655c534a423a352e292826222528292d323840474f58616a727e8a939da8b3aea2978b8074695d51463a2f23170c00000000000000000000000000000000000000040e172029333b434c535c636c707a818b91979ea5acaaa09a918c80756f655d544a41382e231810060000000000000000000000000000060e161c212930373c41474b4f54575a5d5a606365656666666564635e575a57554f4c48423c373029211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a64707c86919ca8aca3998d82766b636e7984909ba6afa69b9084796e63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a333e49535c64707c86919ca7afa69c91867b70645b52483e33291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14181c1e1e2222222222211f1c17110b04000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e636c707c848f939ca3aba59e9590857d726d645e554e463a352e261f170f070000000000000000000000000000000006121d2934404b56616a77838e9aa7afa79c93887d71655e554b423a2f2b251e1d1b171a1c1d23282f373f48515a636e79838f9aa7afaea2978b8074695d51463a2f23170c0000000000000000000000000000000000000000071019222b333c434c535b626a6f787f8690959da3abaaa19a908b7f736d635a51473d322a20150b000000000000000000000000000000050c121820272d31383d3e45494b4e51515658595a5a5a5a595857544e4e4c4a453f3d38312d272018120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151d2934404b56616a75818c97a0aba79c93887d71655f68737f8b959fa9a99e948a7e73685e54493e33271f150b000000000000000000000000000000000000000000000000000000000000000000000000000000061019242f39434c57626c75818c969faaaaa0968d81766c62574c43392f24160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181e2327292a2e2e2e2e2d2d2a26211b140c040000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6d717c848f949da4aca49d9490857d716d645d554d453e302b251e160e06000000000000000000000000000000000007121e2a35414c58636f7b86919ca8b1a69a8e83776c63584e453b322a201b14110f0c0f1114171f262f374149545f68737e8a969faaaea2978b8074695d51463a2f23170c000000000000000206080a0b0c0c0c0c0c0c0c080808121a232b333b434b525960686e747d848f939ca2abaaa19c91877d716b61574b433a2f251a0e04000000000000000000000000000000020710171d22282d32353a3e404246474b4c4e4e4f4f4e4e4c4b494543403f3b35322e28221d171007020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c25313c465059646f7b85919ca7ada49a8e83776d6358636f7a85909ca7aea59b8f83796e63574b43392f241a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323d48525b646f7b86919ca6afa79c91867c70655c53493e33261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921282d32353539393939393835312b241c140b0100000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e727d8590959da4aca39d948f847c716c635d544d453d352d201b150d060000000000000000000000000000000000000915212c38434f5a66727d8997a1abaea5968a7f73675c53493d342a2219110b0404010305090f161e27303a454f58636f7a85919ca8aea2978b8074695d51463a2f23170c000000000001070d11141616171717171717171413120f121b232b333a424950575e636d717b838e929ba2ababa19790857b6f645d53493f34281e14090000000000000000000000000000000000070d13181e23252b30333437373c3f4142434343434241403e3a353433302b25231e18130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a56606a74808b969faaa89e94897e72665c56606a75808c97a0aaa89d93897d72665c53493e33281f140a000000000000000000000000000000000000000000000000000000000000000000000000000000050f19242e38424b57616b75808c959fa9aba0978d82766c63584d44362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212931383d4041454545454544403b352d241b110700000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a727e8690959ea5aba39c938f837b706c635c534c443c342d251d110b04000000000000000000000000000000000000000c17232f3a46515d6974808b97a8b1a99e94877b6f64584d43392a241a120601000000000000060e17202b353e4a56606a76828e99a5aea2978b8074695d51463a2f23170c00000000040b11171c1f212223232323232323201f1d1a15121b232a323940474e545c636b6f7a828d929ba2aca89e958d82766d63584d42382e23180d02000000000000000000000000000000000003080e13181b202528292b2d3134353637383837363534332f2b292825211c18140e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca7aea59b8f84796e6357505964707b86919ca8ada49a8e82776d63584d42382e24190e040000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323d47515a636f7b85909ca5aea79c92887d71655d54473e352b20160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a41474b4d51515151504f4b453d352b21170d02000000000000000000000000000000000000000814202b37424e5965717c88939faba89d9186797e8690969fa6aba29c928e837b706b625b534b433c342c241c14070100000000000000000000000000000000000000000e1925303c48535f6a76818d99a4b0a79b9084786b61574b4035291e140a01000000000000000007111b25313c46505968747f8b97a2aea2978b8074695d51463a2f23170c000000040c141b21262a2d2d2f2f2f2f2f2f2f2b2a28241f19121a222830363e4549535a61696f79818d929ca5aea59b92887d71665b52483d32271c10050000000000000000000000000000000000000004090b11161a1c1d20222629292b2b2c2c2c2b2a292724201d1c1a16120c0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69737f8b959fa9a99f958a7f73685f544b57616b76818d99a3aca79c93887d71655b52483d33281e1309000000000000000000000000000000000000000000000000000000000000000000000000000000050f18232e38414b56616a74808b959ea9aba29a8e82776d63574e453a2f251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414a5157585c5c5c5c5c5a554e453b31261c1106000000000000000000000000000000000000000814202b37424e5965717c88939fabada2968b7f8791979fa6aba29b928d827a6f6a615b524b433b332b231c140c040000000000000000000000000000000000000000000f1b26323d4955606c77838f9aa6b0a5998e82766b5a51473d32271c1003000000000000000000010b17222c36434f5b66727d8995a0aca2978b8074695d51463a2f23170c0000010b141c242b313538393a3a3a3a3a3a3a3736332f29221a121820262e353a434a515960696e79828e949ea8aba29a8e82776b62574c4035291e120700000000000000000000000000000000000000000001070b0e111113171b1d1e1f202020201f1e1d1c191611110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba6afa79c90857a6f63584f48525b65707c88929ca7aca3998d82766c62574c41382d23180d0300000000000000000000000000000000000000000000050505050505050505050505050505050009141e28313c47515a636f7a84909ca5aea79c92897d71685e54493f352b21160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a61646868686867655e554b40352a1f1408000000000000000000000000000000000000000814202b37424e5965717c88939fabafa499908b9197a0a7aba19b918d81796f6a615a524a423a322b231b130b0300000000000000000000000000000000000000000000101c27333e4a56616d7884909ba7afa3988c8175695e5247382e23180d020000000000000000000008121f2b36424e5965707c88939faaa2978b8074695d51463a2f23170c000007111b242d353b4044454646464646464642413e39332b22190f161e252b2f3a414950585f696f7a84909ba4ada89c91867b7064584d41362a1e1107000000000000000000000000000000000000000000000000030506080d1012121414151514141211100e0b06050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68727e8a949ea9aaa0968b807469605547414c58626c77828e9aa4ada89c91867c70645a51473d32271d1308000000000000000000000000000000000000030608081010101010101010101010101010101010100e18222d37414a56606a737f8a949ea9aca39a8f83786e63584f453b30261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b6f73737373736e655a4f44382d21160a020000000000000000000000000000000000000814202b37424e5965717c88939fabb3a9a099969ca1a8b0a69b918d81796f696059514a413a322a221a120b030000000000000000000000000000000000000000000000111c28333f4b56626d7984909ca7aea3978b8074695d51463a2f231409000000000000000000000007131e2a36414d5864707b87929eaaa2978b8074695d51463a2f23170c00020d17212b353d454b4f50515151515151514e4d49433b33291f150d141b2029313840484f58606a727d89939da8aba1978b7f74685c5145352b21160b0000000000000000000000000000000000000000000000000000000001040607080909090908070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111d2934404b57636e79838f9ba5aea89c91867b6f645950463e49535c66727d89949da8aba1978d81756b61564b40372d22170c02000000000000000000000000000000050a0e1113141c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c131d27313c465059636e7a84909ba4ada89d93897e72695f554a40362c22170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050a131e2a35414d58646f7b7f7f7f7f7f73675c5045392d2214100d0904000000000000000000000000000000000814202b37424e5965717c88939fabb6b0a9a4a2a8abb1afa4988d81796e686059504941393129211a120a02000000000000000000000000000000000000000000000000111d28343f4b56626e7985909ca8aea2978b7f74685d51453a2e23170c000000000000000000000007121e2a35414c58646f7b86929ea9a2978b8074695d51463a2f23170c0006111c26313b454e555a5c5d5d5d5d5d5d5d5a58534c43392f241a0f0b1119212830383f485059646d78838f9ba6b1a8998d82766a584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111d28333e49535c66727d89939da8aba2988d81756b6156494039434b57636e79838f9ba5aea89c91867b6f645950463c31261c12070000000000000000000000000001090f15191d1f1f282828282828282828282828282828282828282828222c36404a556069737e8a949da8ada49b8f83796e635950463b31271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f151a202b37434e5a65717d888b8b8b85796d62564b3f33231e1c18140e090400000000000000000000000000000814202b37424e5965717c88939fabb6aba29c999ca2aab3a79b90847c716d645d554e463b352f271f171008000000000000000000000000000000000000000000000000111c28333f4b56626d7985909ca7aea3978b8074695d51463a2f231309000000000000000000000007131e2a36414d58646f7b87929ea9a2978b8074695d51463a2f23170c0008141f2a35404b555e65676969696969696965635c53493e33281d12060610171f272f374049545d6874808b97a2aea79b908478685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000206090a0b0e0e0e0e0e060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607090a0b0b0b0a090706050300000000000000000000000000000000000000040e171f2a36414d58636c77828e9aa4ada79c92877c70655a514738333e49545e68737e8a959ea9aaa0968c80746a60564b3f362c21170b010000000000000000000000010a12191f24282a2b3333333333333333333333333333333333333333333333303b465059636e79838f9ba3aca89d948a7f736960554a40372d22170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040910161a1f24252b37434e5a65717d8894969085796d62564b3f322e2927231e19140e07020000000000000000000000000814202b37424e5965717c88939fabb2a79c928e929aa1a9a99e9490857d726e655e564a453f373028201811090100000000000000000000000000000000000000000000101c27333f4a56616d7884909ba7afa3988c8075695e5246372d23180d020000000000000000000008131f2b36424d5965707c87939faaa2978b8074695d51463a2f23170c000a16212d38444f5a656e7374747474747474716c63584d41362a1f130800070f171f273038444f5a66717d8994a0aba99e94857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000002080d111416171a1a1a1a1912110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000205080d101212141516171716151311100e0b06010100000000000000000000000000000009131e27323d48525b65717c88929ca7aca3998e82766c62574a41372f3a454e57636f7a84909ca7afa79c90857a6f635850463b30251b1107000000000000000000000009121a22292f3336363f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f363f4a545f68727e89939da7ada49b90847a6f635950463c31271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14182025292f33353a434e5a65717d88949c9085796d62564b403d3835322e28231e16110c0500000000000000000000000814202b37424e5965717c88939fabb0a5998e828c9199a0aaa59e9590867e736e665f554f48403830292119120a020000000000000000000000000000000000000000000f1b26323e4955606c78838f9aa6b0a5998d82766b5a51473c31261b1005000000000000000000000715202c38434f5a66727d8994a0aba2978b8074695d51463a2f23170c000b16222d3945505c67737f808080808080807d71655a4e42372b2012070000060e17202b36424d5964707c87939eaaaea592867b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000040b12171c1f212226262626251d1c1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000004090d1013181b1d1e202122222222201f1d1c1916110b0c0701000000000000000000000000020d18232d37404c57626b76828d99a3aca89d93887d71665b524839312b353e4a55606974808b969faaa99f958b7f746960554a3e352b20160b00000000000000000000050f19222a32393e41424a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a454f58636e78838f9aa3aca99e948b7f746a60564b41372d23180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030911181e232a3034393e3e45494e5a65717d88949c9085796d62564d4b4841403d38322e28211b150e06000000000000000000000814202b37424e5965717c88939faba99d91867a808b909ca0a7a69f9691877f746f635f5850494139312a221a120b0300000000000000000000000000000000000000000e1925303c48535f6a76828d99a4b0a69b8f84786a61564b4034291f140a000000000000000000050f1a25303b46505968737f8b96a2ada2978b8074695d51463a2f23170c000f1b26323d4954606c77838b8b8b8b8b8b8b8074685d5146362c21170c01000006131e2a35414d58646f7b87929ea9aa9e92877c7064594d41362a1f13070000000000000000000000000000000000000000000000000000000000040c141b22272b2d2e3131313130292825211c150e06000000000000000000000000000000000000000000000000000000000000000000000004090e14181c1e222629292c2d2d2e2e2d2c2a292724201b1b16110a03000000000000000000000005101b27323d47515a64707c86919ca8aea59a8f83786d63584b42382925313b465059646f7b85919ca8afa69b90847a6e63584f453a30251a0e030000000000000000000a151f29323b42484c4e56565656565656565656565656565656565656565656565656565656545e68717d88929ca7aea59c90857a6f635a51473d32281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b131921282e323a3f43494d4f54575a65717d88949c9085796d625b5857524d4c48423d38302b251e1610080000000000000000000814202b37424e5965717c88939faba89d91867a757f8a91979fa6a79f97918a80756e6860595149423a322a231b130601000000000000000000000000000000000000000c18232f3a46525d6974808c97a3aea89d94867b6f64584c42392e2419110800000000000000040d162028333f4a55606976828d99a4aea2978b8074695d51463a2f23170c000e1a26313d48545f6b77828e97979797978c8075695950463b30251a1008040107131f2b36424d5965707c87939faaafa692877b6f64584d41362a1e130700000000000000000000000000000000000000000000000000000000020b141d252b313638393d3d3d3d3c3433302b251e170e05000000000000000000000000000000000000000000000000000000000000000000070e14181e2327292d3134353738393a3939373634332f2b2526211a130b030000000000000000000105121d2934404b56616b75818c97a1aba99e94897e72675c53493b3229212c36404b56616a75818c97a1aba99e958a7e73685f54493e33281f150b0000000000000000030e19242f39424b535859616161616161616161616161616161616161616161616161616161616161636d77828e9aa2aba99f958b80746b61564b42382e23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c242a31383d444a4d5358585f636567717d88949c9085796d696764615b5857524c48423b352f272018100900000000000000000814202b37424e5965717c88939faba89d91867a6e747f8690969ea5a7a09c908c81796f69615a524a423b332b241c110b040000000000000000000000000000000000000a15212c38444f5b66727e8995a3acada4958a7e73675b52483e332a2118100a0502000104080d151e263039404c57636e7a85909ca8aea2978b8074695d51463a2f23170c000d1924303b47525e6a75818c98a2a2a2998e82776960554a3f33292017120f0b1119202c37434e5a66717d88949fabaa9f96867b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000008121b252d353b4144454848484847403f3b352f271e150c02000000000000000000000000000000000000000000000000000000000000020910181e23282e3235373c3f414344454545444341403e3a3535302a241c130a010000000000000000040f1b26313c465059646f7b85919ca8afa69b9084796e63574c433a29221c26313c47515a64707c86919ca8aea59b8f83796e63574b43392f251a0f050000000000000006111d28333e48535c62656d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d717d88929ba6afa69c90857b6f645b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d252c343a42484c54595c6365686e7073757d88949c908579767472706b6864625b57524a453f37302921191008000000000000000814202b37424e5965717c88939faba89d91867a6e6e737e8590959da4aba19a918d827a6f6a625b534b433c342c201b140d05000000000000000000000000000000000007121e2a35414c58646f7b86939da7b1a5998e82776c62574c443a3129211914100d090c0f12161e252e364049545d66727e89969faaaea2978b8074695d51463a2f23170c000b17222e3a45515c68747f8b96a7afa89c90857a6e63574c43393128221d1a191b2129323d47515a68737f8b96a2ada89c9085796a61564b3f34291d1206000000000000000000000000000000000000000000000000000000020d17222b353d454b4f5154545454534c4a453f372f251c12070000000000000000000000000000000000000000000000000000000000040b131921282e32383d4041474b4c4e4f505151504f4d4b49453e3f3a342c241a110700000000000000010b141d28343f4b56606a74808c969faaa99f958b7f73685f554a3e33281c18232d37414c57626c76828e99a3aca89d94897e72665c53493e33291f140a0000000000000008131f2a36414c58626c7079797979797979797979797979797979797979797979797979797979797979797979828d99a5b0aa9f968c80756b62574c4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c151e252e353d444a52575d64666c7175797c7e80828e9a9c91878382807e7b7874706b64625b554f4841393129211810050000000000000814202b37424e5965717c88939faba89d91867a6e636d727d848f949da3aaa19b928e827b706b625c534c443d2f2b251e160e060000000000000000000000000000000006121d2934404b56616a77838f9aa7b0a79c92877c70655d544a42393129241e1c1813171a1d22262e353e475059646d77838e9aa6afaea2978b8074695d51463a2f23170c000914202c37434e5a66717d88969faaaa9f96897d71665d534a4138312c282624252b3039414b57616b77828e99a5b1a69a8f83786c5a51473c31261b100400000000000000000000000000000000000000000000000000000006111c27313b454e555a5c5f5f5f5f5f57554f483f352b21160e04000000000000000000000000000000000000000000000000000000040c141b232931383d42484c4d5156585a5b5c5c5c5b5a5957544e4e4a443d342a21160c0100000000000006111b25303b454f58636f7a85909ca7afa79c90857a6f63584f453b30251a131d27323d48525b66717d88939da8ada49a8e83776d63584d42392e24190e0400000000000008141f2b36424e5965707c8484848484848484848484848484848484848484848484848484848484848484848485909ca7b3afa69c91867c7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a141d252e363e464d545b62646d72777c8184878a8c8e939ca097918f8d8c898783807b76706b635f58514a413a312920160d0400000000000814202b37424e5965717c88939faba89d91867a6e63636c717c848f939ca2aba29c938e837c706c635d544d453a352e261e170f0700000000000000000000000000000005101b27323d47515a68737f8b96a0aaaca3998d82766e645b524a413a322e292723242226282c31373e454e57606a727e89939ca7b6aea2978b8074695d51463a2f23170c0006121d2935404c57636f7a85919ca8afa69a8e82776d635a5149423c3634312e32353b424a535c646f7b86919ca8afa6988c81756a5e5247372d22180d0200000000000000000000000000000000000000000000000000000009141f2b36414b555e65686b6b6b6b6a635f584f453b30281e14090000000000000000000000000000000000000000000000000000020b141d242c333a41484b5257585a61636667676868676664635e5759544d443a30261b10050000000000000b16202b353f4a555f69737f8b959fa9aaa0978c80746a6056483f352b21160d19242e38424d58636d77838f9aa5aea79c93887d71655b52483e33281e14090000000000000814202b37424e5965717c8890909090909090909090909090909090909090909090909090909090909090909090959fa9b4b5aaa0968b7f74685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121a252d363e464e565d646b70777d83888c909596989a9ca3a7a09c9a999795948f8b86817c746e68615a524a413930261e140b01000000000814202b37424e5965717c88939faba89d91867a6e635c636b707b838e929ba2aaa39c948f847c716d645d5549453e362f271f1810080000000000000000000000000000020d18232d37414c58646f7b85919ca7b0a69c92897e726b625a514a443d3835322d302c3134363c41474f545e686f7a848f9ba3acb6aea2978b8074695d51463a2f23170c0006111d28343f4a55606976828d99a4ada79c92887d716b6159524a46403f3b383d3f454a525a636d75818c96a0aaaa9f96897e72675b4f44382d211308000000000000000000000000000000000000000000000000000000000a16212d38444f5a656f7377777777766e695f554a42382e23180f060000000000000000000000000000000000000000000000000008131b242d353c444a52575b6264696a6f71727374737371706e6867645d544a3f35291e13080000000000030e19242f3a454e57636e7984909ba6afa89c91867b6f64595046372f251b110a141e28343e49535c67727e89949ea9aca3998e82766c62574c41382e23180d0300000000000814202b37424e5965717c88939b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6afb9bab0a7978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e16222b353d464f565f666e727c82898f93989b9ea5a3a6a7acb0aba8a6a5a3a49d9b97918d8680796f6a615b524941362e251b1106000000000814202b37424e5965717c88939faba89d91867a6e63575b626a6f7a828d919aa1aba49d9590857d726e655e544e473f37302820181109010000000000000000000000000009131d2934404b56616a75818d96a0aaaba29c90857c706a615a544c4842403d383c363b3f40464a51585f636e78818d949ea8b3baaea2978b8074695d51463a2f23170c00040f1a26313b46505966727e89949da8aca39b90847b6f69625b55504c4a4649484c4f545b626b717d86919ca7b0a89c91857a6f63584c4035291e1206000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8282828281796e635b52483d322820160d030000000000000000000000000000000000000000000000071019232c353d454d545b61646b7074787b7d7e7f7f7f7e7d7b7976726e64594e43372c201509000000000005101c27333e49545e68737e8a949ea9aca3988d81766b6157494037271e150c050f1a252f3a434c57636e7984909ba6afa69c92877c70655a51473d32271d130800000000000814202b37424e5965717c88939fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a9afb6b5b5aea2978b8074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27333b454e565f666f747e858e929a9da3a7a9aeafaeb0b4b9b4b3abadaeada8a7a09c96918b827b706b615a51473e352b20160c020000000814202b37424e5965717c88939faba89d91867a6e6357525a616a6f79818c909ca1a8a59e9590867e736f635e574f48403831292119120a0200000000000000000000000005101b27323d47515a64707c86919ca4ada99f958f837b6f6b635d57524d4b47484747464a4c50555a61686e75808c919ba4adb7baaea2978b8074695d51463a2f23170c00010c17222c36404b57636e79838f9ba3aca99e948e827a706b636059575550545257585f636c707b849097a0aaaba2988d81766a60564a3f34281d11060000000000000000000000000000000000000000000000000000000008141f2b37424e5965707c888e8e8e8b7f746b62574c443930271d130800000000000000000000000000000000000000000000040e182129333c454e555d646b70767b80838688898a8b8a8a898785827e72675b4f44382d21150a000000000008111d2934404b57636e79838f9ba5aea79c92877c70655a5147383026160e05000b152028333f4a555f69737f8b959fa9aba2988d81756b61574b40372d22180c02000000000814202b37424e5965717c88939faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f37434c555e667074808990969ca2a7acaea9a7a4a3a5aaafa9a79fa1a5a8aab0aba7a09c938e847b706a61574e453a2f261c12080000000814202b37424e5965717c88939faba89d91867a6e63574c515960696e78808a91979fa7a69f9691877f756e685f5850494139312a221a130b030000000000000000000000020d18232d37414c57626b75808c949da7aea59d948f837b726d64625b5856515353535055575960636a6f78808c909aa2a7a9afb6aea2978b8074695d51463a2f23170c000008121c28333e49545f68727e8a939ca6aea59c938e837c736f6966636059605b6264686e737c848f959ea7afa69b91877c70655950463c31261b0f040000000000000000000000000000000000000000000000000000000008131f2a36414c58626c77828e999990857c70645d544940372c22160e0500000000000000000000000000000000000000000009141e28313a444c555e656d727b81868c8f919795969696959495908d83776c6055493d32261b0f0000000007121d28333e49535c66727d89939da8ada4998e82776c62574a4138282016060000030f1a25303b454f58636f7a85909ca7b0a89c91867b6f645a51473c31261c1208000000000814202b37424e5965717c88939e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e978b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48535c656f74808b909c9fa6acada8a59e9b98979aa1a69f9c9396999ca0a7abb0aaa39c948f837b6f685e544940362c21170c0100000814202b37424e5965717c88939faba89d91867a6e63574c4950585f686e747f8791969fa6a7a097918a80786e696059514a423a322b231b130c03000000000000000000000009131d27323d48525b636f7a848f97a0aaada49d948f857d76706c6764615a5f5e5f59606366696f737b828c909aa19f9c9fa6afaea2978b8074695d51463a2f23170c0000030e1a25303a454f58636e78828e969faaaca39c938f857f7a74716f696c6c6c6c7073797e858f949da5aea99f958d81766c62574940362c22170c010000000000000000000000000000000000000000000000000000000006111d28333e49535c66717d88939d968e82766e645950463c31271e150c0200000000000000000000000000000000000000020d18232d38414a545d656f737e858d91979a9ca1a8a1a2a2a1a69f9a8f83776c6055493d32261b0f000000040e171f2a36414d58636c77828e9aa4ada89d93897d71665c53483a3128180f060000000b16212b353f4b56606a75808c97a0abaaa0978c80756a61564b40362c21170b010000000814202b37424e5965717c889393939393939393939393939393939393939393939393939393939393939393939393939393939393938b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636c737f8a909aa0aaafaaa49d9b95908d8c909a9f9590888a8d91969ca0a7aeaca49d948e82786e635950463b31261a0f0400000814202b37424e5965717c88939faba89d91867a6e63574c40484f575e636f737e8690959ea5a8a19c908c81796f6a615a524a433b332c241c130a0100000000000000000000040e19232e38424a56606a717d86919ca1aaada49d959089817c77726f6b6b6a6a6a6b696f71757a7f858e929aa19a9590959fa9aea2978b8074695d51463a2f23170c0000000b16202b353e49545e68707c85909ca0a9aca49d95908b84807d7a79787778797c7f838a90959da4adaaa19c90857b6f645c53483830261d12080000000000000000000000000000000000000000000000000000000000030e19242f39434d58636d77838f9a9c92897e726a60564b43372f251b11070000000000000000000000000000000000000005101c27323d47515a646d737f8990959ca0a7a8abb1acaaaaaaafa69a8f83776c6055493d32261b0f00000009131e27323d48525b65717d88939ca7aea59b8f83786d63584b4239292118070000000007121c25313c46505964707b86919ca8b0a79c90857b6f635950463b31251b11070000000814202b37424e5965717d87878787878787878787878787878787878787878787878787878787878787878787878787878787878787878074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68717d86919ca1a9b1aba19a938f8a8481808c979c90857d7e82868c91979ea5aeada49c928a7e736960554a3f34281e130900000814202b37424e5965717c88939faba89d91867a6e63574c403f474e545e656e727d8590949da4aba19a918d827a6f6a625b534b433c342c241b1107000000000000000000000009141e28313c465059636c737f8a909aa1abada59e9c918d86827e7b797776767676787a7d80848b90959ca29a908c85909ca7aea2978b8074695d51463a2f23170c00000007111b252f3a454e57626b727e899099a0aaada69f9c95908c89858483838485878a8f939c9fa6adaaa29a90897e726b61564b4239281f160d030000000000000000000000000000000000000000000000000000000000000a151f29343f49535d66727e89949d9b90847a6f635c53483f352b21160e0400000000000000000000000000000000000007121e2935404b57616b727e87919c9fa5abaea9a7a3a09f9e9e9ea09a8f83776c6055493d32261b0f0000020d18232d37414c57626c76828d99a3aca99e948a7e73675d54493b322919100700000000020c17222c37404b57616b76818d99a3acaa9f968b7f746960554a3f352b21160b00000006121d2935404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e79838f97a0aab1a8a19c908c837e79757d88949c90857973767b808690959ea5aeaba29b90847a6f63574c41382d23180d02000814202b37424e5965717c88939faba89d91867a6e63574c40363e4549555d646d717c848f939ca3aaa29b928e837b706b635c544c443d342b21160c0100000000000000000000040e17222c364049535c656e74808c909ca1a8aea9a29b97918e8a878483828181828385888c90959c9fa29b928c80828e9aa5aea2978b8074695d51463a2f23170c000000010b16202b353e47525b646e747f8b909ca0a7aea9a59e9c979791908f8e8f9095969b9da4a9afaaa19b918c80756e645a51473b3229180f0600000000000000000000000000000000000000000000000000000000000000050f1a252f3a434b57636e79838f9b9e958c80756c63584f453b30281e1409000000000000000000000000000000000005101c27323d47515a646f7b859097a0a9aeaba59e9b97959392929394968f83776c6055493d32261b0f000005101b27323d47515a64707c86919ca8afa69b9084796e63574c443a2922190800000000000008131d27323d48525b65717c88929ca7afa69b90847a6f63584f453b30251a0f03000006111d28333f4a5560696e70707070707070707070707070707070707070707070707070707070707070707070707070707070707070706f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68737f8a939da7b0aba197918a8079726e717d88949c9085796d6a6f757d8490949ea6afa99e958a7e73675a51473d32271c1005000814202b37424e5965717c88939faba89d91867a6e63574c4035353a454d545c636c707b838e939ba2aaa29c938f837c716c635d544d443b30261b1005000000000000000000000008121d263038434c555e666f75808b91979fa6ababa8a19c999594908e8d8d8d8e8f9196989c9ea5a19c928d8179828e9aa5aea2978b8074695d51463a2f23170c0000000006111b252e36424b545d656f74808a91979ea5aaaea9a7a7a09c9b9a9a9b9c9fa6a6a8adaca7a09c918c81786e635d544a41382a2219070000000000000000000000000000000000000000000000000000000000000000000b152028333e49545f68737e8a949e9c91877d71685f554a41382e23180f060000000000000000000000000000000007121e2935404b56616b75808c969fa7b0a7a09c94908c8988878787888a8d83776c6055493d32261b0f000006121d2934404b56616b75818c97a1abaa9f968b7f74695f554a3f33281c1108000000000000030d18232e38414c58636c77828e9aa4ada99e958a7f73685f544a3e33281c11050000040f1a25303b4650596063646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463615a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e79848f9ba4adaca39c91877f746e6965717d88949c9085796d61646c717b8490969faaaea59a8e83776b61564b4035291e1207000814202b37424e5965717c88939faba89d91867a6e63574c40352b2f3c444c535b626b6f7a828d929aa19ca39d948f847d716d645e544a40352a1e13080000000000000000000000030d161f28333b454e565f6670757f8790959ba2a7acaba8a5a59e9b9a999899999b9ca0a7a7a49d97918b817977828e9aa5aea2978b8074695d51463a2f23170c00000000010b141e26323a444d565f666f747f8690949ca0a7a9afb0aaa8a7a6a5a6a7a9afb1aca7a39c96918a81786e685e544d443a31281a1108000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636e7984909ba0978f83796e635b52483d322820160d0300000000000000000000000000000007131e2a35414d58646f7b85919ca6afaba097918b84807d7c7b7b7c7d7e8182776b5f54483d31251a0e0004101b26313c465059646f7b86919c9c9c9c9c90857a6f63584f453b30251a0f010000000000000009141e28333e49535c66727d89949d9c9ca59b8f83796e63574b4034291d12060000010c17212c363f4850555759595959595959595959595959595959595959595959595959595959595959595959595959595959595959595856514941372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e5766727d89949ea8b2a79c938b7f746e636065717d88949c9085796d625c636b707c86919ca7b0a79c93877b6f64584d41352a1e1307000814202b37424e5965717c88939faba89d91867a6e63574c4035292c343c434b525a616a6f79818c9191919191919590857d726e64594e43372c211509000000000000000000000000060f18222b353d464f565f666f747e858d929a9ca3a7a9aeaea9a7a5a4a4a4a5a6a8a7a69f9c948f8780796e77828e9aa5a8a2978b8074695d51463a2f23170c0000000000040d16212a343d454e565f666e737d848c91969c9fa6a6a8aab0abacabafa9a7a5a39c9a938e867f756e685f574e453d342921170a01000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a555f69737f8b959f9d938b7f736b61574b443830261d12080000000000000000000000000000030e1a25303a454f5868737f8a96a0aaada49c91867f79747270707070717375796e63574b4034291d11060006111d28343f4b56606a74808c9691919191978c80756a6056483f362c21160c0100000000000000040e19242f39434b57636e79838f919191919194897e72665b4f44382c21150a00000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6876818d98a4adaca39a8e82796e635e5a65717d88949c9085796d62535b626c74808c96a0aaaca395897e72675b4f44382d21150a000814202b37424e5965717c88939faba89d91867a6e63574c403529232b333b424a515a61696f7980858585858585858585867e72675b5044382d21160a0000000000000000000000000007121a242d363e464f565f656d727b81888e92989c9ea5a4a5a6a7a7a7a6a5a3a39d9a95908b847d746e6877828e9a9c9c9c978b8074695d51463a2f23170c000000000000051119242c353e464e565e656c717a80868c9095989a9ca0a7a0a0a0a69f9c9996938e89827c736f635f584f473e352c24191007000000000000000000000000000000000000000000000000000000000000000000000007111b25303b454f58636f7a85909ca49c90857b70645d544940372c22170f050000000000000000000000000005111c28333e49545f6876828d99a7b0a89d938a7f746e6866656464646667686e685e54493e33271c10050006121e2935404c58636f7a8585858585858585867b70645a5147382f261c12070000000000000000000a151f28333e49545f68737f858585858585858583776c6055493d32261b0f030000020c161f272f363b3f40424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403c37302920170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7884909ca7b3a79c92887d71685f545a65717d88949c9085796d6256535c636f7a85919ca8aea3978c8075695d52463b2f23180c000814202b37424e5965717c88939faba89d91867a6e63574c4035291d232a323a4149515960686e757a7a7a7a7a7a7a7a7a7a726e64594e43372c21150900000000000000000000000000020a141c252e363e464e565d636b6f767d82888c909596989a9b9b9c9b9b9a9895938f8a857f7a716d636b77828e91919191918b8074695d51463a2f23170c0000000000000109131c252d353e464e555c636a6f747b8085898c8f9197949494949395908e8b87837e78706c655e544f473e362e251c1308000000000000000000000000000000000000000000000000000000000000000000000000010b16212c363f4a56606a74808b969f9f968d82766e645950463c31291f150a0000000000000000000000000006111d2934404b57636e7985909ca7b2a69b8f83786f635f58595858595a575e635e574e453a2f24190e030006111d28343f4b56606a6f797a7a7a7a7a7a7a7a706b6157494037271f150c02000000000000000000030e1a25303a454f58656e737a7a7a7a7a7a7a7a7772695e53483c31261a0e03000000050f171f262c30333536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312d272018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87959ea9b1a59a8e82776c63584f5a65717d88949c9085796d62564b56606a77828e99a5b0a4998d82766b5f53483c3125190e000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1a22293139404850585f63696e6e6e6e6e6e6e6e6e6e67645e544a40352a1e13080000000000000000000000000000040c151e262e363e454c545a61646d71777c8184888a8c8e8f9090908f8e8c8a87837f7a746e69635d6b7782858585858585858074695d51463a2f23170c00000000000000030b141d252e353d454c535960636b6f757a7d8083858788888988888685827f7c77726e68625b5549453e372e261e140b030000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059636f7b85909ca69c92897e726a60564b43392f2419100600000000000000000000000007121e2a35414c58636f7b86959fa9ada2968b7f73685e554f4e4d4d4d4e4e5457544e473e352b20160b000004101b26313c46505960636d6e6e6e6e6e6e6e6e64615b5248393027170e0500000000000000000000000b16202b353e47555e65676e6e6e6e6e6e6e6e6c6962594f44392e23180d0100000000070f161c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b67727e8995a5aeaea5968a7f73675c534e5a65717d88949c9085796d625647515a6874808b97a2aea69a8f83776c6055493d32261b0f000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12192128303840474f54575e636363636363636363625b59544d443b30261b1005000000000000000000000000000000050d151e262d353c444a51565d63666c7175797c7f8182848485848382807e7b77736f696360595e6872777a7a7a7a7a7a7a746f665b5045392e22170b0000000000000000040d151d252d353b434950565a6164696e7275787a7b7c7d7d7d7c7b797774706b66635e57524b453a352e261e160d0400000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c555e646d75808c98a3a29b90847a6f635c53493e332a20150b00000000000000000000000008131f2a36424d5964707c8793a6afab9f93887c71655a4e45424141424345494b49453e362e251b11060000010c17222c3740495056586263636363636363625857524a41382820170600000000000000000000000007111b252e37454e555a5c6363636363636363605e5951493f352a20150a000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b979f9f9f9e94867b6f64584d4e5a65717d88949c9085796d62564b505c67737f8a96a1ada69b8f83786c61554a3e32271b10000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12101820282f373f454a4b5257575757575757575757504e4a443d342b21160c0100000000000000000000000000000000050d151d252c333a41474b53585c6365686e7073757778797979787775736f6b6763605955505861686b6e6e6e6e6e6e6e69665f564c41362b201509000000000000000000040d151c242b333840464a5157585f636669686e7071717271716f6a6b6864625b57544e47423b302b251e160d05000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c646e737d838f9ba6a99e948c80756c63584c433a2f251a0f0400000000000000000000000814202b37424e5a65717c88949fabafa792867a6f63584c4135363636353a3e403e3a352e261e140b0100000008131d27303940464b4c5657575757575757574d4b48413a3128180f06000000000000000000000000010b151e26353d454b4f50575757575757575755534f4941382f251b11060000000000000002070c0f111213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131212100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b47525e6975818c93939393939084786b61564b4e5a65717d88949c9085796d62564b505c67737f8a96a1ada79b8f84786d61564a3e33271c10000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120810171f272e353b3e40474b4b4b4b4b4b4b4b4b4b4443403b342c241b1107000000000000000000000000000000000000050d151b232931383d43494d5358585f6365686a6b6c6d6d6d6c6b696764615a5755504a4651585e60636363636363635d5b564e463c32271d120700000000000000000000040c141b222830363c41474b4f55575a585f6364656666666564615a5d5957524b49453e36322a201b150d0600000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c737f878f949da8aea59c91867c71655d54493f34291d120700000000000000000000000915202c37434f5a66717d8994a0abaa9f96857a6e63574b40342a2a2a2b2f3334332f2b251e160d0400000000030d16202830373c3f404b4b4b4b4b4b4b4b4b41403d3831292118080000000000000000000000000000040d16242d353b4043454b4b4b4b4b4b4b4b4948443f3831281f150b010000000000000000000104060608080808080808080808080808080808080808080808080808080808080808080808080808080808080808080706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535e6a76818888888888888881766b5a51474e5a65717d88949c9085796d62564b515d68747f8b97a2aea69a8f83786c6055493e32271b0f000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206070f161e252b3033343b40404040404040404040383735302b241c130a0100000000000000000000000000000000000000040b131921282d323a3f43494d4f5457595c5e606161626161605e5b5856514c4a46403b484e53545757575757575751504c463e352c22180e030000000000000000000000040a12181f262c31383d3f454a4c4f4f5457585a5a5a5a59585651514d4c48423e3a352e26221a110b04000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505965717d8691979da4adb6aba0978e83776d63584d42362b1f140800000000000000000000000915202c37434f5a66717d8994a0aba89c918579685f544a3e33281e1f202427292724201b140d05000000000000060f1820272c3134353f40404040404040403635322e282119110800000000000000000000000000000006141c242b3135383940404040404040403d3c39352f2820180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c7c7c7c7c7c7c7c7b6f64584d434e5a65717d88949c9085796d625649535c6a75818d98a4afa59a8e82776b6054483d31261a0f000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600060e151b212528292f343434343434343434342d2c2a26211b130c03000000000000000000000000000000000000000000020810171e232a2f34393e3f454a4b4e50525455565656555452504d4b47413f3c36303e4447484b4b4b4b4b4b4b4645413c352e251c12080000000000000000000000000002070f161d22282d32363b3f4043454a4b4d4e4e4f4e4e4c4b474542403d38332f2b251e161107010000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606976828d96a0a8adb5bab0a79c93887d71665a4f43372c20150900000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e624f453b30251a1116191c1d1c1916110b040000000000000000070f161d222628293434343434343434342a2927231e18110900000000000000000000000000000000040c141b21262a2d2d343434343434343432312e2a251f181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b70707070707070706f6b61574b434e5a65717d88949c9085796d62564c58626c78848f9ba6b0a4998d81766a5f53483c3025190e000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000050b11161a1c1d242929292929292929292821211e1b16110a03000000000000000000000000000000000000000000000000070e13182025292f33353b3e40424547494a4a4b4a4a48464441403d3834312c2e34393c3d404040404040403a3936322c251d150c02000000000000000000000000000000060d12171e23262c303334353b3e4041424343434241403c373635322e2724201b140d0501000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636f7a86919ca7b0b8bdc1b8aca3988d81756a5e53473b3024190d00000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b352b21160b0b0e1011100e0b060100000000000000000000060d13171b1d1e2829292929292929281e1e1c18140e08000000000000000000000000000000000000040b11171c1f21222929292929292929262623201b150f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b62646565656565656564615a5147434e5a65717d88949c9085796d6256545d65707c88949da8b1a8978b8074695d51463a2f23180c000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000001070b0f1112181d1d1d1d1d1d1d1d1d1d161513100c07010000000000000000000000000000000000000000000000000000040910151a1f24252b30333436393b3d3e3f3f3f3e3d3b393535322d282622252a2e3031343434343434342f2e2b27221c150d04000000000000000000000000000000000003080e14181c212528292b3033343637373837373534312d2a2a27231e1916110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c8797a0abb7c0c9c8bcb2a69b8f83786c6155493e32271b1000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d07000305060503000000000000000000000000000003080c1011121c1d1d1d1d1d1d1d1d1312100d0904000000000000000000000000000000000000000001070c111416161d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e18232e38424a525759595959595959595857514a41434e5a65717d88949c9085796d62535b646d76818d99a4adaba197897d72665a4f43382c201509000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000305060d111111111111111111110a09080501000000000000000000000000000000000000000000000000000000000000060b0f15191b212528292b2e30313333333332312f2d2a2927231e1b171a1f232526292929292929292322201d18120c04000000000000000000000000000000000000000004090c12161a1c1d212528292a2b2c2c2c2b2a2926231f1e1c19140e0b060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a65717d8894a5aeb8c3cecabeb3a79b9084796d61564a3f33271c1000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d110500000000000000000000000000000000000000000001040606111111111111111111070705020000000000000000000000000000000000000000000000000206080a0b11111111111111110f0e0d0a060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a42484c4d4e4e4e4e4e4e4e4d4b47413a434e5a65717d88949c9085796d625c636c727e89919ba6b4a89c91867b6f63584c4135291e1207000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000010606060606060606060600000000000000000000000000000000000000000000000000000000000000000000000000050a0b11161a1c1d1f22242627272827272624211e1e1c18130f0c101417191a1d1d1d1d1d1d1d171715120e0802000000000000000000000000000000000000000000000002070c0f1111161a1c1d1e202020201f1e1d1b181313110e0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87959fa9b4bec6c4bab1a89a8f83786c6055493e32261b0f00000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a31383d40414242424242424241403d3837434e5a65717d88949c9085796d5e636c717c85909ca2abaea59a8e83776a61564b3f34291d1206000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121417191a1b1c1c1c1b1a18161312100d09040105090c0e0f111111111111110c0b090703000000000000000000000000000000000000000000000000000000010405070b0f11121314151514141212100d090705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ca5aeb5bbb9b5aba1978c8075695e52473b2f24180d00000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111111111111111111111111111111111111111100e0d0b0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e323536373737373737373635322e37434e5a65717d88949c9085796d686e737d8490959ea9b4a99e94897e72675a51473c31261b1004000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0d0f10101110100e0c0a070705020000000000010203060606060606060000000000000000000000000000000000000000000000000000000000000000000000000003050607080909090807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6875808c949ea5acafafaaa29c91877c7065594e42362b1f140800000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1a18161412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181e2327292a2b2b2b2b2b2b2b2a29282d37434e5a65717d88949c9085796c70787f8690959ea5aeaba29b9084796e63574c40372d22180d02000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a8490959ca2a3a69f9c928c80756c62584c41362a1f130800000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e222628282929292929292929292929292929292929292929292929292828272624221f1d1c1a16110e0b07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14181c1e1f1f1f1f1f1f1f22292e33383d434e5a65717d88949c908579767c828a91969ea5aeaea59c928a7e72695f554a3f30271d130800000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607060502000000000000000002040607060402000000000000000000000000000000000000000000000000000205070709090909090909090909090909090909090909090909090909090909090909090909090909090909060604010000000000000000000000000000010508090a0c0c0c0c0c0c0b0a090602000000000000000000000b16212b353f4b56616a707c848e9296989796918b81796e635c53483e33281d110600000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d31333434343434343434343434343434343434343434343434343434333231302d2b292825211c1a16110b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131414141b20272d31383e41474b4f5a65717d88949c90857c81868e939ca0a7aeaea59e958d82766e64584f453b3020170d0300000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d10121212100d09030000000003080d10121212100d080300000000000000000000000000000000000000000004090d101213141414141414141414141414141414141414141414141414141414141414141414141414141414141211100c08030000000000000000000001070c10131516181818181818171614110d0802000000000000000007111b25313c47515a626c707b82888b8c8c8a8580796e695f554b42392f24190e0300000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f4040404040404040404040404040404040404040404040403f3f3e3d3b39373433302b2825201b16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070f161e252b2f373c42484c5157585f65717d88949c9187868d91979ca3aab0ada69e9590847b6f645e54483f352b2110060000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d13181b1d1e1d1b18130d070000070d13181b1d1e1d1b18130d0903000000000000000000000000000000000000070e14181c1e1e202020202020202020202020202020202020202020202020202020202020202020202020202020201e1d1b17130d060000000000000000030a11161b1e202123232323232322211f1c17120b0400000000000000020c18222d374049525b626b70777c7f81807e7b746e685f584f453b32291f150a0000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a48474542403e3b3533302b25211c150e070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171f262e353a41474b52575a6164696e727d8894a1979191979ca0a7acb4aba49d9590857c706b61564d44372f251c12000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161d2226292a2926221d1710080810171d222629292926221d18130d07000000000000000000000000000000000910181e2327292a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c292826221d160f07000000000000030b131a21262a2c2d2f2f2f2f2f2f2e2d2b27221b140c040000000000000008131d273039424b525b61646c70747575736f6a635f584f483f352a22190f050000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28323c444c5255575757575757575757575757575757575757575757575757575756555452504e4b4a45403e3a35302b251e17110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119212830363e454951565b62656b6f74797e828e99a8a19c9ca1a8abb0aea9a29b938f857d716c625a51473d34271e150c020000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b20272d31343534312d27201812101820272d31343534312d27221d171007020000000000000000000000000007101921282e323536373737373737373737373737373737373737373737373737373737373737373737373737373737373534312c2720180f0600000000010a131c242b303537383b3b3b3b3b3b393836312b251d140b02000000000000030d172028323b424a52575c62656869696764615a544f473f372f251a1209000000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d38424c555c6162636363636363636363636363636363636363636363636362626261605e5c5957544f4b49453e3b352f27211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019212a313840474e545a61636c70757b8084898e929ca7aba8a8abb1afaaa59e9b918d837c716c635b524a41372c24170e05000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810161e252b30373c4041403c373029221a17202930373c4041403c37312d272018120c050000000000000000000000040e18212931383d404143434343434343434343434343434343434343434343434343434343434343434343434343434343403f3c37302820160d0300000007111a242c343a4043444646464646464544413b352d251b120800000000000000061018222a323a41484b5358595c5e5d5b5856514a453f372f271e150a01000000000000000000000000000915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1105010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6c6b6a6765635f5857544f4a453f37302b251e160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f182129313a424950575e636a6f757c81868c9095999ca3acb6b4b4afa9a79f9c949089817a706c635c534b423931271c130600000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131920262e353a41474b4c4b474139322b221f28303941474b4c4b47413c373029211c150e060000000000000000000009141e28313a41484b4d4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4c4b46403930271d13080000010c16212b343d444a4e4f525252525252514f4b453e352b22170d020000000000000008111a222931383d42484c4e515252504c4b47413b352e271e170e0500000000000000000000000407080915202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d110d0d0d0b0b090602000000000000000000000000000000000000000000000000000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797978777573716e6866635f58554f48433b352f2720180f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172028313a424a525960686e737b81878d91969c9ea5a7acb3b5ada8a69f9c96918c847e766f6a625b534b433b322920170c0300000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b232931373e4549515658565149433b3228262f38414951565856514b474139302c261f170e050000000000000000020d18232e38414a5257585a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5856504940372c22170c010005101b26303a444d54595b5d5d5d5d5d5d5c5a554e453b31271c110600000000000000010a111921282e32393e41424547464441403c37302b251e160e0600000000000000000000060b0f12141518202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d18181818171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e798685858585858585858585858585858585858585858585858585858482817f7c7976716e68635f58534a453f37302820180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039414a525b62696f787f858d91979ca0a7a9aeb2b7afaaa49d9b95908b85807a726e636059524b433b322a221910070000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232c333941474f545a6163615a534c4338302c364048515a6163615a565149433b362f271f150c020000000000000005101c27323d48525b61646666666666666666666666666666666666666666666666666666666666666666666666666666666663605950463c31261b10040008131e2a35404a545d646769696969696968655e554b41362b1f14090000000000000000010911181e23292f3336363a3b3b393534322d27211b150e06000000000000000000020910151a1d1f2024242c37434f5a66717d8994a0aba89c9185796e62574b3f3428242424242422221f1c17120b04000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e798591919191919191919191919191919191919191919191979191908f8e8c8a8884817d79736e69635c554f484039302820170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018222d374049515a626b707a818a90959ca1a8aab0b3b1b2afa69f9c948f8b85807b746f69645d565049423a322b221a1108000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c333c444a51585f636a6f6a635c53494037313b465059616a6f6a63615a544a453f382f261c12070000000000000007121e2935404b57616b70717171717171717171717171717171717171717171717171717171717171717171717171717171716f6a60564b3f34281d1106000915202c37434e59646e72747474747474736f655a4f44382d21160a00000000000000000000080e14181f24282a2b2e2f2f2d2a2926231d16110b05000000000000000000020b121a2025292b2c2f2f2f37434f5a66717d8994a0aba89c9185796e62574b3f342f2f2f2f2f2f2e2d2b27221b140c040000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca19c9c9c9b9a989695908d89847e79716d635f585049403930271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313c47515a616b707b838d929c9fa5abb1b0aaa8a5a7aa9f969188847f7a746f6b636059544a464038322a221a1209010000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a333c444d545a61686e747b716c635950463c3a424a5560696f7b766f6a635d554f483f362c21160c0100000000000007131e2a36414d5864707b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6f63584c4035291e1206000a16212d38444f5b67727e8080808080807f73685c5145392e22170b000000000000000000000004090f15191d1f1f222423221e1d1b18130d07010000000000000000000009121b232a2f3436373b3b3b3b434f5a66717d8994a0aba89c9185796e62574b3f3b3b3b3b3b3b3b393936312c251d140b0200000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b1aba8a8a7a6a5a4a59e9c98948f8a837d756e686059514940382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273039414b56606a6f7b848f939ba2a9aeb0aaa7a09c9a9ca39c91857d79736f6a64615a555049443c363028211a120a01000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444c545d646b6f787f857d716a60564b44424a545d636f7a83827b716d635f584f453b30251a0f040000000000000b17222e3a45515c68747f888888888888888888888888888888888888888888888888888888888888888888888888888888887d71655a4e42372b201409000d1925303c47535f6a76818c8c8c8c8c8c83786c6155493e32271b0f00000000000000000000000000050a0e111314171818161212100d0903000000000000000000000006101a232b333a3f424346464646464f5a66717d8994a0aba89c9185796e62574b46464646464646464544413c352d251b120800000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b4b9b5b3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaabacafaea9a7a49e9b948f8780796f6a605a51483f362c21170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d374149555e636f7a838f949da4abb4aba7a09c97918e939c9c9085796e6863605956514a464038312c261f18110901000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a545d646d727b828b8f847a6f635e554b48525b646e75818c8d847d756e695f554a3f33281c11050000000000000b17222e3a45515c68747f8b9494949494949494949494949494949494949494949494949494949494949494949494949494887c71655a4e42372b201409000d1925303c47535f6a76818d979797978f83786c6155493e32271b0f000000000000000000000000000000030608080b0d0c0a07060502000000000000000000000000000b15202a333c43494d4e5252525252525a66717d8994a0aba89c9185796e6257525252525252525252514f4b453e352c22170d02000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b6afaaa89d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9e9e9fa1a3a6a7acada8a49d97918c827a6f6a60584f453b30271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a646e77828e939da5adafaaa29c96918c86828e9a9c9085796d5e5756504b47413c363028221d160f070100000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d59646d727e858e92948d81766e645b524f58626b727e899195908780796e63574c4034291d12060000000000000b17222e3a45515c68747f8b96a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f94887c71655a4e42372b201409000d1925303c47535f6a76818d99a3a39b8f83786c6155493e32271b0f000000000000000000000000000000000205070708080606040100000000000000000000000000040f1a252f3a434c53585a5e5e5e5e5e5e5e66717d8994a0aba89c9185796e625e5e5e5e5e5e5e5e5e5e5c5a554e453c31271c1106000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c9292929292929292929292929292929292939395989a9da3a8aaada8a19c928e837a6f695f554a44382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a737e8a929ca4adaea69f9c928e86807b7d88949c9085796d624e4b46403d37312c261f17120d0605030000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8990959c9b918a7e736c6259555f69707c85909c9e97918c81756a5e53473c3024190d0200000000000b17222e3a45515c68747f8b96a2a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89f94887c71655a4e42372b201409000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f000000000000000000000000000003090d101213141412110f0c0803000000000000000000000007121d29343f49535d63666969696969696969717d8994a0aba89c9185796e696969696969696969696968655e554b41362b1f1409000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f9690868686868686868686868686868686868687888a8c8f93989c9fa6acaba39c938e82796e635d54483f362c21170b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca2acaea59e96908a827c75717d88949c9085796d62564b3c37322d27221c1612121212110f0b070200000000000000000009121a22292f33363740404040404040404033302c261f170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e79828e959fa29c90857c7069605d636e79838f959fa29c90857c7064594d42362a1f13080000000000000b17222e3a45515c68747f8b969d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887c71655a4e42372b201409000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f000000000000000000000002070b0f14181c1e1e201f1e1d1b17120d0a0500000000000000000008141f2b36424d58636d717575757575757575757d8994a0aba89c918579757575757575757575757575736f655a4f44392d22160b000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7b7c7c7e8083878c90969da3abaca39c938c81756d635850463b30251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6974808b959ea9afa69e9590857e76706c717d88949c9085796d62564b3f2c26231e1e1e1e1e1e1e1d1c1a16120c050000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68707b85909ca29f968f83796e63646d75808c939da49b918a7e726c62574c40352a1e13070000000000000b17222e3a45515c68747f8b9191919191919191919191919191919191919191919191919191919191919191919191919191887c71655a4e42372b201409000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000000000000000000050c11161a1e2327292a2b2b292826221d19150f0901000000000000000915202c37434e5a66717d808080808080808080818d99a5b0a89c9186808080808080808080808080807f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f70717275777c80858f939ba2abaca39b91897d726960554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba5aeaa9f9690847c736e6465717d88949c9085796d62564b3f33282929292929292929292825211c150e06000000000000000002090f15191d1f202929292929292929291d1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58626b727e89919ba49d938c80756d6b727e89909aa39d948d81766e645b52483d32271c11050000000000000b17222e3a45515c68747f868686868686868686868686868686868686868686868686868686868686868686868686868686867d71655a4e42372b201409000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f000000000000000000060e151b2125282e32353637363534312c26241f19120a040000000000000b17222e3a45515c68747f8b8c8c8c8c8c8c8c8c8d929ba6b2aba097918c8c8c8c8c8c8c8c8c8c8c8c8c83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e636363636363636363636363636364646567696c70757c828d929ba3acaaa19b9084796e63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5b66727e89949ea9ada49c90857c706c655e65717d88949c9085796d62564b3f313435353535353535353433302b251e170e05000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48525b646e76818d949da49a91897e726f7b85909ca19f968f837a6f635e554b42382e24190e0300000000000006121d2934404b57636e797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6e63574b4034291d1106000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f0000000000000000070f161e252b3033383d40414242403f3c37332f29221a140c0400000000000b17222e3a45515c68747f8b9698989898989898999ba2abb5b0a7a09c9898989898989898989898988f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625858585858585858585858585858595a5b5b62646b7079818d929ca7afa89e948a7f73685e54493e33271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596975818c98a5aea89d948a7e736c625c5a65717d88949c9085796d62564b373c3f4040404040404040403f3b352f271e150c0200000000000000000000030608081111111111111111110604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000308111b252f37424a545d636f7a838f97a0a19c90857b79828e959ea29c91867c706960554d443a32281e140a0400000000000005111c28333e4a545f686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e54493e33271c1005000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000000000000060f1820272f353b3e41474b4d4e4e4c4b46403e39322b241d140c03000000000b17222e3a45515c68747f8b96a2a3a3a3a3a3a3a5a6abb3bbb8b0aba8a3a3a3a3a3a3a3a3a3a3a39a8f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564c4c4c4c4c4c4c4c4c4c4c4c4d4d4e5052575b62686e79828e969faaaea59b8f84796e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606978838f9aa6b2a69b8f83796e635b535a65717d88949c9085796d62564b40464b4c4c4c4c4c4c4c4c4c4a453f372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1e27313a444a56606a717d86919ca39e958e82808b929ca49b928a7f736c625950463d342a201b19140e080100000000030f1a25303b454f585f6363636363636363636363636363636363636363636363636363636363636363636363636363636363635e574e453a2f24190e03000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f000000000000050e16202830373f454a4c51575859595856504d49433b352d241c1408000000000b17222e3a45515c68747f8b96a2a8a8a8a8a8a8abadb1b7bfc0b9b5a8a8a8a8a8a8a8a8a8a8a8a69a8f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b404040404040404040404041424244484c52586069707b86919ca8b3a89d94887d71655a4e43352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8ada2968b7f73685f544e5a65717d88949c9085796d62564b495056585858585858585857554f483f352b21160b0000000000000000000000000000000000000000000000030506080909090909080706030000000000000000000000000000000000000000040708090c0e0e0d0a06050300000000000000000000000000000000070f161d2226282e32353c465059636c747f8b929ca59c928e8b909aa39e948d81766e655c53494036332f2b25231e18110901000000000b16212b353f474f54575757575757575757575757575757575757575757575757575757575757575757575757575757575757544e473e352b20160b00000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f0000000000010b151e27303940484f55575a6164656563605958534c453d352c241810070000000b17222e3a45515c68747f8b969c9c9c9c9c9c9ca0a2a7afb7b7afaa9d9c9c9c9c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f35353535353535353535353637383d42485058626b74808c97a4adada4978c807469574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b8797a0abb0a793887c7065584f4e5a65717d88949c9085796d6256495059606363636363636363635f584f453b30251a0f030000000000000000000000000000000000000001060b0e10111414141414141313110e0a0500000000000000000000000000000000060b0f121415181a1a191512110f0b0702000000000000000000000000060f1820272c3134383d4042484c535c636e78828e959fa39c9a979aa1a0978f847a6f635e554b4945403e3a35322e28211911080000000007111b252e373f454a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b49453e362e251b110600000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f000000000007111b252e37404950585f63676b6f71706f6a65635c554e453d342920170d0300000b17222e3a45515c68747f8b919191919191919194979ea7b1afa79f929191919191919191919191918f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342929292929292929292a2a2b2e33373f48525b64707c87949ea8b1a69a8e8377685e54493e33271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965707c8893a7b0aaa096867a6f63584c4e5a65717d88949c9085796d62565059606a6f6f6f6f6f6f6f6f6e695f554a3f33281c1105000000000000000000000000000000000000040b1116191c1d2020202020201f1e1c19140f0801000000000000000000000000040910151a1d1f2024252524211d1c1a16120c0500000000000000000000030d16202830373c3f42484c4d5257595b62686f7b85909ca7a7a5a3a4a89c91867d716a635c5957544e4b49453e3d38322a21180e04000000010b151e272e353b3e4040404040404040404040404040404040404040404040404040404040404040404040404040404040403e3a352e261e140b0100000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000000000b16212b353f47505960686e73787b7c7c7a76716c655e554d443930271d130900000b17222e3a45515c68747f858585858585858585898e97a2adaa9f96888585858585858585858585858583776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1e1e1e1e1e1f2024272f38424c57626c78848f9ba7b2a89c9085786e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e5a66717d8894a0aba89c9185796a60564a4e5a65717d88949c9085796d6256556069767a7a7a7a7a7a7a7a796e63574c4034291d12060000000000000000000000000000000000050d141b202427292b2b2b2b2b2b2b2a27241f1811090100000000000000000000080e14182025292b2c2f3131302d292825211c150e0602000000000000000008131d27303940464b4c5257595b6264686b7074787f8b96a2adb1aeafa3988c817874716c6965635e5757544e4c48423a32281e140a00000000050e161e252b3033343535353535353535353535353535353535353535353535353535353535353535353535353535353534332f2b251e160d040000000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000000030f1a25303b454f58606a6f797f8387888785827d736f655e554a41372d23180d02000b16222d39444f5b656f747a7a7a7a7a7a7a7a7a7d8994a0aba89c91857a7a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c12121212121212131314161f27333d48525b6a76818d99a4b0aa9f96877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e5a66717d8894a0aba89c91857a6e63574c4e5a65717d88949c9085796d625657636f7a86868686868686867e72665b4f44382c21150a00000000000000000000000000000000040d161e252b2f33343737373737373635332e29221a11080000000000000000010911181e232a2f3436373b3c3d3b383433302b251e17120a02000000000000010c17222c3740495056585b6264686b7074787c7f838b9099a4afbcbab0a59a918c84807c7874716e6865635e5757524b42382e23190e0300000009121a22292f333637393939393939393939393939393939393939393939393939393939393939393939393939393939393534322d27201910070000000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f0000000005111c28333e4a545f686f7a828a8f949397918e877f736e645a51473c31261b1005000914202b36414b555e65686e6e6e6e6e6e6e6e717d8994a0aba89c9185796e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1107070707070707080a0e17242e3846525e6975808c98a3afafa693877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c8893a6afaba197877b6f64584d4e5a65717d88949c9085796d62515a66717d88979292929292897d71665a4f43372c201509000000000000000000000000000000010b141e262e353a3e4042424242424242413e38322a22180f050000000000000109111921282e323a3f42434648484744403f3b352f27221a130b02000000000004101b26313c4650596063686b7074787c7f83878b8f9399a0a9b3c0c0b4aaa19a948f8c8884807c7975716e6864625b52483d32271c11050000050f19222b32393e41424545454545454545454545454545454545454545454545454545454545454545454545454545454541403d37312920170e0400000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f0000000006121d2934404b57636e79828e929b9da4a09c97918a7e736a61564b4034291d12060006111c27313c454e555b5c6363636363636366717d8994a0aba89c9185796e6363636363636363636363605e5951493f352a20150a000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500000000000000000a14232e3a46515d6874808b97a2aeab9f94887d71655a4e42372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87969faab1a8958a7e72675d544e5a65717d88949c9085796d6256616a75818c989d9d9da096877c7064594d42362b1f130800000000000000000000000000000006111b252e363e45494b4e4e4e4e4e4e4d4c48423b32291f140a000000000000061119212931383d43494d4e525454524f4c4a453f37332b231b1308000000000006111d28343f4b56606a6f74787c7f83878b8f93979a9da4a8aab0b7b7b0aaa8a49d9b97948f8c8884807c7975706b62574c40352a1e120700000a151f29323b43494c4e505050505050505050505050505050505050505050505050505050505050505050505050505050504d4b47413931271e130900000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000005101c27323d48525b67737e8a929ca3a8adaaa7a09c90857b6f64584c41352a1e120700020d18222c353e454b4f515757575757575a66717d8994a0aba89c9185796e625757575757575757575755534f4941382f251b1106000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110503030303000205070d161e2f3b46525e6975808c97a3afaa9f93887d7165594e42372b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7a85909ca8b1a5998e82776d635a525a65717d88949c9085796d625d636f7b85909ca7a9a89c91857a6e63574c4035291d12060000000000000000000000000000050e17202b353e474e54575a5a5a5a5a5a5957524b42382e24190e0300000000050e17212a313a41484b53585a5e5f5f5e5b57554f48433b332b231910070000000006121e2935404c58636f7a7f83878b8f93979a9da4a6a7a09ca0a7b0b0a7a09ca0a7a7a49e9b9794908c8884807c7064594d41362a1f130800030e19242f39434b5358595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5856514a41372d23180d02000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000007121e2935404b57616b78838f9ba2acb3b7b5b0aa9f968b7f74685d51453a2e23170b000008121c252d353c4144454b4b4b4b4b4f5a66717d8994a0aba89c9185796e62574b4b4b4b4b4b4b4b4b4948443f3831281f150b01000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110f0f0f0f0f090d1012161e26323d48525b6a76818d99a4b0aea593877c7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6877828e9aa7b0a79c92897d716b625b5a65717d88949c9085796d5d636d75808c959fa9b0a79a8e83776960554a3f33281d110600000000000000000000000000020c161f272f3a454e575e6365656565656565625b52483e33271c1106000000020c151e27313a424a52575d6366696b6b6a66635f58534c433c332920170e0400000006121e2935404c58636f7a858f93979a9da4a6a69f9c98969196a0aaaaa0969196989b9ea5a7a59e9b979490887d71655a4e43372b2014090006111d28333e49535c62656868686868686868686868686868686868686868686868686868686868686868686868686868686864615a51473d32271b1005000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f00000007131e2a36414d5864707b87949da8b3bcc2c1b9afa69a8e83776b6054493d31261a0f0000020b141d252c3136393a40404040434f5a66717d8994a0aba89c9185796e62574b40404040404040403d3c39352f2820180f0500000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1b1b1b1b1b1b13181c1e21262e363e4c57626b78838f9ba6b2a99e95867b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5868737f8b97a0abaca39b90847b706b635f65717d88949c9085796d636d717d87919ca6afaaa0978b7f74685950463b30251a0f040000000000000000000000000007121c262f383f49545e686e717171717171706c62574c41352a1e130700000007121c252f37424b525b61646d7175767775726e69635c544c433931271e130900000006111d28343f4b56606a77828e99a4a6a69f9c9895908d8986919ca8a89c9186888c9095979b9ea4a6a59b9084796e63574b4034291d11060008131f2a36414c58626c70737373737373737373737373737373737373737373737373737373737373737373737373737373736f6b61564b4034291d1206000d1925303c47535f6a76818d99a4a69b8f83786c6155493e32271b0f0000000914202b37434e5a65717c8894a4adb7c3cdc9beb2a79b9084786d61564a3e33271c10000000040d141c22272b2d2e34343437434f5a66717d8994a0aba89c9185796e62574b3f3434343434343432312e2a251f1810070000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342826262626262626262327292c30373e47515a64707b87939da8b3a79b9084796a61564b3f34291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35414d58646f7b86919ca7b0a99e958f837c736e6865717d88949c908579696f747d859097a1abafa69c91867b6f64584d41362c21170c01000000000000000000000000071018212c363f48525b636e787c7c7c7c7c7d7c7065594d42362b1f13080000000b16212b353f48525b626b70777d808282817e79716c635d544a41372d23180b010000040f1b26313c46505968737f8a969e9c9895908d8985817d7c87939fa094897e7d8084888c8f94979b9d988c8075685f54493e33281c11050008141f2b37424e5965707c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7b6f64584d41352a1e1307000d1925303c47535f6a76818d999e9e9b8f83786c6155493e32271b0f0000000814202b37424e5a65717c8894a3acb6c1ccc7beb2a79b8f84786d61554a3e33271b1000000000040b12181c20222229292c37434f5a66717d8994a0aba89c9185796e62574b3f34292929292929262623201b150f07000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f343232323232323232322d3235363b40464e57616a747f8b97a4adb0a7998d82766b5a51473c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111e2935404b57616b76818d96a0aaaea59d948f857f797470717d88949c908579747a808690969fa8b1a99f958d81756b61574b4035261c1207000000000000000000000000030d172029303b465058626c737f8888888888887f73685c5045392e22160b0000030f1a25303b454f58626b707b82888c8e8e8c89837d716d635a51473d32251b11070000010c17222c37414d5964707c879495908c8985817d7a76727b87939ea094897d7175797d8084888b8f9495887d7165584f453a30251a0e03000b17222e3a45515c68747f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a887d71655a4e42372b201409000d1925303c47535f6a76818d939393938f83786c6155493e32271b0f00000007121e2a35414c58646f7b86939ca7b3bac0bfb7aea5998e82776b5f54483d31251a0e000000000002080d111416171d202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3d3d3d3d3d3d3d3d3d3d383d4041454a50565e686f7b85909ca7b3aba0978b7f73685c5145372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a64707c86919ca2abada49d95908a837f7c7a7d88949c90857d80858b91979fa6afaaa19c90857b6f645a51473d3227160c0200000000000000000000000008131d273039414a556069707c869194949490847a6e63574c4035291d1206000005111c28333f4a555f69707c848e9398999998948f867d716b61564b3e352b20160b00000008121e2a35404c57626b78838c8884817d7a75726e69707b87939ea094897d71686e7175787c8083878b84796e63574b40352b20160b00000b17222e3a45515c68747f8b9696969696969696969696969696969696969696969696969696969696969696969696969694887c71655a4e42372b201409000d1925303c47535f6a768187878787878783786c6155493e32271b0f00000006121d2934404b56616a77838e9aa1aab3b5b4afa79e948a7f73675c5045392d22160b000000000000000206090b0b15202c37434f5a66717d8994a0aba89c9185796e62574b3f34281d111111110f0e0d0a06010000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b494949494949494949494949474b4d4f555960636e78818d959fa9b0a79c91867b6f64584c41352a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414c57626c747f8b929ca3aaada69f9c948f8b8785838f9b9f9590888c90959ca0a7afaaa19a908a7e726b61564a41382e231805000000000000000000000000061119222d374149535d636e79838f969f9e958a7f736960554a3f33281d1106000006121d2934404c57636e79838f959ca3a5a5a49d9690857b6f64584f453a30251a0e03000005111c27323d48525b68747f817d7975716e69666364707b87939ea094897d71666365696c7074787c7f7f73685f54493e33251b110700000b17222e3a45515c68747f8b96a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f94887c71655a4e42372b2014090007131e2a35414d58646f7b7c7c7c7c7c7c7b7064584d41362a1e130700000005101b27323d47515a66717d89919aa1a8aaa9a69f9690847a6f63574c4035291d120600000000000000000000000915202c37434f5a66717d8994a0a0a09c9185796e62574b3f34281d110606060303010000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625655555555555555555555555555515658585f636a6f76808c929ba6afaba0978d82766b61564b4034291d1203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d48525b636e78818e929ba1aaafa9a49d9b9796908f949da69f9c93979c9fa5abada79f9c908c80746e645a51473a31281e14090000000000000000000000050e16212a313c47515a636d75808c939da59b90847a6f635950463b30251a0f0400000a16222d3944505c67737e8a939da5acb0b1ada79f958c8075685f54493e33281c11050000030e19232e3842505b656f7475716e6866635f585964707b87939ea094897d71665a5a5c6265696c7074736f65584f453a3025150b0100000b17222e3a45515c68747f8b96a2a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89f94887c71655a4e42372b2014090006121d2934404b56616b6f707070707070706b62574c4035291e1207000000020d18232d37414d59636d75808c90999ca09e9c9590867d716960554a3f34281d110600000000000000000000000915202c37434f5a66717d8994959595959185796e62574b3f34281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6260606060606060606060606060615a616466696e727a818c909aa2abaca39c91867c70655a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e384249545f686f7a828c919c9fa6aaada8a6a69f9c9b9da4ada9a79fa3a7a9aea9a49d96918a80756f665e544a41372921180e0400000000000000000000020c151e27313a424b56616a717d87919ca49e958b7f73696055483f362c21170c0100030e1a26313d4854606b77828e9aa4adb5bcbcb7afa69c9084796e63574b4034291d11060000000a141e2836414c565f65686966635f5857554f5964707b87939ea094897d71665a4f5358595b62646868655e55473e352b2016040000000b17222e3a45515c68747f8b969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94887c71655a4e42372b2014090005101b27323d47515a616464646464646464625b52483d32271c10050000000009131d27343f49545d636e7880888e919695908c857d716c635950463b31261a0f0400000000000000000000000915202c37434f5a66717d8989898989898986796e62574b3f34281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d6b6f72757a7e838d919aa1aaaca49c938c80756c62574a41372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28303a454f5860696f79818990969ca0a7a9aeafaaa8a6a8adb5b4b3abaeaca8a59f9c938f867e7570665f564d44393127191007000000000000000000000007111b252f37424a555e636f7b849097a1a59b90847a6f63595046382f261c1207000005111c28333f4b56626d7984909ca7b3bdc6c7bfb4a99e95877b6f64584d41362a1e1307000000040e1c27323c454e565b5d5e5a57554f4c4a4d5964707b87939ea094897d71665a4f494c4e5257595d5c5a554e45372e251b11070000000b17222e3a45515c68747f8b9090909090909090909090909090909090909090909090909090909090909090909090909090887c71655a4e42372b20140900020d18232d37414a5156585959595959595857524a42382e23180d0200000000040e1a25303a4449545f686e757d8285878684807b716d635c534840362c21170c01000000000000000000000007121e2a35414c58646f7b7e7e7e7e7e7e7e7e72665b4f44382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085797777777777777777777777777777777879797b7e80848a8f949ba2aaaba39c948e827a6f635b52483931271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f16202b353e47505960696f757e858c91969c9ea5a5a7a9aeaeb2b5aea9a7a4a39d9a95908a837d726e665f564f463d34292017090000000000000000000000060f18212b353f48525b646e76818d949ea89e958b7f73696055484036271f160c02000006111d2834404b57626e7a85919ca8b4bfcbcdc2b7ada493877c7065594d42362b1f1308000000030d18222c353e454c5051524e4c4a4540414d5964707b87939ea094897d71665a4f434142484c4d51514f4b453e35261e150b010000000b17222e3945515c68737f858585858585858585858585858585858585858585858585858585858585858585858585858585857d71655a4e42372b201408000009131e27313941474b4d4d4d4d4d4d4d4d4c48423a31281e14090000000000000b16202a303a454f585f636d71777a7b7b79756f6b635d534c43382f261c120800000000000000000000000006121d2934404b56616a6f72727272727272726e64594e43372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c91878383838383838383838383838383838383848587898c90959b9da4aba8a19c938e847b6f6960554b42392920170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e374049505960636e727b81868c9095979a9b9ea5a3a8aea59e9b9996938f8a857f79716c645e564f463e362c2419100700000000000000000000030d161f28303b454f58626b737e8a929ba5a59c90847a6f63595046382f26170f0500000005101c28333f4a56626d7984909ca7b3bbc4c5beb3a89d94867b6f64584c41352a1e13070000000008121c252d353c4144454743403e3b35414d5964707b87939ea094897d71665a4f4337383e4142454544413c352d25160d04000000000a16212d38444f5a656f7379797979797979797979797979797979797979797979797979797979797979797979797979797979716c63584d41362a1f13080000040e17202931373d404142424242424241403d38312a21180e04000000000000061016202b353e474f545c6366696e706f6e6864615a534c433b33281f160c0200000000000000000000000005101b27323d47515a61646767676767676766645d544a3f34291e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aba097918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90919695979b9ea5a8a7a39d97918c827b6f6a615950463b3229191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e263038404850555d646b70757b8084888b8e909495989fa69e95908d8b87837f7a736e68635c554d463e362e251c1308000000000000000000000008121d263038404a555f68707c85909ca2a99e958b7f74696055484036281f160700000000020e1925313c48535f6a76828d99a2abb5babab5ada49b8f84786b61564b4034291d120600000000020b151d252c3236393a3b3734333036414d5964707b87939e9e94897d71665a4f43372e3335363a3a3936312c251d1406000000000009141f2b36414b555e65686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e65635c53493e33281d120600000007101920272d3234353636363636363635322e2821191108000000000000000007111b252e373e454953585860636464635e5756514a433c332b22170f0600000000000000000000000000020d18232d37414a5156585b5b5b5b5b5b5b5b59544d443a30251b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b0a7a09c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9b9c9fa7a3a7a9aca29c99938f8780796f6a615a514840362a2218080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f28303840464a545b61646b7075797c808284868a8f989f958884827f7c77736f6a635f58534b443d362e251e150c0300000000000000000000051019222c364049535c636e79828e969faaa59c90847a6f63595046382f26170f0600000000000915202c37434f5a66717d89929ba3aab0afaba49d938b7f74685a51473d32271b10050000000000040d151c22272b2d2e302c29282a36414d5964707b8793939393897d71665a4f43372c272a2b2e2e2d2b27221b140c04000000000006111c27313b454e555a5c626262626262626262626262626262626262626262626262626262626262626262626262626262625a58534c43392f24190e03000000000810171e2327292a2a2a2a2a2a2a2a2927231e181109000000000000000000010b151e262e353a43494d505557585857544e4b474139332b231b120700000000000000000000000000000009131d27313941474b4c4f4f4f4f4f4f4f4f4e4a443c342a20160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b8b0aba8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a8aaafafb3ada49c928e89837d756e69615a514a41382f261a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f282f363b444a52575b6164686e717477797a7e8a959c9085797673706c67636059554f48433b342c251e150d0500000000000000000000040d162129313c465059636c74808b939ca6a99e958b7f74696055494036281f16070000000000000914202b37424d58636d76818d939ca0a7a3a29b948f83796e63574c41372d23180d02000000000000040b12181c20222324201d1f2a36414d5964707c8787878787877d71665a4f43372c201e1f2322221f1c17120b04000000000000020d17222b353d454b4f51565656565656565656565656565656565656565656565656565656565656565656565656565656564e4d49433b33291f150a000000000000070e13181b1d1e1f1f1f1f1f1f1e1e1c18140e080000000000000000000000040d161e252b303a3e3f464a4c4d4c4b49453e3d373129231b120a02000000000000000000000000000000040e17202931373d40414444444444444444433f3a342c231a1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b8b1aba8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafadb1b2b6bab3a89d938e827d78716c636059514a413930281f16090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262c313a41484b5257585f6365696b69717d88949c9085796d6865625b5856504a453f37322b241c150d0500000000000000000000010b141e26313a414a56606a717d86919ca3aca69c90847a6f63595046383026170f0600000000000007121e29343f49545d636f7a828c9197979896928d847b706960554a3f31271e1309000000000000000002080d111416171815121d2934404c57636e797c7c7c7c7c7c7a6f63574c4035291d121317171614110d0802000000000000000008121b252d353b4144454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413e39332b22190f050000000000000004090d1012131313131313131312100d090400000000000000000000000000060d151b202a2f34363b3f404141403e3a35322d272019120b02000000000000000000000000000000000007101920272d32343538383838383838383734302a231c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b1a8a19c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6a2a5a7acb2b2a69b8f837b726e68635c5550484139312920170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212931383d41484b4f54575a5d5965717d88949c9085796d625957524c4b46403b352f27221a140c05000000000000000000000006111b252e36414a545d636f7a838f97a0aba99f958b7f746a6056494036281f160700000000000000040f1a25303a444a56606a6f7980868a8c8c8b87817b706b625950463b3020170e04000000000000000000000306090b0b0d09111c28333f4a555f696e7070707070706f6960554a3f34281d11080c0b0b09060200000000000000000000020b141d252b313638393f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3736332f29221a120900000000000000000000020506070808080808080707050200000000000000000000000000000000040b11162025262c303334363534332f2b25231e17100802000000000000000000000000000000000000000810171d2327292a2d2d2d2d2d2d2d2c2c2925201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aba197918f8f8f8f8f8f8f8f8f8f8f8f8f90909693969a9ca3a7aca89d938f857e726e645d544a41383129201810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c121921282e32383d3e45494b4e525a65717d88949c9085796d62564c48423f3c37302b251e16120a030000000000000000000000000b16202b353e47515a646e75818d949da7afa69c90857a6f63595046383026170f0600000000000000000b16202a313c46505960696e757b7f80807f7c766f6a625b52483f362c2110070000000000000000000000000000000001030f1a25303b454f585f6364646464646463605950463c31261b0f040000000000000000000000000000000000040c141b22272b2d2e343434343434343434343434343434343434343434343434343434343434343434343434343434342b2a28241f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000010710151a1c212528292a2a292724201b18130e0700000000000000000000000000000000000000000000070e13181b1d1e2121212121212121201e1b16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c918784848484848484848484848484848586878a8e929a9ca3a9a49d9590867e726d635a51473d32291f140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810181e23282e32353a3e40434e5a65717d88949c9085796d62564b3e3934312d27211b150e0601000000000000000000000000030e19242f3a454e57616b727e89919ba4ada99f958b7f746a6056494036281f1607000000000000000000061017222c364049505960636b6f73757573706c64615a524a42382f261c12000000000000000000000000000000000000000b16212b353f484f55575959595959595755504940362c22170c01000000000000000000000000000000000000040b12171c1f212228282828282828282828282828282828282828282828282828282828282828282828282828282828201f1d19150f09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0c12171a1d1d1e1e1d1c1916110b090400000000000000000000000000000000000000000000000004090d10121215151515151515151513100c0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857978787878787878787878787878797a7c7f82888e9299a0a9a69f9791867d716b61564b42392e24190b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14181e23252b303337434e5a65717d8894989085796d62564b3f2e2926221d16110c05000000000000000000000000000005101c27333e49545e686f7b85909ca19c9ca69c90857a6f63595046383026170f060000000000000000000008121d263038404850555a61646769696864625b56514a423a31271f160c0200000000000000000000000000000000000007121c252f373f454a4c4d4d4d4d4d4d4c4a46403830261c1208000000000000000000000000000000000000000002080d111416171c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1413120e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112131211100e0b060100000000000000000000000000000000000000000000000000000000020506070a0a0a0a0a0a0a0a090705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6d6d6d6d6d6d6d6d6d6d6d6d696e7073777c828b9099a0a9a7a09790857b6f645b52483e33251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e14181b20252b37434e5a65717d888c8c8c85796d62564b3f33281b17130d070200000000000000000000000000000006111d2934404b57636e78828e959191919191958b80746a6056494037281f16070000000000000000000000030d161f2830383f464a5156585c5d5e5c5957524b474139312a21170f0500000000000000000000000000000000000000020c151e272f353b3f40424242424242403f3c3630281f160c03000000000000000000000000000000000000000000000206090a0b11111111111111111111111111111111111111111111111111111111111111111111111111111111080806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6261616161616161616161585f6365686c7078808b9099a2aba79f958d81766c62574c3f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090b11161f2a36424d5964707c818181818075695e52463b2f24180c080300000000000000000000000000000000000b17222e3945515c68737f858585858585858585857a6f63595046383026180f06000000000000000000000000060f181f272f363b41474b4d505252514d4c48423c37302921191107000000000000000000000000000000000000000000050e171e252b3033343636363636363534312c261f170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c0804000000000000000000000000000000000000000000000004080b0d0d111111111111111111110d0c0a08040000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62565656565656565656564f5557595c62686e74808b929ba7afa69b91877c7065584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107131e2a35404c57626b70757575757570665c51453a2e23170c000000000000000000000000000000000000000a16212d38444f5a656f737a7a7a7a7a7a7a7a7a796f6a6056494037282016070000000000000000000000000000070f171f262c30383d40414546474542413d38312d27201811090000000000000000000000000000000000000000000000060e151c212528292a2a2a2a2a2a292826221c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006060606060606060300000000000000000000000000000000000000000000000000000000000000000000030506080b0d0e0e0f0e0d0b09060604010000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e080100000000000000000000000000000000000000030a0f131618191d1d1d1d1d1d1d1d1d1d181816130e0903000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4a4a4a4a4a4a4a4a454a4c4e53585f636f76818d97a0aaaba2988c8175685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b62646a6a6a6a69665f564c42372c21150a0000000000000000000000000000000000000009141f2b36414b555e65686e6e6e6e6e6e6e6e6e6d63605a5147393027180f06000000000000000000000000000000070f161c21282d323535393b3b393635332e28231d17100800000000000000000000000000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1d1d1b17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080811111111111111110f0605030000000000000000000000000000000000000000000000000000000002070b0f1112141618191a1a1a19171512110f0c080300000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a020000000000000000000000000000000000060d14191e212424292929292929292929292423211d19130c050000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3e3e3e3e3e3e363b3f4043474f545f64707c86919ca8b3a79c9084796e63574b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424b5257595e5e5e5e5e5c564f463d32281d12070000000000000000000000000000000000000006111c27313b454e555a5c63636363636363636362585651494037282017070000000000000000000000000000000000050c12171e2327292a2d2f2f2e2a2a27241f18130d0700000000000000000000000000000000000000000000000000000002070b0f111213131313131312110f0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1a11100e0b06010000000000000000000000000000000000000000000000050a0c11161a1c1d1f2224252626252422201d1d1b17120e0b0601000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a01000000000000000000000000000000060e161d23292d2f30343434343434343434342f2f2c28231d150e0500000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3433333333332c303334373e454c57626b76818d99a4b0a99e95887c71655a4e42372b20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d5252525252514c463f362d23190e0300000000000000000000000000000000000000020d17222b353d454b4f51575757575757575757564c4b4740393027180f0600000000000000000000000000000000000002070e13181c1e1e222424221f1e1c19140f090300000000000000000000000000000000000000000000000000000000000000030506080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f15191d1f1f2829292929292929261d1c1916110b040000000000000000000000000000000000000000050a0f15191b212528292b2e2f31313131302e2c292826221c1916110b04000000000000000000000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a11080000000000000000000000000000040d161e262d33383b3c404040404040404040403b3a37332d261e150c03000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342827272727212528292e353d48525b67737e8a95a1adaea5968a7f73675c5045392d22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a32383d4042474747474645423d362e261c130900000000000000000000000000000000000000000008121b252d353b4144454b4b4b4b4b4b4b4b4b4b413f3c37302820170700000000000000000000000000000000000000000004090d101213161818171313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f24282a2b343434343434343431292724201b140d05000000000000000000000000000000000001070f14191f24252b30333437393b3c3d3d3c3b3a373534312c2724201b140d08030000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e04000000000000000000000000030b151d262f373d4346474b4b4b4b4b4b4b4b4b4b4745423d362e261d1309000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1c1c12161a1c1e252e38424d5964707c87939eaaafa3988c8075695e52463b2f24180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e3235363b3b3b3b3b3a37322d261e150c03000000000000000000000000000000000000000000020b141d252b313638394040404040404040403f3534312d2720180f060000000000000000000000000000000000000000000000020507070b0c0d0b0807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0c0e0f10101110100f0e0c0907060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363640404040404040403d34332f2b251e160d04000000000000000000000000000000050b11161f24292f33353b3e4042454648484848474543403f3c36332f2b251e16130d060000000000000000000000000009131e28323c444c525557575757575757575655514b443b32281d13080000000000000000000000010a131c252d373f474d51535757575757575757575752514d463f362d23190e040000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1110070c0f11151e2935414c58636f7a86929da9b0a4998d81766a5f53473c3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e23272a2a303030302f2e2c28231c150d050000000000000000000000000000000000000000000000040c141b22272b2d2e34343434343434343434292926221d170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090d1012131518191b1c1c1c1c1c1b1917151212100d09050200000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a32393e41424b4b4b4b4b4b4b4b48403e3a352e261e140b0100000000000000000000000000060e151b21282e33393e3f454a4c4e50525354545453514e4c4a46403e3a352e26221d170f070100000000000000000000000c17222d38424c555c61626363636363636362605b544b42372d22170c010000000000000000000009121a232c353e4750575c5e636363636363636363635e5c574f463d33281d13080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110000030507111d2934404b57636e7a85919da8b0a5998e82766b5f54483c31251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f242424242423211d19130c0500000000000000000000000000000000000000000000000000040b12171c1f2122292929292929292929281e1d1b17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1013181b1e1e212325262728282827262523211e1d1b1813100d090300000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b42484c4e5757575757575757544b49453e362e251b1106000000000000000000000000080f161e252b30383e43494c4f5557595c5e5f60605f5e5c5a5755504b49453e36312d272018110902000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f03000000000000000000071019222b343c454e5760676a6e6e6e6e6e6e6e6e6e6e696760574d42372c21160a0000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11060b0e1011161e2a35414c58636f7b86929da9b1a5998e82776b5f54483d31251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e11131318181818181715120e090300000000000000000000000000000000000000000000000000000002080d111416171d1d1d1d1d1d1d1d1d1c1212100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e13181b1e2327292a2c2f3032333334333332302f2c2a2927231d1b18130d09040000000000000000000000000000000000000000000000000000000000000000000000030e19242f39424b53585962636363636363636057544e473e352b20160d030000000000000000000008101820272e353b42484c5358585f636568696b6b6b6b6a686663605957544e47443c373028221a120a02000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c10050000000000000000060f172129323b444d565f6770767a7a7a7a7a7a7a7a7a7a7570675c51453a2f23180c0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1c1c16191c1d20273038424e5965707c87939faab0a4998d82766a5f53483c3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507080d0d0d0d0c0c0a0703000000000000000000000000000000000000000000000000000000000000000206090a0b1111111111111111111107060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e14191e2327292d323435383a3c3d3e3f3f3f3e3d3c3a383534322d2926231d18140e070200000000000000000000000000000000000000000000000000000000000000000006111d28333e48535c62656e6e6e6e6e6e6e6e6b635e574e453a2f271d1309000000000000000000071019202830373f454a52575c6265686e717375767777767574716f6966635e57544b464039322a221a120a010000000000000000111d28343f4b57626e79868585858585858585796e62564b3f34281c110500000000000000040d161f28313a434b545d656f7681858585858585858585858175695e52473b2f24180d0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428282828202427292b30374049545d68737f8b96a2adafa3988c8075695e52463b2f24180c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171e23272d3234383d4041444648494a4a4b4a4a4948464341403d3734312d27231e17120c05000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c707a7a7a7a7a7a7a7a776e685e544941372d23170f0600000000000000060f182029313940474f545b62646c7075797c7f8082828282817f7d7a76726e68635d565049423b332b221a11080000000000000000111d28343f4b57626e79859191919191919085796e62564b3f34281c1105000000000000010b151e263038414a535c646e747f8b91919191919191938e82796e63574c4034291d12060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34333333332b2f3334353a40475059636d77828e9aa5b1aea5968a7f73675c5045392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060707070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607090b0c0e0f1010111110100f0f0d0c0a09070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161c22282e32373d4041474b4d4f52535556565656565553514f4c4b4741403c37322e28211c160e060100000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c868585858585858582786e635a51473c32281f160c030000000000040d1620283139414951585f636c70767c8184888a8c8d8e8e8e8c8b8885827d78716d636059524b433b332a2219100500000000000000111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c110500000000000107111b252e374049515a636c727e87919ca29c9c9c9e958f837a6f685f554a3e33281c11050000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3f3f3f3f3f353a3e4041454951586069717d89939ca7b2a99e95887c7065594e42362b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070b0e1111121313131211110e0b07060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010405080d1012121517181a1b1b1c1c1c1c1b1b1a191716141212100d090706030000000000000000000000000000000000000000000000000000000000000000000000000000000000030a12171f262c31383d41474b4d5156585b5d5f606162626261605f5d5b5856514c4b47413d38302c261f17110902000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c75808c9491919191928a7e736a61564b443830261c120800000000010b151e263039414a515a60686e747c82888c9095969899999a99989696918d89837d766f6a625b534c433b322920160d04000000000000111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c1105000000000109121b202b353e475059616b717d869097a1aba8aaa09690847c706a60584f453b30251a0f030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4a4a4a4a4a4a4a45494b4c4f545a60686f7a838f9ba3acb0a79b9084796e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070b0f11121411161a1c1d1e1e1f1e1e1d1c1a161112110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1113181b1d1e20222425262727282827272626252321201e1d1b181313110e0a060300000000000000000000000000000000000000000000000000000000000000000000000000040b131a222830363c42484c5156585a616466696a6c6d6d6d6d6d6c6a696664615a5856514b48413b362f27211a130b030000000000000000000000000000000000000000000000000000000006111d28333e48535c636f7a848f9ba29ca39c90857b6f645d544940362c22160e0500000007111b252e374049515a616a6f7980868e92989c9fa5a3a4a5a5a5a4a7a09c99938f89817a706c635c534b423931261e140b010000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000000008111a232b303a454f5860696f7b8490969fa8b1a9a09c91867d716b625950483f352b21160b000000111d28343f4b57626e7985919ca8b3a89c9085796e625656565656565656564e545758585f636a6f79818d939da8b5aaa0978c8075685f54493e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f11161a1c1d202220252829292a2a2a2929282520201d1d1a17120e0b06010000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12161a1c1d222629292c2e2f31323333333333323231302f2d2c2a2926231f1e1c1914110e0a0500000000000000000000000000000000000000000000000000000000000000000000040c141c242b323840464a52575a6164686b6f727476777879797978777674726f6a6864615a57524a463f38322a231b130b03000000000000000000000000000000000000000000000000000000030e19242f39424a556069717d89919ba5a99f958d81766d635950463c31271e150b0100000b16202b353e475059616b6f7a828b91979ca2a7a9aaa8a7a5a5a6a8aaaaa8a49d9b918d847c716c635b524a41362e251b11060000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000061018212a333c4349545f686f7a838f959ea6afaba29a908a7e726d635b524940372f251b1107000000111d28343f4b57626e7985919ca8b3a89c9085796e62616161616161616161615e636366686e727a818d929ca4adaea59c91867c7064584f453a30251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090c12171a1d212528292b2e2b30333435353636353433302b2c292826211c1916110b040000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191c212528292d31343538393b3c3e3e3f3f3f3f3e3e3d3c3a39373534322d2b2a27241f1c19150f080100000000000000000000000000000000000000000000000000000000000000030c141c242c343b434950555b62646b6f74777b7e80828384848584848381807d7b77746f6a64615b555048423a332b231b130b020000000000000000000000000000000000000000000000000000000a151f29313b465059636d76818d959ea9a59b91897d716960554a43372e251b110700030e1a25303a454f58606a6f7b838e929ca0a7aba6a7a09c9b9a9a9b9c9fa6a8aba8a29b948f857d716c625a51473e352b20160d0300000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050000050e172029323a434c555e636e78818d939da5aeaca39b918b80746e645c534a423930271e150c02000000111d28343f4b57626e7985919ca8b3a89c9085796e6d6d6d6d6d6d6d6d6d6d6d686e6f7174797e848e929ca2abb0a79e958c81756b6257473e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d13181c2126282b3033343739353a3e404041414141403e3a35383534312c2724201b140d090400000000000000000000000000000000000000000000000000000000000000000000040910161a1f24262c303334373c404143454648494a4a4b4b4a4a49494746444341403c373635332e2a28241f19120a050000000000000000000000000000000000000000000000000000000000020a141c242d353d444b535960636b70767b7f8387898c8d8f8f9090908f8e8d8b8986837f7b75706b636058524b433c342c231b1209000000000000000000000000000000000000000000000000000000050f17222c364048545d646f7b85909ca3aba29b8f847a6f635c53473f352b21160e050f19222a333e49545f686f7a838f939ca3aaa8a29b9996918f8e8e8f9096989ca0a7aba49d9590857c706a61574e453a2f261d120800000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c110500020c151f273039424b535c656e75808c929ca4adaea59c938d81786e635e544c433a312820160e0500000000111d28343f4b57626e7985919ca8b3a89c908579797979797979797979797979797a7b7d8083898f949ca2abb6aba09790847b6f635b5248372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171d23262c3134353b3e4043454745494b4c4d4d4d4c4b49454643403f3b36332f2b251e16140e080000000000000000000000000000000000000000000000000000000000000001070e14192025292f33363b3f4043474b4c4f5152545555565656565555545351504e4c4b474542413e3835332f29221a160e050000000000000000000000000000000000000000000000000000000007121a242c353d454d545c63696f757c81868b8f939597999a9b9c9c9c9b9a999797918e8b85817b746e69625b544c443c342b2319110600000000000000000000000000000000000000000000000000000008121c262f38434b56616a737e8a929ca6a89e948c80756c62584f453b30281e140a151f29323d48525b636e78828e939da4aba49d9b928d89858483828485888c91979ca3aaa59f9590847b6f685e544940362c22170c01000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11050107121c262f384149525b636d737f8a909aa2abafa69e948e82796f685e544d443b332a21180f060000000000111d28343f4b57626e7985919ca8b3a89c918784848484848484848484848484848586888b8f939b9da4abb0aba19c91877e726a61564a4238261e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080f161d22272d31363b3f40454a4c4e51534f5457585859585857544f514f4c4a46403e3a352e26231e1811090300000000000000000000000000000000000000000000000000000000050b11161e232a2f34393e3f454a4c4f5156585a5c5e5f6061616262616160605f5d5b5a585651504d4c4842413e39322a261e160d030000000000000000000000000000000000000000000000000000060f18222b343d454e555d646c717a80868d91979a9da3a3a4a6a7a7a7a7a7a6a4a8a19c9a96918d868079706c635d544d443c332a21160e050000000000000000000000000000000000000000000000000000020c161f28313c47515a646e77828e969faaa49c91867c70685f544a42382e23181019242e39414c57626c747f8b929ca4aba29c938f88827e7a787777787a7d81868e929aa1aaa69e948e82786e635950463c31261b0f04000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11010a131c212c363f48515a626c717d86919ca1aab0a79f9690847b6f6960574e453d342b22191107000000000000111d28343f4b57626e7985919ca8b3aba197919090909090909090909090909090919794979b9da4a8adaea7a09c908b7f746d635a51473a3128160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c121820262c31373c40464a4c4f55575a5c5e585f636364646463635f585d5a5755504b49453e36322e282119130b040000000000000000000000000000000000000000000000000000060e151b21282e323a3f42484c4f55575a5a61636668696b6c6c6d6d6d6d6c6c6b6a69676564615a5c5957524e4c48423b362f261d130900000000000000000000000000000000000000000000000000030d162028333b444d555e656e727d838c91979ca0a7a8acaeacb0aaa8a7a8aab0acb1aba8a7a09c96918b837c716d645d544c433a31271e150b010000000000000000000000000000000000000000000000000000060f17232d37414a555e64707c86919ca4aba0978f83796e635b52483d322920171c28333e48535c64707c86919ca3aca39c928e837d76726f6a6c6b696e71757c828c919aa1aaa59c928a7e736a60564a3f34281f150a000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1108121a232c303b454f58616a707c859097a0aab6aba09790857c706a615950473e352c241b120900000000000000111d28343f4b57626e7985919ca8b3b1a8a19c9b9b9b9b9b9b9b9b9b9b9b9b9b9c9ca0a7a2a6a8adafaaa59e97918a80746f655d544941372a211806000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222830373c41474b505557585f6365686a6c686e6f6f706f6f6e686b696663605957544e47443d38312a231c140c040000000000000000000000000000000000000000000000010810161e252b30383d43494d5358585f63666a6a6f71737576787879797978787877767473716f6a6a6764625b5957534b473f362d23190f0400000000000000000000000000000000000000000000000008131d273039434c555e656e737e868f949ca0a7aaaea9a7a4a1a7a09c9c9ca0a7a1a4a7a9aeaaa79f9c938f857d726d645d534a42372e251b110700000000000000000000000000000000000000000000000000000009131d273039444c57626b747f8b939da7a79d938b7f736b62574c443930271d1e2a35414c57626c76828e96a0aaa49c928e827a716c66636059585f63666c7079808c909aa2aba39c90857a6f63584c43392f24190e030000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c071019222b343c444a555f696f7a838f959fa7b0aaa19c91877e726c625a514840362e251c130a0200000000000000111d28343f4b57626e7985919ca8b3b8b1aba8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8abb0aeb0aea8a69f9c9490877f746f665e554c4439302719110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910171f262c313840464b515659606367686e71737577797a7a7b7b7b7b7a787674716f6966635e57544c48423a342c251d140d04000000000000000000000000000000000000000000020a121920272e353b42484c54585c6265696e7275787b7d7f808283848485858484838381807e7d7b787673706c6965625c574f473d33291e13080000000000000000000000000000000000000000000000010c17222c374049535c646e737f8991969da4aaada8a59e9b98959396919091979395989b9ea5a8adaaa49d9590867e726d635b52473f352b21160d030000000000000000000000000000000000000000000000000000030d172029323d48525b636e79838f97a0aba39c90857b70645d544941372d2225303b454f5865707c87929ca7a89d948e82796f6a635c5856504f55575b62686e75808c929ca6a99e958b7f73685c53493e33281d12060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c0f172129323b444d555e636e79828e949da6afaca39a918a7f736d645b524a41382f261e140c030000000000000000111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaa8a6a4a59e9b96918c847d736f665f564e453c33292017090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091119212830363c444950565a6164696f72767a7d7f818385858687878786858482807d7a76716e68645d57524a443c352d251d140b0300000000000000000000000000000000000000020a121a222931373f454a52575d63666c70757a7d818386898b8c8d8f8f909090908f8f8e8d8b8a888684817e7c7874706c6760574d42382d21160b000000000000000000000000000000000000000000000004101b26313c465059636c727e87919c9fa6adaaa49d9b95908d8a878685848586878a8c90949b9da4abada69f9791867d716b62584f453b30261d1208000000000000000000000000000000000000000000000000000000071018232e38424a555f69717d87919ca5aa9f968e82776e645a51473c312728333e4a545f6875818c98a2aba39b8f847a6f686059534c4a46454a4c52585f636e79828e969faaa59b8f84786c63584d41362a1f13080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c161f28313a434b545d656f75818d929ca4adada49c928c80756f655d544b423931281f160d04000000000000000000111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9b999694908b85807a716d655e564f463e352c23181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000811192129313840464a545960636a6f747a7e8185888a8c8e90919792939296918f8e8b8985817d79726e64625b544d453e352d251c1309000000000000000000000000000000000000020b131b232b323941474f545b62646d71777c8185898c8f91979698999a9b9b9c9c9b9b9a9a98979594948f8d8a8783807c7570675c51463a2f24180c01000000000000000000000000000000000000000000030d172029343f4b56606a717d869197a1aaafaaa19a948f8a84817e7b7a79797a7a7b7e81848a8f949ca1a8afa7a09690857b70685f544a40372c22170b0100000000000000000000000000000000000000000000000000000009141e28303b454f58636c75808c949ea9a69c92897e726a61564b43382f2934404b57636e7984909ca7a79c93897e726a61585049433f3c3b3f42484f555f686f7b85919ca8a89d94887c71655a4e42372b2014080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428151e263038414a535c646d747f8b919ba3acaea59d948e82796e635e554c443b322920170f0500000000000000000000111d28343f4b57626e7985919393939393939393939393939393939393939393939296918f8d8b88847f7b746f6a635c554e463e362d251b130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019212a323a414950555d646a6f757b8084898d909596989a9c9ca19e9ea7a09c9b999796918d89837e77706b645d554e453e352c2419110800000000000000000000000000000000010a131b232b333b434a51585f636b70767d82888d9095989b9ca1a8a3a3a2a1a0a0a0a1a1a2a2a4a3a1a49d9b9896948f8b8881756a5e53473b3024190d0100000000000000000000000000000000000000000009131d27333e48525b636f7a849096a0a8afa69f9c908b837e797572706f6a6d6a6f707275797e838b91979fa6afa79f958e82796e635950463c31251b1106000000000000000000000000000000000000000000000000000000040e16212b353f48535c636f7a84909ba2aba29c90847b6f635c53483f362c37424e5965717c88959ea9a69a8e83776d645a5148403834313033373f454f58616b74808c97a4ada4978b7f74685d51453a2e2312070000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281b252e374049515a626c727e87919ca1aab0a79e958f837a6f685f554e453c332a221910070000000000000000000000111d28343f4b57626e79868787878787878787878787878787878787878787878787868584817f7c78746f6b636059534c453d362e251d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029323a424a525960636e727a80858b9095989c9fa6a4a6a7a8abb1aab0aaa8a7a5a69f9c99938f89827c726d655e554e453d342921180e0400000000000000000000000000000009121a232c333c434b535a61686e747c82898e92989c9fa6a4a59e9b9998969595949495969697989a9c9ea5a2a4a49d9b978d82766b5f53483c3125190e020000000000000000000000000000000000000000020d18222d37414c57626c75808c949ea7b0a79f9690898079736e69676463605960636467686e7279808790969fa8aea59c938a7f736a60564b3e352b20160b0000000000000000000000000000000000000000000000000000000007121c252f37434a56606a727e89929ba6a99e958d81756d635950463b303945505c67737f8a96a5aea7968a7f73685d5449403730282625282f353f47515a64707c87949da8a5998e82766b5f5448362c21170c0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428202b353e475059616b707c859097a1abb5aaa09690857c706a60584f453d352c231a110800000000000000000000000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a79787674706c6864615a565049433c352d251d150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f273139424b525b61696f767e848c91969c9ea5a7a9afafb1afadacabababacadb0b0afaaa8a49d9a928e857e736f655e554d443a31281e14090000000000000000000000000000061119222b333c444c535c636b6f797f868e929a9ca3a69f9c999595908e8c8b8a898989898a8a8b8c8e909594979a9ca0a7998d82766b5f53483c3125190e02000000000000000000000000000000000000000005101b26313c47515a64707c87919ca5aeaba09790857e746e68635f5859585650565859585f63686e747e859097a1abaca39c90857a6f63574e453a2f24190e03000000000000000000000000000000000000000000000000000000020c151e27313c465059646d76818d959fa9a59b91887d716960554a42373b46525e6975808c98a3aa9f96877b7064594d443930271f1b1a1e252e37414c57626b78838f9ba6a79b8f84786d5950463b30251a0f0400111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34232b303a454f5860696f7b8490969fa8b1aaa19c91867d716b625950483f352d251b130a0100000000000000000000000007121e2a35404c57626b70707070707070707070707070707070707070707070706f6f6a6c6a6865625c5856514b464039332b251d150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a525b626b707a818990949c9fa6a9aeb3b0aba8a6a3a1a09f9fa0a0a2a4a7a9aeb3ada8a29c9590897f746f655d544a41382e23181006000000000000000000000000050e17212a323b444c545c636c717b828b91969ca2a49d9b96918d8a878482817f7e7e7d7d7e7e7f7f81828486888b8e919799998d82766b5f53483c3125190e02000000000000000000000000000000000000000006121d2934404b56616a76818d97a1abaca39c91877e726d635f58554f4d4c4b464b4c4d4f55585f636d727e87919ca4ada99f958b7f74685e54493e33271c100500000000000000000000000000000000000000000000000000000000050e17222c364049545d646f7b85909ca3aba19b8f83796e635b52473e3548535f6b76828d99a4a89c9185796b62574c40342820160f0f151e27323d48525b6a76828d99a4a89c91857a6960554a3f33281d110600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342a333c4349545f686f7a838f949ea6afaba29a908a7e726d635b524940372f251d140b020000000000000000000000000005111c27323d48525b6264646464646464646464646464646464646464646464646463605a5f5c5957534c4b47413c373028231b140c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f48515a626b707b838d919b9ea5aaafb2aca7a7a09c9a9896959493949596999b9ea5a6abb3aca69f9c908b7f746e645b52483d32291f150b0000000000000000000000020c151f27313a434b545d636d717d848e929ca0a59e9b948f8a85827e7b7976757473727272727373747577797b7d808386898e918d82766b5f53483c3125190a04010000000000000000000000000000000000000007121e2a35414c58636f7b86919ca8b1a79c938a7f736d645d554f4a4541403f3c3f4041454a4f545d646d747f8b949da8afa69b9084796e63574b4034291d1106000000000000000000000000000000000000000000000000000000000008121d263038444b56616b737f8a939ca7a89d948b80746c62584f453a4854606b77828e99a5a79b9084786d5b52483d3222181006050e16232e3846525e6975808c98a3aaa097867a6e63574c4035291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34313a434c555e636e78818d939da5aeaca39b928b80746e645c534a423930271e150c040000000000000000000000000000030e19232e38424b525759595959595959595959595959595959595959595959595858565153514e4c4842403d37312c272018120b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465058616a707c848f939ba2a9aeb5aca7a39c9a97918e8c8a89888888898a8d9094999ba2a8adafa9a09c91877e726b61574b43392f251a0e040000000000000000000007121c262f38424a535c636d717d8590959ca3a19c949089837f7a7672706b6b696867666666676768686a6b6a6f7174777a7e82868c82766b5f53483c312519140f0c080300000000000000000000000000000000030f1a25303b454f5867737f8a97a0aaaca39a8e82776f655d544a453f3b353534313435353b3e4549545d636e79838f9ba5aea89e94887d71655a4e43372b2013090000000000000000000000000000000000000000000000000000000000030d161f28323d47515a636e78828e96a0aaa49c91867c70685f5449414854606b77828e9aa5a69b8f84786d5a51473c31261b1004020a14232f3b46525d6975808c97a3aba197867a6f63574c4035291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3039424b535c646e74808c929ba3acaea59d938d81786e635e554c433a312820160e05000000000000000000000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47484542413e3934322d27221d160f070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560696f7b848f959da4abb4afaaa39c9a938e8a8683817f7d7d7c7d7d7f8184888d929b9da4acb4aba19790857b70645c53493e33271d1309000000000000000000050e16212c363f48525b636c717e8690969ea59e97918c847e79736f6a6764625b5e5c5b5b5a5a5b5c5c5d5e5a606365686a6f72767b8080756a5e52473b3028241f1b17120d0600000000000000000000000000000005111c28333e4a545f6876828e99a7b0a79c93887d71655e554c443b35302b29282628292b30353a444a555f68727e89949ea9aea5978b8074695d5246372d23180d020000000000000000000000000000000000000000000000000000000000060f18232d374149545e68707c86919ca4aaa0968e82786e635a514748545f6b76828e99a5a79c9085796a61564b4034291e150d0c121b26313c47515a6a76818d98a4a89c91857a6e63574b4034291d110600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f374049525b636d737e8a909aa2abafa69e948f837a6f685e544d443b332a21180f060000000000000000000000000000000000040e18212a32383d40414242424242424242424242424242424242424242424141413f3c373a3635332f2927231e17130d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27333d48525b636e79838f949ea5adb4aea69f9c938e88837e7b77757372717171727376797d81888f949ca3acb1a89f958e82766d63584d41372d23180d0200000000000000020c151e27303b454f58626b717d8590969fa49d959087807a726e686360595857525251504f4f4f4f505151525156585a596063666b70747570675c51463635332e2826221d160f08020000000000000000000000000006121d2934404b57636e7985909ca7b1a59a8e82776c63584e453c302b25211e1d1b1d1e21252b303b454f58636e7984909ba7b1a59a8e83776b5a51473d32271b100500000000000000000000000000000000000000000000000000000103040009131e272f3a454e57626c74808b939da8a79c938a7f736b61564b47535e6a75818d98a4a99f95867b6f63584c42372e251c17171c212c34404b56616a77838e9aa6a79b908479685e54493e33271c100500111d28343f4b57626e7985919ca8b3a89c9085796e62564b353f48515a626b717d86919ca1aab0a79f9690847b6f6960574e453d342b221911070000000000000000000000000000000000000008111921282e32353636363636363636363636363636363636363636363636353534312d2e2b2a28241f1b18130e0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c74808b939da4adb4ada59e96908a827d77736f6a6967666665666668686e71767d838e939ca4adafa69c92887d71655a51473d32271b10050000000000000007111b252f373f4a555f69707b8490969fa49d948f847d746f69635f5856504d4c484747474645434444454547474b4c4e5056585b6264696a6760574d4542413e3934312c261f18120c0600000000000000000000000008131f2a36424d5964707c87959fa9ada2968b7f73685c53493d352c211b1612110f1111161b212b353f49545e6875818d98a4afa89c9085796b61564b4034291d1206000000000000000000000000000000000000000000020507070a0d0e0f10100e16202b353e47525b636e79838f97a1aba39c90857b6f645d5449515d68747f8b96a7afa695897e72675b52473e352c262221252b313b465059636f7b86919ca8a59a8e83776b574e453a2f24190e0300111d28343f4b57626e7985919ca8b3a89c9085796e62564b3b454f58606a707c859096a0aab6aba09790857c706b615950473e352c241b12090000000000000000000000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29292622221f1f1c1915100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c85919ca2aaafada49d9490857f79716d6763615a5c5b5a595a5b575e63666d717a828e939da7b0aba2998d82766a61564b4034291d1206000000000000000b16212b353f48535c636e79838f959ea59d938f837b716d636059544f4a4a4c4e5052535252504e4c4a46403e3c3f4143464b4c5257585d5e5c575352504d4c48423f3c363028221c160f0700000000000000000000000915202c38434f5a66727d8994a6afafa693877c7065594d43392b241b110c07060406070b111b252f3a454e5767727e8995a1acaa9f96867b6f64584c41352a1e13070000000000000000000000000000000000000104090d10121316181a1b1b1b1b111b252e36424a556069717d87919ca5a99f958d81766e6459504f5a66717d8997a0aaa4998d81766c62584f453c36312d2c31353b444a556069737e8a97a0aba6988c8075695e5246352b20160b0000111d28343f4b57626e7985919ca8b3a89c9085796e62564b444a555f696f7a838f959ea7b0aaa19c91877e726c625a514840362e251c140a0200000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1b17131413110e0a050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c838d919c9fa7a59d938f847c736e68635c585651504f4e4e4e4f4e54575c636a6f7a838f97a0abb4a89c91867b6f64584c41352a1e1207000000000000030f1a25303b454f58636d75808c939da59e948f837b706b635d5550494c4f55575a5c5d5e5e5d5c5a5755504b49453e3840464a4f55575a5c5e5f5f5f5e5c5957524c4a464038312c261f170f08000000000000000000000a16222d3944505c67737e8a96a1ada99f95867a6e63574c4035291d1207020000000000020c16202b35424e5965717c88939fabafa693887c7165594e42372b1f14080000000000000000000000000000000002070c0f14181c1e1e2124252727272725241e26303b465058636d75818c959ea9a69b92897e726a60564c58636f7a85919ca8a89c91867c70685f544a46403c37363b3f454a545d636f7a84909ba7aa9f96897d72665b4f43382c2111060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4d555e636e79828e949da5aeaca39b918b7f736d645c534a41382f261e140c03000000000000000000000000000000000000000000000000040a0e11121313131313131313131313131313131313131313131313131212100d080807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707a818a91969d9e948f837b706c635f58534c4b4745434342434445494b53596069707c86919ca8b4aba0978a7e72675b5044382d21110600000000000005111c28333e4a555f68717d87919ca39f9590847b6f6a615b544a4b5257585f636568696a6a69676563605857544e4744495055585f6365686a6b6b6a696765625b58565049443b362f2820180f070000000000000000000b17222e3945515c68737f8a96a2ada79c9085796960554a3f33281d11060000000000000006111f2a36414d5864707b87929eaaab9f94887d71655a4e43372b201409000000000000000000000000000001060c12171a1e2327292a2d2f3132333332312f2d2a2c363f48535c636f7a84909ba2aba29b90847a6f635c5356606a76828e99a4aba0978e82786e635e55504b474645464a4f555d646e74808b949ea9a79c90857a6f63574c4035291d12060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b545d656f75808c929ca4adada49c928c81756f655d544b423931281f160d0400000000000000000000000000000000000000000000000000000003050708080808080808080808080808080808080808080808080707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b626a6f767f868f949690847b6f6b625c544f4743403c3738373737353a3e43495059626c76818d98a4b0b0a7988d81756a5e5347352b20160b0000000000040f1b26313c465059636e79838f97a1a29c90857c706b615a524a50565b6264696e71737575757573716e6966635e57544b53596063696e7174757676767573706c68636059544a464038302820170f0600000000000000000b17222e3a45515c68747f8b96a2aea79b9084786d5950463b31261a0f040000000000000007121e2935414c58636f7b86929da9aba094897d71665a4f43372c20150900000000000000000000000000040b11161c2125282e323536393b3d3e3e3e3e3d3b3835343238434b56606a727e89929ca6a99e948c80756c6358505966727e89949da8a79c928b80746f636059565151515055585f636d727e89909aa5aba0978c81756960554a3f34281d11060000111d28343f4b57626e7985919ca8b3a89c9085796e6257535c646d737f8b919ba3acaea59d948e82796e635e554d443b32292017120a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e39424b525960636e737c838d90857c706b615a5349453e3734312d2c2c2b2c2b2f33394049535c66727d8995a6afb1a69a8f83776c574e453a2f24190e030000000006111d28343f4a556069737f8a939da69b91897e726c625a514b525960636c70757a7c7f808181807f7d7a76716e68635d565c62696f74797d7f81828282807f7c78736f6a645e555048403930281f160c02000000000000000b16222e3945505c67737f8a96a1ada89c9085796960554a3f34281d11060000000000000007131f2a36414d5964707b87939eaaab9f94887c71655a4e42372b201409000000000000000000000000050d141b20262c3033383d4041444748494a4a4948464441403d373c465059646e76828d969faaa59c91877d71695f5557636e79848f9ba2aca29a908b7f756f6963605a5d5c596063696e747e86909ca1aaa59c91867c70645950463b31261a0f040000111d28343f4b57626e7985919ca8b3a89c9085796e62625a626c727e87919ca1aab0a79e958f837a6f695f554a453f3b352e27221b140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b424950565e656c707a81887f736c625a514a423a352e29262221201f202024283038434c58636f7a86969faab3a79c908579685e54493e33271c1005000000030e1a25303a454f58636f7a84909ca49f968d81766e645b524b535b626a6f757c8185888a8c8c8c8c8a8885817d78726d6360626c707a8084888b8d8d8e8d8c8a87847f7a726e636059514940382f261c1208000000000000000a16212d3844505b67727e8a95a1acaa9f96867a6f63574c4035291d150b020000000000010714202b37424e5a65717c88949fabafa693877c7065594d42362b1f130800000000000000000000010810161e252b2f363b3f41484b4d5052545555555554524f4d4b47413e4049545d646f7b85909ca3aba1978f83796e635b545f68727e89929ca5a9a099908b817a736f6a69686869696f72797f8790969faaa79e958c81756c62574840362c22170c010000111d28343f4b57626e7985919ca8b3a89c9085796e6e6e6e6b707c859097a0abb5aaa09690857c706a615a57554f4a453f37332b241c150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a323840464b555c626a6f767d736e645b524a4139302b251e1b181314141116192029343f4b56606a7985909ca8b3a89c91857a6e63574b4034291d110600000005111c28333e49545f68737f8a959ea69c90857b6f645d544b535c636c707a81868c909596979898979696908d89837d766f6a6c707c848b909596989999999896948f8b847e766f69605a514840362c221810070000000000000915202c38434f5a66727d8994a6afafa693877c7065594e43392f241b120c07060506070b1119242f3a454e5767727e8995a1aca99f95877b6f64584d41352a1e1307000000000000000000020a121920262e353a3f464a4c5257585b5e5f616161605f5e5b5856514c4a45444b57616b737f8a939ca7a89d938b7f746c625758646e77828e959ea6a9a099918c847f7b7775747475767a7e838b91979fa6aba09790847b6f635b5248382f261c1208000000111d28343f4b57626e7985919ca8b3a89c90857a7a7a7a7a7a7b8490969fa7b0b3a89c91857d74726f6a66635f58544f47433b342d251d150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222830373c454b535960636d716d645e554b423a3129201b15100d090908060b101b27323d47515a6d7984909ba7b3aba197867a6f63574c4035291d120600000006111d2934404b57636e79838f9ba59f958b7f746a61564d525b636c717c838c91979c9fa6a3a4a4a3a69f9c99938f89817a6f707c858f949c9ea5a4a5a4a4a3a49d9b95908a817a6f6a605950463b312920170d03000000000007131e2a36414d5864707b87959fa9aea2968b7f74685c53493e332c211c161211111112161b212c333e49545e6875818d98a4afa79c9085796b61564b4034291e12060000000000000000020a121a222931363e45495055575b616467696b6c6d6d6c6b696764615a57554f4847515a636e78838e97a0aaa49c91867c70685e545d646f7b8490969fa6a9a19a95908a868281807f808285898f949ca1a8aba09c91877d716a61564b4238281f160c02000000111d28343f4b57626e7985919ca8b3aa9f96888685858585858690949ea6afb8b3a89c918682807d7b76726e69635f58534c453d352e251d150b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111820262c313b424950565d6366635d554d453a32292119110b0402000003080f161e2934404b56616a7985919ca8b3a89c91857a6e63574b4034291d12060000030f1a25303b454f5866717d88949da79c90857a6f635a514f58626b717d858f949ca0a7a8a4a69f9c9c9ca1a8a49d9a918d837b79838f959da4a9a49d9b9898999c9fa59e9b918d827a6f6960554a453931271d1309000000000006111d2934404b57636e7985909ca7b1a69a8e83776d63584d453c302b25211e1d1c1d1e21252b303b454f58636e7984909ba7b1a59a8e82776b5a51473d32271b100500000000000000010a121b232b323941474e54586063676b70727577787878787675726f6b67635f58544b49545f68707c86919ca4aa9f968e82786e635a56616a717d8690969fa6aaa59e9b97918e8c8b8b8c8d90969b9da4aba7a09c908a7f736d635a51473a3228170f0600000000111d28343f4b57626e7985919ca8b3afa69f9791919191919191979ea5aeb6bfb5aa9f96918e8b8986827e79736e68635c554e463e352e251c1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161d222a323840464a53585a58534c453d342a22191007010001040a0d13171f262f38414c58646f7b86969faab3a79c908579685f544a3e33281c1105000005111c28333e4a545f6875818c98a4a4978c80756960554a555f69707c8590959da4a7a09c99949690909197969a9ca29b938f837f8b939da5a7a09c938f8d8c8e90959b9ea29b938e827a6f635e554a41372d23180d030000000005101c27333e49545e6877828e99a7b0a79c93887d71655e554d443b35302c29292829292b30353b444a555f68727e89959ea9aea5978c8074695d5246382d23180d020000000000000008121a232b333b434a51575e63696e73777b7e81828384848382807e7b77726e68645d56504f58626c74808c949da8a79c928a7e736a61565a636c717e8690959da3aaa9a7a09c9a98979697999c9fa6a8aba59e97918a7f746f655c534941372a2118070000000000111d28343f4b57626e7985919ca8b3b6afa7a09c9c9c9c9c9c9ca0a7aeb5bebfb9afa69f9c999797918e89847f79716d655e564f463e352c23181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d121a222830363c43494d4e4d49433c342d241a11080003080c0f14191d22272f373f48525b67727e8995a6afb2a79b8f84786d584f453b30251a0f03000006121d2934404b57636e7984909ca79d93877c706459505059636e79838f959ea6a59e97918d8986858485878a8e929a9d9d938f8b9099a4aaa097918983818182858a90949ca39c938d81766e655a51473c32271d130900000000030e19242f3a454e5767737e8a97a0aaaca39a8e82776f655d544a453f3b363534333435353b3f454a545d636e79838f9ba5aea89e94887c7165594e42372b1f130900000000000000051019222b333c434b535a61686e737a7e83878a8c8e8f8f8f8f8e8c8986827e79726d63605952525b636f7a838f9ba1aba39c90857b6f645d545c636d717d858f939c9fa6a9aaa8a5a3a2a2a3a5a8aaa9a7a09c9590877f746f665e554c433930271a11080000000000111d28343f4b57626e7985919ca8b3bfb8b0aba8a8a8a8a8a8a8abb0b3b3b3b3b4b5afaaa8a5a7a09c9995908a837d736e665f564f463c342920170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030811181f262c313a3f4243423f3a332b241c1409060b0e12171b1f24272d31383f474f58626c76828d99a5b0b1a59a8e82776b605448352b21160b0000000914202b37434e5a65717d88959ea69a8f83786b62574b56606a747f8b939da5a69e959087817d7b79797a7b7f82888f939a9d9a9699a0a9a89c91867e787675777a7e848e939ca39b918a7f736a61564b41372d23180d02000000000b16202b35414c58636f7b86919ca7b0a79c938b7f736d645d554f4a454241403e404142454a4f545d646e74808b949da8aea59b9084796e63574b4034291d1106000000000000040d162029323b434c535c636b6f787e848a8e939598999a9b9b9a999897918e89847e766f6a625b53556069717d88919ba5a99f958d81766d6359545d636d717c838b90969b9ea5a5a7a8aaaba8a7a5a69f9c97918c847d736e665f564e453c3329201709010000000000111d28343f4b57626e7985919ca8b3bfb7afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8abb0abadb0b0aba8a59e9c938f867f746f665f564d443930271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161d222a2f34363736342f2a231b14090b1116191d2226282e33373c424850585f69707c87919ca8b4afa6978b8074695d51463a2f2311070000000b17222e3a45515c68747f8b96a5a7978b7f74685b524c58636f7a85909ca3a99f9590847d76726f6a686e7073777d838c919aa0a2a4a9aea3978c80746e6a6a696e727b828e939da29c90857b6f645a51473c32261b10050000000006111d2934404b56616a75818c97a0aaaca39c91877e726e635f58554f4d4c4b494b4c4d4f55585f636e727e87919ca4ada99e958a7f73685e54493e33271c10050000000000010b141e263139434b535c636c717b828a90949a9ca3a3a5a6a7a7a6a5a8a19c9a948f89817a706c625c5359636d75818d959ea9a69b91897d72696055545c636b70797f858b909497999b9ca0a19c9b9a9795908c86817a716d655e564e453d352b23181007000000000000111d28343f4b57626e7985919ca8b3b6afa79f9c9c9c9c9c9c9c9c9c9c9c9c9c9ca09e9fa1a4a8aaafaea9a49d97918a80746f665d544941372d22180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12172025292b2c2b2925201a120f13181b2024272c3134393e41474b525960686e79838f97a1abb5aa9f96897d71665a4f43372c2015090000040f1b26313c4650596b76828d99a5a097887c71655a4e515a68737f8a959fa9a29c90857c716d6663605f6364676d7179808b909aa1aab4aa9f93877c70655d5860636a6f7a838f96a09f958c81756a61564b4034291f140a0000000005101b26313c47515a64707b86919ca3acaba09790857e756e69635f5859585754575859585f63686e747e869097a1ababa29b90847a6f63574e453a2f24190e03000000000006111b252e36414a535c636d717d848e929b9ea5a7aca8a7a5a4a4a5a7a9aba8a49d9b928d847c706c625b535d636f7b84909ca2aba29b90847a6f635c53535b62696e737b8084888b8e8f91979791908e8c8985817c756f6a635c554e453e352d241b120800000000000000111d28343f4b57626e7985919ca8b3afa69f96919191919191919191919191919197929496989c9fa6a9aeada7a09c908b80746e645a51473c31271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030810151a1d1f201f1d1a1512161a1e23252b2f33373c3f42484c51565b62696e78818d939da8b1b1a89c90857a6f63584c4035291e1206000006111d28343f4a5560697984909ba79c91857a6f63574c56616a77838f9aa6a79c92897d726b635d58565557595c63696e75808b919aa4ada89d91867a6f635750555a616a707c86919ca69c91867b6f64584c42382e24190e03000000020d18222d37414c57626b74808b939ca5aea79f9690898079736e69676463635f63636467696e7379808990969fa8aca39b91897e72696055473e352b20160b0000000000000b16202b353e47515a636c717d8590959ca3a9a9a7a49d9b999898999b9ea5a8aaa8a29b948f857d706c625956616a727e8a929ca6a89e948c80756c63584f52585f636a6f74797d808284858686858483807d7a75706b63605a534c453d352d251d140b0200000000000000111d28343f4b57626e7985919ca8b3aa9f968885858585858585858585858585858686888a8d90969c9ea5abb0aba09a90897e726a61564b41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121415141213181c2125282d32353a3e40464b4c52575a61636c7079818d919ba3acb6aba1978c80756a60564a3f34281d1106000006121d2935404c57636f7a86959ea69a8f83786960554c58646f7b86919ca8a5998e82776d635b534c4b4a4c4d535960636f75808c949da8a89d91867a6e63574c4a5159626c75808c97a0a0968b7f74685b52483e33271c11060000000009131d27323d48525b636e79828e949ea5aca69f9c908c847f7a7673706f6e686e6f707376797e838b909c9fa6aba49d938d81766e64595046362e251b11060000000000030e19242f3a454e57616a717d8590969ea5aaa69f9c97948f8e8d8d8e9094989ca0a7aba49d9590857c706a60565a646e77828e969faaa59c91877c71685f554a4f555a6163686e717477787a7a7a7a797775726f6964625b565149433c352d251d150c040000000000000000111d28343f4b57626e7985919ca8b3a89c9085797979797979797979797979797a7a7b7c7f81858a90959ca2abb5a9a09c90847b6f635a51473c31261b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407060d13171d22252b3033383d3e45494b5056585b62656a6f757c838d919ba1abb4aea59c91867c70645950463c31261b0f04000008131f2b36424d5965707c8793a5a4998d82766a59504f5b66727d8997a1a99e95887d71655d544a433f3e40434850555f636f7a838f9ba3ac9d92867b6f63584c4149525b646f7b86919ca79b8f83786c62574c41352a1e130700000000030d18232e38424a555f69707b8490949da3abaaa19a948f8a84817e7c7b7a797a7b7c7e81848a8f949aa1aaaaa29c938f837a6f635d54484036261e140b01000000000005101c27333e49545e686f7b8490969fa6aba19b95908b87848281818284888c91969ca3aaa59e958f847a6f635d545e64707c85909ca3aba0978f83796e635b52484a5156585f6365686b6d696e6f6e686b696663605957524b474039332b241c150d04000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e6e6e6e6e6e6e6e6e6e6e6e696f6f7173767a7f858d929ba2abb4a99e958c80756a61564b4034291d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161d22272d31353b3f41474b4e5457596063676c70757b80868f939ba2abb2b0a79e948d81766b62574940362c22170c0100000915202c38434f5a66727d8994a0a3978c8075695d52515d68747f8b97a8a79c9084796e63574b443a343334383f464a556069717d88939ca79f94887c71655a4e42424b56616b76828d99a59d94877c7065594d42362b1f1208000000000009141e28303b454f58616b707c848f939ca1a8aaa49e9b95908d8a878685858586878a8d90959b9da4aaa7a09c928e837a6f6a60564d44382f26160d040000000000040f1a25303b465058636e78828e959ea6a8a19c918d857f7c7877757677797c80868e929ba1aaa59d948d81766d645857626b747f8b939da7a79d938b7f746b62574c44474b4f54575a5d5f59606363635e575d5b5755504c48423c373028231b140c0400000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e626262626262626262625960636465686a6f737b818d929ba4adaea59c91867b6f64584c41372d22170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b20272d31373c3f454a4c5156575e63656a6f73777c81858c91969da4abb2b0a7a09790847a6f635b52483830261d12080000000a16212d3844505b67727e8a95a1a2968a7f73685c51535e6a75818c98a4a4998d8276685e54493e332a28292f363b465059636d77838e9aa8a1968a7e73675c50443d47515a67727e8a95a5a4968a7f73685c5045362c21170c0100000000040e16212b353f48525b626b707b828c91979ca3aca8a59e9c98959397919091979395989b9ea5a8aba29c96918b827a6f6a615950463d34281f160500000000000006111d28333f4a556069727e8a929ca5aba197918b817b74706b6b6a6a6b6c70757c828c919ba1aba49b92897e72685f545b636e79838f97a0aba49c90857c70645e5449413e45494b4e51545055575757544e524f4c4a46403d38312d272018120a040000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62575757575757575757505557585a5960636a6f79818d949ea8b4aaa0968b7f74685950463c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810161e252b2f373c41474b4f55575a6164686e71757a7e83878c90969ca0a7adb4aea7a09791867d716a60564b4238281f160d030000000b16222d3945505c67737e8a96a1a1968a7e73675c50535f6b76828d99a5a2978b807468574e453a2f231c1f262c364048535c67727e8997a1a4988c81756a5950463c414d58646f7b86949ea4998d81766a5950463b31261a0f04000000000007121c252f37414a525b626b707980878e929ca6afaea9a7a4a1a7a09c9c9ca0a7a1a4a7a9aeaea59c928e867f786f6a615a514940372c24170f0600000000000006121d2934404c57636e7984909ba3aba29c91877f756f6a64625b5e5e5c62656b7079818c919ba3aba29b8f84796e6357555f68707c86919ca5aa9f968e82776e645a51473c3a3e40434648464a4c4c4b49454643403f3b36322e28221d170f0802000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b4b4b4b4b4b4b4b464a4c4c4e50565a61696f7a848f9ba5aeb0a79a8e83776a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121920262e353a40474b5156585f63666b6f74797d81858a8e93989c9fa6aab0b4aca59e9791867e726d635950463a3228180f06000000000b17222e3945515c68737f8b96a2a195897e72675b50545f6b77828e99a5a2968a7f73685c5045352b2016161c262f38434c58636f7b86919ca69b8f83786960554a3f404b56616b7884909ba79b8f84786960554a3f34281d11060000000000020c151e27313a424a525b61696e757c828e969faab5b4b3b0adb0aba8a7a8abb0adafb3b4b4a99e958e817c746e68615a5149413830261c130700000000000005111c27323d48525b67737e8a949ea9a69b918b7f746f63615a5752535353585b62696e75818d939ca8a89d94897e72675a5158626c75808c949ea8a69c928a7e726a61564b43383334373a363b3f4040403e3a35383534312c26231e17130d060000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3f3f3f3f3f363b3f404142464b51586069727e89959ea9b4a89c91867a6f63584c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a222931363e454951565a6163696e72767b7f84888d90969a9ca3a8aaafb5aea9a39c9590867e726e645c534940372a21180700000000000b17222e3a45515c68747f8b96a2a095897e72665b4f545f6b77828e99a5a1958a7e73675b5044392d21110c161f2934404b56616a77838f9aa69c91867a6f63574c403d47515a6b76828e99a59c91857a6f63574c4035291d1206000000000000050e172129313a424a525860636e727c85909ca8b3b4b1aba8a6a4a3a2a3a4a6a8abb1b4b3a79b90847c726d635e5751494139302820160c0300000000000007121e2935404c57626b77838f9aa5aa9f968d81766f655e56514c484747494c52585f636e79828e97a1aba49a8e82776b6156535c636f7a84909ba2aba29c90847b6f635d534840362c2b2e2c3033353534332f2b2c292826211c19140e0803000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34343434342c31343535373c41485059636e7984909ca7b3aba197887d71665a4e43372c2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131b232b333941474e545a60636a6f74797e82868b8f94989c9fa6a7acb3b4afaaa59e9b928e847d726e645d544c4339302719110800000000000b16222e3945505c68737f8a96a2a1958a7e72675b50535f6b76828d99a5a2968b7f73685c5145352b20160b101b26313c47515a6a76818d98a4a097887d71655a4e433746525d6975808c97a3a097877c7065594d42362b1f130800000000000000061119232d37414a545d646e737e8690969faaaea9a8a19c9a98979797989a9ca1a8a9aea99e9590857e726d645b524840362c21180f060000000000000007131f2a36414d5964707b87939da7a89c91857b6f645f564b47413d38393e42484f556069707c87919ca8a89c91867b6f64584d556069717d89919ba5a99e958d81756d635950463b31261e212528292929272420211d1d1a17120c09040000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f3428282828222628292a2c3137404a545f6876818d98a4b0b1a8968a7f73675c5045392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121a232c333b434a51575e636a6f747b7f84898e91979b9da4a8aaafb3b4ada8a69f9c94908a827b716d645d544d443c33282017090100000000000a16222d3944505b67737e8a95a1a1968a7f73675c50535e6a75818c98a4a3978c807469574e453a2f24190e0d18222d3746525d6975808c97a3a7968b7f73685c51453745515c68737f8b96a2a794887d71665a4f43372c2015090000000000000005101b27323d47515a636d737f8791969fa6aba59e9c97918f8d8c8b8c8d8f91979c9ea5aba59e9690867e726c625950463b31271d1308000000000000000a16222d3944505c67737e8a95a3aca5978c80756b61564e453c37322e2f33373f465058626c76818d98a6aba197897e72675b4f5059636d76818d959fa9a59b91887d716960554a42372e251b1a1d1d1d1d1c19161112110f0c080200000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281d1d12171a1d1d1e2227303b454f5868747f8b96a2aeaea3978b8074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b333c444c535a61686e737a80858b9095999ca0a7a8adb3b3b0aba8a49e9b96908b847e786f6a635d544d443d342b23180f060000000000000a15212d38444f5b67727e8995a1a2968b7f73685c51515d68747f8b97a2a4998d8176685e54493e33271d130813222e3a45515c68747f8b96a2a4998d81766a5a51473c444f5b67727e8995a1a195897e72675b5044382d21160a0000000000000006121d2934404b56616b717d879197a0a7a9a19b95908b868381807f808183868b90959ba2a9a69f9690867c706960554a40372d22170d010000000000000d1824303b47525e6a75818c98a4a99e95887c71655a51473e312d272324272f363f48535c66717d89969faaa8988c8075695e5249545d646f7b85909ca3aba19b8f837a6f635b52473e352b201611121211100e0b0606060401000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c11080c0f11121217212b3544505b67737e8a95a1adafa3988c8075695e52463b2f24180c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d162028333b444c545c636b6f787e848b90969b9ea5a8abb0b3b3ada8a7a09c99948f8b85807a736e68615a534c443d342c241b1207000000000000000915202c37434f5a66717d8994a7a3988c8075695e524f5b66727e8995a4a79c9084796e63574b41372d221a1217232e3a46515d68747f8b97a2a79b8f84786a61564b40434f5a66727d8994a0a1968a7f73685c5045392e22160b00000000000006111c28333e48525b646f7b859097a0a8a9a099918d847f7b787574747475787b7f848d919aa0a9a79f968f837a6f635a51473c31261b10040000000000000f1a26313d4954606b77828e9aa5a79c9084796e63574b413829221d19171e262f38424c57636e7a85909ca8a5998e82766b5f54484b56616a737e8a929ca7a89d948c80746c62584f453a30281e140906060503000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1107070707080a11212c38444f5b66727e8995a0acafa3988c8175695e52473b3024180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d263038434c545d636c717b828a90959c9fa6a9aeb4b3afaaa8a49d9b97918e89847f7a746f69635f58514a433c342c241c130b020000000000000007131f2a36414d5964707b8797a0a5998d82766b59504d5864707b87949ea89e95887c70655a51473c312b211c18202f3b46525d6975808c97a3a89e94867b6f64584c41434e5a65717d88949fa2968b7f73685c5145392e22170b00000000000007131e2a35414c57626c76818d959ea7aaa199908b817a736f6a6a6968696a6a6f747a818b909aa2aba69d948b80746a60564b3f34291d1308000000000000101b27323e4a55616c78848f9ba6a69a8e8377685f54493e33281c130d0e161f28333f4a55606978838f9ba6a69a8f83786c60554947515a636e78828e969faaa49c91867c70685f544941382e23180f06000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1212121213131518202d3945505c67737f8a96a1adafa3978c8075695d52463b2f23180c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c374049535c636d717d848e929c9ea5aaafb4b3aca7a69f9c98948f8b86827d79736f6a636059544f474139332b241c130b03000000000000000006121d2934404c57636e7a85919ca69b8f83786960554b57616b78848f9ba7a5988c81756a61564b443b302c262328333e48535c6a76828d99a4ada494897d72665a4f43424e5a65717c88949fa2978b7f74685d51453a2e23170b0000000000030f1a25303b454f5865707c87919ba5ada49a918b7f756f6964615a5d5d5d5a6164696f76808b919ba5ada49c90857a6f63584c41372d22180d020000000000101c27333f4a56616d7984909ba7a5998d82766b584f453a30251a0e03050f1a25303b4650586b77828e99a5a79b8f84786d61554a4149545e68707c86919ca4aaa0978e83786e635a51473d322820170d030000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1e1e1f202429313c4650596874808b97a2aeaea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059636c717e8690959ca2a9aeb5b0aaa8a39c9a96908d88847f7b76726e68636059555049453e373129231b130b0300000000000000000005111c28333f4a555f6978848f9ba79c91857a6f63574c525b6975808c97a3a89c90857b6f635d544c433b36322e3138404c58626c7984909ca7aea2978b8074685d5146424e5a65717c88949fa2968b7f74685c51453a2e22170b000000000005111c28333f4a555f6975818c98a2aba89d948c80756f636059565152515251565960636f76818d959ea9aa9f968b7f73685a51473c31261b10040000000000101c27333f4a56616d7984909ba7a5998d82766b584f453a30251a0e03050f1a25303b454f586b77828e99a5a79b8f84786d61554a3a454e57626b747f8b939da8a79c938a7f736b61574b443930271d13080000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342a2a2a2a2a2a2a2b2b2e3339414b56606a77828e9aa5b1b0a7958a7e73675b5044392d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029343f4b56606a717d8690969ea5acb4b0aba7a09c98938e8a85817d79746f6b66635f5856504a46403a352e262019120b0300000000000000000000030f1a25303b454f586a76828d99a4a097887d71665a4e4d5965707c87929ca79f968d81766d645c534a463f3d383c4149525b65707c88959ea9b0a5998e82766b5b5248434f5a66717d8994a0a1968a7f73685c5045392e22160b000000000006121d2934404c57636e7a85909ca7aea59b8f83796e635e55504b47464546474b50555f636f7a84909ca8afa69a8e83776a61564b4034291d12060000000000101b27333e4a55616c78848f9ba6a69a8e8377685f54493e33281e130d0e151c28333f4a555f6978838f9ba6a69a8f83786c605549353e47525b636e79838f97a1aba39c90857b6f645d544940372d22170e0500000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f35353535353535353637393e434a525b636f7a86919ca8b3aaa096887c71655a4e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27333e49535c636f7a8490969fa6aeb4ada7a09c96918c88837e7a75716e6864615a57544f4b46403c36302b251e161008020000000000000000000000000b16212b3545505c68737f8a96a5a7978b8074685b524c57626c77828e9aa2a69b91897e726c635d55504b4847474b5159626c76818d98a5aeb3a79c9084796b62574c444f5b66727d8995a0a1958a7e73675b5044392d21160a00000000000914202b37434e5a65717d88959fa9a99e95897d72685f554a46403c373a373c40464a56606a737f8a97a1aba89c91867b6f63584c4135291e120700000000000f1a26313d4954606b77838e9aa5a79c9084796e63574b41372d231d18161e262f38404c57636e7a85909ca8a5998e82776b5f54483d36424a555f69717d87919ca5aa9f968d82766e645950463c31271f160c02000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b414141414141414141424244484c535a616b74808b96a0aab3a89c91857a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414c58636c75818c949ea6afb2aba49d97918c86817c77736f6a65635e5756514b49453e3c37312c26201b150d06000000000000000000000000000007121f2b36424e5965707c88959fa69a8f83776b62574c525b65717d88929ba5a29c90857d716d63605957525351565a616a707c86919ca8b4b4a99e95877b7064594d45505c68737f8a96a2a095897d72665b4f43382c21150900000000000b17222e3945515c68737f8a96a6afa79c9084796e63584f453c36312d2e2d31363c465059646f7b86919ca8aba197887d71665a4e43372c20140900000000000d1924303b47535e6a75818c98a4a99e95887c71655a51473d322c272324272f363f48525b66717d89969faaa3988c8075695e52463b303b454f58636c75808c949ea9a69c92897e726a60564b43382f261c1207000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564c4c4c4c4c4c4c4c4c4d4d4e5052575c636a707b85909ca7b0afa69a8e82776960554a3f33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a65717c88919ba5aeb2aba29b938f86817b75706c6763605957544e4b47413e3a35312d27221c16110b0400000000000000000000000000000006111d2934404b57636e7984909ca79d93877c706458504d58636d76818d959ea79f9690857d746e6964615b5f5a61636b6f7a838f97a0a5a7abaea595897e72675b4f454f586975808c98a3a593877c7065594d42362b1f140800000000010d1824303b47525e6a75818c98a4afa4988d8176685f54483f352c26232323262c36404b56616a78838f9aa6b1a8968a7f73675c5045392d22160b00000000000b16222d3945505c67737e8a96a4ada5978c80756b61564b453c37322e2e33373f454f58626c76818d98a6aca3958a7e72675b5044382c363f48535c636f7a84909ba2aba29b90847a6f635c53483f362c21160d040000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e625858585858585858585858595a5b5b62656c717b838f969faab5aa9f968a7f73675950463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a76818d98a1aab5aba29b918d837c756f6b65625c5856504b49453e3d3833302b25221d17120c07010000000000000000000000000000000005111c28333e49545f6875818c98a5a3978b7f746960554a535c646f7b849097a0a69f959087807a73706b6b6a6b6a6f737b828e949d9c999ca2aba3978c807569584f4a555f6977828e99a59e94867a6f63574c4035291e120600000000020e1925313c48535f6a76828d99a4aea3978b807469584f45372f251c1813181d26323c47515a6b76828d99a5aea2978b7f74685d51463a2e23170c000000000008131f2a36424d5964707c87939da8a89c90857b6f645e554b46403d38393e41484f555f69707c86919ca8a79c93877b6f64584d41362a2f38434b56606a727e89929ba6a99e958c81756d635850463b30261e140b0100000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e646464646464646464646464656567696c70757d838f949da6afaea59c90857a6f63584c41362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b85919ca8b3aea59b928d8179706c64615a58534c4b46403e3a35322d2825201b17130d0804010000000000000000000000000000000000030e1a25303a454f5865717d88949ea79b90847a6e6358504b56616a717d86919ca0a69f97918b847f7b78777676787b7f848e939c9c928e929ca7a59a8e8377685f554c57636e7a85909ca79b9084796960554a3f34281d110600000000030e1a26313d48545f6b77828e99a5ada2968a7f73685c5045352e1e150c090d18232d3747535e6a75818c98a4aea3978c8074695d52463a2f23180c010000000007131e2a35414c57626c78838f9aa5aa9f968d81766f655e56504b484747484c52585f636e79828e97a0aba59a8e83776b61574b40352927313c465059646d76818d959fa9a59c91877d716960554a42362e251b110600000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796f6f6f6f6f6f6f6f6f6f6f6f6f70717275777c81878f949da4adb4a99e958c80746a60564b3f34261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a96a0aab4a99e958d81786e69625c57514c48423f3c37332f2b25231e1a161112171212100c0803000000000000000000000000000000000b16202b35404b57636e7984909ba69e958a7e736960554a515a636d737f8a909ca0a7a09c94908a878482818283858a90959c9e958e828e97a0a89c90857a6e63574f5865717c88969fa4998d81766a5950463c31261b0f0400000000030e1a25313d48545f6b76828e99a5aea2978b8074685d5146392f241c1713171b26313c4650596a76828d99a4aea3978b8074695d51463a2f23180c000000000005111c27323d48525b68737f8a959ea9a69b918b7f736f6360595752525252575b61686e75808c939ca7a99e948a7e73675a51473d3227222c374049545d646f7b85909ca3aba1978f83796e635b52473e352b20160e04000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3a89c90857b7b7b7b7b7b7b7b7b7b7b7b7b7b7c7c7e8083878c91979da4adb2aaa19b90847a6f635a51473c3126160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1824303b47525e6975818c98a7b0b3a79b90847a6f686059534b47413e3934312c2724201b1813161a1c1d231e1d1b17130d0600000000000000000000000000000007111c27333e49545e68747f8b959fa59b8f83796e635b524a545d656e747f8a91969da4a59e9b96948f8e8d8e8f91969c9ea19790857b86919ca89f96877c706559545f6875808c97a6a4968a7f73675c5045362c22170c0100000000020e1925303c48535f6a76818d99a4afa4988c81756a5c53493e332b25222322252b343f4a55606977838e9aa5aea2968b7f74685c51453a2e22170b0000000000030e19242e38424c57636f7a84909ca3aba29c91877f756f6a64615b5e5e5b62656b7079808c919ba3aca39b9084796e63574c41382e231d263038444b56616b737f8a939ca7a89d948b80746c62574e453a2f271e1309000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3aa9f9690868686868686868686868686868787888a8c8f93989ca0a7adb4aaa19a90897e726a60564940372d22170500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f586c78838f9aa6b2ada4968b7f736a60575048433d38332f2826221d191611151c212528292f292926221d170f070000000000000000000000000000030e19242f3a454e57636f7a85909ca59d948b7f746b62584f4c555e656f747f868f949c9fa6a7a49d9b9998999a9ca0a59f9791877e78838f9ba6a6968a7e73675c58636e7984909ba79d93877c7064594d42362a1f12080000000000010c18232f3b46525d6974808c97a3aea79b9084786c63584d453b35312d2e2c31353b454f58636f7a85919ca8afa695897e72675b4f44382d21150a0000000000000a141e28343f4a556069737f8a939ca6aba097918a807a73706b6b6a6a6b6c70747b828c919aa1aaa59c928a7e726960554a3f31281e162028323d47515a636e78828e96a0aaa49c91867c70685e544941372d23180f060000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3afa69f9c9292929292929292929292929292939495989a9da3a8abb0aea9a19a918c80746d645950463930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f697985909ca8b3a89e94877b6f645950473f38322e28241f1b17120e0e171e252b3033343a3534312d272018100901000000000000000000000000000b16202b353e4b56606a74808b959ea49c91867c70695f554a4e555e656e737d838b90969b9ea4a4a5a5a4a5a5a69f9c9590877f7376818d989d9d988c81756a595f68727e8a959ea79a8f83786c62574c41352a1e13030000000000000a16212d3944505b67737e8a95a4ada89e94887c71655e554a453f3c373a373c3f454a545f68727e8996a0aaa99f95887c7065594e42362b1f1408000000000000040f1b26313c465059636e79828e959fa7a7a09c918c847f7b7876757576787c80868e929aa1aaa69e958e82776e645850463b3021180f18232d384149545f68707c86919ca4aaa0968e82786e635a51473d32281f160d0300000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b7afaaa89e9e9e9e9e9e9e9e9e9e9e9e9e9e9f9fa1a3a6a8acb4b0aaa59e9c908c81786e635d544940372820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a86969faab2a79b8f84786b61574940362f27231e19150f0c080f161e272f353b3f4046403f3c3730282119110a0200000000000000000000000006111b25313c465059636f7a84909ba29f968e82796e635e554d4e555e656c717a80858b8f9496989a9b9b9b9a9896908c857e736e737f8b919191918f83786960636e79838f9ba59f968b7f73685b52483d33271c110500000000000007131f2a36414d5964707b87949da8aea59a8e82776e655d554f4b46464546464b4f545d636e79838f9ba7b0a79c9085796e63574b4034291d1206000000000000010c17222c36404a545f68707b8590969fa7aba19a95908b87838281818284878c91969ca2aaa69f9690847b6f645e54483f362c211009131e28303a454f58626c74808b949da8a79c938a7f736b61564b443830261d120800000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b5b9b5b3a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaabacafb1b0aea9a7a09c95908980786e685e544d44393027180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b8692a6afb1a59a8e83776b5a51473830261f17140e0a080b11171f262f373f454a4c514c4b4640393129221a120b030000000000000000000000010b17222c37404b56606a727e89929ca69c938c80756e645d544d4d555c63696f747b8084888a8d8e8f8f8f8e8c8985807b726d66717d868686868686867a6f636b737f8a949da79c91857b6f64584c42382e24190e0300000000000007121e2935404c57626b78838f9ba6afa79c928a7f736e635f5856505251525056585f636e747f8b939da8ada4998d8176685f544a3e33281c11050000000000000008121c26303b454f58626b717d8691969fa6aaa59e9c96938f8d8c8c8e8f94979c9fa7aca59e9690857d716a61564d44382f261c12040e16202b353e47525b636e79838f9ba1aaa39c90857b6f645d544940362c22170f05000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaa8a6a4a59e9b97918c857e746e685f574e453c342820160800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b8792a7b0b0a5998e82766b584f453a30251c1712121212171b21272f373f484f55575d58565049413a322a231b130c04000000000000000000000008121d26313c47515a646e77828e959fa39a908a7e736e645d554a4c535960636a6f74797c7f818383848383817e7a756f6a63636e787a7a7a7a7a7a7a786e696f7b85909ca4a0968c80756b61564b4032281f140a0000000000000005111c27323d48525b68747f8b959fa9aca39c91877e746e696360595d5d5d596063686e747e87919ca4ada89d94897d7266584f453b30251a0f0300000000000000030d16212b353f47525b636d727e8690959ca3a9a9a7a49d9b999898999b9da4a8aaa9a29c9590857d716c635a51473d34271f160c0207111b252e37424a556069717d88919ba5a99f958d81766d645950463c31291f150a000000000000000000000000000000000000000000111d28343f4b57626e7985919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9b999695908c86817b726e635f584f473e352c23180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58636f7b8697a0aab1a69a8e8377685f54493e332c26221f1e1e1e21252b30383f474f585f6369636059514a423b332b241c150d0400000000000000000000030d17222d374049545d64707b859097a1a19c91867e726d655e554f4850555a6164686e707375777878787775726f6a63615a5e686e6e6e6e6e6e6e6e6e686e79828e969fa49c91867b6f645a51473d3221180f0500000000000000030e19232e38424c58636f7b85909ca4adaba09791878079736f6a6a6968696a6a6f737980879197a1ababa29b8f83796e63574b40352b21160b00000000000000000007111b252e37424a535c646d727d858e939c9ea5a8ada8a6a5a4a4a5a7a8aca7a59e9b928e847c716d635c534a41372c24170e0500010b151e26303b465059636d75818c959ea9a69b91897e726a60564a43392f24190e030000000000000000000000000000000000000000111d28343f4b57626e798591939393939393939393939393939393939393939393939296908f8d8b8884807b756f6a645d544f473e362e251b13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b3a79c9084796e63574b453b36312c2a29292a2c31353b424850585f696e746f6a615a524b433c342c251d150b020000000000000000000008131d273039444c57626b727e87919ca2a09791867e736e635f58524a4a5156575e6365686a6b6c6d6c6b69676360595651575e6363636363636363637075818c939ca69d948b80746b61574a41372d23110800000000000000000009141e29343f4b56616a747f8b939da5aea7a097918c847f7a777574747475777a7e838b9197a1a8ada49b92897e72685f54493e33251b1107000000000000000000010b151e27313a434c545d646d717b828a90959a9da4a4a5a6a7a7a6a5a3a39d9a94908a827b706c635c534b433931271c1306000000040d16212c363f48535c636f7a84909ba29ea29b90847a6f635c53493e33281d11060000000000000000000000000000000000000000111d28343f4b57626e7986878787878787878787878787878787878787878787878787868584817f7c7974706b64615a5449453e372e261e140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6878848f9ba6b2a99e95887d71665e554a46403b3636353536363b3f454a525960686e79807a6f6b625b534c443d352d251c120800000000000000000000030d172028323d48525b636d74808b919ba2a09691877f756e69625b554f484b4e5457595c5e60616161605e5b5856504b474e5457575757575a60686e75808c919ba3a0978f83796e635a51473931271e130100000000000000000004101b26313c47515a636e79838f959fa6aea8a19c948f8a868381807f808183868a8f949ca1a8aea59d948d81766e64584f453a3025150b0100000000000000000000050e16212a333c444d545c636b70797f848a8f9396989a9b9b9b9b9a9895938f8a847e776f6a625c534c433b322920170c030000000007121c262f38434b56616a727e899293939393948c80756c63584d41362a1f1308000000000000000000000000000000000000000008131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a79787674716e6864625b56514a443a352e261e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586a76818d99a7b0aea5998e82766e655d55504a46424141414143464a4f545b62696e78818b837b706c635d544d453e352c22180d0300000000000000000000060f18232e38424a545d636e78818d929ba2a097918a8079706b635f58544c4a494b4e5153545556555452504c4a46403e45494b4c51575d636a6f79808c909aa1a19c91867d716960554a41382920170e04000000000000000000020d18222d37404a555f69707c8590969ea5acaba49e9b97918f8d8c8b8c8c8f91979b9da4abaca59e958f847a6f635d54473e352b201605000000000000000000000000061119232b343c444c535b62686e737a7f83878a8c8e8f90908f8e8c8a87837e79726e64615a534b433c332b221910070000000000020c161f27313c47515a646e768287878787878787877c7165594e42372b1f1408000000000000000000000000000000000000000007121e2a35404c57626b7070707070707070707070707070707070707070707070706f6f6a6c6a6865635e5757524b474139302b251e160d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b3544505c67737e8a96a0aab2a79c928a7f736e63605955504e4d4c4c4d4e5055585f636b7079818d918f847c716d645e564e453c32271c1106000000000000000000000009141e28313a4449545f686e79818d929ba1a09c908c837c736e69635d57554f4c4a454749494a4949474440414344474b4c52575a61646d717a828c919aa1a29b918a7f736d635950463a3128191007000000000000000000000008131d27303b454f58626b717d8590959ca3a9ada8a7a09c9a98979797989a9ca0a7a8ada9a39c9490847c706a61564d44372e251b11070000000000000000000000000009121b232c343c434a52585f63696f73787c7e81828484848482817e7b77736e69645e56514a433b332b231a120800000000000000050f17222d374049545d636f7a7c7c7c7c7c7c7c7c7b6f64584c41352a1e1207000000000000000000000000000000000000000005111c27323d48525b62646464646464646464646464646464646464646464646464646360595f5c5957544e4c48423d373129201b150d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111e2a35414c58636f7b86919ca7b0aba29c91867e746f696360595a595858585a596063686e737b828d929b9490857d726e655f564c41362b2014090000000000000000000000040e18212a303a454f585f686e79818d9199a0a19a938f857f79716d67635f5857554f4f4e4c4c4a45464a4c4d4e505156585b62646b6f757d848e929aa1a29b918d81756f655c53483f3629211808000000000000000000000000030d16212b353f48525b636c717d848e939c9fa6a9aeaba8a6a4a3a2a3a4a6a8abaea9a59e9c928e847c706c625a51473c34261e150b0100000000000000000000000000020a131b232b333a42474f54596063686c7073757778797978777573706b67636058544b474139322b231b120a01000000000000000008131d273039444a56606a6f70707070707070706f6a61564b4034291d12060000000000000000000000000000000000000000030e19232e38424b52575959595959595959595959595959595959595959595959595858565053514e4b49453e3d38322d272019110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a76818d97a0abb5aaa0969187807a736f696765646363646567696f73797f858e939ba29e9590867e746f655b5044392d22160b000000000000000000000000081119202b353e474f585f696e79818b909c9fa39d96908a837d78726e6966635f585b5a5857554f505557595a5c5a6164676b70757b818990949ca2a19a918d81796e635e554c43382f261910070000000000000000000000000007121c252f37424a535c636c717b828b90959b9ea5a6a8aab0abacabafaaa8a6a59e9b95908a827b706c625b524940372c23160d04000000000000000000000000000000030b131b232a31373f454a5055575b6264676a6b6c6d6d6c6b6a6764625b57555048443c373129221a120a02000000000000000000030d172028313c4650596063646464646464646464615a51473c31261b10050000000000000000000000000000000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46484542403e3a35322e28231d171007010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a64707c86919ca4adb0a7a097918b847e7a767371706f6f707173767a7e838a90959ca3aba69f96918a7f74685d51453a2e23170b0000000000000000000000000007111b252e373f484f585f696e757f8990959ca39f9c938f89837e7975716e6969676564635f585960636466676a6a6f73777c80868d919b9ea59f9c908c81796e685f554e453b33271f16090000000000000000000000000000020c151e27313a434c535c636b70797f858b9095989a9ca0a7a0a0a0a79f9c9a9794908b857f786f6a625b524b423930271c13060000000000000000000000000000000000030a121921272e353b40464a4c5257595c5e6061616161605e5b5857524c4a463f38322d272018120a020000000000000000000000061018222c36404950565859595959595959595856514a41372d23180d02000000000000000000000000000000000000000000040e18212a32383d4041424242424242424242424242424242424242424242424141403f3c373a3734332f2b25231e18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37414c57626c75808c939da5aeb0a8a19c948f8a85817f7c7b7b7b7b7d7f82858a8f939c9fa6acb5aaa29c928c81756a5e52473b3024180d01000000000000000000000000010b151e262f373f484f585f636f747e858e939c9fa49d9b938f8984817d7a777472716f6e696d6e696e70717375787b7e82868c91969ba1a39c96918a80796e685f584f453d352b22170f05000000000000000000000000000000050e17212a333b434c535b61686e737b8084888c8f9196949494949396918e8c88847f7a736e68615a524b423a322820170b03000000000000000000000000000000000000020911161e252b30363c3f42484c4d505254555656555452504d4c48423f3b362f27231d171008010000000000000000000000000008121d26303840464a4c4d4d4d4d4d4d4d4d4c4b47413930271d1309000000000000000000000000000000000000000000000008111921282e3235363636363636363636363636363636363636363636363636353534312d2e2b292724201b18140e0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27333e48525b636f7a838f959ea5acb1aba49e9b95908d8a8887868687888a8d90969b9da4a9afafa9a19b928d82796e63574c4034291d12060000000000000000000000000000040d161e272f383f484f555f656e727b828b90969ba2a49d9a95908c888582807e7c7b7a7979797a7a7b7d7e8183868a8e91979c9fa69f9c938e867e756e685f584f483f352d241b12070000000000000000000000000000000000061119222b333b434a52585f636a6f74797d808385878888898888878583807d79746f6a635e57514a423a322a21181006000000000000000000000000000000000000000000060e151b21262c3134383d40424447494a4a4a4a48474441403d3833302c261f17130d07000000000000000000000000000000030d161f2830363c3f40424242424242424241403c37302920170d030000000000000000000000000000000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29292622221f1d1c1916110b090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242e38424a556069707c8490949da3abb0ada8a69f9c989694939292929496999c9fa6a8adb3aba69f9c918c817a6f685f554a3e33281c1105000000000000000000000000000000060e161f272f373f454a565d646b70797f858d91999ca0a59e9c9896908e8b89888686858585858687888a8c8f9197999ca1a7a09c95908b827c726e635f584f483f372f251d140a0200000000000000000000000000000000000009121b222b333a41474f545a6163696e7175777a7b7c7d7d7d7c7b7a7775716e68636059544e474139322a221a11080000000000000000000000000000000000000000000000050b11161c2226282e323536393b3d3e3f3f3e3d3b393635322e2825211c160e09030000000000000000000000000000000000060f181f262c31343536363636363636363534312d27201810070000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1b17131411100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f28313b465059626b707c848f939ca0a7acb3afa9a7a4a19f9e9d9d9e9fa1a4a8aaafb3aca7a29c95908a81796f6960584f453b30251a0f0300000000000000000000000000000000060e171f272f353b454d545b61686e747b81888d91979c9fa6a69f9c9a97959392969190909197939496989a9ca1a8a59e9b96918c857f79706c645e544f473f372f271e150c0400000000000000000000000000000000000000020a121a222931373f454a5156585f636669686e7071717271716f6e686966635f58565049453e363129221a11090100000000000000000000000000000000000000000000000001070d12171b1e24272a2a2d30313233333231302d2a2927231e1a17120c050000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2926231d17100800000000000000000000000000000000000000000000000000000000040a0e1112131313131313131313131313131313131313131313131313131212100c080806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17222c364048525b626c707b838c91979ca2a8aaafb1b0adabaaa9a9aaabadb0b1afaaa8a39c9a928d857e756e68605950483f352b21160b000000000000000000000000000000000000060e171e252b303c444a52585f636b6f767c82868c9095989c9fa6a4a2a19fa7a09c9c9c9ca0a79fa1a4a3a59e9b9894908b86807b746e68625b544a453f372f271e160e05000000000000000000000000000000000000000000020a121921272e353b41474b4f55575a585f6364656666666564635f585a57554f4b46403a352e26201811090100000000000000000000000000000000000000000000000000000003080c0f14191c1e1f222426272727272624211f1e1c18140f0c070200000000000000000000000000000000000000000000060d12171b1d1e1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000000000000000000000000000000000003050708080808080808080808080808080808080808080808080707070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38424a525b626b707980868e92989c9fa6a5a8aaafababababafa9a7a6a69f9c98938e88827b726e635f58504840372f251b110700000000000000000000000000000000000000060e151c212c343a41474f545a61646c71767c8185898d909596989a9c9ea59f9fa0a09f9fa59e9c9a989595908c8984807b756f6a635f58524b443b352e271e160e060000000000000000000000000000000000000000000000020911161e252b30373c3f454a4c4f4f5557585a5a5a5a5a5857544f4e4c4a453f3c372f2b251e1610080100000000000000000000000000000000000000000000000000000000000001040a0e11131316191a1b1c1c1b1a18161312100d0904010000000000000000000000000000000000000000000000000003080c0f111213131313131313131212100d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28313a424b525b61696e757c82888d9096979a9c9fa69fa0a09fa69f9c9a9896918d88837d76706b645e554f4840382f271e150c020000000000000000000000000000000000000000050c121c232931373f454a51565c63656b70757a7d8185878a8d8e9095939394949494939395908f8c8a8784817d79746f6b63615a544f47423a302b251e160e060000000000000000000000000000000000000000000000000000060e151b21272d31353b3f4043454a4c4d4e4f4f4e4e4d4b4a4543403e3b35312d27201b140d050000000000000000000000000000000000000000000000000000000000000000000000030507080b0d0f101010100e0d0a07070502000000000000000000000000000000000000000000000000000000000000010406060808080808080808070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0e0e11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110f0d09050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17212a323b424a525860636c70777c8185898c8e909693949494949395908e8c8985817c77716d64625b544a453f372f281f160e05000000000000000000000000000000000000000000000207131921272e353b41474b53585b6264696e7276797c7f818384868788888989888887868483817e7c7975726e6864615a56514a453f37322a211b150e0600000000000000000000000000000000000000000000000000000000050b11161d22252b303334353b3e4041424343434241403e3b353433302b25221d16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b101417191a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b18140f090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119222a323a414850555c62656c71757a7d80838586878889898887868583807d7a76716c66635c57524a443b352f271f170f06000000000000000000000000000000000000000000000000030910161e252b30383d43494d525758606366686e70737677797a7c7c7d7d7d7d7c7b7a79777573706e6866635f5856514b47413b352e27211a110b0500000000000000000000000000000000000000000000000000000000000001070d13181c212528292b303334363737383737353433302b292825211b17130d0601000000000000000000000000000000000000000000000000000000000000000000000000000004090c0f11111111111111111111100f0c08040000000000000000000000000000000000000000000000000000000005090c0d0e111111111111111108080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406071111111111111111080706030000000000000000000000000000000000000000070e151a1f232526292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929282826231e19120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a222931383f464a53575c6365696f727577797b7c7d7d7d7c7c7b797775716f6965635c58534c48423a302b251e160f07000000000000000000000000000000000000000000000000000000060e151b21282d32393e42484c505557585f6365676a6c6a6f70717172717171706f696c6a6765635e5757554f4b47413c37302b251e1611070100000000000000000000000000000000000000000000000000000000000000000003080c12161a1c1d212528292a2b2c2c2c2b2a292825211d1c1a16110c0803000000000000000000000000000000000000000000000000000000000000000000000000000002080e13171a1c1d1d1d1d1d1d1d1d1c1c1a17130e0801000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1d1d1413110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d1012121d1d1d1d1d1d1d1d1313110e0a050000000000000000000000000000000000070f171e242a2e30313434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343433312e29231c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111921272f363b42484c535859606366696b6a6f7071717171706f6b6c696663605958534d49433d38312a211b150e060000000000000000000000000000000000000000000000000000000000050b11161e23292f33383d3f464a4c4f5457595c5e59606364656566666565646360595e5c5957544e4c4a453f3d37312d27211b150e060100000000000000000000000000000000000000000000000000000000000000000000000002070b0f1111161a1c1d1e20202020201e1d1c1a1611110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e2226282829292929292929282725221d18110a0200000000000000000000000000000000000000000000060e141a1f2224252929292929292929201f1d19150f09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e29292929292929291f1e1c19140f08010000000000000000000000000000040e171f272e34393c3d404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403f3d38332c241c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911171f262c30393e43494d5055575a5d5a616365656666656564615a5e5a5755504d49433e3a322e282119110c050000000000000000000000000000000000000000000000000000000000000001070e13181f24282e32363b3f4045494b4d505350565859595a5a5a5a595957555052504d4b4945403e3b35322d27221d16110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000305070b0f11121314151515141312110f0b0705030000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b22282d313334343434343434343433312d28221a130a010000000000000000000000000000000000000000060f171e24292d303134343434343434342b2a28241f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2226292934343434343434342b2a27241f18110901000000000000000000000000000b151e2730383e4447484b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a48433c342c23190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161c21292f33393e40464a4c4f52515658595a5a5a5a59585651524f4c4a46403e39342f2a231e181107020000000000000000000000000000000000000000000000000000000000000000000004090f15191e23262c3033353a3e40424547464b4c4d4e4e4f4f4e4e4d4c4a46474442403e3a3533302b25231e18130d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060708090909080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b232b32383c3f3f404040404040403f3e3c37322b231a110800000000000000000000000000000000000000040e171f272e34383b3c40404040404040403736332f29221a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d31343540404040404040403635332e29221a110800000000000000000000000005101a242e3840484e52545757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575756524c453c33291e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171f24292f33363c3f404346474b4c4e4e4f4f4e4e4d4b474643403f3b36332f29252018140e080000000000000000000000000000000000000000000000000000000000000000000000000000050a0e14191c2125282b3033343639373c3f404242434343434242403f3b36393634332f2b2825211b18130e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b343c42474a4b4b4b4b4b4b4b4b4b4a47423b332b22180e040000000000000000000000000000000000000a141e272f373e4347484b4b4b4b4b4b4b4b42413e39332b22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930373c404b4b4b4b4b4b4b4b4b42413e38322a22180f05000000000000000000000009141f2a343e4851585d5f63636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636362615d554c43382e23180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070f15191f24262c31343538373c404142434343434241403d37373534312c26241f1a151009040000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c12171a1d202528292b2d2c31343536373738373737363534312c2d2b292724201c1a16110c0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060707070707060402000000000000000000000000000000000000000000000000000009131e28323c444c525557575757575757575655514b443b32281d1308000000000000000000000000000000000005101a242e3740484e525457575757575757574e4d49433b33291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303941474b5757575757575757574d4c48423b32291f140a00000000000000000000000c17232e39444e5861686b6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c665d52483d31261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f15191c222628292c2d3134353637373837363534322d2c292826211c19150f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f11161a1c1d1f22222628292a2b2b2c2c2b2b2a29282622221f1d1c1916110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070b0f1112121313131212100d08080705030000000000000000000000000000000000000000000c17222d38424c555c61626363636363636362605b544b42372d22170c010000000000000000000000000000000009141f29343e4850585d5f63636363636363635958534c43392f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37414951566263636363636363635957524b42382e24190e03000000000000000000000e1925303c47525d6871777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a766c61564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c12171b1d1d202226292a2b2b2c2c2b2b2a292723201d1d1a17120c0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070b0e11111313171b1d1e1f1f202020201f1f1d1d1a17121411100e0b06030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e101111161a1c1d1e1e1f1e1e1d1b18131313110e0a04010000000000000000000000000000000000000f1a26313c47525c656c6e6e6e6e6e6e6e6e6e6b655b51473c31251a0f03000000000000000000000000000000000c17222d38434e5861686b6e6e6e6e6e6e6e6e65635c53493e33281d11060000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a616d6e6e6e6e6e6e6e6e65625b52483e33271c1106000000000000000000000e1a26313d48545f6b7782858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585867a6e62574b4034281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111213181b1d1e1f202020201f1e1d1b181312110f0c08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608080c101112131414151514141312110f0c0808060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090b1116191c1d1f212528292a2a2a2a29292622221f1e1c19140f0c080300000000000000000000000000000000111c28333f4a55616c75797a7a7a7a7a7a7a79756b60554a3e33271c1005000000000000000000000000000000020d1924303b47525d6871767a7a7a7a7a7a7a7a716c63584d41362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a777a7a7a7a7a7a7a7a776c62574c41352a1e1307000000000000000000000e1a26313d48545f6b77828e9191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191867a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090d1012121414151514141312100d0906060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080809090909080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e13181b202427292b2b303334353636363534312d2e2a2a27231e1b17120d07020000000000000000000000000000111d28343f4b57626e79868585858585858585796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b768185858585858585857d7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b85858585858585857c7065594d42362b1f1308000000000000000000000e1a26313d48545f6b77828e999c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060708090909090807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181e23252b2f333437353b3e4041414141413f3c37393635322e2826221d16110c0500000000000000000000000000111d28343f4b57626e79859191919191919085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d919191919191887d7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919191919191877c7065594d42362b1f1308000000000000000000000e1a26313d48545f6b77828e99a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89c91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0c0e0f101111100f0e0c0a070705030000000000000000000000000000000000000000000000020606060606060606060500000000000000000000000000000000000000000000010710171d22282d32353a3e404245454a4b4c4d4d4d4c4b47474542403d3834312c26211b150e06010000000000000000000000111d28343f4b57626e7985919c9c9c9c9c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d999c9c9c9c93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929c9c9c9c93877c7065594d42362b1f1308000000000000000000000e1a26313d48545f6b77828e99a5b1b4b4b4b4b4b4b0afadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada89c91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060808111111111111111111060401000000000000000000000000000000000005090c0e0e111111111111110b0a09060200000000000000000000000000000306080811111111111111111106040100000000000000000000000000000000000000000000000000000104090d1012131518191b1c1c1c1c1b1a18161312110e09050200000000000000000000000000000000000305060d11111111111111111111090806040000000000000000000000000000000000040b111820272d31383d3e45494b4e514f54575858595858565153504d4c48423f3c36302b251e16110a0300000000000000000000111d28343f4b57626e7985919ca8a8a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5a8a89f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da8a89e93877c7065594d42362b1f1308000000000000000000000e1a25313d48545f6b77828e99a2abb5bec4bab2aaa5a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29c91857a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c070200000000000000000000000000040a101417191a1d1d1d1d1d1d1d161614110d080200000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000000000000000000000000003080c1013181b1d1e2123252627282827272623211f1e1c1914100d090400000000000000000000000001070b0f1112191d1d1d1d1d1d1d1d1d1c1414120f0b060000000000000000000000000000060d151b202930373c41474b4e5457595d585f636464646463615a5f5c5957524c4a46403b352f27221a130b03000000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000a16212d3844505b67727e89919ba5aeb8bfb4aaa19a98969696969696969696969696969696969696969696969696969696969696969696969691867a6e62574b4034281d11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000060e141a1f2225252929292929292922211f1c17120b040000000000000002090f15191d1f202929292929292929291d1a17120c050000000000000000000000000000000000000003080d13171b1e2327292a2c2f31323333333332312f2d2a2927231e1c18130e0904000000000000000000050b11161a1c1d2429292929292929292928201f1d1a151009020000000000000000000000060e161e252b303941474b5156575e6365686b686e6f70706f6f6a6c6a6864625b5856504a453f37322a241c140c030000000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000915202c37434e59646e76818d959ea9b4bab0a59a918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b867a6e62574b4034281d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000060f171e242a2e3031343434343434342e2d2a27211b140c040000000000020a12191f24282a2b3434343434343434342825211c160f070000000000000000000000000000000000060d13171d2226282d323435383a3c3e3e3f3f3e3e3d3b383635322e2927231e18140e0701000000000000060e151b2125282930343434343434343434342b2b28251f19120a02000000000000000000050e161e262e353a444951565a6164686e717476787a7b7b7b7b7b79787673706b68636059554f48423b342c241c140b0300000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000008131e2a35404a545d636f7b84909ba1aab5afa3988c807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000000040e171f272e34393c3d40404040404040393836312b241d140b020000000009121a22292f33363740404040404040404033302c261f170f05000000000000000000000000000002070f161d22272c3134373d4041444648494a4b4b4a4948464441403d3835322d28231e16110b0500000000060e161e252b3033343c4040404040404040403f3736332f29231b12090000000000000000010b151e272e373e4549545a61636b6f74797c7f82848586878787868583817f7c78736f6a635f58524b443d342d241b130900000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000005101b26303b444b56616a727d89919ba4adb1a69a8e837a7373737373737373737373737373737373737373737373737373737373737373737373736f655a4f44382d21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c020000000000000a141e2730373e4347484b4b4b4b4b4b4b4544403b352d241b1208000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c02000000000000000000000000050c111820272c31373c3f41474b4c4f52535556565656555452504d4c4842403d38322e28211b150e060100060e171e272e353b3e40474b4b4b4b4b4b4b4b4b4b43423e39332b231910060000000000000007111b252e373f474f545d646a6f757b8084888b8d8f919792939296908f8d8a87837f7a736e68625b544d453d342c23191108000000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000030607080b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b121e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f130807040000000000000000010c16212b313c47515a636d75818c949da7b0a79c938b7f746c68686868686868686868686868686868686868686868686868686868686868686868655e554b41362b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c1207000000000005101a242e3740484e525457575757575757504f4b453d352b21170d0200000a151f29333b43494d4e5757575757575757574a463f382f261c12070000000000000000000000060e151b212830373c40464b4c5156585b5d5f6061626261615f5d5b5957524d4b47413d38302b251e161109070f171f272f373f454a4b53575757575757575757564e4d49433b33291f150b000000000000081119212b353f474f585f636d727b80868b909497999b9ca0a79ea69f9c9b9896938f8a847f79706c645d554d453c342a21180e040000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000050a0e1113131717171717171717171717171717171717171717171717171717171e2935414c58636f7b86929da9aa9e93877c7065594d42362b1f1514120f0b0600000000000000071118222d374149545d636f7a848f97a0abaca39c91867c7069605c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a554e453b31271c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c010000000009141f2a343e4850585d5f636363636363635c5a554e453b31271c110600030e19242f39434c5358596363636363636363625550483f362c21170c01000000000000000000070f161e252b303940464b5056585a616466696b6c6d6d6d6d6c6b696764625b5856514b48413b352e272119130f171f272f373f474f54575e636363636363636363625a58534c43392f251a0f0400000000040e18212a303b454f585f686e747e848c91969b9ea5a5a7a8aab0aaafaaa8a6a4a49d9a95908b837c726e655e554d443a31281e14090000000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000001080f14191c1e1f222222222222222222222222222222222222222222222222222222222935414c58636f7b86929da9aa9e93877c7065594d42362b22201f1d1a1510090200000000000008131d273039444a56606a717d87919ca4adaaa0968f83796e635c535151515151515151515151515151515151515151515151515151515151514f4b453d352b22170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f04000000000c17222e39434e5861686b6e6e6e6e6e6e6e68655e554b40362a1f14090006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040000000000000000060f171f272f353b44495056596063686b6f727476787879797878777572706b6864615a57524a453f37322a231b171f282f383f484f585f636a6e6e6e6e6e6e6e6e6e6e65635c53493e33281d12060000000009141e28313a424a545f686e78808990959ca0a7a9aeb0b0adabaaaaaaacaeb2b0ada8a59e9c938f857e736e655d544a42382e2318100600000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000010911181f24282a2b2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e35414c58636f7b86929da9aa9e93877c7065594d42362e2e2c2b2925201a120b020000000000030d172029313c465059636d75808c939da7b0a79d938c80746d635950464545454545454545454545454545454545454545454545454545454544413b352d251b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d1106000000020e1925303c47525d6871767a7a7a7a7a7a7a736f655a4f44382d21160a0008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d110600000000000000050e171f282f373f454a545960636a6f73777b7e808283848485848382807e7b78746f6b64615b544f47423a332c2520283038404850585f686e767a7a7a7a7a7a7a7a7a79716d63584d42362b1f1408000000020d18232e38424a555e636e79818c909b9ea5aab0afaaa8a5a19f9e9e9fa0a3a6a8adb2aea9a49d9690877f736d645b52483d32291f150b00000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000008111a22292e3335363a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a414c58636f7b86929da9aa9e93877c7065594d423a3a3a3736342f2a231b1209000000000000071018222c364049535c636e79838f96a0aaada49c91877d716a60564a443939393939393939393939393939393939393939393939393939393836312b251d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1206000000030e1a25313d48545f6b7682858585858585857f73685c5045392e22160b000814202b37424e5965717d8585858585858585796e63574c4035291d1206000000000000020c161f272f3840484f555d646a6f747a7f8386898c8d8f909090908f8e8c8a87837f7b75706b635f58524b443c352d2830384048505860696e7981858585858585858585857d71655a4e43372b20140900000005101c27323d48525b656e75818c919aa1a9aeafaaa69f9c99969493929394979a9da4a7acb4ada69f9791877e726b62574c43392f251a0d03000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000050f18222a32393e4142454545454545454545454545454545454545454545454545454545454545454c58636f7b86929da9aa9e93877c7065594d4545454543423f3a332b231a100600000000000008121d263038434a556069707c86919ca3acaba0978f847a6f635d544941372d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b27221b140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e91919191918a7f73685c5045392e22160b000814202b37424e5965717c88919191919191867a6e63574c4035291d120600000000000007121c262f38404850585f636d727a80858a8e919797999a9b9c9c9b9a999795938f8b86817b746e68625b544c453e2f30384049505960696e79818d9191919191919590857d716d63584d42362b1f140800000007121e2935404c57626b737f8a919ba2aab4ada69f9c96908d8a88878788898c8f939a9ca3abb1afa8a19790857b70645c53493e33271d1309000000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000a141f29323b42484c4d515151515151515151515151515151515151515151515151515151515151515158636f7b86929da9aa9e93877c70655951515151514e4d49433c332a20150b000000000000030d161f28303b465058626c747f8b939ca6afa79e948c81756d635a51473c31292122222222222222222222222222222222222222222222211f1c17120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e999c9c9c968a7f73685c5045392e22160b000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d12060000000000071018212c363f48505960686e757e848b90969a9ca1a8a5a6a7a7a7a7a6a5a3a49d9a96918c857f79706b635d554e463a394049505960696f79818d919ba29ca59e9590857d716c635c53493e33281d1206000006111c27333e48525b64707b85909ca1aab2ada49d96908b85827f7d7c7b7c7d8083888e939ca1a8b1b1a89f958d82766d63584d41372d23180d020000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800030e19242e39424b5257595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c636f7b86929da9aa9e93877c70655c5c5c5c5c5c5a58534c433a2f251a0f04000000000000060f18212c363f48535c636e79828e969faaada49b91897d726a61564b443a31261e1417171717171717171717171717171717171717171614110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5a8a2968a7f73685c5045392e22160b000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d120600000000030d172029303b46505860696f79808990959c9fa6a8abada8a6a5a4a3a3a4a6a8aba8a7a09c96918b827c726d655e5649454149515960696f79828d929ba2aba59e9590857c716c635c534c43392f251a0f04000007131e2a35414c57626c76818d969faab2ada49d938f85807b7673717070717274787d828b9197a1abb6afa69c92887d71655a51473c31261b10050000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080006111c28333e48525b6265686868686868686868686868686868686868686868686868686868686868686868686f7b86929da9aa9e93877c706868686868686866635d53493f34291d12070000000000000007121c262f38424a545f68707c85909ca2acaaa19b90847b6f635d544a41362e251b11060b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000009131d273039414a5560696f7a828c919c9ea5aaada8a7a49d9b99989798999b9ca0a7a7aaa69f9c938e857e746f665f544e49515a606a6f7a828e929ba2aba59e9490847c706c635c534c433b33291f150b0000030f1a25303b454f5864707c86919ca6afaea59d938f837c746f6a676564646566696d71788087919ca1aab6aba2998d82766a61564b4034291d12060000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080007131e2a35414c57626c7074747474747474747474747474747474747474747474747474747474747474747474747b86929da9aa9e93877c7474747474747474716d63584d42362b1f140800000000000000020c161f27303b454f58626b737f8a929ca6afa99e958d81766e645a51473e352b20160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000020d18222d374149545e636e79828e929aa1a9aea9a49d9b96948f8d8c8c8c8d8f9197999ca2a7aaa39c9590877f7470635e57515a616a6f7a828e929ca2aba49e9490847c706c625c534b433b332b23191006000005111c28333e4a545f6875808c97a1abb4a99e948f837a706c64615a5a5958595a5c63686e747f8a919ba6afb4a89c91867b6f64584c41352a1e12080000111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080008131f2b36424d5965707c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f808b97a2aeafa3978c807f7f7f7f7f7f7f7f7d71665a4e43372c2015090000000000000000050e17212b353f47525b636e78828e959fa9aea59b91897e726b61574e453a2f271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000005101b26313c47515a646e75818c929ca2aaaca69f9c948f8a878482818081818386898e929a9ca3aaa69f97918b80756e685e5a616a6f7a828e939ca3aba49d948f847c706c625b534b433b332b231b120900000006121d2934404b57636e7984909ba8b1ada49b90847b6f6a625b56514e4d4d4e4f53585f636e75818d969faab5aba0978a7e73675b5044362c21170c0100111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b909aa4afb0a59a908c8b8b8b8b8b8b8b8b8075695e52463b2f24180d00000000000000000007111b252e374249545e686f7b85909ca2ababa29c90857b6f685e544942372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000006121d2934404b56616a727e8a919ba2abaca39c95908a847f7b787675747576787a7e82888e929ca0a7a7a09c908c80786e63616a6f7b838e939ca3aca49d948f847b706b625b524b423b322b221b120a0200000008141f2b37424e5965717c88959ea9b3a89d938a7e726b6159524b474342414243474f545e636f7a85909ca8b3b0a7988d81766a5950463b31261a0f0400111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1109090909090909090909090909090909090e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a95969696969696969696969696969696969696969696969696969696969696969696979aa0a9b3b4aaa19a97969696969696968c8075695e52463b2f24180d000000000000000000010b151e272f3a454e57616b727e8a919ba5aea99f958e82786e635b52473f352b21170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000005101b26313c47515a636f7b85909ca1aaaca39c938e857e7973706b6b6a69696a6a6f72777c828b91969ea5aba19a918c80756f6b6f7b838f939ca3aca49d948f837b706b625b524b423b322a221a120a02000000000b16222e3945505c68737f8a96a5aeb2a69b8f83796e635a5149423c37363637373e454b56606a75808c98a6afb2a69b8f84786960554a3f34281d110600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c151515151515151515151515151515151515151a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a95a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a4a9b1babab1aaa5a3a2a2a2a2a2a2988c8075695e52463b2f24180d00000000000000000000050e16202b353e47515a646e76818d959ea9afa69c928a7f736b62584f453b30271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000006121d2934404b56616a75808c959ea9ada49c938e827b726e6864615b5e5d5e596063676c71787f8690959da4aaa19a918b8074707b838f939da3aca49d938f837b6f6b625b524b423a322a221a120a0200000000000d1824303b47525e6a75818c98a4ababa2978b8074685f544a4138312d2b2a2b2e353c47515a65717c88969faab3a89d94867a6f63574c4035291d120600111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342820202020202020202020202020202020202020202025313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a95a1acaeaeaeaeaeaeaeacacacacacacacacacacacacacacacacacacacacacacacacacaeb2b8c0c0b9b2aeadacacacacaca3988c8075695e52463b2f24180d000000000000000000000006111b252e36414a545e636f7b84909ba1aaaca29c90857c70685f544a42382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000007121e2a35414c58636f7b85909ca5aea89d948e827a6f6b635f5857525252525056585c63686e737d848f949da4aaa199908a7f7b838f949da4aca39d938f837b6f6b615a524a423a322a221a120a010000000000000e1a26313d48545f6b77828e999f9f9fa794887c7165584f45393128231f1f1e252d37404c57636e7a85909ca8b3ada493877c7064594d41362a1f130800111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a95a5aeb7b9b9b4aca7a6a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1a3a8afb8b9b0a8a3a1a0a0a0a0a0a0988c8075695e52463b2f24180d0000000000000000000000010b141e26313a444b56616a727e89919ba4adaa9f968e82796e635c53483f362c21180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060004101b26313c46505968737f8a969faaaba29b8f837a6f69615a544f4b48474647464b4c53575e636c717b838f939da4a9a09c9186848f949da4aca39c938f837b6f6a615a514a423a312a211a110901000000000000000f1b27323e4955606c78838f949494949497867b6f63584c41352a20181313151d28333e4a555f6877828e9aa5b1ab9f94887d71655a4e43372b20140900111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f373737373737373737373737373737373737373737373737373c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000a16212d3944505b67727e8a959ea7afb8b6aca39c9a94949494949494949494949494949494949494949494949495989fa8b2b2a8a09996949494949494948c8075695e52463b2f24180d000000000000000000000000040d162129313c47515a646d75818c949ea7afa69c938b7f746c625850463b30281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060006111d28343f4b56606a77838e9aa6afa79c92887d716a6059514a453f3d383b373c3f43474e545c636b707b838f939da5aba0979190959da4aca39c938e827a6f6a615a514a413a312a21191109010000000000000000101b27333e4a55616d78838888888888888887796e63574b4034291d1109070f1a25303b454f586a76818d98a4b0aba094897d72665a4f43382c20150900111d28343f4b57626e7985919ca8b3a89c9085796e62564b43434343434343434343434343434343434343434343434343434348545f6b76828d99a5b0ab9f93887c7165594e42372b2014080007131f2a36414d5964707c8590969fa8b1b3a79c938e898989898989898989898989898989898989898989898989898f98a3aeaea3998f8a89898989898989898075695e52463b2f24180d00000000000000000000000000051019222d374149545d636f7a848f97a0abaca39c91867c706960554a433830261d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060006121e2935404c58636f7a86919ca8b0a7998e82766d63595048413b35322e2f2c3134363e4549535b626a6f7b838f949ea6a7a09c9b9ea5aba39c928e827a6f6a615a514a41393129211911090100000000000000000008141f2b37424e5965717c7c7c7c7c7c7c7c7d71685f54493e33281c1105000b16212b3547525e6975818c98a3afaca095897e72665b4f44382c21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f545f6b76828d99a5b0ab9f93887c7165594e42372b2014080007121e2935404c57626b717d869197a1abb1a69a8e837e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e8995a1acada1968a7f7d7d7d7d7d7d7d7d7c7064594d42362b1f1308000000000000000000000000000008131d273039444a56606a717d87919ca4adaaa0968f83796e635c534940362c2218100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000915202c37434f5a66717d8997a0ababa097897e72675d54494038302b2523232226282e353a434a525a616a6f7b8490959fa9aba8a7a9aba29c928e827a6f6a605a51494139312921191109010000000000000000000008131f2a36414c58636c7171717171717171716c63584f453a30251a0e03000711232f3a46515d6974808b97a3aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5f6b76828d99a5b0ab9f93887c7165594e42372b2014080005111c27323d48525b636d727e87919ca1aaa79c938a7f73727272727272727272727272727272727272727272727b86929da9aa9e93877c7272727272727272706c62574c41352a1e13070000000000000000000000000000030d172029313c465059636d75808c939da7b0a79d938c80746d635950463c312920170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000b16222e3945505c67737f8a96a7b0a89c91857b6f63584c43393028211b1814171b1e252b2f3a424a515a616b707c85909ca7b3b4b3b2a79c928e827a6f6a60595149413931292019100900000000000000000000000006111d28333e49535c63656565656565656565635c53473e352b20160b00000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e6666666666666666666666666666666666666666666666666666666666666666666b76828d99a5b0ab9f93887c7165594e42372b20140800020e18232e38424a535c646e747f8b919aa2aba39c91877e726c666666666666666666666666666666666666666f7b86929da9aa9e93877c706666666666666664625b52483e33271c1106000000000000000000000000000000071018222c364049535c636e79838f96a0aaada49c91877d716a60564a443930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000c18232f3b46525d6975808c97a3aea79b8f84786a60564b3f33282017110b090c0f141b202c343c444d545d636d737f8b96a2adb9bcb0a5998e82796f6960595049403930292018100800000000000000000000000000030e19242f39434b5358595a5a5a5a5a5a5a5958534c43372e251b110700000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c908579717171717171717171717171717171717171717171717171717171717171717171717176828d99a5b0ab9f93887c7165594e42372b201408000009141e28313a434c545d656f75808c929ca4aba09790867d716b625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a636f7b86929da9aa9e93877c70655a5a5a5a5a5a5957524b42382e24190e030000000000000000000000000000000008121d263038434a556069707c86919ca3acaba0978f847a6f635d544941372d221910050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000d1824303b47525e6a75818c98a4afa69a8e83776c5a51473c3123180f0701040c141c242d343d444d545d646d727d86909ca8b3bdb6aa9f93887c706a6059504940393028201810080000000000000000000000000000000a151f29323b43494c4e4e4e4e4e4e4e4e4e4d49433b33261e150b0100000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c91857d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d828e9aa6b1ab9f93887c7165594e42372b2014080000040e18212a333b444d555f636e79828e939da5a79f9690847b706a60584f4f4f4f4f4f4f4f4f4f4f4f4f58636f7b86929da9aa9e93877c7065594f4f4f4f4f4d4c48423a32281f140a0000000000000000000000000000000000030d161f28303b465058626c747f8b939ca6afa79e948c81756d635a51473c312921160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000d1924303c47535e6a76818d98a4b0a5998e82766b5f5448372d22170c01040d141d242d353d454d545d646d727e8690969faab3b2b3b2a69b8f837a6f685e5449443a31281f160c02000000000000000000000000000000050f19222b32393e41424242424242424242413e39332b22160d040000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3aa9f9691898989898989898989898989898989898989898989898989898989898989898989898989898e939ca7b3ab9f93887c7165594e42372b201408000000081119222b343d454a555f686f7a838f949ea6a69e958f837a6f695f574e454343434343434343434c58636f7b86929da9aa9e93877c7065594d4343434342413e38322a22180f05000000000000000000000000000000000000060f18212c363f48535c636e79828e969faaada49b91897d726a61564b443a31261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000d18242f3b47525e6975818c98a3afa59a8e83776b5950463c31261b0f050d151d252d353d454d555e646e727e8691969fa6ada8a6a8ada89d948d81786e635d544a42382f261c12080200000000000000000000000000000009121a22292f333637373737373737373736332f29221a1206000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3afa69f9c949494949494949494949494949494949494949494949494949494949494949494949494949a9ca3acb6ab9f93887c7165594e42372b2014080000000009121b242c303b454f58606a6f7b8490959fa7a59d938e82796e685e5449443c383838383838414c58636f7b86929da9aa9e93877c7065594d423838383635332e28221a1108000000000000000000000000000000000000000007121c262f38424a555f68707c85909ca3acaaa19b90847b6f635d544a41362e251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000c17232f3a46515d6974808b97a2aea69b8f83786a60564b3f34281e150c151d252d353d454e555e646e727e8691969fa7aaa49d9a9da4aba49b928b7f746d635b524840362c221b1208000000000000000000000000000000010a12191f24282a2b2b2b2b2b2b2b2b2b2a28241f19120a02000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3b7afaaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a6a7acb4b6ab9f93887c7165594e42372b20140800000000020a131c212b353f485059616b707c859097a0aaa49c928d81786e635e554c433b322c2c2c35414c58636f7b86929da9aa9e93877c7065594d42362c2c2b2a27241f181109010000000000000000000000000000000000000000020c161f27303b454f58626b737f8a929ca6afa99e958d81766e645a51473e352b20160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000b16222e3945505c68737f8a96a6afa89c91857a6f63584c42372f251c161d252e353e454e555e656e737e869197a0a7aaa19b938f939ba2aba29c91877e726b625950463b312b2319100600000000000000000000000000000001090f15191d1f1f20202020202020201f1d19150f090200000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3bfb9b5b3abababababababababababababababababababababababababababababababababababababb1b3b6bcb6ab9f93887c7165594e42372b20140800000000000307111b252f374049515a626c717d86919ca0aaa39b918b80746e645d534b423931282935414c58636f7b86929da9aa9e93877c7065594d42362b201f1e1c19140f080100000000000000000000000000000000000000000000050e17212b353f48525b636e78828e959fa9aea59b91897e726b61574e453a2f271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000914202b37434e5a65717d88969faaaba097897d72665b52483f352c261f202e363e464e555e656e737f879197a0a7aaa19a918c838d929ba4aba19790857c706960554a453c332921170e0500000000000000000000000000000000050a0e111314141414141414141413110e0a05000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3bfb9b5b3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b0b2b6bcb6ab9f93887c7165594e42372b201408000000000000020c151e273038414a525b636d737f8a909aa2aba29a908a7e736d635b524a4138302935414c58636f7b86929da9aa9e93877c7065594d42362b1f1313110e0a050000000000000000000000000000000000000000000000000007111b252f374249545e686f7b85909ca2ababa29c90857b6f685e544942372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060006121d2934404c57636e7a85919ca8b0a7998d82766c62584f453b362f272b2f3e464e565e656f737f879197a0a7aaa19a918c817a818d949da6a89f958f837a6f635e554c433a31271f160c0200000000000000000000000000000000000306080809090909090909080806030000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3b6afaaa89d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9da5a7abb3b6ab9f93887c7165594e42372b20140800000000000000050e161f28313a424b545d646e74808b919ba3a9a09c91867d716c625a514940372e35414c58636f7b86929da9aa9e93877c7065594d42362b1f13080603000000000000000000000000000000000000000000000000000000020c151e272f3a454e57616b727e8a929ba5aea99f958e82786e635b52473f352b21170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba99d92867b6f63584c4135291e1207000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060006111d28333f4a55606977828e99a4ada89c91867c70695f554a463f382f353a464f565f666f747f8a9197a0a7aaa19a918c80786f7a838f969faaa69d938d81766f655c534a41382f261c120701000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3afa69f9c92929292929292929292929292929292929292929292929292929292929292929292929292999ca2abb6ab9f93887c7165594e42372b2014080000000000000000060f182129323b434c555e636e78818d929ca4aaa09790857c706b615950473f3535414c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000050e16202b353e47515a646e76818d959ea9afa69c928a7f736b62584f453b30271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabaa9e92877b7064594d41362a1f1307000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600040f1a25303b46505867727e89949da8aba0978f83796e635f555048423a3e4549565f666f747f8a8f9ca1a8a9a19a908c80756e6a707c85909ca1aaa49b918a7f736d635a51483f362c211a1207000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3aa9f9690868686868686868686868686868686868686868686868686868686868686868686868686868e929ca7b2ab9f93887c7165594e42372b201408000000000000000000071019222a333c4549545e686e79828e949da5a79f9590847b6f6960584f453b35414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000006111b252e36414a545e636f7b84909ba1aaaca29c90857c70685f544a42382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabaa9f93887c7065594e42362b1f1408000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600010c17212c36404b57636e79848f9ba2aba79d938c80756f636058524945474e545f666f747f8b9099a0aba9a09a908b80757063626c727e89909aa3aba29c91867d716b615850463b302b22170f050000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c90857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b828e99a5b0ab9f93887c7165594e42372b2014080000000000000000000008111a232b2f3a454e5760696f7a838f959ea6a69e948f837a6f685f544a453c414c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000010b141e26313a444b56616a727e89919ba4adaa9f968e82796e635c53483f362c21180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fababa094887d71665a4f43372c20150a000000030e1a25313d48545f6b76828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000007121c28333e4a545f68727e8a919ba4aca39a918c80756e69625b544e4f575e637075808b9099a0a9a9a099908b807570665f5b646e74808c929ca5aaa09790847b6f6960554a453b32271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000109131b202b353e475058616a707c8490969fa7a59d938e82796e635e554d44414c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000040d162129313c47515a646d75818c949ea8afa69c938b7f746c625850463b30281f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabada2968b7f73685c5145392e24190d030000030e1a26313d48545f6b77828e99a5ada2968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000030f1a25303b454f58646e76818d949ea5aaa19a908c8179706b635e57585f686e75808b9099a0a9a9a099908b80746f665f56545d636e79828e949ea7a79e958e82796e635e554b43382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e6363636363636363636363636363636363636363636363636363636363636363636b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000206111b252e363f48515a626b717d869097a0aba39c928c80756f655d544c434c58636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000051019222d374149545d636f7a848f97a1abaca39c91867c706960554a433830261d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb0a4998d82766a5c53483e33271d13080000030f1a25303b454f586c77838f9aa6ada1968a7f73685c5045392e22160b000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000b16212b353f47555e636f7a848f959ea5aaa19a918d827c736e68635f686e78808c909aa0a9a9a099908b7f746f665f564f4a545f686f7b849096a0a6a59c938c80756e655c53483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62585858585858585858585858585858585858585858585858585858585858585f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000010b141e262f384049525b636c727e87919ca1aaa29a918b7f746e645c534b4c58636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000008131d273039444a56606a717d87919ca4adaaa0968f83796e635c534940362c221810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb2a79b9084796c62574c40372c22180f060105111c28333f4a555f6978848f9ba7ada1968a7e73675c5044392d22160a000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000007111b252e37444b56606a707c8490959da4aaa19b938e857f78716d686e78808c919aa1aaaba0998f8b7f746f665f564f46454f58616a717d86919b9b9b9b9b918a7f736c635950463b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000040d161f273039424a535c646d737f8a919aa2aaa19c91877e726c635b524c58636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000030d172029313c465059636d75808c939da7b0a79d938c80746d635950463c312920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb4a99e94877c70655950463c31282017110b0d131d2934404c57636e7a85919ca8aca195897e72675b5044382d21160a000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000010b151e27313c47515a626b707c848f949ca3aaa39c96908a837d767079818c919aa1aaa8a19c8f8a7f746f665f564e463e3f47515a636c737f8a8f8f8f8f8f8f8f867d716960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b41414141414141414141414141414141414141414141414141414148545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000050e172028313a434c545d656f75808c929ba3aba19791867d716b625a5158636f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000000000000000000000071018222c364049535c636e79838f96a0aaada49c91877d716a60564a443930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb8aea5988c81756a60564b43383028201b18191d262f38424e5965717c88969faaafa694887d71665a4e43372c201409000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000050e16222d374049525b626c707c838e929aa1a9a69f9c938f88817c818d919ba1aaa8a197918a7f736f655f564e463e36374149535c656e75808383838383838383827a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f353535353535353535353535353535353535353535353535353c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000061018212a323b444d555e636e78818d939da4a89f9690857c706a615958636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000000000008121d263038434a556069707c86919ca3acaba0978f847a6f635d544941372d22191005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b3a89c90857a6f635c534940382f2b252324272d363f48535c68737f8a96a6afaa9f96877b7064594d41362a1f1308000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000008131d273039424b525b626b707a828c909c9ea5aaa39d9a918d878d919ba1aaa7a09791877f736f655e554e453e352e3039434c555e6670757878787878787878766e6960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f342929292929292929292929292929292929292929292929313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000081119222b343c4549545f686f7a828f949ea6a79e958f837b6f696057636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000000000000000000000000000000000000030d161f28303b465059626c747f8b939ca6afa79e948c81756d635a51473c312921160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b5aa9f968c80746c63595048413a35322d2e33373c454f58636d78838f9aa6b2a89c9085796e63574b4034291d1206000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000030d172028323a424b525b626a6f79808990959ba2a8a7a29b9993999ba2ababa09791877f736e655e554e453e352d2529323b454d565f66696c6c6c6c6c6c6c6c6b63605950463b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000009121a232c303a454f5860696f7b848f959fa7a59d948e82796e685e636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000000003060708090909090909090909090909090909090f18212c363f48535c636e79828e969faaada49b91897d726a61564b443a31261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b9afa69c91877d716a60595149453e3c37383e40474b555f69717d88939da8b1a59a8e8377685f544a3e33281c1105000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000060f18212a323a424b525a61696e757d848d919b9da4aba6a49ea4a6abb4a89c91877e736e655e554e453e352d251d222b343d464f565c5e61616161616161615f575550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c121212121212121212121212121212121212121a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000010a131c202b353e475059616a707c859096a0aaa49c938d81786e63636f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000000000050a0e1113141515151515151515151515151515151515121c262f38424a555f68707c85909ca3acaaa19b90847b6f635d544a41362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6bfb6aba0978f837a6f69615a544e4b474748484c51565f636e79838f9aa4adaca3978b7f7468584f453b30251a0f03000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000081119212a323a424951585f636d717b81898f949da5aeb0aab0b1b5ada1968a7f736e69635d565049423b332c241c242d363f464c50525555555555555555544c4a463f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1107070707070707070707070707070707070e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000307111b252e374048515a626c717d86919ca0a9a39b918c80746e636f7b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000000001080f15191c1f1f202020202020202020202020202020202020201f27303b454f58626b737f8a929ca6afa99e958d81766e645a51473e352b20160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb6b6afaaa79d948e82796f6a635e575651535352575a61636f74808c939da8b2a79c93877c7065594d42352b21160b00000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000109111a212a323941484f555d636a6f767d838f959ea9b4b9b5b3b5b3a79c90857f79726d636059524b443c342c241c262e363d424546494949494949494948403f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000000000010b151e262f38414a525b636d727e8a9099a1aba29a908a7f736d6f7b86929da9aa9e93877c7065594d42362b1f130800000000000000000000000000010a12191f24282a2b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b353f48525b636e78828e959fa9aea59b91897e726b61574e453a2f271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb9afa69f9c9f9c928e827b726e6864615a5e5f5b62646a6f757f8b909aa3acaca39a8e83776c62574c4135251b110700000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000001091119212930383f454a545a61646d717b84909ca7b3afaaa8aaafa99f95908b837d756f6a625b544c443d342b231e262d32373a3b3e3e3e3e3e3e3e3e3c3533302c261f170f050000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000040d161f283139424b535c646e747f8b919ba3aaa19c91867e726f7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000008121a22292f3335363737373737373737373737373737373737373737373737374249545e686f7b85909ca2ababa29c90857b6f685e544942372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb5aa9f9690969f9c938e847e79736f6a6b6a6a6b6c70747a818b9099a1aab0a79c93897e72665b52483e3328150b0100000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000109111820272f363b454e575f696f7a828e959ea9ada79f9c9fa7a8a59f9c948f89817a706c635d544d443c332a211623282c2e2f323232323232323231292825211c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000060f172029323a434c545e666f75818d929ca4aba09790857c707b86929da9aa9e93877c7065594d42362b1f1308000000000000000000000000050f19222a32393e414243434343434343434343434343434343434343434343434343454e57616b727e8a929ba5aea99f958e82786e635b52473f352b21170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabb3a89c9085909ca29c959089837e7b7876767677787c7f858c9199a0a9b5aaa0968e83776e64594b42392e2419050000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000108121c262f384049545e686e79828e929ca5ada49e9691969b9da4a9a49d9b918c847c726d645d544c433a32261e151d2123242727272727272727251d1d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000000000000000071019212a333c444d565f636e79828e939da5a79f9690847b7b86929da9aa9e93877c7065594d42362b1f13080000000000000000000000000a151f29323b42484c4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f515a646e76818d959ea9afa69c928a7f736b62584f453b30271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fabada1968a7e8a929ba39e9c938f8a86848281828384878b90959ba1a9b5aaa19c91867c70655d544a3b32291f140a0000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000010c17212c364048535c636e78818d929ca3aca49d948f85898f939c9fa5a8a19b948f857e726e645d544b42372e251b111517181b1b1b1b1b1b1b1b1a12110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000008111a232b343d464a555f696f7a838f949ea6a69e948f837c87929eaaaa9e93877c7065594d42362b1f13080000000000000000000000030e19242f39424b5357595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5e636f7b84909ba1aaaca29c90857c70685f544a42382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d918679818d939da3a39d9a97918f8e8d8d8e9094979c9fa5aaafaaa19a918a7f736c62574d443a2a22180f050000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000040f1a26313b465059636d747f8b919ba3aca49d948f847b7d838a90959ba2a9a49e9690877e726d635b52473e352b20160b0c0c0f0f0f0f0f0f0f0f0e0606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000000000000000000109121b242c303b454f58606a6f7b8490969fa7a59d938f838f9aa6b1aa9e93877c7065594d42362b1f1308000000000000000000000006111c28333e48535c6265666666666666666666666666666666666666666666666666666666666666666a727e89919ba6afaa9f968e82796e635c53483f362c21170c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a7a838f939ba2a8a8a19c9b9998999a9b9ea5a7a9aeaca79f9c908c80756e655b52483c342a1a1108000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000006111d28343f4a556069717d86919ca2aba49d938f837b7072797f858d919c9fa6a69f9791867d716b62584f453a30251b1107000404040404040404030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000020a131c212b353f485059616b707c859097a0aba49d938f939da7b3aa9e93877c7065594d42362b1f1308000000000000000000000007131f2a35414c57626c7071717171717171717171717171717171717171717171717171717171717171717175818d969faaafa69c938b7f746c625850463b30261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6f7b838d929b9ea5a8a8a6a5a4a4a5a7a9aeafaaa8a29c96918a807570665e554b42392c231a0901000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000005101b26323c47515a636f7a848f97a0aba69d948f837b6f6b686e737b818990959da4a7a09690857c70685f54493f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000307121c252f374049515a626c727e86919ca1aaa39d9a9da3acb6aa9e93877c7065594d42362b1f1308000000000000000000000008141f2b36424e5965707c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e85919ca8b3aca39c91867c706960554a3f362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6f7a818990959b9da4a3a5a6a7a7a7a6a5a79f9c99928e867f7570665f564e453b32291c130a00000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000006121d2934404b56616a74808b949ea7a99f958f837b6f6b615f636a6f767e858f949da4a79f968e82786e63584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000020c151e273039414a535c636d737f8a909aa2aba7a6a7acb4b6aa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b7681898989898989898989898989898989898989898989898989898989898989898989898991969faab5b5aaa0968f83796e63584f453b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e696f767e848a8f9396989a9b9b9c9b9b999796918d88827c736e665f564f463d352a22180b0300000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000030f1a25303b454f58646f7b85919ca4aba29c90857c706a615a555a61646e727c838f949ea7a69c938a7f73685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000050e172028313a434b545d656e75808c919ba3acb1b3b6bcb6aa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d949494949494949494949494949494949494949494949494949494949494949494959c9fa6afb9bab0a79d938c8074695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63636e727a7f83878a8c8e8f9090908f8e8c8985817d77706b655e564f463f362d241a11080000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000005111c28333e4a545f6874808b969faaa79b92897e726b625a514a51565d646b707b848f97a0aba39b8f84796e63574b4034291d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000000000000000000000000000060f182129323b444c555e636e78818d939ca4adb6bfc7b6aa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d99a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a8aaafb7c0c0b7ada49c91867a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e635d64696f73787b7f8183848485848382807d7a76716d64625b554d463e362e261d1409010000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000006121d2934404b57636e7984909ca6aaa0968d81766d645b524a41474b545b626a707c87919ca8a89e94897e72665b4f44372d22170d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000071019222b333c4549545e686f79828e949da5aeb7c0b6aa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d99a4abababababababababababababababababababababababababababababababacb3b5b9b5b5b5b5b6aba097867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e6357596063676b7073757778797979787674726f6a65635c57524b453d362e261e150c04000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000914202c37434e5a66717d88959ea9a89c91867b70645d544b42393c444b525a626c75818d98a4ada4988d81756a5a51473c31261b100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b20140800000000000000000000000000000000000000000000000000000000000009121a232c2f3a454e5760696f7b838f959ea7afb8b6aa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d99a4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab09d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63575055575b6264676a6b6c6d6d6d6c6b696663605958534c48423a342d261e150d0500000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000c18232f3a46515d6974808b97a5aea4988d81766b61574d443a32313a424a535c66717d8994a6afa79b9084786a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8b3a89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5b0ab9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000010a131b202b353e475059616a707c8590969fa8b1baaa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d91867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4a4c5257595c5e6061616261615f5d5b5856504d49433d38322a241c150d050000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000030e1a25313d48545f6b77828e99a5aca095897e72665b52483c342a2a3239424c58636f7a86969faaa99e94867b6f63584c4135291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919ca8aaa89c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d99a5aaaa9f93887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000206111b252e364048515a626b717d869197a1abaaaa9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b76828d939393939393939393939393939393939393939393939393939393939393939393939393939393939393939391867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4042484c4d505254555656565554524f4c4b46403e39322e282119140c05000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000004101b27323e4a55616c78848f9ba6aa9e92877b7064584d41382a232129343f4a56606a7985909ca8aea593877b7064594d41362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e7985919c9e9e9e9c9085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d999e9e9e9e93887c7165594e42372b2014080000000000000000000000000000000000000000000000000000000000000000010b141e262f384149525b636d727e87919ca19e9e9e93877c7065594d42362b1f130800000000000000000000020e1925313c48535f6b768187878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787867a6e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c40383d40414547494a4a4b4a49484643403f3c37332f29231e1811090300000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000005101c28333f4a56626d7984909ba7a99d91867a6f63574c4035291e1d28343f4a56606a7985919ca8ab9f93887c7165594e42372b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e79859193939393939085796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b76828d939393939393887c7165594e42372b201408000000000000000000000000000000000000000000000000000000000000000000040d161f283039424b535c646e747f8b919393939393877c7065594d42362b1f1308000000000000000000000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c786e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035323536393b3d3e3f3f3f3e3c3a383534312c26241f19140e08010000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000005101c28333f4a56626d7984909ba7a99e92877b6f64584d41362d28282b35404c58636f7a86969faaafa693877c7065594d42362b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00111d28343f4b57626e79868787878787878785796e62564b3f34281c1105000000000000000000000000000000020e1a25313c48545f6b768287878787878787877d7165594e42372b20140800000000000000000000000000000000000000000000000000000000000000000000050f172029323a434c545d656f7580878787878787877c7065594d42362b1f1308000000000000000000000006121e2934404b56616b6f70707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706e685e54493e33271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c403529292a2d30313333333332312f2c292826221d1a15100a0400000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000004101b27323e4a55616c78848f9ba6ab9f94887c71655950463c373433353c46505965717d8894a7afaa9f96867b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a0008131f2a36414d5964707c7c7c7c7c7c7c7c7c7064594d41362a1f1308000000000000000000000000000000000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c796e63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000071018212a333b444d555f636e797c7c7c7c7c7c7c796e63574c4034291d1206000000000000000000000005101b27323d47515a61646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464635e574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1f22242627282827272523211e1d1b17120d0b06000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000030e1a25313c48545f6b76828e99a5aea2978b80746960554b47403f3e40454a55606974808b97a3aea89c9085796b61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a0007121e2a35404c57626b7070707070707070706b62574c40352a1e1207000000000000000000000000000000000007121e2935404b56616b6f70707070707070706e6960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000081119222b343d454a545f686e707070707070706e695f554a3f33281c11050000000000000000000000020d18232d38414a515658595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595957544e473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1316181a1b1c1c1c1b1a181512110f0c08030000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000c17232f3a46515d6974808b97a4ada79b90847a6f635e56514c4a494b4f555e636f7a84909ca7b0a7998e82776b5a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a0005111c27323d48525b62646464646464646464625b52483d32271c1105000000000000000000000000000000000005101c27323d47515a6164646464646464646463605950463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000109121b242c303b454f585f6364646464646464635f584f453b30251a0f0400000000000000000000000009131e28313a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b49453e362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120b0d0f101011100f0e0c090606040100000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000914202b37434e5a65717d88949ea8a99e948c80746f63615a57555457585f636e75808c959ea9aba0978b7f73685c5145372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aeaca095897e72675b4f44382d21150a00030e19232e38424b525759595959595959595957524b42382e23190e030000000000000000000000000000000000020d18232d38414a5156585959595959595959575550483f362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000020a131c212b353f474f54575959595959595957554f483f362c21160c01000000000000000000000000040e17212931383d40414242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242403e3a352e261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206010304050505040201000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000006111d2934404b57636e79848f9ba4ada59a908b7f766f6a6663605f6364696e747e8a909aa5aea69c91867b6f64584d41352a1e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b97a2aaaaa095897e72675b4f44382d21150a00000a141e28323a42484c4d4d4d4d4d4d4d4d4d4c48423a32281e140a0000000000000000000000000000000000000009131e28313a41474b4d4d4d4d4d4d4d4d4d4c4a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000307111b252e373f454a4b4d4d4d4d4d4d4d4c4a453f382f261c1207000000000000000000000000000007101921282d323435363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363634332f2b251e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000005101c27333e49545e68737f8a949da7aaa1998f8b817a75716f69686e7073797f87919ca1aaaa9f968d81766b61574b4035291e12040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b979e9e9e9e95897e72675b4f44382d21150a0000040e18212a32383d40414242424242424241403d38322a21180e0400000000000000000000000000000000000000040e17212931383d40414242424242424242403f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272e353b3e4042424242424242403f3b362f271f150c020000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292724201b140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000030e19242f3a454e57636e79838f96a0aaa9a099918d85807d7a79797a7c7f848b9197a1ababa29c90857c70645a51473d32271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d6874808b939393939393897e72675b4f44382d21150a00000008111921282e323536363636363636363635322e282119110800000000000000000000000000000000000000000007101921282d32353536363636363636363533302c261f170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252b303334363636363636363433302c261f170e050000000000000000000000000000000000070e13181b1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1916110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000b16202b353e4a555f69717d86919ca1a8a9a29b96908c8886858485878a8f949ca1a8aba29b918a7f736b62574a41382d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a46515d68748087878787878787877e72675b4f44382d21150a000000010911181e23272a2a2a2a2a2a2a2a2a2a2a27231e18110901000000000000000000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a292825211c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b212528292a2a2a2a2a2a2a292825211c150e060000000000000000000000000000000000000004090d101213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131311100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000006111b25303b454f58636c737e8a91979fa6aba69f9c97949690909197969b9da4aba9a29b928d81766f655b52483a31281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b7c7c7c7c7c7c7c7c7a6f63584c4035291e12060000000001080e14191c1e1f1f1f1f1f1f1f1f1f1e1c19140e0801000000000000000000000000000000000000000000000000070e13181c1e1e1f1f1f1f1f1f1f1f1d1d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1c1d1f1f1f1f1f1f1f1d1c1a16120c0500000000000000000000000000000000000000000000020506070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000010b16212c363f48535c646e737f8790959ca2a7aaa8a3a69f9c9c9ca0a7a7a8aaa69f9c918d82796e635e554a42382921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a6f70707070707070706f6a60564a3f34281d1106000000000000040a0e111213131313131313131312110e0a0400000000000000000000000000000000000000000000000000000004090d101213131313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121313131313131312110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000007121c262f38434c555e656e737e858e929a9ca3a5a7a9aaa8a7a8aba9a7a69f9c95908a81796e6960554e453a3128191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6163646464646464646463605950463c31261b0f0400000000000000000305070808080808080808080705030000000000000000000000000000000000000000000000000000000000000002050707080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608080808080808060504010000000000000000000000000000000000000000000000000000000000000000000000000000000001040709090b0b0b0b0b0b09090704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d120600000000000000000000020c151f27333b444d555e656d727b82888e92969a9c9fa6a0a0a0a59e9b9996908c857e766e69605850463d352a211808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37414951565859595959595959595856504940362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10131415161616161616151413100b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939faba89d91867a6e63574c4035291d12060000000000000000000000050e17222b343d454e555d646b6f767d82878b8e9095939494949395908d8a85807b736e635f5850483f362d251911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303941474b4c4d4d4d4d4d4d4d4d4c4a46403830261d120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161a1e202122222222222221201e1a16100a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939fa8a89d91867a6e63574c4035291d120600000000000000000000000006121a242d343d454c545a61646d71777c7f82858788888988888684827e7a756f6a655e554f483f382f261d14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930373c40414242424242424242403f3c3630281f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292b2c2d2d2d2d2d2d2c2b2925201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88939c9c9c9c91867a6e63574c4035291d1206000000000000000000000000020a141c242d343c444a51575d63666b7074777a7b7c7d7d7d7c7b7976736f6a64615a554a453f382f271f160c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d31343536363636363636363534312c261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a30343738393939393939383734302a231b130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c88919191919191867a6e63574c4035291d120600000000000000000000000000030c141c242c333a41474b53585b626468686e6f71717271706f6a6a6763605956514a453b362f271f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a292826221d160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f424345454545454543423f3a342c231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d85858585858585857a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717d8585858585858585796e63574c4035291d12060000000000000000000000000000040c141b232931383d43494d525759585f6364656666666563615a5b5856504b474139302c261f170e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1e1d1b17120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f5050505050504f4e4a443c342a20160b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a776960554a3f33281d1106000000000000000000000000000000040b131921282e323a3f42484c4d4f545758595a5a5a59585651504c4b46403c373029211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d101212131313131313131312110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101a25303a444d54595b5c5c5c5c5c5c5b59544d443a30251a100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c63656e6e6e6e6e6e6e6e6d605950463b30251a0f0400000000000000000000000000000000020910181e232a2f34383d404245494b4d4e4f4f4e4e4c4b4744403f3c37312d272018120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29343f4a545d646667676767676766645d544a3f34291e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c0100000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c5358596363636363636363625550483f362c21170c01000000000000000000000000000000000000070e14182025282e3235353a3e4041424343434241403c373534312d27231d171007020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e59646d72737373737373726d64594e42372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e5757575757575757574a463f382f261c12070000000000000000000000000000000000000000040910151a1e23272a2b3033343537373837373534312d292926221d18130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070e0e0e0e0e09090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e7f7f7f7f7f7f7e72665b4f43382c21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c02000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b3f3b362f271f160c0200000000000000000000000000000000000000000000060b0e14191c1e202528292a2b2c2c2c2b2a2926221e1d1b17130d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131a1a1a1a1a1514120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828a8a8a8a8a8a82776b6054483d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f05000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f33363740404040404040404033302c261f170f0500000000000000000000000000000000000000000000000000040a0e1111161a1c1d1e202020201f1e1d1b181312100c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1d1e252626262620201d1a16100a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e969696968e82776b6054483d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b3434343434343434342825211c160f07000000000000000000000000000000000000000000000000000000000305070b0e11111314151514141212100d09060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a31313131312c2b2925201a130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa1a19a8e82776b6054483d31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f15191d1f202929292929292929291d1a17120c05000000000000000000000000000000000000000000000000000000000000000000030506070809090908070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272d3234353d3d3d3d3d3737342f2a231b130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17202931373d4041484848484843423f3a332c23170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060808111111111111111111060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608081111111111111111110604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010508090a0c0c0c0c0c0c0b0a09060200000000030507070c0c0c0c0c0c0c0707050200000000000000000009131e27313941474b4d54545454544f4d49433c33281f160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000505050505050f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f05050505050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131516181818181818171614110d080204090e111213181818181818181312100d0904000000000000020d18232d37414a5156585f5f5f5f5f5a58544c433830261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090a101010101010101a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a101010101010100808060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0e0e111111111111080806030000000000000003050708111111111111100605040100000000000000000000000000000000000000020506070b0d0e0e0c0807050300000000000000000000020506070b0e0e0e0b0707050200000000000000000000010406070b0d0e0e0c08070603000000000000000000000000000000030a11161b1e202123232323232322211f1c17120b0e14191c1e1f232323232323231e1e1c18140e07000000000005101b27323d47515a61646b6b6b6b6b66635d544940362c22160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101315151c1c1c1c1c1c1c1c26313d4854606b77828e9aa5a59a8e82776b6054483d31261c1c1c1c1c1c1c1c1413120f0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1413110e0a05000000050a0e1113131d1d1d1d1d1d1b12110f0c070200000000000000000000000000000003090d10121216191a19171313110e0a0500000000000004090d10121317191a19171312110e090400000000000003080c10121216191a19171413110e0a05000000000000000000000000030b131a21262a2c2d2f2f2f2f2f2f2e2d2b27221b14181e2327292a2f2f2f2f2f2f2f2a2927231e1810090000000006121d2934404b56616b6f7777777777716d635950463c31261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161b1e2021282828282828282828313d4854606b77828e9aa5a59a8e82776b6054483d31282828282828282828201f1d1a150f09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1f2225252929292929291f1f1d19150f0901080f14191c1e1f282929292929271d1c1a16120c0500000000000000000000000000070d13181b1d1e22252625231f1e1c19140f0702000000070e13181b1d1e22252625231f1e1c18140e0701000000060d13171b1d1e22252625231f1e1c19150f0803000000000000000000010a131c242b303537383b3b3b3b3b3b393836312b251d21282e3235363b3b3b3b3b3b3b3635322e282119100700000007131e2a35414d58646f7b82828282827d716960554a42372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292c2c333333333333333333333d4854606b77828e9aa5a59a8e82776b6054483d333333333333333333332b2a28241f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e242a2e30313434343434342b2a28241f19120a11181e24272a2a34343434343432292825211c150e0600000000000000000000040810171d2326292a2e3031312e2a2a27241e16120c05040810171e2327292a2e3031302e2a2927231e16110b0503070f171d222629292d3031312f2b2a28241f17120c06000000000000000007111a242c343a4043444646464646464544413b352d252a31383d40414646464646464641403d38312921180e04000006121d2934404b56616b77828e8e8e8e847a6f635c53473e352b20160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c232a303437383f3f3f3f3f3f3f3f3f3f3f4854606b77828e9aa5a59a8e82776b6054483f3f3f3f3f3f3f3f3f3f3f3736332f29221a12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e171f272e34393b3c4040404040403736332f29221a121a21282e3235363f40404040403e3433302c261f170e050000000000000000050c141820272d313435393c3d3c3a3635322e28211c150e0d141920272d323435393c3d3c3a3635322e28211b150e0c131820272d313435393c3d3c3a3635332e29221c160f07000000000000010c16212b343d444a4e4f525252525252514f4b453e352b313a42484c4d525252525252524d4b47413a31281e1409000005101b27323d47515a66717d889399948c80746c62584f453a30271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f42444a4a4a4a4a4a4a4a4a4a4a4a54606b77828e9aa5a59a8e82776b60544a4a4a4a4a4a4a4a4a4a4a4a42413e39332b22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2730373e4347484b4b4b4b4b4b42413e39322b2216212a32383d40424b4b4b4b4b4b4a403f3b362f271f150c02000000000000050d151d242930373c4041454748484642403d38302c261f17151d252931373d4041454848484541403d38302b251e16141c242830373c3f40444748484642413e39312c261f170f07000000000005101b26303a444d54595b5d5d5d5d5d5d5c5a554e453b3138424b5257595d5d5d5d5d5d5d5857514a41382e23180d0200020d18232d37414d58636d77838f9a9c91867c70685f544941372d23170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f56565656565656565656565656606b77828e9aa5a59a8e82776b60565656565656565656565656564e4d49433b33291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242e3740484e52545757575757574e4c49433b32261e28323a42484c4d575757575757554c4a453f382f261c12070000000000030b151d252d353941474b4c50535453514d4c48423b362f271f1e262d353941474b4d51535453514d4c48423b352e271e1d252c343940464b4c50535453514d4c48423c3630281f170f060000000008131e2a35404a545d646769696969696968655e554b41363d48525b62646969696969696964615a51473d32271c1005000009131e27343f49535d66727e89949d978e82786e635a51473d32281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b25303a444d54595b61616161616161616161616161616b77828e9aa5a59a8e82776b61616161616161616161616161615a58534c43392f241a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a343e4850585d5f6363636363625958534b43372e252e38424b5257596263636363636157554f483f362c21160c010000000005131c252e363d454a5156585c5f605f5d5957524a453f382f27262e363e454a5156585c5f605f5d5957524a453f372e26252d353d44495056585c5f605f5d5957524a46403830281f160c030000000915202c37434e59646e72747474747474736f655a4f4438404c57626b70747474747474746f6b61574b4035291e12070000040e1a252f3a434b57636e79838f9b9c938a7f736b61564b443830261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29343f4a545d64666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d77828e9aa5a59a8e82776d6d6d6d6d6d6d6d6d6d6d6d6d6d6d65635c53493e33281d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222e39434e5861686b6e6e6e6e6e6e65635c53473e352b323d48525b62646e6e6e6e6e6e6c635f584f453b30251a0f04000000040d16232c363e464e555a6164686a6b6b6864625b554f483f372f2d363f464e555a6164686a6b6a6864625b544f473f372e2b353e454d54596063676a6b6b6965625b555049403830261c12080000000a16212d38444f5b67727e8080808080807f73685c514539414d5964707c808080808080807b6f64584d41362a1e13070000000b152028333e49545f68737e8a949e9c90857b6f645d544940362c22160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424e59646e7279797979797979797979797979797979828e9aa5a59a8e8279797979797979797979797979797979716c63584d41362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b47525d6871767a7a7a7a7a7a716c63584f453a3038404c57626c70797a7a7a7a7a786e695f554a3f33281c11050000010b141e26343c464f565e656a6f7376777674706c635f584f483f35343d464f575e656b6f7376777674706b635f584f473e35333c454e555e646a6f7376777674706c636059504940362c22170f0500000d1925303c47535f6a76818c8c8c8c8c8c83786c6155493e434e5a66717d888c8c8c8c8c887d7165594e42372b201408000000030e1a25303a454f58636e7984909b9f958d81766d635950463c31261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8484848484848484848484848484848486919ca8a89c9186848484848484848484848484848484847d71655a4e42372b20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25313c48545f6b76828585858585867d71685f544941374049545d64707c868585858585837a6e63574c4034291d1206000006111b252e36444d565f666e737b7f818282807c756e695f584f453b38444d5760676f747b7f8182827f7c746e685f584f453a39434c555e656e727a7e818282807c766f69605950463c31291f140a00000d1925303c47535f6a76818d979797978f83786c6155493e434e5a66717d889497979793887c7165594e42372b201408000000000b16202b353e4a555f69737f8b959f9b91897d726960554a42372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e899090909090909090909090909090909196a0aaaaa09691909090909090909090909090909090887d71655a4e43372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c86919191978f83796e635a51473c465059646e77828e96919191887d71695f554a3f33281c110500000b16202b353e47545d666f747f858a8d8e8d8b8680796e695f554a413f48555e6770757f858b8d8e8d8b8680796e685f5449413e49535c656f737e858a8d8e8d8b87817a6f6960554a42392e24190e03000d1925303c47535f6a76818d99a3a39b8f83786c6155493e434e5a66717d8894a0a39f93887c7165594e42372b2014080000000007111b25303b454f58636f7a85909ca29b8f847a6f635b52473e352b20160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89959b9b9b9b9b9b9b9b9b9b9b9b9b9b9ca0a7b0b0a7a09c9b9b9b9b9b9b9b9b9b9b9b9b9b9b94887d71655a4e43372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b74808b949e9d938a7e736a61564b434a56606a727e89929c9f968d81766d63584f453b30251a0f0400030e19242f3a454e57646d74808a9096999a9997918c82796e635b5248454f58646e75808b9096999a9997918c81786e635a5147424d58636d737f8a909598999997918d827a6f635b52483e33281c1106000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b20140800000000010b16212c363f4a56606a74808b969f9e948c80746c62584f453a30271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a7a7a7a7a7a7a7a7a7a7a7a7a7a8aab0b7b7b0aaa8a7a7a7a7a7a7a7a7a7a7a7a7a79f94887d71655a4e43372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b636f7a848f9ba29c90847b6f635c5347525b636f7a84909ba39c90857b6f645d53483f362c21160c010005101c27333e49545e68727e89909c9fa6a5a7a09c928c80756b61574b4a555f69737e8a919c9fa6a5a7a09c928b7f746a61564b48525b65717d87919c9fa5a5a5a29b938d81756c62574c41352a1e1307000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000000007121c26313c465059636f7b85909ca49c91867c70685f544941372d23181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a2a2a2a2a2a2a2a2a2a2a2a2a2a7a8adb5b5ada8a7a2a2a2a2a2a2a2a2a2a2a2a2a29f94887d71655a4e43372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424a556069727e89929c9e958c80756c62574e57626c75808c949e9d948b7f746b61574c43382f261c1207000006111d2934404b57636e78838f9ba1aaafb1b0aba39c91867b7064584d4c57636e7984909ba1aaafb1b0aaa29c90857b6f63584c4c57626b77838e97a0a9aeb1b0aba39c91867c7065594d42362b1f1308000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000000020c17222c36404b56616a75808c97a0a0978e82796e635a51473d322a20150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e899597979797979797979797979797979b9ea4adada49e9b979797979797979797979797979794887d71655a4e43372b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313b465059646d76828e969f9c91867c70685e545e68707c86919ca29b8f83796e635a51473c33271f150c02000008141f2b37424e5965717d88949da8b5b9bcbab5aaa0968a7f73685c504f5a66717d88959ea9b5b9bcbab5aa9f968a7e73675b504d5864707b87939ca7b0b8bcbbb6aba1978b8074695d51463a2f23170c000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000000004101b26313c47515a616a707b85919ca79c938a7f736b61564b43392f251a0e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e898b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949ea8a89e948f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887d71655a4e43372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212c364048545d64707c86919ca0978e83786e635a636e78828e97a09b91887d71695f554a41382b23170e050000000a16222d3944505c67737e8a96a4adb7c3c9c4bab0a7988d81756a5e53515c68737f8b96a5aeb8c4c9c3b9afa6988c8075695e524f5b66727d8995a3acb8c1c8c5bab1a8998e82766b5f54483c31251a0e000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000000006121d29343f4b56616a6f7a8087919ca8a39c90857b6f645c53493e33271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f848f9ba7a79b8f847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7b7064584d41362a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38444c57626b74808b949e9c938a7e736a606a737e8a939c9f968d81766d63584f453a31281b1206000000000b17222e3a45515c68737f8b96a2adb9c7d0cabcb0a5998d82766b5f53515d6974808b97a3aebac8d0c9bbafa4988d81756a5e53505b67737e8a95a7b0bac5cfcabdb1a59a8e83776b6054493d32261a0f000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000006111d28333e49535c636f7a838c9197a1aba99f958d81766d63584d41372d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c7074747474747474747474747474747477828e9aa5a59a8e8277747474747474747474747474747474706b61574b4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323d48525b636f7a848f9ba29c90847a6f636f7a84909ca39c90857b6f645d53483f362921180b02000000000a16212d3944505b67737e8a95a3acb7c0c7c3b8aea5988c81756a5e52515c68737f8a96a4adb7c0c8c2b8aea5978c8075695d524f5a66727d8997a0abb6bfc7c3b9afa6998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000008131f2a36414d58636c77828e949ca1a8b1afa69b91887d71655a51473d32271b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b626568686868686868686868686868686b77828e9aa5a59a8e82776b686868686868686868686868686864615b52483d32271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232e38424a556069727e89929c9e958c80756c75808c959e9d948b7f746b61574c43382f26191007000000000008131f2a36414d5964707c87929ca6afb7bbb8b4a99e958a7e73675b504e5965717c88939da7b0b8bbb8b4a99e94897d72665b4f4c58636f7b86919ca6afb6bbb9b4aa9f968b7f73685c5145392e22170b000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000008141f2b37424e5965717c88929ca4abb1b8b6aba29a8e82776b61564b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b5257595d5d5d5d5d5d5d5d5d5d5d5d5d606b77828e9aa5a59a8e82776b605d5d5d5d5d5d5d5d5d5d5d5d5d5857524a41382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313b465059646d76828e969f9c91867c717c86919ca29b8f83796e635a51473c33271f150800000000000007121e2a35404c57626b77828e969fa7adafaea9a19c90847a6f63584c4b57636e78838f97a0a7adafaea9a09b90847a6e63574c4b56616a76818d959fa6acafafa9a19c90857b6f64584d41352a1e1307000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000010c18242f3b46525e6975808c97a2acb6bac1bbb4a89c91867b6f64584c41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323b42484c4d51515151515151515151515154606b77828e9aa5a59a8e82776b60545151515151515151515151514d4b48413a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212c364048545d64707c86919ca0978e827a828f97a09b91887d71695f554a41382b23170e0500000000000005111c27323d48525b65707c8691969da4a3a59e9c908a7e736a60564b49545e68717d8691979da4a3a59e9b90897e726960554a47515a64707c8590969da3a3a69f9c918b7f736b61564b4034291d1206000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000020e1a25313c48545f6b76828d99a5b0bcc5cac1b6aba197897d72665a4f43382c211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a32383e414245454545454545454545454854606b77828e9aa5a59a8e82776b605448454545454545454545454541403d38312921180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38444c57626b74808b949d9c938e828e939d9f968d81766d63584f453a31281b120600000000000000030e19232e38424c57626c727e868f9397989795908a80746e64595046454e57636d727e868f949798979490897f746e64595046414c57626b717d858f9397989795908a80756f655a51473d32271b1005000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000030f1b26323d4954606c77838e9aa6b1bdc9cfc4bab0a7958a7e72675b5044382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22292e3335363a3a3a3a3a3a3a3a3a3a3d4854606b77828e9aa5a59a8e82776b6054483d3a3a3a3a3a3a3a3a3a3a3635322e2821191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323d48525b636f7a848f9ba29c928e929ca39c90857b6f645d53483f362921180b0200000000000000000a141e28333e48535c646e727d83888b8c8c89847e746f665e5549403e47535c646e727d83898b8c8b89847e746f655d54483f3d48525b636d717c83888b8c8c89857f7570675e554a41372d23180d02000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000020e1a25313c48545f6b76828e99a6afb9c3c7bfb5aaa097897d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f24272a2b2e2e2e2e2e2e2e2e2e313d4854606b77828e9aa5a59a8e82776b6054483d312e2e2e2e2e2e2e2e2e2a2927231e1810090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232e38424a556069727d89929ca29c999ca29d948b7f746b61574c43382f26191007000000000000000000040e19242e39424b545d646c71797d8081807e7a726e665f564d443936434c555e646d71797d8081807d7a726e655f554d443838424a535d636c70787d7f81807e7a736e6760574e453931271e130900000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b201408000000000b17232e3a45515d68747f8b969faab4b9bbb6aea59c91867b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14191c1e1f232323232323232326313d4854606b77828e9aa5a59a8e82776b6054483d312623232323232323231e1e1c18140e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313b465059646d76828d969fa7a5a7a29b8f83796e635a51473c33271f150800000000000000000000000a151f29323b444d545c63686e71747574726f69645e564f463d34333b444d555c63696e71747574726f69645d554e453c34313a434c535c62686e71747574726f6a655e574f473e352920170e0400000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000007131e2a35414d58646f7b85919ca1a9afafaca69f958d81766a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e111313171717171717171a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a171717171717171312100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212c364048545d64707c85919ca4ada69b91887d71695f554a41382b23170e050000000000000000000000050f19222a343c444c53585f636668696966636059554d463e362d2b343d444c53585f636669696966636059544d453e352c2a333c434b53575e636568696967636059554e473f362d251910070000000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000007121e2935404b57616b747f8b919c9fa6a3a39c9690857b70645a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080b0b0b0b0b0b0f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f0b0b0b0b0b0b07070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38444c57626b74808b949d9e9f968d81766d63584f453a31281b12060000000000000000000000000008111a232c343b43474f54575a5d5e5d5b57555049443d362e25242c343c43484f55575a5d5e5d5b57555048443c352d25232b333b42474e54575a5d5e5d5b58565049453d362e261d1408000000000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0ab9f93887c7165594e42372b2014080000000005101c27323d47515a636e78818a9095979897938e857d716b61574940372d22170d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323d48525b636e7a838f93939390857b6f645d53483f362921180b0200000000000000000000000000010a131c232b33373f454a4b4e5152524f4c4a464038342c251d1c242b33373f454a4c4f5152514f4c4a464038342c251d1b232a32363e45494b4e5152524f4c4b464039352d261e160c04000000000d1925303c47535f6a76818d99a4a69b8f83786c6155493e434e5a66717d8894a0aa9f93887c7165594e42372b20140800000000020d18232d384149545e686e757f858a8c8c8b88837c716d635b52483930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232e38424a556069727e87878787877f746b61574c43382f26191007000000000000000000000000000000030b131b22272e353b3e404346474644403f3c363028241c15141b23272f353b3f404346474643403f3b362f28231c14121a22262e353a3e404346474644403f3c373028241d160e0500000000000d1925303c47535f6a76818d999e9e9b8f83786c6155493e434e5a66717d88949e9e9e93887c7165594e42372b201408000000000009141e282f3a454e575e636f737a7e80817f7d78706c635c534a41382820170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9aa5a59a8e82776b6054483d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28303b465059646d727c7c7c7c7c796e635a51473c33271f15080000000000000000000000000000000000030a12161e252b303334373a3b3a383534312c261f17140c0b12171e252b303334373a3b3a383534312c261f17130b0a11161e252b2f3334373a3b3a383534312c272018140c050000000000000d1925303c47535f6a76818d939393938f83786c6155493e434e5a66717d889393939393887c7165594e42372b2014080000000000040e16202b353e474e545e656a6f72747574716e68625b534c433a3128180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e9a9c9c9a8e82776b6054483d31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212c363f48545d646b70707070706e685f554a41382b23170e0500000000000000000000000000000000000002060e151b212528292c2e302f2c292826221c160f070302060e151c212528292c2f302f2c292826211c160f070301050d141b202427292b2e2f2f2d292826221d160f0704000000000000000d1925303c47535f6a768187878787878783786c6155493e434e5a66717d878787878787877c7165594e42372b20140800000000000006111b252e363e4549555a60636769696865635e57524b433c3329211808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b77828e919191918e82776b6054483d31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38444c545b626464646464635f584f453a31281b1206000000000000000000000000000000000000000000050b11161a1c1d20232423211e1d1b17120d0600000000050c12161a1c1d20232423211d1d1a17120c0600000000040b1116191c1d20232423211e1d1b17130d0600000000000000000007131e2a35414d58646f7b7c7c7c7c7c7c7b7064584d4136404c57636f7a7c7c7c7c7c7c7c7a6e63574c4035291d1206000000000000010b141e262e353a45495156585b5d5e5d5a57544e47423b332b23191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313d4854606b778285858585858582776b6054483d31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27333c444b5257595959595957554f483f352921180b020000000000000000000000000000000000000000000001070b0f1112141718181512110f0c080300000000000002070b0f1112151718181512110f0c080200000000000001060b0e101114171818161211100c08030000000000000000000006121d2934404b56616b6f707070707070706b62574c40353f4a5560696f707070707070706e6960554a3f33281d110600000000000000040d161e252b2f3940474b4c505252514e4b49453e36322a231b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303c47535e6872777a7a7a7a7a7a7772685e53473c3025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17232c333a42484c4d4d4d4d4d4c4a453f372f251910070000000000000000000000000000000000000000000000000000030506090c0d0c0a060604010000000000000000000000030506090c0d0c09060604010000000000000000000000030506090c0d0c0a0606040100000000000000000000000005101b27323d47515a616464646464646464625b52483d323b46505960636464646464646463605950463b30251a0f040000000000000000050d141b202830373c3f414446474542403e3a352e26221a120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17232e39444e5861686b6e6e6e6e6e6e6b6861584e44392e23170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131b232a32383d404142424242403e3b352f271e150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a5156585959595959595857524a42382e36404850555759595959595959575550483f362c21170c01000000000000000000040b111820272d313435383a3b3a3734332f2b251e1611090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a343e4851585e60636363636363605e5851483e342a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131921282e323536363636363433302b251e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27313941474b4d4d4d4d4d4d4d4d4c48423a31282f3840464a4c4d4d4d4d4d4d4d4c4a463f382f261c1207000000000000000000000001060f171d222629292d2f2f2e2b292724201b140d05010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e3840484e535457575757575754534e4840382e251a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020911181e23272a2a2a2a2a2a292825211b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17202931373d404142424242424241403d38312a21282f363b3f4042424242424242403f3b362f271f160c0200000000000000000000000000060d13171b1d1e21232423201d1c1916110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e2730383e4447484b4b4b4b4b4b4847443e3830271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1d1c1a16110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272d3234353636363636363635322e2821191f262c313435363636363636363533302c261f170f0500000000000000000000000000000003080d101212161818171411100e0b06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1720272e34393c3d4040404040403d3c39342e2720170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1112131313131312110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2927231e1811161c222628292a2a2a2a2a2a2a292825211c160f07000000000000000000000000000000000000010406070a0c0d0c08060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e252a2e303134343434343431302e2a251e170f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080808080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1d1e1f1f1f1f1f1f1e1e1c18140e080c12171a1d1d1f1f1f1f1f1f1f1d1d1a17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1f2325262929292929292625231f1a150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131313131313131312100d09040002080c0f11121313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101417191a1d1d1d1d1d1d1a191714100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607080808080808070705020000000000010406060808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090c0e0f1111111111110f0e0c0905010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset.meta new file mode 100644 index 00000000..838e2b95 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B Regular SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1410b767db5f2474aa7d0b0c7764db98 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset new file mode 100644 index 00000000..4b1ae38c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset @@ -0,0 +1,2839 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &-7581536809202965839 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B SemiBold SDF Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 5214492550338462853} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 11 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.90909094 + - _ScaleRatioB: 0.7386364 + - _ScaleRatioC: 0.7386364 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: Euclid Circular B SemiBold SDF + m_EditorClassIdentifier: + hashCode: 1746473959 + material: {fileID: -7581536809202965839} + materialHashCode: -1387252249 + m_Version: 1.1.0 + m_SourceFontFileGUID: 37e1b64655a040b4fba44c9e457efac3 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 37e1b64655a040b4fba44c9e457efac3, type: 3} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Euclid Circular B + m_StyleName: SemiBold + m_PointSize: 96 + m_Scale: 1 + m_UnitsPerEM: 1000 + m_LineHeight: 121.728 + m_AscentLine: 96 + m_CapLine: 69 + m_MeanLine: 48 + m_Baseline: 0 + m_DescentLine: -25.727999 + m_SuperscriptOffset: 96 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -25.727999 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -36.864 + m_UnderlineThickness: 9.599999 + m_StrikethroughOffset: 19.2 + m_StrikethroughThickness: 9.599999 + m_TabWidth: 22 + m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 21.890625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 4 + m_Metrics: + m_Width: 19.203125 + m_Height: 68.921875 + m_HorizontalBearingX: 4.125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 27.640625 + m_GlyphRect: + m_X: 304 + m_Y: 785 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 5 + m_Metrics: + m_Width: 30.53125 + m_Height: 27.546875 + m_HorizontalBearingX: 5.5625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 41.65625 + m_GlyphRect: + m_X: 152 + m_Y: 975 + m_Width: 32 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 6 + m_Metrics: + m_Width: 63.546875 + m_Height: 68.15625 + m_HorizontalBearingX: 3.078125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.703125 + m_GlyphRect: + m_X: 233 + m_Y: 197 + m_Width: 64 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 7 + m_Metrics: + m_Width: 44.25 + m_Height: 85.0625 + m_HorizontalBearingX: 3.84375 + m_HorizontalBearingY: 76.609375 + m_HorizontalAdvance: 51.453125 + m_GlyphRect: + m_X: 11 + m_Y: 697 + m_Width: 46 + m_Height: 86 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 8 + m_Metrics: + m_Width: 88.703125 + m_Height: 69.6875 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 68.921875 + m_HorizontalAdvance: 94.078125 + m_GlyphRect: + m_X: 267 + m_Y: 447 + m_Width: 90 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 9 + m_Metrics: + m_Width: 68.640625 + m_Height: 70.375 + m_HorizontalBearingX: 6.046875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 73.921875 + m_GlyphRect: + m_X: 225 + m_Y: 104 + m_Width: 69 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 10 + m_Metrics: + m_Width: 11.140625 + m_Height: 27.546875 + m_HorizontalBearingX: 5.5625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 22.265625 + m_GlyphRect: + m_X: 205 + m_Y: 975 + m_Width: 12 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 11 + m_Metrics: + m_Width: 22.75 + m_Height: 92.15625 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 28.703125 + m_GlyphRect: + m_X: 11 + m_Y: 241 + m_Width: 24 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 12 + m_Metrics: + m_Width: 22.75 + m_Height: 92.15625 + m_HorizontalBearingX: 2.109375 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 28.609375 + m_GlyphRect: + m_X: 11 + m_Y: 355 + m_Width: 23 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 13 + m_Metrics: + m_Width: 41.28125 + m_Height: 39.0625 + m_HorizontalBearingX: 2.96875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 47.234375 + m_GlyphRect: + m_X: 300 + m_Y: 972 + m_Width: 43 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 14 + m_Metrics: + m_Width: 40.328125 + m_Height: 40.421875 + m_HorizontalBearingX: 3.453125 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 47.234375 + m_GlyphRect: + m_X: 238 + m_Y: 972 + m_Width: 41 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 15 + m_Metrics: + m_Width: 20.453125 + m_Height: 33.03125 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 18.4375 + m_HorizontalAdvance: 27.078125 + m_GlyphRect: + m_X: 184 + m_Y: 641 + m_Width: 22 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 16 + m_Metrics: + m_Width: 27.453125 + m_Height: 12.671875 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 33.21875 + m_HorizontalAdvance: 38.40625 + m_GlyphRect: + m_X: 99 + m_Y: 990 + m_Width: 28 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 17 + m_Metrics: + m_Width: 19.1875 + m_Height: 19.203125 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 18.4375 + m_HorizontalAdvance: 26.78125 + m_GlyphRect: + m_X: 11 + m_Y: 990 + m_Width: 20 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 18 + m_Metrics: + m_Width: 48.953125 + m_Height: 78.71875 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.421875 + m_GlyphRect: + m_X: 54 + m_Y: 469 + m_Width: 50 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 19 + m_Metrics: + m_Width: 50.796875 + m_Height: 70.375 + m_HorizontalBearingX: 4.890625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 60.578125 + m_GlyphRect: + m_X: 78 + m_Y: 697 + m_Width: 52 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 20 + m_Metrics: + m_Width: 27.5625 + m_Height: 68.15625 + m_HorizontalBearingX: 0.1875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 35.328125 + m_GlyphRect: + m_X: 577 + m_Y: 11 + m_Width: 28 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 21 + m_Metrics: + m_Width: 46.46875 + m_Height: 69.3125 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 55.015625 + m_GlyphRect: + m_X: 252 + m_Y: 694 + m_Width: 48 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 22 + m_Metrics: + m_Width: 48.953125 + m_Height: 70.375 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 56.453125 + m_GlyphRect: + m_X: 113 + m_Y: 570 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 23 + m_Metrics: + m_Width: 55.96875 + m_Height: 68.15625 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 61.15625 + m_GlyphRect: + m_X: 318 + m_Y: 194 + m_Width: 57 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 24 + m_Metrics: + m_Width: 48.109375 + m_Height: 69.21875 + m_HorizontalBearingX: 2.96875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.90625 + m_GlyphRect: + m_X: 196 + m_Y: 448 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 25 + m_Metrics: + m_Width: 47.515625 + m_Height: 69.21875 + m_HorizontalBearingX: 3.359375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.625 + m_GlyphRect: + m_X: 165 + m_Y: 789 + m_Width: 48 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 26 + m_Metrics: + m_Width: 47.515625 + m_Height: 68.15625 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.125 + m_GlyphRect: + m_X: 443 + m_Y: 11 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 27 + m_Metrics: + m_Width: 48.390625 + m_Height: 70.375 + m_HorizontalBearingX: 4.03125 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 56.453125 + m_GlyphRect: + m_X: 82 + m_Y: 897 + m_Width: 49 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 28 + m_Metrics: + m_Width: 47.609375 + m_Height: 69.3125 + m_HorizontalBearingX: 3.75 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 54.625 + m_GlyphRect: + m_X: 234 + m_Y: 788 + m_Width: 49 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 29 + m_Metrics: + m_Width: 19.203125 + m_Height: 49.921875 + m_HorizontalBearingX: 4.703125 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 28.703125 + m_GlyphRect: + m_X: 417 + m_Y: 374 + m_Width: 20 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 30 + m_Metrics: + m_Width: 20.453125 + m_Height: 63.75 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 49.15625 + m_HorizontalAdvance: 28.984375 + m_GlyphRect: + m_X: 494 + m_Y: 374 + m_Width: 22 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 31 + m_Metrics: + m_Width: 40.703125 + m_Height: 48.578125 + m_HorizontalBearingX: 2.5 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 45.796875 + m_GlyphRect: + m_X: 671 + m_Y: 84 + m_Width: 42 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 32 + m_Metrics: + m_Width: 40.40625 + m_Height: 31.578125 + m_HorizontalBearingX: 5.765625 + m_HorizontalBearingY: 43.578125 + m_HorizontalAdvance: 51.9375 + m_GlyphRect: + m_X: 227 + m_Y: 641 + m_Width: 42 + m_Height: 32 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 33 + m_Metrics: + m_Width: 40.703125 + m_Height: 48.578125 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 52.125 + m_HorizontalAdvance: 45.796875 + m_GlyphRect: + m_X: 696 + m_Y: 11 + m_Width: 42 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 34 + m_Metrics: + m_Width: 43.296875 + m_Height: 70.078125 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 49.828125 + m_GlyphRect: + m_X: 262 + m_Y: 540 + m_Width: 44 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 35 + m_Metrics: + m_Width: 70.171875 + m_Height: 70.375 + m_HorizontalBearingX: 3.84375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 77.09375 + m_GlyphRect: + m_X: 132 + m_Y: 106 + m_Width: 72 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 36 + m_Metrics: + m_Width: 71.234375 + m_Height: 68.15625 + m_HorizontalBearingX: 0.09375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 71.328125 + m_GlyphRect: + m_X: 334 + m_Y: 876 + m_Width: 72 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 37 + m_Metrics: + m_Width: 49.921875 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 60.859375 + m_GlyphRect: + m_X: 424 + m_Y: 284 + m_Width: 51 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 38 + m_Metrics: + m_Width: 66.71875 + m_Height: 70.46875 + m_HorizontalBearingX: 3.546875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 72.28125 + m_GlyphRect: + m_X: 271 + m_Y: 11 + m_Width: 68 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 39 + m_Metrics: + m_Width: 57.515625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 68.734375 + m_GlyphRect: + m_X: 268 + m_Y: 287 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 40 + m_Metrics: + m_Width: 42.4375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.53125 + m_GlyphRect: + m_X: 471 + m_Y: 101 + m_Width: 44 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 41 + m_Metrics: + m_Width: 41.484375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.03125 + m_GlyphRect: + m_X: 536 + m_Y: 101 + m_Width: 43 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 42 + m_Metrics: + m_Width: 64.71875 + m_Height: 70.46875 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 73.25 + m_GlyphRect: + m_X: 11 + m_Y: 804 + m_Width: 66 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 43 + m_Metrics: + m_Width: 57.40625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 72.578125 + m_GlyphRect: + m_X: 418 + m_Y: 536 + m_Width: 58 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 44 + m_Metrics: + m_Width: 13.921875 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 29.09375 + m_GlyphRect: + m_X: 458 + m_Y: 374 + m_Width: 15 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 45 + m_Metrics: + m_Width: 43.484375 + m_Height: 69.3125 + m_HorizontalBearingX: 1.921875 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.515625 + m_GlyphRect: + m_X: 186 + m_Y: 696 + m_Width: 45 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 46 + m_Metrics: + m_Width: 61.453125 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 66.625 + m_GlyphRect: + m_X: 315 + m_Y: 104 + m_Width: 63 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 47 + m_Metrics: + m_Width: 43.109375 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.890625 + m_GlyphRect: + m_X: 512 + m_Y: 11 + m_Width: 44 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 48 + m_Metrics: + m_Width: 69.703125 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 84.859375 + m_GlyphRect: + m_X: 321 + m_Y: 632 + m_Width: 71 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 49 + m_Metrics: + m_Width: 60.875 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 76.03125 + m_GlyphRect: + m_X: 360 + m_Y: 11 + m_Width: 62 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 50 + m_Metrics: + m_Width: 70.46875 + m_Height: 70.46875 + m_HorizontalBearingX: 3.546875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 77.5625 + m_GlyphRect: + m_X: 178 + m_Y: 11 + m_Width: 72 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 51 + m_Metrics: + m_Width: 46.5625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 56.734375 + m_GlyphRect: + m_X: 470 + m_Y: 191 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 52 + m_Metrics: + m_Width: 83.046875 + m_Height: 70.46875 + m_HorizontalBearingX: 3.546875 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 80.640625 + m_GlyphRect: + m_X: 128 + m_Y: 220 + m_Width: 84 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 53 + m_Metrics: + m_Width: 57.515625 + m_Height: 68.15625 + m_HorizontalBearingX: 7.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 62.96875 + m_GlyphRect: + m_X: 378 + m_Y: 446 + m_Width: 59 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 54 + m_Metrics: + m_Width: 48.765625 + m_Height: 70.46875 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 54.8125 + m_GlyphRect: + m_X: 125 + m_Y: 456 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 55 + m_Metrics: + m_Width: 50.5 + m_Height: 68.15625 + m_HorizontalBearingX: 2.015625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 54.53125 + m_GlyphRect: + m_X: 399 + m_Y: 101 + m_Width: 51 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 56 + m_Metrics: + m_Width: 55.484375 + m_Height: 69.3125 + m_HorizontalBearingX: 6.8125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.125 + m_GlyphRect: + m_X: 184 + m_Y: 549 + m_Width: 57 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 57 + m_Metrics: + m_Width: 68.75 + m_Height: 68.15625 + m_HorizontalBearingX: 0.28125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 69.21875 + m_GlyphRect: + m_X: 327 + m_Y: 538 + m_Width: 70 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 58 + m_Metrics: + m_Width: 88.890625 + m_Height: 69.3125 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 69.3125 + m_HorizontalAdvance: 92.25 + m_GlyphRect: + m_X: 223 + m_Y: 881 + m_Width: 90 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 59 + m_Metrics: + m_Width: 68.0625 + m_Height: 68.15625 + m_HorizontalBearingX: -0.578125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 66.90625 + m_GlyphRect: + m_X: 345 + m_Y: 722 + m_Width: 69 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 60 + m_Metrics: + m_Width: 64.328125 + m_Height: 68.15625 + m_HorizontalBearingX: 0.953125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 66.234375 + m_GlyphRect: + m_X: 413 + m_Y: 628 + m_Width: 66 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 61 + m_Metrics: + m_Width: 52.046875 + m_Height: 68.15625 + m_HorizontalBearingX: 3.640625 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 59.328125 + m_GlyphRect: + m_X: 396 + m_Y: 194 + m_Width: 53 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 62 + m_Metrics: + m_Width: 21.21875 + m_Height: 92.15625 + m_HorizontalBearingX: 7.296875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 31.203125 + m_GlyphRect: + m_X: 11 + m_Y: 469 + m_Width: 22 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 63 + m_Metrics: + m_Width: 48.953125 + m_Height: 78.71875 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 52.421875 + m_GlyphRect: + m_X: 55 + m_Y: 355 + m_Width: 50 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 64 + m_Metrics: + m_Width: 21.21875 + m_Height: 92.15625 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 31.203125 + m_GlyphRect: + m_X: 11 + m_Y: 583 + m_Width: 22 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 65 + m_Metrics: + m_Width: 25.4375 + m_Height: 20.15625 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 33.3125 + m_GlyphRect: + m_X: 181 + m_Y: 313 + m_Width: 27 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 66 + m_Metrics: + m_Width: 41.5625 + m_Height: 10.078125 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 49.4375 + m_GlyphRect: + m_X: 98 + m_Y: 664 + m_Width: 43 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 67 + m_Metrics: + m_Width: 25.4375 + m_Height: 18.234375 + m_HorizontalBearingX: -12.671875 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 52 + m_Y: 990 + m_Width: 26 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 68 + m_Metrics: + m_Width: 49.53125 + m_Height: 50.125 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 539 + m_Y: 191 + m_Width: 50 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 69 + m_Metrics: + m_Width: 49.625 + m_Height: 73.0625 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 61 + m_Y: 125 + m_Width: 50 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 70 + m_Metrics: + m_Width: 48.1875 + m_Height: 50.125 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 53.5625 + m_GlyphRect: + m_X: 626 + m_Y: 11 + m_Width: 49 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 71 + m_Metrics: + m_Width: 49.53125 + m_Height: 73.0625 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 107 + m_Y: 11 + m_Width: 50 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 72 + m_Metrics: + m_Width: 48.859375 + m_Height: 50.125 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 55.484375 + m_GlyphRect: + m_X: 600 + m_Y: 101 + m_Width: 50 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 73 + m_Metrics: + m_Width: 36.375 + m_Height: 72.578125 + m_HorizontalBearingX: 1.734375 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 39.546875 + m_GlyphRect: + m_X: 54 + m_Y: 570 + m_Width: 38 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 74 + m_Metrics: + m_Width: 49.71875 + m_Height: 70.09375 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 126 + m_Y: 355 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 75 + m_Metrics: + m_Width: 45.40625 + m_Height: 72 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 57.5 + m_GlyphRect: + m_X: 98 + m_Y: 790 + m_Width: 46 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 76 + m_Metrics: + m_Width: 16.796875 + m_Height: 72.578125 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 25.828125 + m_GlyphRect: + m_X: 89 + m_Y: 220 + m_Width: 18 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 77 + m_Metrics: + m_Width: 25.046875 + m_Height: 93.609375 + m_HorizontalBearingX: -2.96875 + m_HorizontalBearingY: 72.578125 + m_HorizontalAdvance: 26.59375 + m_GlyphRect: + m_X: 11 + m_Y: 11 + m_Width: 26 + m_Height: 95 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 78 + m_Metrics: + m_Width: 48.953125 + m_Height: 72 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 53.375 + m_GlyphRect: + m_X: 11 + m_Y: 897 + m_Width: 50 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 79 + m_Metrics: + m_Width: 13.140625 + m_Height: 72 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 25.828125 + m_GlyphRect: + m_X: 151 + m_Y: 696 + m_Width: 14 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 80 + m_Metrics: + m_Width: 73.625 + m_Height: 49.0625 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 85.734375 + m_GlyphRect: + m_X: 458 + m_Y: 464 + m_Width: 74 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 81 + m_Metrics: + m_Width: 45.40625 + m_Height: 49.0625 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 57.5 + m_GlyphRect: + m_X: 568 + m_Y: 264 + m_Width: 46 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 82 + m_Metrics: + m_Width: 50.484375 + m_Height: 50.125 + m_HorizontalBearingX: 3.171875 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 56.828125 + m_GlyphRect: + m_X: 496 + m_Y: 281 + m_Width: 51 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 83 + m_Metrics: + m_Width: 49.625 + m_Height: 69.125 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 197 + m_Y: 355 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 84 + m_Metrics: + m_Width: 49.53125 + m_Height: 69.125 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 59.234375 + m_GlyphRect: + m_X: 152 + m_Y: 883 + m_Width: 50 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 85 + m_Metrics: + m_Width: 29.46875 + m_Height: 48.578125 + m_HorizontalBearingX: 6.34375 + m_HorizontalBearingY: 48.578125 + m_HorizontalAdvance: 37.921875 + m_GlyphRect: + m_X: 268 + m_Y: 377 + m_Width: 30 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 86 + m_Metrics: + m_Width: 38.015625 + m_Height: 50.125 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 49.0625 + m_HorizontalAdvance: 44.0625 + m_GlyphRect: + m_X: 537 + m_Y: 354 + m_Width: 39 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 87 + m_Metrics: + m_Width: 36.390625 + m_Height: 61.921875 + m_HorizontalBearingX: 1.53125 + m_HorizontalBearingY: 61.34375 + m_HorizontalAdvance: 40.984375 + m_GlyphRect: + m_X: 497 + m_Y: 535 + m_Width: 37 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 88 + m_Metrics: + m_Width: 44.34375 + m_Height: 49.0625 + m_HorizontalBearingX: 5.765625 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 56.453125 + m_GlyphRect: + m_X: 610 + m_Y: 174 + m_Width: 46 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 89 + m_Metrics: + m_Width: 54.53125 + m_Height: 48 + m_HorizontalBearingX: 0.09375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 54.71875 + m_GlyphRect: + m_X: 553 + m_Y: 427 + m_Width: 55 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 90 + m_Metrics: + m_Width: 75.828125 + m_Height: 48 + m_HorizontalBearingX: 0.484375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 76.796875 + m_GlyphRect: + m_X: 319 + m_Y: 377 + m_Width: 77 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 91 + m_Metrics: + m_Width: 53.859375 + m_Height: 48 + m_HorizontalBearingX: 0.28125 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 54.4375 + m_GlyphRect: + m_X: 597 + m_Y: 335 + m_Width: 55 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 92 + m_Metrics: + m_Width: 54.53125 + m_Height: 68.0625 + m_HorizontalBearingX: 0.1875 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 54.71875 + m_GlyphRect: + m_X: 348 + m_Y: 284 + m_Width: 55 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 93 + m_Metrics: + m_Width: 40.21875 + m_Height: 48 + m_HorizontalBearingX: 3.9375 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 47.8125 + m_GlyphRect: + m_X: 635 + m_Y: 245 + m_Width: 42 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 94 + m_Metrics: + m_Width: 27.359375 + m_Height: 92.15625 + m_HorizontalBearingX: 2.6875 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 32.640625 + m_GlyphRect: + m_X: 11 + m_Y: 127 + m_Width: 29 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 95 + m_Metrics: + m_Width: 11.140625 + m_Height: 78.71875 + m_HorizontalBearingX: 7.203125 + m_HorizontalBearingY: 68.15625 + m_HorizontalAdvance: 25.625 + m_GlyphRect: + m_X: 56 + m_Y: 241 + m_Width: 12 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 96 + m_Metrics: + m_Width: 27.359375 + m_Height: 92.15625 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 76.796875 + m_HorizontalAdvance: 32.640625 + m_GlyphRect: + m_X: 58 + m_Y: 11 + m_Width: 28 + m_Height: 93 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 97 + m_Metrics: + m_Width: 22.28125 + m_Height: 11.421875 + m_HorizontalBearingX: 5.65625 + m_HorizontalBearingY: 33.5 + m_HorizontalAdvance: 33.21875 + m_GlyphRect: + m_X: 54 + m_Y: 664 + m_Width: 23 + m_Height: 12 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 98 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 21.890625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + - m_Index: 489 + m_Metrics: + m_Width: 70.265625 + m_Height: 19.203125 + m_HorizontalBearingX: 3.265625 + m_HorizontalBearingY: 18.4375 + m_HorizontalAdvance: 76.796875 + m_GlyphRect: + m_X: 89 + m_Y: 314 + m_Width: 71 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + m_ClassDefinitionType: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 7 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 8 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 11 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 12 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 18 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 19 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 27 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 53 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 54 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 55 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 56 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 58 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 60 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 62 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 63 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 65 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 67 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 71 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 76 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 77 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 79 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 80 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 81 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 82 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 83 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 86 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 87 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 88 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 89 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 90 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 91 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 92 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 94 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 95 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 97 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 98 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 489 + m_Scale: 1 + m_AtlasTextures: + - {fileID: 5214492550338462853} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 49 + m_Height: 116 + - m_X: 0 + m_Y: 116 + m_Width: 50 + m_Height: 114 + - m_X: 49 + m_Y: 0 + m_Width: 50 + m_Height: 114 + - m_X: 0 + m_Y: 230 + m_Width: 46 + m_Height: 114 + - m_X: 0 + m_Y: 344 + m_Width: 45 + m_Height: 114 + - m_X: 0 + m_Y: 458 + m_Width: 44 + m_Height: 114 + - m_X: 0 + m_Y: 572 + m_Width: 44 + m_Height: 114 + - m_X: 0 + m_Y: 686 + m_Width: 67 + m_Height: 107 + - m_X: 44 + m_Y: 458 + m_Width: 72 + m_Height: 101 + - m_X: 45 + m_Y: 344 + m_Width: 72 + m_Height: 101 + - m_X: 46 + m_Y: 230 + m_Width: 34 + m_Height: 101 + - m_X: 50 + m_Y: 114 + m_Width: 72 + m_Height: 95 + - m_X: 99 + m_Y: 0 + m_Width: 71 + m_Height: 95 + - m_X: 44 + m_Y: 559 + m_Width: 60 + m_Height: 94 + - m_X: 44 + m_Y: 653 + m_Width: 43 + m_Height: 33 + - m_X: 80 + m_Y: 209 + m_Width: 40 + m_Height: 94 + - m_X: 80 + m_Y: 303 + m_Width: 49 + m_Height: 40 + - m_X: 120 + m_Y: 209 + m_Width: 107 + m_Height: 93 + - m_X: 122 + m_Y: 95 + m_Width: 92 + m_Height: 93 + - m_X: 170 + m_Y: 0 + m_Width: 92 + m_Height: 93 + - m_X: 214 + m_Y: 93 + m_Width: 92 + m_Height: 93 + - m_X: 262 + m_Y: 0 + m_Width: 89 + m_Height: 93 + - m_X: 0 + m_Y: 793 + m_Width: 87 + m_Height: 93 + - m_X: 67 + m_Y: 686 + m_Width: 74 + m_Height: 93 + - m_X: 87 + m_Y: 653 + m_Width: 64 + m_Height: 32 + - m_X: 104 + m_Y: 559 + m_Width: 72 + m_Height: 93 + - m_X: 116 + m_Y: 445 + m_Width: 72 + m_Height: 93 + - m_X: 117 + m_Y: 343 + m_Width: 72 + m_Height: 93 + - m_X: 129 + m_Y: 302 + m_Width: 50 + m_Height: 36 + - m_X: 0 + m_Y: 886 + m_Width: 71 + m_Height: 93 + - m_X: 0 + m_Y: 979 + m_Width: 96 + m_Height: 42 + - m_X: 71 + m_Y: 886 + m_Width: 71 + m_Height: 93 + - m_X: 96 + m_Y: 979 + m_Width: 47 + m_Height: 42 + - m_X: 87 + m_Y: 779 + m_Width: 69 + m_Height: 93 + - m_X: 141 + m_Y: 685 + m_Width: 37 + m_Height: 93 + - m_X: 142 + m_Y: 872 + m_Width: 78 + m_Height: 92 + - m_X: 156 + m_Y: 778 + m_Width: 72 + m_Height: 92 + - m_X: 143 + m_Y: 964 + m_Width: 44 + m_Height: 56 + - m_X: 187 + m_Y: 964 + m_Width: 62 + m_Height: 55 + - m_X: 220 + m_Y: 870 + m_Width: 71 + m_Height: 92 + - m_X: 249 + m_Y: 962 + m_Width: 53 + m_Height: 51 + - m_X: 176 + m_Y: 538 + m_Width: 71 + m_Height: 92 + - m_X: 176 + m_Y: 630 + m_Width: 34 + m_Height: 51 + - m_X: 178 + m_Y: 681 + m_Width: 70 + m_Height: 92 + - m_X: 228 + m_Y: 773 + m_Width: 67 + m_Height: 92 + - m_X: 291 + m_Y: 865 + m_Width: 66 + m_Height: 92 + - m_X: 302 + m_Y: 957 + m_Width: 65 + m_Height: 63 + - m_X: 210 + m_Y: 630 + m_Width: 42 + m_Height: 42 + - m_X: 248 + m_Y: 672 + m_Width: 112 + m_Height: 91 + - m_X: 295 + m_Y: 763 + m_Width: 111 + m_Height: 91 + - m_X: 188 + m_Y: 436 + m_Width: 70 + m_Height: 91 + - m_X: 357 + m_Y: 854 + m_Width: 69 + m_Height: 91 + - m_X: 367 + m_Y: 945 + m_Width: 73 + m_Height: 73 + - m_X: 247 + m_Y: 527 + m_Width: 43 + m_Height: 91 + - m_X: 189 + m_Y: 302 + m_Width: 95 + m_Height: 90 + - m_X: 227 + m_Y: 186 + m_Width: 92 + m_Height: 90 + - m_X: 306 + m_Y: 93 + m_Width: 91 + m_Height: 90 + - m_X: 351 + m_Y: 0 + m_Width: 91 + m_Height: 90 + - m_X: 258 + m_Y: 392 + m_Width: 87 + m_Height: 90 + - m_X: 284 + m_Y: 276 + m_Width: 86 + m_Height: 90 + - m_X: 319 + m_Y: 183 + m_Width: 84 + m_Height: 90 + - m_X: 397 + m_Y: 90 + m_Width: 83 + m_Height: 90 + - m_X: 442 + m_Y: 0 + m_Width: 80 + m_Height: 90 + - m_X: 290 + m_Y: 482 + m_Width: 80 + m_Height: 90 + - m_X: 290 + m_Y: 572 + m_Width: 80 + m_Height: 90 + - m_X: 360 + m_Y: 662 + m_Width: 79 + m_Height: 90 + - m_X: 406 + m_Y: 752 + m_Width: 77 + m_Height: 90 + - m_X: 426 + m_Y: 842 + m_Width: 75 + m_Height: 90 + - m_X: 440 + m_Y: 932 + m_Width: 72 + m_Height: 90 + - m_X: 345 + m_Y: 366 + m_Width: 72 + m_Height: 90 + - m_X: 370 + m_Y: 273 + m_Width: 70 + m_Height: 90 + - m_X: 403 + m_Y: 180 + m_Width: 69 + m_Height: 90 + - m_X: 370 + m_Y: 456 + m_Width: 65 + m_Height: 90 + - m_X: 417 + m_Y: 363 + m_Width: 65 + m_Height: 90 + - m_X: 440 + m_Y: 270 + m_Width: 64 + m_Height: 90 + - m_X: 472 + m_Y: 180 + m_Width: 51 + m_Height: 90 + - m_X: 480 + m_Y: 90 + m_Width: 37 + m_Height: 90 + - m_X: 517 + m_Y: 90 + m_Width: 43 + m_Height: 86 + - m_X: 522 + m_Y: 0 + m_Width: 60 + m_Height: 84 + - m_X: 370 + m_Y: 546 + m_Width: 71 + m_Height: 73 + - m_X: 435 + m_Y: 453 + m_Width: 71 + m_Height: 73 + - m_X: 482 + m_Y: 360 + m_Width: 70 + m_Height: 73 + - m_X: 504 + m_Y: 270 + m_Width: 61 + m_Height: 73 + - m_X: 523 + m_Y: 176 + m_Width: 42 + m_Height: 72 + - m_X: 560 + m_Y: 84 + m_Width: 97 + m_Height: 71 + - m_X: 582 + m_Y: 0 + m_Width: 69 + m_Height: 71 + - m_X: 651 + m_Y: 0 + m_Width: 67 + m_Height: 71 + - m_X: 439 + m_Y: 619 + m_Width: 64 + m_Height: 71 + - m_X: 439 + m_Y: 690 + m_Width: 62 + m_Height: 62 + - m_X: 483 + m_Y: 752 + m_Width: 64 + m_Height: 71 + - m_X: 441 + m_Y: 526 + m_Width: 53 + m_Height: 70 + - m_X: 494 + m_Y: 526 + m_Width: 99 + m_Height: 69 + - m_X: 506 + m_Y: 433 + m_Width: 78 + m_Height: 69 + - m_X: 552 + m_Y: 343 + m_Width: 77 + m_Height: 69 + - m_X: 501 + m_Y: 823 + m_Width: 63 + m_Height: 69 + m_FreeGlyphRects: + - m_X: 49 + m_Y: 114 + m_Width: 1 + m_Height: 2 + - m_X: 50 + m_Y: 209 + m_Width: 30 + m_Height: 21 + - m_X: 46 + m_Y: 331 + m_Width: 34 + m_Height: 13 + - m_X: 99 + m_Y: 95 + m_Width: 23 + m_Height: 19 + - m_X: 170 + m_Y: 93 + m_Width: 44 + m_Height: 2 + - m_X: 45 + m_Y: 445 + m_Width: 71 + m_Height: 13 + - m_X: 46 + m_Y: 343 + m_Width: 71 + m_Height: 1 + - m_X: 120 + m_Y: 302 + m_Width: 9 + m_Height: 1 + - m_X: 67 + m_Y: 779 + m_Width: 20 + m_Height: 14 + - m_X: 87 + m_Y: 685 + m_Width: 54 + m_Height: 1 + - m_X: 87 + m_Y: 872 + m_Width: 55 + m_Height: 14 + - m_X: 141 + m_Y: 778 + m_Width: 15 + m_Height: 1 + - m_X: 142 + m_Y: 964 + m_Width: 1 + m_Height: 15 + - m_X: 156 + m_Y: 870 + m_Width: 64 + m_Height: 2 + - m_X: 220 + m_Y: 962 + m_Width: 29 + m_Height: 2 + - m_X: 116 + m_Y: 538 + m_Width: 60 + m_Height: 21 + - m_X: 104 + m_Y: 652 + m_Width: 72 + m_Height: 1 + - m_X: 151 + m_Y: 652 + m_Width: 25 + m_Height: 33 + - m_X: 151 + m_Y: 681 + m_Width: 27 + m_Height: 4 + - m_X: 178 + m_Y: 773 + m_Width: 50 + m_Height: 5 + - m_X: 228 + m_Y: 865 + m_Width: 63 + m_Height: 5 + - m_X: 187 + m_Y: 1019 + m_Width: 115 + m_Height: 4 + - m_X: 249 + m_Y: 1013 + m_Width: 53 + m_Height: 10 + - m_X: 291 + m_Y: 957 + m_Width: 11 + m_Height: 5 + - m_X: 210 + m_Y: 672 + m_Width: 38 + m_Height: 9 + - m_X: 248 + m_Y: 763 + m_Width: 47 + m_Height: 10 + - m_X: 117 + m_Y: 436 + m_Width: 71 + m_Height: 9 + - m_X: 295 + m_Y: 854 + m_Width: 62 + m_Height: 11 + - m_X: 357 + m_Y: 945 + m_Width: 10 + m_Height: 12 + - m_X: 188 + m_Y: 527 + m_Width: 59 + m_Height: 11 + - m_X: 129 + m_Y: 338 + m_Width: 60 + m_Height: 5 + - m_X: 179 + m_Y: 302 + m_Width: 10 + m_Height: 41 + - m_X: 122 + m_Y: 188 + m_Width: 105 + m_Height: 21 + - m_X: 214 + m_Y: 186 + m_Width: 13 + m_Height: 23 + - m_X: 189 + m_Y: 392 + m_Width: 69 + m_Height: 44 + - m_X: 227 + m_Y: 276 + m_Width: 57 + m_Height: 26 + - m_X: 306 + m_Y: 183 + m_Width: 13 + m_Height: 3 + - m_X: 351 + m_Y: 90 + m_Width: 46 + m_Height: 3 + - m_X: 258 + m_Y: 482 + m_Width: 32 + m_Height: 45 + - m_X: 247 + m_Y: 618 + m_Width: 43 + m_Height: 12 + - m_X: 252 + m_Y: 618 + m_Width: 38 + m_Height: 54 + - m_X: 252 + m_Y: 662 + m_Width: 108 + m_Height: 10 + - m_X: 360 + m_Y: 752 + m_Width: 46 + m_Height: 11 + - m_X: 406 + m_Y: 842 + m_Width: 20 + m_Height: 12 + - m_X: 0 + m_Y: 1022 + m_Width: 1023 + m_Height: 1 + - m_X: 0 + m_Y: 1021 + m_Width: 440 + m_Height: 2 + - m_X: 143 + m_Y: 1020 + m_Width: 297 + m_Height: 3 + - m_X: 367 + m_Y: 1018 + m_Width: 73 + m_Height: 5 + - m_X: 426 + m_Y: 932 + m_Width: 14 + m_Height: 13 + - m_X: 284 + m_Y: 366 + m_Width: 61 + m_Height: 26 + - m_X: 319 + m_Y: 273 + m_Width: 51 + m_Height: 3 + - m_X: 397 + m_Y: 180 + m_Width: 6 + m_Height: 3 + - m_X: 345 + m_Y: 456 + m_Width: 25 + m_Height: 26 + - m_X: 370 + m_Y: 363 + m_Width: 47 + m_Height: 3 + - m_X: 403 + m_Y: 270 + m_Width: 37 + m_Height: 3 + - m_X: 417 + m_Y: 453 + m_Width: 18 + m_Height: 3 + - m_X: 440 + m_Y: 360 + m_Width: 42 + m_Height: 3 + - m_X: 517 + m_Y: 176 + m_Width: 6 + m_Height: 4 + - m_X: 523 + m_Y: 248 + m_Width: 500 + m_Height: 22 + - m_X: 522 + m_Y: 84 + m_Width: 38 + m_Height: 6 + - m_X: 560 + m_Y: 155 + m_Width: 463 + m_Height: 21 + - m_X: 582 + m_Y: 71 + m_Width: 441 + m_Height: 13 + - m_X: 657 + m_Y: 71 + m_Width: 366 + m_Height: 952 + - m_X: 718 + m_Y: 0 + m_Width: 305 + m_Height: 1023 + - m_X: 370 + m_Y: 619 + m_Width: 69 + m_Height: 43 + - m_X: 501 + m_Y: 690 + m_Width: 522 + m_Height: 62 + - m_X: 435 + m_Y: 526 + m_Width: 6 + m_Height: 20 + - m_X: 441 + m_Y: 596 + m_Width: 582 + m_Height: 23 + - m_X: 503 + m_Y: 595 + m_Width: 520 + m_Height: 157 + - m_X: 494 + m_Y: 595 + m_Width: 529 + m_Height: 24 + - m_X: 482 + m_Y: 433 + m_Width: 24 + m_Height: 20 + - m_X: 506 + m_Y: 502 + m_Width: 517 + m_Height: 24 + - m_X: 504 + m_Y: 343 + m_Width: 48 + m_Height: 17 + - m_X: 593 + m_Y: 412 + m_Width: 430 + m_Height: 611 + - m_X: 629 + m_Y: 155 + m_Width: 394 + m_Height: 868 + - m_X: 552 + m_Y: 412 + m_Width: 471 + m_Height: 21 + - m_X: 565 + m_Y: 155 + m_Width: 458 + m_Height: 188 + - m_X: 584 + m_Y: 412 + m_Width: 439 + m_Height: 114 + - m_X: 512 + m_Y: 892 + m_Width: 511 + m_Height: 131 + - m_X: 501 + m_Y: 892 + m_Width: 522 + m_Height: 40 + - m_X: 483 + m_Y: 823 + m_Width: 18 + m_Height: 19 + - m_X: 547 + m_Y: 595 + m_Width: 476 + m_Height: 228 + - m_X: 564 + m_Y: 595 + m_Width: 459 + m_Height: 428 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 10 + m_AtlasRenderMode: 4165 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 37e1b64655a040b4fba44c9e457efac3 + pointSizeSamplingMode: 1 + pointSize: 96 + padding: 10 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 6 + characterSequence: 20-7E,A0,2026 + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &5214492550338462853 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Euclid Circular B SemiBold SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_MipsStripped: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMasterTextureLimit: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + m_PlatformBlob: + image data: 1048576 + _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000030506060504010000000000000000000000000000000000000000000000000000000000000000000000030507070a0a0a0a0a0a0a0a090807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060707070706060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060707070707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b0907030000000000000000000000000000000000000000000000000000020406071011111111111111111111110b0a09060200000000000000000000000000000206080a0b11111111111111111111111111110b0b09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111110e0d0b09050000000000000000000000000000000000000000000000000000000205080a0b1111111111111111111111110f0e0c0905010000000000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000020406070b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b07060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0d070b0f111212110f0c070b0808060300000000000000000000000000000000000000000000000000000004090e111213161616161616161515141312100d090604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c070807060300000000000606060606060606060606060303010000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f1112121313131212110f0c080a0706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f111212131313131212100c080b08060503000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000000000000000000003080d1012121b1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000001070c111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d191917140f0a04000000000000000000000000000000000000000000000001070c111415161d1d1d1d1d1d1d1d1d1d1d1d1a191714100b05000000000000000000000000000000000000000000000000000000000000030507070a070b0f11121212110f0b070a08070503000000000000000000000000000000000000000000000000000000000003080d101212171717171717171717171717171717171312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f14171912161a1c1d1d1c1a1612171413110e0a04020000000000000000000000000000000000000000000001080e14191c1e1f2121212121212121201f1e1d1b1813120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1d1a17121413110e0a0408090a1111111111111111111111110f0e0d0a06010000000000000000000000000000000000000000000000000000000000000000000000000104070b0f11121411161a1c1d1e1e1f1e1e1d1d1a1712151312100d09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070b0f11121411161a1c1d1e1e1f1f1e1e1d1b1713161412110f0b070401000000000000000000000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c040000000000000000000000000000000000000000060d13181b1d1e27292929292929292929292922221f1c17120b040000000000000000040b11171c1f212229292929292929292929292929292322201c18120b040000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f21222929292929292929292929292929292929292929292929292929292929292929292929292929292929292524221f1a140d06000000000000000000000000000000000000000000030b11171b1f21222929292929292929292929292625231f1a150e0700000000000000000000000000000000000000000000000000000305090e1112131611161a1c1d1e1d1c1a1611161313110e0a050200000000000000000000000000000000000000000000000000070d13181b1d1e222222222222222222222222222222221e1e1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a1f222425212528292928252125221f1f1d1915100d080300000000000000000000000000000000000000010911181e2327292a2d2d2d2d2d2d2d2d2c2b2a2927231f1d1a15100a05000000000000000000000000000000000000000000000000000000000000000000000002070c0f14181c1e1e22202427292929282521231f1f1c19150f1315161d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000000000003080c0f11161a1c1d1f2221252829292a2a2a2a2928262123211e1d1b1813110e0a040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11161a1c1d1f2221252829292a2a2a2a2929262224221f1d1c1a1611100d0803000000000000000000000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d040000000000000000000000000000000000000810171d222629293334343434343434343434342e2d2b27221b140c04000000000000040c141b21262a2d2d34343434343434343434343434342e2d2b27221c140d04000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d34343434343434343434343434343434343434343434343434343434343434343434343434343434343431302d29241e160f0600000000000000000000000000000000000000030c141b21262a2c2d34343434343434343434343431302e2a251e170f07000000000000000000000000000000000000000000000004090e1114191c1e1f212421252829292928252124211f1e1c1914100d0904000000000000000000000000000000000000000000000810171d222629292e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2a2927231e171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f161e24292d30312b3033343433302c302e2b2a28241f1b18130d0702000000000000000000000000000000000008111921282e323536383838383838383837373534322d2b28252019150f09020000000000000000000000000000000000000000000000000000000000000001070c12171a1e2327292a2d2b2f3334353433302c2e2b2a28241f1a1e2021292929292929292929292929262623201b150f07000000000000000000000000000000000000000000000000000000000000050a0d12171b1d212528292b2e2b30333435353636353534312c2f2d2a2927231f1d1915100c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d12171b1d212528292b2e2b30333435353636353534312d2f2d2b292825211d1b17130d0b03000000000000000000000000000000000000000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c020000000000000000000000000000000006101820272d3134353e4040404040404040404040393836312b251d140b0200000000010b141c242b3135383940404040404040404040404040403a3936322c251d14080000000000000000000000000000000000000000000000000000000000000000000000010b141c242b313538394040404040404040404040404040404040404040404040404040404040404040404040404040404040403c3b38342e271f160d040000000000000000000000000000000000010b141c242b313538394040404040404040404040403d3c39342e2720170e050000000000000000000000000000000000000000050a0e14191c1e2327292a2d302b303334353433302b2f2d2a2a27241f1c18140e0a050000000000000000000000000000000000000007101820272d313435393939393939393939393939393939393534322d282119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f272e34383b3c353b3f40403f3b363c3a3636332f2926221d16120c05000000000000000000000000000000040e18212a31383d40414444444444444444434241403d3736332f29241f19120a030000000000000000000000000000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a3635332f28252a2c2d34343434343434343434343432312e2a251f181007000000000000000000000000000000000000000000000000000000060b0f15191d2226282b3033343739353b3e404041414141403f3b363b383534322d2a28241f1b17130d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191d2226282b3033343739353b3e404041414141403f3c373b39363433302b2926221d1a150e0b060100000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c1208000000000000000000000000000000040d16202830373c3f414a4b4b4b4b4b4b4b4b4b4b4b4544413b352d251b12080000000007111b242d343b4043454b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251810070000000000000000000000000000000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4847433e372f271e140a000000000000000000000000000000000007111b242d343b4043444b4b4b4b4b4b4b4b4b4b4b4b4847443e3830271e150b01000000000000000000000000000000000004090f15191e2327292e323536393b353b3e4040403e3b353b393635332e2927231e19140f090400000000000000000000000000000000030d17202930373c40414545454545454545454545454545454541403d383129211910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e272f373e4347484a454a4c4c4a4549484542413e3934312d27211c150e06010000000000000000000000000009141e28313a42484c4d505050505050504f4f4e4d4b4743423e39332f29221a140c04000000000000000000000000000000000000000000000000000000060d151b20262c3033383d4041444745494b4c4c4a46484542413e3933303537384040404040404040404040403d3c39352f2820180f05000000000000000000000000000000000000000000000000040910151a1f24262c3134353b3e40424547454a4b4c4d4d4d4c4c4a4648464441403d3736332f2926221d18130d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040910151a1f24262c3134353b3e40424547454a4b4c4d4d4d4d4c4b4648474542403e3b3534312d2725201916110b0400000000000000000000000000000000000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d0300000000000000000000000000010b151e26303940474b4c555757575757575757575757514f4b453e352b22170d020000020c17212b343d454b4f50575757575757575757575757575751504b453e352920170d030000000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f5057575757575757575757575757575757575757575757575757575757575757575757575757575757575753524e4740372e241a0f05000000000000000000000000000000020c17212b343d454b4f5057575757575757575757575754534e4840382e251a100500000000000000000000000000000000070e13181f24282e3235383d4041444748454a4b4c4b4a4549474442413d3835322e28241f18130e0700000000000000000000000000000008131d27303941474b4c515151515151515151515151515151514d4b47413a31292119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242e3740474e5253554f555757554f5553514e4c4842403c37302b251e171109020000000000000000000000030e19232e38424b5257595b5b5b5b5b5b5b5b5a595856514e4d49433e39332b241c150d04000000000000000000000000000000000000000000000000020911161e252b30363b3f42484c4d50534e54575757555054514e4c48423f3b4043444b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281f150b0100000000000000000000000000000000000000000001070e14182025292f33373c3f40454a4c4e51534f5457585859585857555053524f4d4b4742413e3934312d27231d16110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000001070e14182025292f33373c3f40454a4c4e51534f545758585959585856505452504e4b4a45413f3c37342f2724201b140d0803000000000000000000000000000000000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c12070000000000000000000000000007111b252e3740495156586163636363636363636363635c5a554e453b31271c1106000006111c26313b454e555a5c63636363636363636363636363635d5b564e453930271d1309000000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c6363636363636363636363636363636363636363636363636363636363636363636363636363636363635f5d5850473e34291f140900000000000000000000000000000005111b26313b454e555a5c636363636363636363636363605e5851483e342a1f14090000000000000000000000000000010710171d23292f33383d4042484c4d5052544f54575757544f5452504d4c4842403d38332e29231e17100802000000000000000000000000020d18222d3741495156585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5856514a413a31292119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29343e4750585d5f61625f63635f58615f5c5958534c4b47413b352f272119120a020000000000000000000005111c27323d48525b62646767676767676767666564615a5a58534d49433b342d251d150b0200000000000000000000000000000000000000000000040b131921262e353a3f464a4c5257585c5e575e63636360585f5d5957534c4a464a4e5057575757575757575757575755534f4941382f251b11060000000000000000000000000000000000000000050b11161e232a2f34393e40464b4c4f5557595c5e585f6363646464636360595f5d5b5856514e4d49433f3c37312d27211b150e0601000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161e232a2f34393e40464b4c4f5557595c5e585f636364646464636059605e5c5957544f4c4b47403f3a332f2b251e16120c060000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b201509000000000000000000000000071119202b353e47515a61636d6e6e6e6e6e6e6e6e6e6e6e68655e554b41362b1f1409000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e68655f564a41372d23180f050000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b6860584e43382d22170b00000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23170c00000000000000000000000000050b111920272d32393e42484c4d5257595b5e60585f6363635f58605e5b5957524d4c48423e38322d282119120c06000000000000000000000004101b26313c47515a61636868686868686868686868686868686864615a514a413a31292119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d38434e5861686b6c6d696e6e696d6c6a6865625c5856514a453f37322a231b120a0200000000000000000007121e2935404c57626b70727272727272727271716f6b6a65635c58534c453d352e251b1307000000000000000000000000000000000000000000040c141b232a31373e45495055575b6264676a6c686e6f6e696d6b6865625c57555054595b636363636363636363636363605e5951493f352a20150a00000000000000000000000000000000000000060e151b21282e323a3f43494d505658585f6365686a6b686e6f6f70706f6f696c6b696764615a5958534c4b46403c37302b251e1612080300000000000000000000000000000000000000000000000000000000000000000000000000060e151b21282e323a3f43494d505658585f6365686a6b686e6f6f70706f6f6a6d6b696765635f585856514d49433e3a352e26221c160f070200000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b0000000000000000000000060f17212a303a454f58616a6f787a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d22160a00000a16212d38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a746f655a51473c31281e140a000000000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7671685d52473b3024190d0000000000000000000000000000000a15212c38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7772685e53473c3025190e000000000000000000000000060e151b212931373d43494c5257595b626467696b6d686e6f6e686d6c696764625b5857524c48423d383129211c160f070000000000000000000006121d2934404b56616a6f737373737373737373737373737373736f6b615a514a413a312921191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303b47525d68717678797a7a7a7a79787674706c6863615a554f48423a332b231b120900000000000000000007131f2a36414d5964707c7e7e7e7e7e7e7e7e7d7c7b7875716d65635c554e463e352c23180f0600000000000000000000000000000000000000040c141d242c333a42474f54596063676b70737677797a7a7a79787674706c676360585d64676e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d0000000000000000000000000000000000020810161e252b30383d43494d535859606367686e71737577797a7a7b7b7b7b7a79787675726f6b6965635c5856504b47413b352e27221a120d0600000000000000000000000000000000000000000000000000000000000000000000020810161e252b30383d43494d535859606367686e71737577797a7a7b7b7b7b7a7978777573706e686763605a58534b49453e36312c261f17120702000000000000000000000000000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c00000000000000000000030c161f28313a4249545f686f7a8485858585858585858585857f73685c5145392e22170b00000b16222d3945505c67737f85858585858585858585858585857f746a61564b42382e24160d040000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f85858585858585858585858585858585858585858585858585858585858585858585858585858585858581766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737f85858585858585858585858582776b6054483d31261a0f0000000000000000000000070f161e252b303941474b53585b6264686b7073757778797a7a7a7978777572706c6864625b57524b47413a312c261f170f0700000000000000000007121e2935414c58636f7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7b6f6b615a514a413a3129211910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1925313c48535f6b76818485858686858583817f7c78746f6a635f58524b433c332b2319110800000000000000000b16222d3944505c67737e898989898989898989888684817d77716c655e564e463c332820170d030000000000000000000000000000000000030b141c242d353c444a52585f63696e73777b7e8183858586868584827f7c78736e6964646e727a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e00000000000000000000000000000000030a121920272e353b42484c53585c63656a6f72767a7c7f81838485868687878686858382807e7b7875716c6863605956514a453f37322a221c160f070000000000000000000000000000000000000000000000000000000000000000030a121920272e353b42484c53585c63656a6f72767a7c7f81838485868687878786858482817f7c7976736f6a66635d57544e47433c363028221b110c050000000000000000000000000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c0000000000000000000008121c263038424b545d636e78828e949191919191919191918b7f73685c5145392e22170b000006121d2934404b57636e79838f919191919191919191919190857b6f645b52483d32261e140b0100000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a919191919191919191919191919191919191919191919191919191919191919191919191919191918d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a919191919191919191918e82776b6054483d31261a0f00000000000000000000060f171f272e353b444a51565c63656b7074787b7e81828485858685858483807e7c7874706b65625b56514a443b362f2820181008000000000000000006121d2934404b56616a737f8a8b8b8b8b8b8b8b8b8b8b8b8b8b8b837b6f6b615a514a413a3129211910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e79858f9091979791908f8d8b88847f7b746e69625b534c433c332921180e04000000000000000b16222d3944505c67737e8a959595959595959493948f8c88827d736e665f564c443930271d130800000000000000000000000000000000010a131c242d353d454c545b62686e737a7e83878a8d8f90919796918f8d8b88837e79726d67727e85858585858585858585858583776c6055493d32261b0f000000000000000000000000000000040b131b232931373f454a52575d63666c71767a7e8285888a8c8e9094929293929296918f8d8c898684807c78746f6a64615a544f47423b312c261f171008000000000000000000000000000000000000000000000000000000000000040b131b232931373f454a52575d63666c71767a7e8285888a8c8e909492929392929691908e8c8a8885827e7b76716d66635e57534a464038332b211b150e0600000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c00000000000000000008121b222c364049525b646d74808b929ca49c9c9c9c9c9c9c968b7f73685c5145392e22170b000005111c28333e4a545f68727d89929c9c9c9c9c9c9c9c9c9f958c80756c62574c43362e251b110600000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a969c9c9c9c9c9c9c9c9a8e82776b6054483d31261a0f000000000000000000060e171f282f373f454a545a61646c71767c8083878a8c8e909196919590908e8c8a87837f7b76706c64615a544a4640383028201810070000000000000004101b26313c47515a656f737f8a8f9696969696969696969696948f837b6f6b615a514a413a31292119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919c9ca0a09c9c9a9996948f8b857f79706b635c534c433a31281e1409000000000000000b16222d3944505c67737e8a96a1a1a1a1a1a1a0a49d9b98928e867f746f665d544940372d22170c0200000000000000000000000000000007121a242c353d454e555d646b70787e848a8e9396989a9c9ca1a09c9b9997938f8a837e756f727e89919191919191919191918f83776c6055493d32261b0f0000000000000000000000000000040c141c242b333941474f545b62646d71777c81858a8e909696989a9b9ea59e9e9ea69f9c9b999795948f8c88847f7a746f6a635f58534b453c3630282018100900000000000000000000000000000000000000000000000000000000040c141c242b333941474f545b62646d71777c81858a8e909696989a9b9ea59e9e9ea7a09c9b9a989695908d8a85817d78726e68635c555049433b302b251e160f07000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c0000000000000000061019232b313c465059626b727e87919ca2aba8a8a8a8a8a8a2968b7f73685c5145392e22170b0000030f1a25303b454f58636d77828e97a0aba8a8a8a8a8afa69c91867c70645c53473e352b20160c02000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1a8a8a8a8a8a8a59a8e82776b6054483d31261a0f0000000000000000050e161f272f3840474f545d646a6f757c82868b8f9495989a9b9c9fa69f9c9b9a9895948f8b87827c756f6b645d5550484038302920170f06000000000000020d18222d374149555e656f737f8a8f99a0a2a2a2a2a2a2a2a49d948f837b6f6b615a514a413a312921191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8ababa8a7a6a4a49e9b95908b837c716d635c534a41382e231810060000000000000b16222d3944505c67737e8a96a1acacacacacabada8a7a39c96918a7f746d645950463c31261c12070000000000000000000000000000060f18222b343d454e555e656d727c828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e89959c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f00000000000000000000000000040c141d242c343c434a51585f636b70767d82888d9196999c9fa6a4a5a7a9aea9aaaaafaaa8a6a5a3a49d9b98948f8b85807b736e68625c554a4640383029211910080000000000000000000000000000000000000000000000000000040c141d242c343c434a51585f636b70767d82888d9196999c9fa6a4a5a7a9aea9aaaab0aaa8a7a5a3a69f9c9996918d88837e78716d636059534c463b352f271f170f070000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c00000000000000050e172129333b434a556069707c859097a1abb3b4b4b4b4b4ada2968b7f73685c5145392e22170b0000000b16212b353f47545d65707c86919ca6afb9b4b4b4b5aba0978d82766d63574e453a2f261c1208000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb4b4b4b4b1a59a8e82776b6054483d31261a0f00000000000000020c151e272f38404850585f636d727b81878d91979b9da4a3a5a7a8aaafa9a7a7a6a3a49d9b97928d86817b726e6360595049413930281f160c0200000000000008131d273039454e555e656f737f8a8f99a0a9adadadadadada49d948f837b6f6b615a514a413a3129211910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3b6b4b3b2b0ada8a69f9c938f857d716d635b52483d322a20160b0100000000000b16222d3944505c67737e8a96a1adb7b7b8b8b7b7b3b2aca7a09c91877e726a60564b3f362c21160c01000000000000000000000000030d161f28323b444d555e656e737e858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1a8a8a8a8a8a8a69a8f83776c6055493d32261b0f000000000000000000000000030c141d252d353d444c535a61686e747b82888e92999c9fa6a8aaafafb1b3b4b8b5b5b5b9b5b3b2b0afada8a6a49d9b95908c857f79706c655e5550494139312921191008000000000000000000000000000000000000000000000000030c141d252d353d444c535a61686e747b82888e92999c9fa6a8aaafafb1b3b4b8b5b5b5bab5b3b2b1afafa9a7a79f9c99938f89837d756f69635c564a453f3730281f170f0600000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c000000000000020c151f27313a434c555e636f7a838f959fa8b1bac3bfbfbfb9ada2968b7f73685c5145392e22170b00000007111b252e37444c57626c75818d969faab5bec8c4bab0a79c92887d71685e544940362c21170d030000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbcb0a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8bfbfbcb1a59a8e82776b6054483d31261a0f0000000000000007111b252f373f48505960686e757e858d91979ca0a7a8adafb1b2b3b5b9b5b3b2b1afada8a6a29b97918d857e756f696059514941382f261c1208000000000000030d172029353e454e555e656f737f8a8f99a0a9b0b9b9b9b5ada49d948f837b6f6b615a514a413a31292119100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3bfbfbfbdbbb7b4afa9a49d9590867d716b61574b443a30251a0f0500000000000b16222d3944505c67737e8a96a1ababacaeb2b3b7bdbcb7b0aaa19790857a6f63584f453b30251a0f0400000000000000000000000008121d263038434b545d656e737f8790969ca3a9aeb3b6bbbdbfbfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb4b4b4b4b1a69a8f83776c6055493d32261b0f0000000000000000000000020b131c252d353d454d545c636b6f797f858d929a9ca3a8aaafb3b5b9bbbcbebfc2c8c1c9c4c0bfbdbcbab7b3b2ada8a69f9c95908a837c736e6360595149413a31292118100700000000000000000000000000000000000000000000020b131c252d353d454d545c636b6f797f858d929a9ca3a8aaafb3b5b9bbbcbebfc2c8c1c9c4c0bfbebcbbb9b5b3afaaa8a49d9a938f88807a716d665f554f48403830281f160d04000000000000000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c00000000000007121c262f38414a535c656f76818d939da6afb8c1cacbcbc5b9ada2968b7f73685c5145392e22170b000000010b151e27333e48535c646f7b85909ca5aeb8c3cac0b8aba29a8f83786e635950463b31271d13090000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc7bcb0a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000060f18212b353f48505860696f79808990959ca1a8abb0b3b7bbbcbebfc0c3c0bfbebdbab7b3b2aba7a09c95908981796f6a615a514840362c21191108000000000000071018252d353d454e555e656f737f8a8f99a0a9b0b9c0bdb5ada49d948f837b6f6b615a514a413a312921191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8b3bdbec1c7c7c2bfb9b4ada69f9690857b70645d544a3f34291f140a00000000000b16222d3944505c67737e8a969f9f9fa0a2a7a8adb5bbc0bab1a89f958b7f74695f554a3f33281c11050000000000000000000000010c17222c364049535c646e737f8a91979fa6acb4b8bec1c6c9cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfbfbfbdb1a69a8f83776c6055493d32261b0f000000000000000000000009131b242c353e454e555d646d717b828b90969ca2a7acb3b5b9bfc0c3c9c8cacbcdd2ccd3cfcccac9c7c7c2bfbdb7b3afa9a69f9c938f867f766f69615a524a413a312920170f0600000000000000000000000000000000000000000009131b242c353e454e555d646d717b828b90969ca2a7acb3b5b9bfc0c3c9c8cacbcdd2ccd3cfcccbc9c8c9c3c0bfb9b5b3ada8a39d9a918c837d746f635f585049403830261e150b010000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000008121a212c363f48515a636d737f8a919ba4adb6bfc9d1dad0c5b9ada2968b7f73685c5145392e22170b00000000050e16242f39424b56616b74808b959ea9b4bdc7c8bbb3a89d938a7e726960554a41372d23180f0500000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d6dbd4cfcac7c7c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2bcb0a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000030d172028303b454f5860696f79818c909c9fa5abb1b6bac1c2c7c8c7c4c3c2c3c4c6c8c7c2bfbbb8b0aba59f9c918c827a6f6a615950463b312a21180e0400000000000008141d252d353d454e555e656f737f8a8f99a0a9b0b9c0bdb5ada49d948f837b6f6b615a514a413a3129211910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca8afb2b3b7bdc1c6c8c3bdb6afa69e958e82776d64594e42382e24190e03000000000b16222d3944505c67737e8a9494949495979b9da4abb2bbc1b8afa69c90847a6e63574c4034291d12060000000000000000000000040f1b26313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f00000000000000000000061119232c343d454e555e656e727d848e929c9fa6abb2b6bcc0c4c9cbcecbcac7c5c4c3c3c3c3c5c6c9cbcccdcac7c2bfb9b4afa9a39d96918a817a6f6a615b524a413930281f160c0200000000000000000000000000000000000000061119232c343d454e555e656e727d848e929c9fa6abb2b6bcc0c4c9cbcecbcac7c5c4c3c3c3c4c4c6c8cacbcecbc9c4c0bdb7b3aca7a19a948f8780756e686059504940372e251b11070000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000061018222a303b454f58616b717d86919ca2abb4bdc6cfd9e1d0c5b9ada2968b7f73685c5145392e22170b00000000000a151f29323d47515a636f7a84909ba4adb7c1ccc1b7aca39b90847a6f635a51473c31281e140a00000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbd3cbc4bfbcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b0a4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000008131d273039404a555f686e79828d929aa1a9aeb6bac1c5c9c3c0bfbbb9b8b7b7b8babdbec1c6c8c1bab6aea9a19b928e827a6f6960554a453a31281e1409000000000000040c141d252d353d454e555e656f737f8a8f99a0a9b0b9c5bdb5ada49d948f837b6f6b615a514a413a31292019100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919ca2a3a6a8adb3b7bdc4cec6bfb7aea59c92897e72665b52483e33271c1106000000000b16222d3944505c67737f8888888888898b8f949ba2abb6bfbfb4a99e95887d71655a4e43372b2014090000000000000000000006101a232b343f4a56606a707c859097a1abb0b8bfc7c9c3beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f000000000000000000050e17212a333c444d555e656f737e8690959ca3aaafb7bbc1c6cccdcbc8c3c0bebcbab8b8b7b7b8b9bbbdbfc1c4cacccdc8c3bfb9b4aca7a09c918d827b706b615a514941382f261c1208010000000000000000000000000000000000050e17212a333c444d555e656f737e8690959ca3aaafb7bbc1c6cccdcbc8c3c0bebcbab8b8b7b7b8b9babdbfc0c3c8cbcdccc6c1bdb7b3aaa49d97918b81796f69605950473e352b2019110800000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000040d162029323b424a555f696f7b849097a0aab2bbc5cdd7dfdcd0c5b9ada2968b7f73685c5145392e22170b0000000000050f18232d38414a556069737e8a939da8b3bcc8c6bdb4a99e948b7f746a61564b42382e24160d04000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d4cbc2bbb5b1afabababababababababababababababababababababababababa4998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000010c17222d374049545d636e79818d929ba2aab4b8bfc5c7c2bfb9b5b3b0adacababacafb2b3b7bdc0c5c5bfb8b4aaa39c938f83796f635e554a42382e23180f05000000000000040c141d242d353d454e555e656f737f8a8f99a0a8b6bac1bdb5ada49d948f837b6f6b615a514a4139312920191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e7985919696989b9da4a7acb4bcc3ccc7beb6aca39a8e83776c62574c41352a1e13070000000007121e2a35414c58646f7b7d7c7c7c7d7d80838d919ba5aeb8c3b8aea5978b7f74685d51453a2e23170b000000000000000000000b16202a333e49535c636f7a848f969fa8b1bac1c8c7bfb9b5aea9a7a3a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000020c161f27313a444c545e656f737f8791969ea5acb5b9bfc7cccdc8c3bfbeb8b4b3b0aeadacabacacadafb1b4b5babfc1c5cacec8c3bdb7b0aaa29b938e837b706b615a514840362c221a110800000000000000000000000000000000020c161f27313a444c545e656f737f8791969ea5acb5b9bfc7cccdc8c3bfbeb8b4b3b0aeadacabacacadafb1b3b4b9bebfc2c8cdccc6c1bab5ada7a09c918d827a6f6960584f453a302a21180e04000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000010b151e263039424b555e636e79828e959ea7b0bac2cbd5dde7dcd0c5b9ada2968b7f73685c5145392e22170b00000000000009131e28313c465059636e79838f9ba2acb8c1cac2b8aea59c90857b6f645b52483d32261e150b010000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cfc4bbb2aba6a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000004101b26313c465059646d74808c929ba3abb2bac3c8c5beb8b4afa9a7a4a2a09fa0a1a3a6a8adb2b5bbc3c8c3bab3aca39d938d81766f655b52483d32291f150a00000000000000040c141d242d353d454e555e656e737f8a8f99a0abb1b8c1bdb5ada49d948f837b6f6b615a514a41393129201910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d28343f4b57626e79858b8a8b8c8f939a9da3acb3bcc6cfc6bcb3a79c93877c7065594d42362b1f13080000000006121d2934404b56616a6f7171717171727479818d959fa9b4c0bcb0a5998d82766b5f53483c3125190e020000000000000000040f1a252f3a414d58636c75818c949ea6afb8c1cac5beb6afaaa59e9c9894929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f000000000000000007121c262f38424a545d646e737f8a9197a0a7aeb5bcc4c9cfc8c2beb8b4b3aea9a7a5a3a1a0a0a0a1a2a3a6a8abb0b4b6bac1c5cacec7c0bab5aba39c948f847b6f6a615950463b312a21180f0500000000000000000000000000000007121c262f38424a545d646e737f8a9197a0a7aeb5bcc4c9cfc8c2beb8b4b3aea9a7a5a3a1a0a0a0a1a2a3a5a7a9afb3b4b8bec2c7cfccc5bdb8b0aba19b928e827a6f685f5449443a31281e1409000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000007111b252e374149535c646e75808c939ca5aeb7c0cad3dbe5e7dcd0c5b9ada2968b7f73685c5145392e22170b000000000000040e17222c36404a545f68717d89929ca7b0bac5c7beb5a99f958c80756c62574c43372e251b11070000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb5aba19b989494949494949494949494949494949494949494949494949494948d82766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000006121d29343f4b56606a727e89909aa2abb3bbc3cac5bab5aea9a69f9c999695949495979a9da4a6abb5b9bfc7c4bcb4aca39b918a7f736b62574c43392f241a0f0300000000000000040c141d242d353d454e555e656e737f8a8f9ca1a8b1b8c1bdb5ada49d948f837b6f6b615a514a4139312920191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46525d6974807f7f7f8183888f939ca3acb6bfc8ccc1b6aca3978b7f74685d5145372d22170d0100000005101b27323d47515a6164656565656566696f7a85909ca7b3bebdb1a59a8e83776b6054493d32261a0f03000000000000000007121d29343f49545d65717d88919aa4adb7bfc9c5bdb5ada69f9c95908c898786858586888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f00000000000000050e16212c363f48525b636d727e87919ca1a8b0b7bec6cecac5beb8b4aea9a7a59e9c9997969594959596989a9ca0a7a8abb0b6bac1c9cdc9c4bbb4aca49d948f837a6f6960554a443a32281e140a0000000000000000000000000000050e16212c363f48525b636d727e87919ca1a8b0b7bec6cecac5beb8b4aea9a7a59e9c9997969594959596989a9c9fa6a7a9aeb4b8bec4cacec8c1bab6aba29c938d81786e635e544a42382e23180f060000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00071119202b353e47515a626c727e8a919aa3acb5bec8d0dae3ece7dcd0c5b9ada2968b7f73685c5145392e22170b0000000000000008121c26303b454f58636d77828e97a0abb6bfc9c3b9afa69c91867c70645c53473e352b20160c0200000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bcb1a69b918d8888888888888888888888888888888888888888888888888888888881766b5f53483c3125190e0000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000005101c27323d48525b636f7a84909ba1aab2bbc3c9c1bab6aaa59e9b95908d8a8988898a8c8f93999ca2a9afb6bec6c4bcb4aba29c91867c70645c53493e33281d12060000000000000000040c141d242d353d454e555e656e737f8a9197a1a8b1b8c1bdb5ada49d948f837b6f6b615a514a41393129201910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3945505b666f7474737475787d838e929ca6afb9c3cec6bcb1a5998e82776b5a51473c31261b1004000000020d18232d37414a5156585a5a5a5a5a58606975818d98a4afbbbdb2a69b8f84786c61554a3e32271b100400000000000000000814202b36424d58636d77828e9aa1aab5bec7c7bdb4ada49e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f000000000000010b151e27303b465058626b727e869197a1abb1b8c0c8cfc8c1bab6aea9a59e9b9795908d8c8a898989898b8c8f9197999ca0a7abb1b8bdc5cbcfc4bcb4ada59d938e827a6f635e554b42382e24170f06000000000000000000000000010b151e27303b465058626b727e869197a1abb1b8c0c8cfc8c1bab6aea9a59e9b9795908d8c8a8989898a8a8c8e9095989b9ea5a8aeb5bac0c8cecac5bbb3aba39b928c80746e645b52483d322820160d0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c060f17212a303a454f58616a707c86919ca1aab3bcc6cfd8e1eaf4e7dcd0c5b9ada2968b7f73685c5145392e22170b00000000000000030d16212b353f47545d65707c86919ca6afb9c4c9bfb5aba0978d82766d63584f453a30261c120800000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bbafa4988d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7065594d42362b1f13080000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000007121e2935404c57626b75808c959ea9b1bac3cac1b8b1aba19a94908a85817f7e7d7d7e8083888d929c9fa6aeb5bebeb8b4ada89f968d82766c63584d41362a1f1308000000000000000000040c141d242d353d454e555e656e737f879197a1a8b1b8c1bdb5ada49d948f837b6f6b615a514a413931292019100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c37424c565f6669686768696c7179828e959fa9b4c0cbcabfb3a79c9085796a60564b3f34291d12060000000009131d27313941474b4c4e4e4e4e4e505968737f8a96a2adb9beb3a79b9084796d61564a3f33271c10050000000000000005101c27323d47515a66717d89939ca7b2bac5c9c0b7ada49d948f857f7a75726f6e696e6f7174797e848e929ca2abb5bdc7d1d4c9bdb1a69a8f83776c6055493d32261b0f00000000000007111b252e373f4a556069707c859097a0a8b1bac1c9cec6beb8b0aba59e9b95908c888482807e7e7d7d7e7f818386898e91979ca1a8adb4bbc2d0cdc5bdb5ada49c938d81756e645b52483d32281f160d03000000000000000000000007111b252e373f4a556069707c859097a0a8b1bac1c9cec6beb8b0aba59e9b95908c888482807e7e7d7d7e7f808385888c90959b9ea5aab0b7bdc5cdcfc3bcb4aba29a908a7e726b62574c443930271d130800000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0d161f28323a4249545f686f7a848f969faab1bac4ccd6dfe9f1f8e7dcd0c5b9ada2968b7f73685c5145392e22170b000000000000000007111b252e37444c57626c75818c969faab5bec8c4bab0a79c92887d71685f544940362c21170d03000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074717171717171717171717171717171717171717171717171717171706c62574c41352a1e13070000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000040f1b26313c46505964707b86919ca5aeb8c1d0c5bab1a8a19c918c847e7a76737271717275787c828990959ea5aeb6b5aea9a49d9b938f887c71655a4e42372b20140800000000000000000000040c141d242d353d454e555e656e737f879197a1a8b1b8c1bdb5ada49d948f837b6f6b615a514a41393129201910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c464f565b5d5d5c5c5c63696f7b85909ca7b3bfcacbc0b4a99f95867a6f63584c4135291e120700000000040e17202931373d40414242424244505b67727e8995a1acb8beb3a79b9084796d61564a3f33281c10050000000000000007121e2935404b57616b76828e99a3acb6c2cfc4b9afa69d948f847c746f6966646360636465686e727a828d929ca4adb7c2cdd4c9bdb1a69a8f83776c6055493d32261b0f0000000000000b16212b353f47535c636e79838f959fa7b0b8c1cacdc5bdb6aea7a09c94908a84807c79767473727272727375777a7e82868d91979da4aab2b9c5cacdc5bdb4aca39b918a7e736c62574c443830261c120800000000000000000000000b16212b353f47535c636e79838f959fa7b0b8c1cacdc5bdb6aea7a09c94908a84807c7976747372727272737577797d80848a90949ca0a7adb5bdc4ccccc4bbb3aaa19c91867c70645d544940372c22170c01000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231708121c263038424b545d636e78828e949ea6afb9c2cbd4dde2e5e8ede7dcd0c5b9ada2968b7f73685c5145392e22170b0000000000000000010b151e27333e48525b646f7b85909ca5aeb8c2cac0b8aba29a8f83796e635950463b31271d1309000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468656565656565656565656565656565656565656565656565656565625b52483e33271c11060000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000006111d28343f4b56606a75818c97a0abb5bec8c8c0b6aba197918b807a736e696866666667696c70767e8590959ea6afaaa59e9b948f89837d716c63584d41362a1f13080000000000000000000000040c141d242d353d454e555e656e737f879197a1a8b1b8c1bdb5ada49d948f837b6f6b615a514a4139312920191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222c363e464c50525150515359616a75808c97a3afbac9cec3b9afa693877c7064594d42362b1f1308000000000007101920272d32343537373738444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000007131e2a36414d58646f7b86919ca8b4bcc6ccc0b5aa9f968f837b706c6360595857555758585f636a6f79818d949da8b3bbc5cfc9bdb1a69a8f83776c6055493d32261b0f0000000000030f1a25303b454f58636c75808c939da6afb7c0c9cdc5bdb5ada59e97918c847f7a75706e68696766666667686a6a6f72767c81878f939ba1a9b6bac1c9cdc5bcb3aba19c90857c70645e544940362c22170c02000000000000000000030f1a25303b454f58636c75808c939da6afb7c0c9cdc5bdb5ada59e97918c847f7a75706e686967666666676869686e71757a7f848b91979da4acb4bcc4ccccc3bab5aa9f968e82776e645950463c31261b1004000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2317121b222c364049525b646d74808b929ca4adb7c0c9d2d7d6d7dadee3e9dcd0c5b9ada2968b7f73685c5145392e22170b000000000000000000050e16242e39424b56616b74808b949ea9b4bdc6c8bbb3a89d938a7e726960554a41372d23180f050000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5957524b42382e24190e030000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000006121e2935404c58636f7a85919ca7b0bac6cac0b8aca29c91877f756f69635f585b5a5a5b5c62656e727c8490959fa69f9c95908a847e78716d635c53493e33281d1206000000000000000000000000040c141c242d353d454e555e656e737f879197a1a8b1b8c1bdb4ada49d948f837b6f6b615a514a413931292019100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e363c42454645454548515a65717d8894a6afb9c3cec8b6ab9f93887c7165594e42372b1f14080000000000000810171d2327292a2b2b2c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c1005000000000000040f1a25303b454f5868737f8a97a0abb6c1cdc2b8aea59c91867c706b625b55504d4c4a4c4d4f545960696f7a848f9ba2abb6c0cbc9bdb1a69a8f83776c6055493d32261b0f000000000005111c28333e4a545f68717d87919ca3acb6bfc8cec6bdb4ada49d959087807a736e6965635e575c5b5a5b5b5c596063676c70767d838d9199a0abb1b8c1cacdc4bbb5aa9f968e82776e645950463c31261c120700000000000000000005111c28333e4a545f68717d87919ca3acb6bfc8cec6bdb4ada49d959087807a736e6965635e575c5b5a5b5b5c585f6365696e737980868f949da3acb3bcc5c9c1bab6afa69c92897e726a60564b3f34281d1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231719232b313c465059626b727e87919ca2abb5bec7d0cfcccacccfd3d9e0dcd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000a151f29323d47515a636f7a84909ba4adb7c1ccc1b7aca39b90847a6f635a51473c32281f140a0000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4c48423b32291f140a000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a25303b454f5867727e8a969faab8c0cac4bab0a79c928b80746f636059554f4f4e4f5053585d646c707c85909c9c96908b847f79726e68635d544c43392f241a0f0300000000000000000000000000040c141c242d353d454e555e656e737f879197a1a8b1b8c1bdb4ada49d948f837b6f6b615a514a41393129201910080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d252c3237393a3a3938414c57636f7a86969faab5c0cbc2b7ab9f94887d71655a4e43372b20140900000000000000070e13181b1d1e20212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e948a7f736c625a524a4641403f404145495058606a717d88929ca7b2bfc8c9bdb1a69a8f83776c6055493d32261b0f00000000030f1a25303b454f58636e79838f97a1abb4bdc7cfc7beb5ada49d948f857d756f6a63605957544e504f4f4f4f515056585b62646c717a818b8f9ca1a8b1bac5d0cec4b9afa69c928a7e726960554a3f362c21170c0100000000000000030f1a25303b454f58636e79838f97a1abb4bdc7cfc7beb5ada49d948f857d756f6a63605957544e504f4f4f50504f5457585f63696e747d838f939ca3acb4bdbcb8b1aba69f9c9590847a6f63584c4035291e1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23172129333c434a556069707c859097a1abb3bcc5cec9c4c0bfc0c4c9d0d8e0d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000050f18232d37414a556069737e8a939da8b3bcc8c6bdb4a99e948b7f746a61564b42382e24160d0400000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146434343434343434343434343434343434343434343434342413e38322a22180f05000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0005111c28333e4a545f6876828e99a6afb9c8ccc1b5aba0978e82786e635e55504a4544434344494c545b626c727e8992918c85807a736e69635e57544c433b33291f150a000000000000000000000000000000040c141c242d353d454e555e656e737f879197a1a8b1b8c1bdb4ada49d948f837b6f6b615a514a41393129201810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c22282c2e2f2e2d343f4a5560697985909ca8b3bfcac2b7ab9f94887d71655a4e43372b201409000000000000000004090d10121215212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000006121d2934404c57636e7985919ca8b3bfcacabeb3a79b90847a6e635b524a423c36353334353a40485059636c76828e99a5aeb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000005111c28333f4a555f69737f8a939da8b1bac4cdc9c0b7aea59d938f837b716d63605955504b4945444443434445464b4c52575c63696f757f8a9197a1abb6bbc5cdc9bfb7aca39b90847a6f635850463b30251a0f040000000000000005111c28333f4a555f69737f8a939da8b1bac4cdc9c0b7aea59d938f837b716d63605955504b494544444343444545494b4f55585f636c717b838e929ca4adb6b3aca8a19c96908b847f796e63574b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231f27313a434c555e636f7a838f959fa8b1bac3ccc7c0b9b5b3b5b9c0c7d0d9d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000009131e27313c465059636e79838f9aa2abb8c0cac2b8aea59c90857b6f645b52483d33261e150b01000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a373737373737373737373737373737373737373737373635332e29221a110800000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0006121d2934404b57636e7a85909ca7b3bfc9cbbfb4a89c91867c70685f544a46403b363737393e444b525b646e76818d86807b746f6a635f58544e47433c332b22190f0500000000000000000000000000000000040c141c242d343d454e555e656e737f879197a1a8b1b8c1bdb4ada49d948f837b6f6b615a514a4139312920170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181d2023232326313c4650596d7984909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000205060a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000008141f2b37424e5965717d88969faab5c0ccc2b8aea5968b7f746960554b4239312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f0000000006121d2934404c57636e7984909ba3acb8c1cacfc4b9afa79e948f837b706b635d56504a46403e3a3538383838373c3f42484c535960636f737f87919ca1aab4bdc9d0c7bcb4a99e958b7f736960554a3f33281e14090000000000000006121d2934404c57636e7984909ba3acb8c1cacfc4b9afa79e948f837b706b635d56504a46403e3a3538383839353a3e40454a4f555c636a6f7a828e939da5ada8a39c97918d85807a736e685f544a3e33281c1105000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23262f38414a535c656f76818d939da6afb8c1cac5bdb7afaaa8aaafb7c0c9d3d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000040e17222c364049545f68717d89929ca7b0bac4c7beb5a99f958c81756c62574c43372e251b1107000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a27241f1811090100000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0008141f2b36424e5965707c88959fa9b4c0cbc3b9afa6988d81756b62584f453b36302c2c2c2f333a424b545d65707c817c756f6a636059554f49453e36332b231a1209000000000000000000000000000000000000040c141c242d343d454d555e656e737f879197a1a8b1b8c1bdb4ada49d948f837b6f6b615a514a413930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1215171817222c364a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3229221d1d1d20273039434b57636e7984909ca7b3bec9bdb1a69a8f83776c6055493d32261b0f00000006111d28333e49535c67737e8a949ea8b4bdc9d1c8c1b5aa9f9690847b6f6b625b544a46403b36332f2b2c2c2c2d2c3134383d434850555e656e747f8b919ba4adb8c1cacec3b8aea59b90847a6e63574c41382e23180d02000000000006111d28333e49535c67737e8a949ea8b4bdc9d1c8c1b5aa9f9690847b6f6b625b544a46403b36332f2b2c2c2c2d2b3033363b3f454a535a616a6f7a838f959ea49d9b928e87817b746f6a635f584f453b30251a0f03000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e212c363f48515a636d737f8b919ba4adb6bfc9c7bdb4ada69f9c9fa6afb9c4cfd0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000008121c26303a454f58636d77828e97a0abb5bfc9c3b9afa69c91867c70645c53473e352b20160c020000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2320202020202020202020202020202020202020201f1e1c19140f08010000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000a16212d3844505b67727e8a95a6afb9c3cbc0b5aa9f96887d71655b52473e352c26212020242a323b444c57626c7076706b64615a56504a453f3a352e26231b130a0200000000000000000000000000000000000000040c141c242d343d454d555e656e737f879197a1a8b1bac5bdb4ada49d948f837b6f6b615a514941372d22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0b081227333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c6257483f362a2219121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f00000008131f2a36414c58636c78838f9ba5aeb8c4cdcac1b8aca39c91867c706b615a524a433c36302c272420212021212226282e323840464a555e656f75818c939da8b1bac5d0c8beb4a99e948a7e73675b52483d32271c1005000000000008131f2a36414c58636c78838f9ba5aeb8c4cdcac1b8aca39c91867c706b615a524a433c36302c272420212021212025282c30363b43495159606a707c84909c9c948f89827c766f6b636059544f473f352b21160b00000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2b303b454f58616b717d86919ca2abb4bdc7c9bfb6ada49d9691969faab5c0ccd0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000030c16202b353e47545d65707c86919ca6afb9c3c9bfb5aba0978d82766d63584f453a30261c12080000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2317141414141414141414141414141414141414141313110e0a0500000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000c17232e3a46515d6874808b97a2aebac8cabfb3a89c90857a6e63574c42372e251c1612151a222a333e48525b62656a64625b56514a46403b352f2b251e16130b02000000000000000000000000000000000000000000040c141c242d343d454d555e656e737f879197a1abb6c1c5bdb4ada49d948f837b6f6b615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b5248382f261a110806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f0000030e1a25303a454f5865717c88939da8b5bec7cfc5bab0a79c928a7f736c625a514a423a312c26211c191611151513171b1e24282f363b454d555e636f7a838f97a1abb6c0cacdc2b8aea59a8e82776b61574b4035291e120700000000030e1a25303a454f5865717c88939da8b5bec7cfc5bab0a79c928a7f736c625a514a423a312c26211c191611151511161a1c21262c303941495059626b727d8991908a837d77706c64615a56504a453f372e251b110700000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e323b434a555f696f7b849097a0abb2bbc5cec3b9afa69d948f85919ca8b3bfcad0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000007111b252e37434c57626c75818c969faab5bec8c4bab0a79c92887d71685f544940362c21170d0300000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c09090909090909090909090909090909090908070603000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000d1924303b47535e6a75818d98a4afbbc6c8bcb1a5998e8277695f554a3f32261e150c070a111a242e39424b5257595e5957524b47413c36302b25201b140d05020000000000000000000000000000000000000000000000040c141c242d343d454d555e646e737e87919ca8b4bfcbc5bdb4ada49d948f837b6f6a61564b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e534738301f16090100000b16202b3545505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f000005111c28333e49545f6875808c97a4adb7c5ceccc1b6aba0978e82776e655c534a4139312a221d17120e0b060909080c1014171f262c313d454a556069717d87919ca7b0bac4cfc8beb4a89c91867b7064584d41362c21160c0100000005111c28333e49545f6875808c97a4adb7c5ceccc1b6aba0978e82776e655c534a4139312a221d17120e0b06090a070b0e12161c212930384049525b636d75818b847f79726d65625c57514a46403b352e271e150b0100000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3039434b555e636e79828e959ea7b0bac3cbc4bcb5aa9f968f83808b97a3aebac5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000010b151e26333e48525b646f7b85909ca5aeb8c2cac0b8aba29a8f83796e635950463b31271d130900000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000e1925303c48535f6a76818d99a4b0bbc7c7bbafa4988d81766a584f453b3021160d0400010a151f29323b42484c4d534d4c48423c37312c26211c16110b040000000000000000000000000000000000000000000000000000030c141c242d343d454d555e646e737e8a96a1adb8c4cdc5bdb4ada49d948f837b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23180c0100000711212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f000006111d2934404b57636e7984909ba7b3bdc7d5cbbfb4a89c91867c70655e554b423a31292119120d0703000000000001040a0f161c212d313b465059636c75818d97a0abb5c1ccccc1b6aba1978b7f7468584f453b30251a0f0400000006111d2934404b57636e7984909ba7b3bdc7d5cbbfb4a89c91867c70655e554b423a31292119120d070300000000000003070c121820283039424a545d636f7a807a736e68645d58534b47413c36302b251e160e050000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a374149535c646e75808c939ca5aeb8c0cac5bcb3aaa19c90857c7f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000040d16242e39424b56616b747f8b949ea9b4bdc6c8bbb3a89d938a7e726960554a41372d23180f05000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000e1a25313c48545f6b76828e99a5b0bcc8c6baafa3978c8075695d5246352b211207000000050f19222a32393e41424741403d38312d27221d16120c0601000000000000000000000000000000000000000000000000000000060e171f272f373f484f585f686e79818d99a4b0bbc7cbc2bbb2aba19b918d81796e63574b4034291d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23140a0000000a15212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f000008141f2b36424e5965707c88959ea9b4bfcbcdc2b7ada4998d81766c62574e453b3229211911080300000000000000000000060c121c222c364048535c64707b86919ca8b4bec8d0c5bab1a89a8e8277695f554a3f33281c110500000008141f2b36424e5965707c88959ea9b4bfcbcdc2b7ada4998d81766c62574e453b3229211911080300000000000000000000020710182028313a444b56606a6f746f6a635f58544c49433d38312c26211b150e06000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146353f47515a626c737e8a919aa3acb6bec8c7beb5aca39a90897e747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000a141f29323d47515a636f7a84909ba4adb7c1ccc1b7aca39b90847a6f635a51473c32281f140a000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000e1a25313c48545f6b76828e99a5b0bcc8c6baafa3978c8075695d5246362c21160c010000050f19222a32393e41424741403d38312d27221d16120c06010000000000000000000000000000000000000000000000000000060e171f272f373f484f585f696e79818d919ba6b1bdc8c2bbb2aba19b918d81786e685f54493e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e5347382e24190c0200000716222d3945505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f00000b16222e3945505c68737f8a96a5aeb8c3cdcabeb3a89d93887c71655b52483d352a22191008000000000000000000000000000208121c262f38434c57626b76818d99a5aeb8c3cecabfb3a89c90857a6e63574c4034291d12060000000b16222e3945505c68737f8a96a5aeb8c3cdcabeb3a89d93887c71655b52483d352a221910080000000000000000000000000000070f18212a313c47515a606368636059554f48443e39322d28221d16110b0500000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b454f58616a707d86919ca1aab3bcc6c9c0b7aea59c928c8075747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000050f18232d37414a556069737e8a939da8b3bcc8c6bdb4a99e948b7f746a61564b42382e24160d040000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000e1925303c48535f6a76818d99a4b0bbc7c7bbafa4988d81766a584f453b30251a0f0500010a151f29323b42484c4d534d4c48423c37312c26211c16110b04000000000000000000000000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb5c0c2bbb2aba19b918d81786e685f584f453a30251a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b52483d32261c120806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f00040f1a25303b454f586a76828d99a4b0bcc8d2c9bdb2a69b8f83786c63584b42392d241a1209000000000000000000000000000000020c161f28323d48525b66717d89959ea9b4bfcbcbc0b5aa9f96887c71655a4e42372b2014080000040f1a25303b454f586a76828d99a4b0bcc8d2c9bdb2a69b8f83786c63584b42392d241a120900000000000000000000000000000000071119222d3740495156585d5856504a453f37332f29231e17120d07010000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146424a545f686f7b8490969faab2bac4cfc4bab0a79e948e82796e747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000009131e27313b465059636e79838f9aa2abb8c0cac2b8aea59c90857b6f645b52483d33261e150b0100000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000d1924303b47535e6a75818c98a4afbbc6c8bcb1a5998e8277695f554a3f33281e150c070a111a242e39424b5257595f5957524b47413c36302c26201b140d0502000000000000000000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c62574c3f362c2119121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f0005111c28333f4a555f6978848f9ba7b2bec9cfc4bab0a7978b7f74685c53493b32291d140a0100000000000000000000000000000000060f17232e38424c57636e7984909ca7b3becacec4b9afa6968a7f73685c5045392e22160b000005111c28333f4a555f6978848f9ba7b2bec9cfc4bab0a7978b7f74685c53493b32291d140a01000000000000000000000000000000000008131d27303940474b4c514c4b46403b352f27241f18140e080300000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464b545d636e79828e949ea6afb9c2cbc4bdb5aaa09690847b6f68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000040e17222c364049545f68717d88929ca7b0bac4c7beb5aa9f968c81756c62574c43372e251b110700000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000c17232e3a46515d6874808b97a2aebac8cabfb3a89c90857a6e63574c42372e251c1712151a222a333e48525b62656a64625b56514a46403b362f2b251e16130b0200000000000000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3029221d1d1d20273039404b57636e7985909ca7b3bfc9bdb1a69a8f83776c6055493d32261b0f0006121d2934404c57636e7a85919ca8b4bfcbccc0b5aaa096887d71655a4e43392b22190c0400000000000000000000000000000000000009141e28333e4a555f6876828d99a4b0bcc7d3c9baafa3988c8075695e52463b2f24180c010006121d2934404c57636e7a85919ca8b4bfcbccc0b5aaa096887d71655a4e43392b22190c04000000000000000000000000000000000000030d17202830373c3f4146403f3c37302b251e16150f0904000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5149525b646d74808b929ca5aeb7c0c9c6bdb4aaa19c91867d716a68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000008121c26303a454f58636d76828e97a0abb5bfc9c3b9afa69c91867c70645c53473e352b20160c02000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000a16212d3844505b67727e8a95a6afb9c3cbc0b5aa9f96887d71655b52473f352c26212020242a323b424c57626c7076706b64615a56504a453f3a352e26231b130a020000000000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000008141f2b37424e5965717d88969faab5c0ccc3b8aea5968b7f746960554a423a312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f0008131f2a36424d5964707c8797a0abb6c1cccbbfb3a89c91857a6e63574c4034291d120800000000000000000000000000000000000000030f1a25303b454f5868737f8b96a2adb9c4d0c8bcb0a5998e82766b5f54483c31251a0e020008131f2a36424d5964707c8797a0abb6c1cccbbfb3a89c91857a6e63574c4034291d12080000000000000000000000000000000000000000060f1820272d3134353a3534312c26211b150e0a050000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d515059626b727e89909aa2acb5bec7c8beb6aca39b918a7f736c6368747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000020c16202b353e47535d64707c86919ca6afb9c3c9bfb5aba0978d82766d63584f453a30261c1208000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0008141f2b36424e5965707c88959fa9b4c0cbc3b9afa6988d81766b62584f453c36302c2c2c2f333b424b545d65707c817c756f6a636059554f49453e36332b231a120900000000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c080300000000000006121d2934404c57636e7985919ca8b3bfcac8beb3a79b90847a6e635b524a423c36353434353a40485059636c76828e99a6afb9c3c9bdb1a69a8f83776c6055493d32261b0f000915202c37434f5a66717d8994a7b0bac5cfc9bdb2a69b8f83786960554a3f33281d110600000000000000000000000000000000000000000b16212b35434f5a66717d8994a0abb7c3cec9bdb2a69b8f83786c6155493e32271b1004000915202c37434f5a66717d8994a7b0bac5cfc9bdb2a69b8f83786960554a3f33281d1106000000000000000000000000000000000000000000080f171d222629292e292826221d16110c0500000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51556069707c85909ca1aab3bcc5cac1b8aea59d938d81756e655c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000007111b252e37434c57626c75818c969faab5bec7c4bab0a79c92887d71685f544940362c21170d030000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0006111d2934404b57636e7985909ca7b3bfc9c9bfb4a89c91867c70685f544a46403b363738393e444b525b646e76828d86807b746f6a635f58544e47433c332b22190f050000000000000000000000000000060e171f272f383f484f585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f332818130d07000000000005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e958a7f736c625a524a4641403f404145495159606a717d88929ca7b6bfc8c9bdb1a69a8f83776c6055493d32261b0f000a15212d38444f5b66727e8995a0acb8cad4c7bcb0a5998d82766b5850463b30251a0f04000000000000000000000000000000000000000007111f2a36414d5964707b87939eaab5c1cdcabeb2a79b9084796d61564a3f33271c1005000a15212d38444f5b66727e8995a0acb8cad4c7bcb0a5998d82766b5850463b30251a0f0400000000000000000000000000000000000000000000060d13171b1d1e231e1d1b17120d07020000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d555e636f7a838f959fa9b1bac3cfc5bab0a79e958f83796e635e5c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000010b151e26333e48525b646f7b85909ca5aeb8c2cac0b8aba29a8f83796e635950463b31271d13090000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0005111c28333e49545f6876828d99a6afb9c4ccc1b5aba0978e82796e635f55504a4644434344494c545b626c727e8992918c85807a736e69635e57544c433b33291f150a00000000000000000000000000070f171f272f383f4850585f696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a352b26221d17100800000000040f1a25303b454f5868737f8a97a0abb6c1ccc2b8aea59c91867c706b625b55504d4c4a4c4d4f545a61696f7a848f9ba2abb6c6cfc9bdb1a69a8f83776c6055493d32261b0f000a16212d3944505b67737e8a95a1adb8c4cfc7bbafa4988d81756a5e5347362c21170c01000000000000000000000000000000000000000007121e2935414c58636f7b86929da9b4c0cccabfb3a79c9085796d62564b3f34281c1105000a16212d3944505b67737e8a95a1adb8c4cfc7bbafa4988d81756a5e5347362c21170c01000000000000000000000000000000000000000000000003080d1012121712110f0c080300000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5c656f76818d939da6afb9c1cac5bdb6aba09790857b706960555c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000040d16242e38424b56616a747f8b949ea9b4bdc6c8bbb3a89d938a7e726960554a41372d23180f0500000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030e1a25303a454f5867727e8a969faab5c0cac4bab0a79c928b80746f63605955504f4e4f5053585d646c707c85909c9c96908b847f79726e68635d544c43392f241a0f030000000000000000000000070f171f272f383f48505860696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d614f453b34312d2720181007000000010c16212c36414d58646f7b86919ca8b4bcc9c8beb5aa9f968f837b706c6360595857555758585f636a6f79828e949ea8b3bcc5d4c9bdb1a69a8f83776c6055493d32261b0f000b16222e3945505c68737f8a96a1adb9c4d0c6baafa3988c8075695e52473b2f24120700000000000000000000000000000000000000000006121d2934404c57636e7a86919da8b4c0cbcbbfb4a89c91857a6e62574b4034281d1106000b16222e3945505c68737f8a96a1adb9c4d0c6baafa3988c8075695e52473b2f2412070000000000000000000000000000000000000000000000000000010406070c06060401000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685a636d737f8b919ba4adb6bfc9c7bdb4aba29c91877d716b6159505c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000a141f28323c47515a636f7a84909ba3acb7c1ccc1b7aca39b90847a6f635a51473c32281f140a00000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000b16202b35404c58636f7a85919ca7b0bac4cac0b8aca39a908b7f756f696360585b5a5a5b5c63656e727c8490959fa69f9c95908a847e78716d635c53493e33281d120600000000000000000000070f171f272f383f48505860696e79818d929ba2abb2bbc2bbb2aba19b918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727d8995a0acb7beb3a79c908479685f544a41403c37302920170d0300000007121e2935404b57616b76828d99a3acb8c1cac4b9afa69d948f847c746f6966646360636466686e737a828e929ca4adb7c3ccd4c9bdb1a69a8f83776c6055493d32261b0f000b16222e3945505c68737f8a96a2adb9c4d0c6baafa3988c8075695e52463b2f24110700000000000000000000000000000000000000000006121d2934404c57636e7a86919da8b4bfcbcbbfb4a89c91857a6e62574b4034281d1106000b16222e3945505c68737f8a96a2adb9c4d0c6baafa3988c8075695e52463b2f2411070000000000000000000000000000000000000000000000000000010406060a06050300000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468616b717d86919ca2abb4bdc7c9bfb6ada49b928b7f746d635b52515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000050f18232d37414a556069727e8a939da8b3bbc8c6bdb4a99e948b7f746a61564b42382e24160d04000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000007111d28343f4b56606a75818c97a0abb5bec9c8bcb3aaa199908b817a736e696867666667696c71767e8590959ea6afaaa59e9c948f89837d716c63584d41362a1f1308000000000000000000070f171f272f383f48505860696e79818d929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000915202c38434f5a66727d8994a0acb7bfb3a89c91857a6e63574d4c4b47413930271d130800000005101c27323d47515a66717d88929ca8b1bac5c9c0b7ada49d949085807a7572706f696e6f7174797e848e939ca2abb5bec7d3d4c9bdb1a69a8f83776c6055493d32261b0f000a16222d3944505b67737e8a95a1adb8c4cfc6bbafa4988c81756a5e5347352b21160b00000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c0cccabfb3a89c9085796e62564b3f34281c1105000a16222d3944505b67737e8a95a1adb8c4cfc6bbafa4988c81756a5e5347352b21160b00000000000000000000000000000000000000000000000002070c0f11121511100e0b060100000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468696f7b849097a0abb2bbc5cec3b9afa69d948d81786e635d544a515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000009131d27313b465059636e79838f9aa2abb8c0cac2b8aea59c90857b6f645b52483d33261e150b010000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000040f1b26313c46505964707b86919ca5aeb8c1cac3bab1a9a099918c847e7a76737271727275787c828990959ea5aeb6b5aea9a49d9b938f887c71655a4e42372b2014080000000000000000070f171f272f383f48505860696e79818d929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000914202b37434e5a65717d8894a6afb9c0b5aaa096877c70655d585856514941372d22180d020000020d18232e38414d58636d77828e97a1abb6bdc7c7bdb4ada59e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f000a15212d38444f5b67727e8995a0acb8cad4c7bcb0a4998d82766a584f453b30251a0f03000000000000000000000000000000000000000007131e2a36414d5864707b87929eaab5c1cccabeb3a79b9084796d61564a3f33271c1005000a15212d38444f5b67727e8995a0acb8cad4c7bcb0a4998d82766a584f453b30251a0f0300000000000000000000000000000000000000000000050c12171a1d1d211d1c1916110b04000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686e79828e959ea7b0bac3cbc3bcb5aa9f968f837a6f685e544c45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000030d17222c364049545f68717d88929ca7b0bac4c7beb5aa9f968c81756c62574c43372e251b11070000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000010c17222c37404c57626b75808c959ea8b1bac5d0c1b9b0a9a19b94908a85827f7e7d7d7e8083888d929c9fa6aeb5bebeb8b4ada89f968d82766c63584d41362a1f130800000000000000070f171f272f383f48505960696e79818e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000007131e2a36414d5864707b87959fa9b4c0bab0a7978c80756d666463615a51473c31261b100400000009141e28343f49545d65717d87919ca4adb7bfc9c5bdb5aea69f9c95908c898786858587888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f000915202c38434f5a66727d8994a8b1bac5d0c9bdb2a69a8f8378685f544a3e33281c110500000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7c2cec9beb2a69b8f84786c61554a3e32271b1004000915202c38434f5a66727d8994a8b1bac5d0c9bdb2a69a8f8378685f544a3e33281c1105000000000000000000000000000000000000000000060e161c212528292c292724201b140d0a0500000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746e75818c939ca5aeb8c0cac5bcb3aaa19c90857c706a60574e4545515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000008121c26303a454f58636d76828d97a0abb5bfc9c3b9afa69c91867c70645c53473e352b20160c0200000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000008121d26323d48525b636f7a849097a1abb6bbc3c9c1b9b2aaa59e9b96908d8a8988898a8c8f93999ca2a9afb6bec6c4bcb4aba29c91867c70645c53493e33281d1206000000000000070f171f282f383f48505960696e79818e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000006111d2934404b57636e7985909ca7b3bcbfb3a89c91867d7571706f6a61564b4034291d1206000000040e1a252f3a434d58636c75808c949da6afb8c1cac5beb7afaaa59e9c9895929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f0008131f2b36424d5965707c8797a1abb6c1cccabfb3a89c90857a6e63574b4034291d140a00000000000000000000000000000000000000030e19242f3a454e5767737f8a96a1adb9c4d0c8bcb1a5998e82776b5f54483d31251a0e030008131f2b36424d5965707c8797a1abb6c1cccabfb3a89c90857a6e63574b4034291d140a0000000000000000000000000000000000000000050e171f262c3033343834332f2b251e16140f09030000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074737e8a919ba3acb6bec8c7beb5aca39a90897e726c625950473e45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000020c16202b353e47535c64707c86919ca6afb9c3c9bfb5aba0978e82766d63584f453a30261c120800000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000030d18232e38424b56606a727e87919ca2abb3bbc3cec2bab5aea9a69f9c999695949495979a9da4a6abb5b9bfc7c4bcb4aca39b918a7f736b62574c43392f241a0f030000000000070f171f282f384048505960696e79828e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000005101c27333e49545e6876818d99a3acb5bcb5aaa0979186817d7b7b6f63584c4135291e1207000000000b15202a333e49535c636f7a848f969fa8b1bac0c8c7bfb9b5aea9a7a4a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f0006121d2935404c57636f7a86919ca8b4bfcbcbc0b5aa9f96887c7065594e42382e23190e0400000000000000000000000000000000000006101c27333e49545e6876818d98a4b0bbc7d2c6bbafa3988c8175695e52473b2f24180d010006121d2935404c57636f7a86919ca8b4bfcbcbc0b5aa9f96887c7065594e42382e23190e04000000000000000000000000000000000000020c161f272f363b3f4044403e3a352e26241e18130d0802000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747d86919ca1aab4bcc6c9c0b7aea59c928c80746e645b5249403645515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000007111b252e37434c57626c75808c959fa9b5bec7c4bab0a79c92887d71685f544940362c22170d03000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000009141e28313c465059646d74808c929ba3abb2bac3c8c6beb8b4afaaa8a4a2a19fa0a1a3a6a8adb2b5bbc3c8c3bab3aca39d938d81766f655b52483b33291f150a0000000000070f171f282f384048505960696e79828e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b20140900000000000000000000000000030e19242f3a454e5766717d89929ca5acb4b8b0a7a097918c888785796e62564b3f34281c1100000000061019242f39434a556069707c859097a1abb0b8bfc7c9c4beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f0006111d28343f4a5560697984909ba7b2becacec4b9afa6968b7f73685b52483d32281e14090000000000000000000000000000000000050e161e2934404b57636e7984909ba7b2becacfc4bab0a7968b7f73685c5145392e22170b000006111d28343f4a5560697984909ba7b2becacec4b9afa6968b7f73685b52483d32281e140900000000000000000000000000000000000007121c262f383f464a4c4f4b49453e36322e28231d17120c060100000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807b8490969faab2bac4cfc4b9afa79e948e82796e635d544b42383a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000010b151e26323d48525b646f7b85909ca5aeb8c2cac0b8aba29a8f83796e635950463b31271d1309000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000040e17222d374049545d636e79818d929ba2aab4b8bfc5c8c2bfb9b5b3b0adacababacafb2b3b7bdc0c5c5bfb8b4aaa39c938f83796f635e554a42382b22190f0500000000060f171f282f384048505960696e79828e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b20140900000000000000000000000000000b16202b353e4d58636d77828e949ca3a9aeb5b0a7a09c98949085796e62564b3f34281c1100000000000a151f29313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f00040f1a26313b4650596b76828e99a5b0bcc8d3c9bdb1a69a8e83776b62574c41382e23191007000000000000000000000000000000010b151e27313c47515a65717c88949ea9b4bfcbccc1b5aaa097887d71665a4e43372c2015090000040f1a26313b4650596b76828e99a5b0bcc8d3c9bdb1a69a8e83776b62574c41382e2319100700000000000000000000000000000000060f18212c363f485055575b57544e47433d38312d27211c16110b04000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5baaea2978b80828e949ea7afb9c2cbc4bcb5aa9f9690847b6f685f544d443a323a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000040d16242e38424b56616a747f8b949ea8b4bdc6c8bbb3a89d938a7e726960554a41372d23180f050000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000008131d273039444a545f686e79828d929aa1a9aeb6bac1c5c9c3c0bfbcb9b8b7b7b8babdbec1c6c5c1bab6aea9a19b928e827a6f6960554e453a31281a120900000000020c161f282f384048505960696f79828e929ca2abb3bbc2bbb2aba19b918d81786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000006111b25343f49545d646f7b848e939b9ea5aeb7b0aaa8a39c9085796e62564b3f34281c110000000000050f17222c364049535c646e737f8a91979fa6acb4b8bec1c6c8cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfcac9bdb1a69a8f83776c6055493d32261b0f00010c17222c3645515c68747f8b96a6afb9c3cec9beb2a79c93877c70645a51473d322921180f07000000000000000000000000000107111b252e373f4b56616a75808c98a5aeb8c2cdcbbfb3a89c91857a6f63574c4035291d12060000010c17222c3645515c68747f8b96a6afb9c3cec9beb2a79c93877c70645a51473d322921180f070000000000000000000000000000060e172028303b465058606366635e57534c48423c37312c26201b140d050200000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb3a79c90848e929ca5aeb7c0c9c6bcb4aaa19c91867d716a61584f453c342e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000000000000010101010101010101010101000a141e28313c47515a636f7a84909ba3acb7c1ccc1b7aca39b90847a6f635a51473c32281f140a0000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000303030b16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000030d172028303b454f5860696f79818c909c9ea5abb1b6bac1c2c7c8c7c4c3c2c3c4c6c8c7c2c1bab6b0aba59e9c918c827a6f6a615950463d352a21180a020000000008121c262f384048505960696f79828e929ca2abb3b5b5b5b2aba19b918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000000010b1a25303a444b57616b707b828990949ea9b4bab5b3a89c9085796e62564b3f34281c1100000000000008121c263038424b545d656e737f8690959ca3a8aeb2b6bbbdbebfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb9c4c9bdb1a69a8f83776c6055493d32261b0f00000812202b37424e5a65717c88959fa9b4c0cbccc1b6aca3988c81756b61574b443a312820170f070100000000000000000000040b111b212b353f47525b636f7b85909ca8b3bec7d2c8bdb1a69a8e83776960554a3f34281d11060000000812202b37424e5a65717c88959fa9b4c0cbccc1b6aca3988c81756b61574b443a312820170f07010000000000000000000000060e161e273039404a5560696e726e68635c57524b47413b362f2b251e16120a02000000000b16222d3945505c67737f8a96a1adb9c4d0cbbfb4a99e9590959ca3acb5bec7c8beb6aca39b918a7f736c635a51473f352c2e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000000000206090a0b0d0d0d0d0d0d0d0d0d0d0d0d0d0d0f18232d37414a556069727e8a939da7b3bbc8c6bdb4a99e948b7f746a61564b42382e24160d0400000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000206080a0b0f0f0f0f16222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000060f18212b353f47505860696f78808990959ca1a8abb0b3b7bbbcbebfc0c1bfbfbebdbab7b3b1aba7a09c95908981796f6a615a514840362d2419110800000000010c17222c364048505960696f79828e929ca2abaaaaaaaaaaaba19b918d81786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000000000b16202a323d47515a616b70797e84909ba7b2bebfb3a89c9085796e62564b3f34281c11000000000000030d161f28323b444d555e656e737d858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000006121d2934404c57636e7a85909ca7b3bec7d0c6bcb3a89c91857b6f645d544a413830282018110b040100000000000003080d141b202b303b454f58626b74808b969faab5c0ceccc1b7ada4978b8074695950463c31261b0f0400000006121d2934404c57636e7a85909ca7b3bec7d0c6bcb3a89c91857b6f645d544a413830282018110b040100000000000002050b10171f272f374049535c636e797e78716d64625b56514a46403a352e26231b1208000000000b16222d3945505c67737f8a96a1adb9c4d0cec3b8aea59e9c9ea5acb3bcc5cac0b8aea59d938c81756e655c534941372e252e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000000002080d11141617181818181818181818181818181818131d27313b465059636e78838f9aa2abb7c0cac2b8aea59c90857b6f645b52483d33261e150b01000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000001070c111416161b1b1b1b1b222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000000007111b252e373f48505960686e757e858d91979ca0a7a8adafb1b2b3b5b6b4b3b2b1afada8a8a19c97918d857e756f696059514941382f261d14090000000000040f1a26313b46505960696f79828e929ca29e9e9e9e9e9e9ea19b918d81786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b20140900000000000000000000000000000005111c28333e49545f686e757e848f949ea9b4bfb9b3a89c9085796e62564b3f34281c1100000000000000060f17222a343d454d555e656d717b828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000005111c28333f4a555f6975818d98a5aeb8c2cdccc0b5aa9f968d81766d645a514940383028201b15100c08080708080a0d13161e252b2f3c434a545f68707c86919ca6afb9c4cecabeb3a89d93877c7065594d42362c22170c0100000005111c28333f4a555f6975818d98a5aeb8c2cdccc0b5aa9f968d81766d645a514940383028201b15100c0808070808090d10151921272f373f48515a626c748089837d76706c64615a555049453e36332b231810070000000b16222d3945505c67737f8a96a1adb9c4d0d2c8beb6aea9a7a9aeb6bcc3cfc4bab0a79e958f82796e635e554b433930271e2e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00000000040b12171c1f21222424242424242424242424242424242424212c364049545e68717d88929ba7b0bac4c7beb5aa9f968c81756c62574c43372e251b1107000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000040b11171c1f21222626262626262d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000000000010b151e272f38404850585f636d727b81878d91979b9da4a3a5a7a8aaaba8a7a7a6a3a49d9b97918d86817b726e6360595049413930281f160c04000000000006111d28343f4a5560696f79828e929292929292929292929292918d81786e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000005101c27323d48525b636e7880898f949ea5aeb8b6afa9a79c9085796e62564b3f34281c11000000000000000007111a242c343d454e555d636b70787e848a8e9395989a9c9ca09f9c9b9997938f8a837e756f727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000030f1a25303b454f5866717d88949ea9b4bec8cfc4b9afa69b91897e726b615950484039302b251e1b17131413131415191d22262e353a444c545d636e79828e96a0aab7bfc9cec3b9afa69a8f83786c62574c4135261c120800000000030f1a25303b454f5866717d88949ea9b4bec8cfc4b9afa69b91897e726b615950484039302b251e1b17131413131413181b20252931383f474f58606a707c86918f88827c756f6a636059544e47433c332920170d0300000b16222d3945505c67737f8a96a1adb9c4d0d8cfc6beb8b4b3b4b8bec6ccc5bdb5aba09790847b6f6960554d453b322920222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000000040c141b22272b2d2e303030303030303030303030303030303030302f3a454e57636d76828d97a0aab5bfc8c3b9afa69c91867c70645c53473e352b20160c020000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d323232323232323944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000000000050e161f272f3840474f545d646a6f757c81868b8f949598999b9c9fa19c9c9b9a9895948f8b86827c756f6b645d5550484038302920170f0600000000000006121d2935404c57636f7a8287878787878787878787878787878781786e685f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000007121e2935404b57616b747f8b919b9ea4adb5b2aba69f9c999085796e62564b3f34281c110000000000000000010a131c242d343d454c545b62686e737a7e83878a8d8e90919796918f8d8b87837e79726d67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000b16212b35404b57636e7984909ba5aeb8c3cec9c0b7aba29c90857b6f6a60595049423a352e292622201f1f1f1f2124272c31363e4549545d646e747f8b929ca7b0bac7d0cbc0b4a99f958b7f73685b52483e3328160c0300000000000b16212b35404b57636e7984909ba5aeb8c3cec9c0b7aba29c90857b6f6a60595049423a352e292622201f1f1f20202327292f343a414850585f696f7a838f979a928d86807b746f69635e57534c433930271d130800000b16222d3945505c67737f8a96a1adb9c4d0dfd6cfc8c3bfbebfc3c8cfc7bdb4aba29c91867d716b615850463d342b2218222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0000020b141d252b313638393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b353e47535c64707c86919ca6afb9c3c9bfb5aba0978e82766d63584f453a30261c12080000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000010b141c242b313538393d3d3d3d3d3d3d3d44505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000000000060e171f282f373e4549545a61646c70767c8083878a8c8e8f91969791908f8e8c8a87837f7b76706c64615a544a4640383028201810070000000000000006121d2935404c57636f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786e685f584f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000007131e2a36414d5864707b86919ca1a8adb5b3aba29b95908d8c85796e62564b3f34281c11000000000000000000030b141c242d343c444a52575e63696e73777b7e8183858586868584827f7c78736e696467727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000007121c28333e49545f68737f8b959ea9b4bdc7d0c7bbb4a99e958f837a6f6960595249453e3734312d2b2b2a2a2b2c2f33373c41474e545d646d727e87919ca3acb7c0c9cec3b9afa69c90857a6f63584c42392e24190600000000000007121c28333e49545f68737f8b959ea9b4bdc7d0c7bbb4a99e958f837a6f6960595249453e3734312d2b2b2a2b2b2c2d32343a3e444a515860686e79828e949da29c97918c857f7a726e68635c534941372d22180d02000b16222d3945505c67737f8a96a1adb9c4d0dbdfd8d2cecbcacbced2c9bfb6ada49b918b7f736d635a51483f362d241a17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000008121b252d353b41444547474747474747474747474747474747474747474747474c57626b75808c959fa9b4bec7c4bab0a79c92887d71685f544940362c22170d0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000007111b242d343b404345494949494949494949505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000000000000000060f171f262e353a444a51565c62656b7074787b7e81828485858685858483807e7c7874706b64625b56514a443b362f281f181008000000000000000006111d28343f4a5560696f707070707070707070707070707070706e685f584f473e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000004101b26313c47515a6975808c96a0aab4b7b6aca39b918d8582807f74685d51453a2e23170b00000000000000000000030c141c242c333a42474e54586063676b70737577797a7a7a79787674706c6763605867727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000030e1a25303a454f58636f7a84909ca4adb7c2cdcec3b8aea59d938e827a6f6a625b544f47433f3c37373636363738393e40464b52575e636d727d869197a1abb3bcc7d0c8c1b5aa9f968b80746a60564b3f32291f140a000000000000030e1a25303a454f58636f7a84909ca4adb7c2cdcec3b8aea59d938e827a6f6a625b544f47433f3c37373636363737373d4043494d545a61696e79818d929ca4aba7a09c95908b847e78716d635a51473c31261b1004000b16222d3945505c67737f8a96a1adb9c4d0dbe8e2ddd9d6d6d6d4cec3b9afa69d938d81766f655c534a41382f261c1417222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b00020d17222b353d454b4f51525252525252525252525252525252525252525252525252525b636f7b85909ca5aeb8c2cac0b8aba29a8f83796e635950463b31271d130900000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000020c17212b343d454b4f50555555555555555555555c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000000000000000070f161e252b303941474b53585b6264686b7072757778797a7a7a7978777572706c6864625b57524b47413a312c261f170f07000000000000000000040f1b26313c465059606364646464646464646464646464646464635f584f473e372e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000006121d2934404b56616a78848f9ba7b0babdb2a79c928d817a7675746f655b5044392d22160b0000000000000000000000040c141b232a31363e45495055575b6164676a6c686e6f6e696d6b6865625c57555b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000b16202b353e4a556069747f8b949da8b3bbc5cec8bfb6ada49c928e827a706c635f58534c4b464443424142424345494c50565b61686e747e8691969fa8b1bac4cccac1b8ada49c90857b6f635950463c31261b1004000000000000000b16202b353e4a556069747f8b949da8b3bbc5cec8bfb6ada49c928e827a706c635f58534c4b464443424142424345474b4c53585d646b6f79818d919ba3acb4b0aaa69f9c94908a837d716a61564b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0dbe7ece7e4e2ded6ccc3bcb5a99f958f837a6f635e554c433a31271f160c17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0006111c27313b454e555a5c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616a747f8b949ea8b4c0cac8bbb3a89d938a7e726960554a41372d23180d02000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c606060606060606060606067737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000000000000000060d151b202931373d43494c5257595b626467696b6d686e6f6e686d6c696764625b5857524c48423d383129211c160f0700000000000000000000010c17222c3640495055575858585858585858585858585858585857544f473e372e261e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b2014090000000000000000000000000007121e2935414c58636f7b86949da8b7c0bab0a79a8e82786f6a6968655f564c41362b201509000000000000000000000000040b131921262e353a3f464a4c5257585b5e575e6363635f585f5d5957534c505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000007111b25313c465059636f7a848f9ba2abb5bec8cfc6bdb4aca39c938e837c736e68635d585650504e4e4d4d4e4f5153585960636b70787f8691969fa7afb8c1cacfc5bab0a79d938b7f736a61564940372c22170c010000000000000007111b25313c465059636f7a848f9ba2abb5bec8cfc6bdb4aca39c938e837c736e68635d585650504e4e4d4d4e4f505156585c63666e727b828d929ba1abb3bcbab5afa9a59e9b938f857b6f63584c4135291e1207000b16222d3945505c67737f8a96a1adb9c4d0dbe7f7f3e9e0d8cec5bcb3aaa19c90857c706a60564e453c332921170e0b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b0009141f2b36414b555e65686a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6e7a84909ba7b0bac4ccc1b7aca39b90847a6f635a51473c32261b1005000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676c6c6c6c6c6c6c6c6c6c6c6c737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000000000000000000000040b111920272d32393e42484c4d5257595b5e60585f6363635f58605e5b5957524d4c48423e38322d282119120c0600000000000000000000000008121c26303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b49453e372e261e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000814202b37424e5965717c8893a4adb7c1b6aba097897d716860595d5b564e453c32271c110600000000000000000000000000020911161e252b2f363b3f41484b4d50534e54575757554f53514e4c4844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000010b17222c36404a556069727d89919ba4adb7c0cacdc4bcb3aca39c948f857f79716d676360595b5a595959595b5c5c62656a6f747b828b91979fa7afb7c0c9cec5bdb6aba0978f83796e635a51473930271d13080000000000000000010b17222c36404a556069727d89919ba4adb7c0cacdc4bcb3aca39c948f857f79716d676360595b5a5959595a5a5c5a6164676d71777e858e929ba2abb2bbc3c4bfb9b4aea79c938a7f736a61564b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0dbe7f8ede3d9d0c7beb5aca29a90897e726c625950463e352b231910060b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000a16212d38444f5a656f737575757575757575757575757575757575757575757575757575757575757e8997a0aab5c1ccc6bdb4a99e948b7f746a61564b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000a16212d38434f5a656e73777777777777777777777777777f8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000000000000000000000010710171d23292f33383d4042484c4d5052544f54575757544f5452504d4c4842403d38332e28231e1710080200000000000000000000000000030c161f2830363c3f4041414141414141414141414141414141403e3a352e261e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000915202c37434f5a66717d8994a0abb7bfb4a89c91857a6f63585051504c453e352c22180d03000000000000000000000000000000050d141b20262c3033383d4041444745494b4c4c4a45484542413e44505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000008121c26313b465059636d76818d949ea7b0bac4cfccc3bcb3aca49d96908a837d77736f6a6967656564646566686a6c70757a7f858e929ca0a7afb7c0c7cec6bdb5aba29c91877d71685f554941372820160d0300000000000000000008121c26313b465059636d76818d949ea7b0bac4cfccc3bcb3aca49d96908a837d77736f6a6967656564646566676a6b6f73777d828990959ca3abb2bbc2cbcfc3bcb5aba0978e83786e635a51473c31261b1004000b16222d3945505c67737f8a96a1adb9c4d0dbe7ede5ded3c9c0b7aea59c928b80746d645b524940362d251b1209000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000b17222e3945515c68737f8181818181818181818181818181818181818181818181818181818181818186919ca8b3bfcbcdc2b8aea59c90857b6f64584c41352a1e1207000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8383838383838383838383838384909ba7b2bec9c8bcb1a59a8e82776b6054483d31261a0f00000000000000000000000000000000070e13181f24282e3235383d4041444748454a4b4c4b4a4549464442413d3835322e28241f18130e0700000000000000000000000000000000060f171f262c313435363636363636363636363636363636363433302b251e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38434f5b66727d8995a0acb7bfb3a79c908579696055474544413c352d251c12080000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a36353844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000030c17212c364048545d636f7a848f96a0aab5b9c2caccc4bcb4ada69f9c938e88837e7a7774737170707070727376797c80858b90969ca2abb0b8c0c7cfc6beb5ada49c928b7f746d63584f45393027180f0600000000000000000000030c17212c364048545d636f7a848f96a0aab5b9c2caccc4bcb4ada69f9c938e88837e7a7774737170707071717375777b7f83888e929c9fa6acb3bbc3cbccc5bcb3aaa19c91867c70685f544941372d22180d02000b16222d3945505c67737f8a96a1adb9c4d0dbe7e7ddd4cfc4b9afa69e948e82796e635d544b423830261d140b02000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9197a0aab5c1ccd2c7beb5aa9f968c8075695e52473b2f24180d000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000006121d2935404c57636e7a838f8f8f8f8f8f8f8f8f8f8f8f90949ea8b4bfcac8bcb1a59a8e82776b6054483d31261a0f000000000000000000000000000000000004090f15191e2327292e323536383b353b3e4040403e3b353b383635322e2927231e19140f0904000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825201b150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d595046373936322c251d150c0200000000000000000000000000000000000001060c12171a1e2327292a2d2b2f3334353433302c2e2b2d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000008121c262f38444b56606a717d86919ca0a9b1bac2cfccc5bdb6afaaa39c9a938e8a8683807e7d7c7b7c7c7d7f8184888c90959c9fa6abb5bac0c8cec6beb6aea59d948e82786e635c53483f352920170700000000000000000000000008121c262f38444b56606a717d86919ca0a9b1bac2cfccc5bdb6afaaa39c9a938e8a8683807e7d7c7b7c7c7d7f8183868a8e939a9ca3a9afb6bcc4cbcbc4bcb4aca39b918b7f736c62584f453930271d130800000b16222d3945505c67737f8a96a1adb9c4d0dbe9dfd6cdc4bcb5aa9f9690847b6f685f544d443a32281f160c0400000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e9898989898989898989898989898989898989898989898989898989898989ca0a7b0bac4cfd7cec3b9afa69a8e82776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000006111d28333f4a556069707c85909a9a9a9a9a9a9a9a9a9a9b9ea5aeb8c2cdc8bcb1a59a8e82776b6054483d31261a0f00000000000000000000000000000000000000050a0e14191c1e2327292a2d2f2b303334353433302b2f2d2a2a27241e1c18140e0a05000000000000000000000000000000000000000000060c12171b1d1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1c1a16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a36332b27221c150d0400000000000000000000000000000000000000000002070c0f14181c1e1e2220242729292928252123212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000020c161f28313c47515a636c737f8a9099a1aab1b9c4c9cdc7bfb9b5aca7a39c9a97918e8c8a8887878788898b8d9094979c9fa6aaafb6bbc4cacdc5beb6aea69e958f837b6f685f544c43372f25181007000000000000000000000000020c161f28313c47515a636c737f8a9099a1aab1b9c4c9cdc7bfb9b5aca7a39c9a97918e8c8a8887878788898a8c8f91979a9ca3a7acb4b9bfc6cccdc3bbb3aca49c928c81756f655c53473e352920170d0300000b16222d3945505c67737f8a96a1adb9c4d0dbe1d8cfc6bcb3aaa19c91867d706a61584f453c342a21180f060000000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a8aab0b7c0cad4ddd3c9bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000040f1a25303b465059626b727e8a919ba4a6a6a6a6a6a6a6a7a8aeb5bec7d1c8bcb1a59a8e82776b6054483d31261a0f00000000000000000000000000000000000000000004090e1114191c1e1f212421252829292928252124211f1e1c1914100d090400000000000000000000000000000000000000000000000003080c0f11121313131313131313131313131313131311110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c18120c040000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1c1a1612212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000060f17222d374049535c656e747f8b919aa1a9b5b9c0c7cec9c3bcb6b3aca7a7a09c9a979594939393939496989b9ea5a7a9afb5b9bfc7cfcdc4bcb5ada59e9590847c706a61584f453b33271e15080000000000000000000000000000060f17222d374049535c656e747f8b919aa1a9b5b9c0c7cec9c3bcb6b3aca7a7a09c9a979594939393949496989a9ca0a7a7acb2b6bcc3c8cec7c2bab2aba39c938e82796e635e554b42372e251810070000000b16222d3945505c67737f8a96a1adb9c4d0dbdad1c8beb5aca39a918a7e736c625a51473f352c231a1107000000000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5afafafafafafafafafafafafafafafafafafafafafafafafafafafafb3b5bac0c8d0dae0d4c8bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000010c17212c363f48525b646e75818d939da6afb1b1b1b1b1b2b4b8bec5ced4c8bcb1a59a8e82776b6054483d31261a0f00000000000000000000000000000000000000000000000305090e1112131611161a1c1d1e1d1c1a1611161313110e0a050200000000000000000000000000000000000000000000000000000000010406060707070707070707070707070707070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c0d08020000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000008131d273039434b555e666f75808c9099a0aaafb7bdc5cccec6c1bcb6b3b0aaa8a6a3a19f9f9e9e9fa0a2a4a7a9aeb3b4b9bfc3c9cfc8c2bab3aca49e9590857c706b625a51473e352b22160e0500000000000000000000000000000008131d273039434b555e666f75808c9099a0aaafb7bdc5cccec6c1bcb6b3b0aaa8a6a3a19f9f9e9e9fa0a1a4a6a8abb0b2b6bcc1c6cecdc5beb8b4aaa29b928e837a6f695f554e453b32261e1508000000000b16222d3945505c67737f8a96a1adb9c4d0ded4cac0b8aea59c938c80756e645c534941372e251c130901000000000b17222e3a45515c68747f8b96a2aeb9c5d0c5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5b1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfc1c4cad0d8e1d8d4c8bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000007121c262f38424b545e636f7a838f969faab5bbbdbdbdbebfc2c7ced6d4c8bcb1a59a8e82776b6054483d31261a0f0000000000000000000000000000000000000000000000000000030507070a070b0f11121212110f0b070a0807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000030506060605040a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000030d172028323b454d565f636e78808b909c9fa6adb4bbc1c7cdccc6c1c0bab5b3b1aeadabaaaaaaaaacadb0b2b4b8bec0c3c8cecac4beb8b4aaa39c948f847d706c625b524941372e251b120600000000000000000000000000000000030d172028323b454d565f636e78808b909c9fa6adb4bbc1c7cdccc6c1c0bab5b3b1aeadabaaaaaaababadafb1b4b6bac1c1c6cccdc7c2bbb5aea9a19a918d827a6f6a61584f453e352a22160d04000000000b16222d3945505c67737f8a96a1adb9c4cdcdcfc4bab0a79e958e82796e635e554b433930271e150b0300000000000b17222e3a45515c68747f8b96a2aeb9c5cdc5b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5b1bcc6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6cbcccfd4cdcdcdcdcdc8bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4cdc5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000020c161f27323a444a556069707c85909ca2abb5bdc7c9c9cacdd1cdcdcdc8bcb1a59a8e82776b6054483d31261a0f000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000060f18222b343d4649545e686e757f8a91969da4aab3b7bdc2c7cccccac4c1bfbdbab8b7b6b5b6b6b7b9bbbebfc2c8cbcecac5c0bab5aea9a19a938e847c706c625c534a423930261e150a020000000000000000000000000000000000060f18222b343d4649545e686e757f8a91969da4aab3b7bdc2c7cccccac4c1bfbdbab8b7b6b5b6b6b7b9bbbdbfc1c5caccccc7c2bdb7b3aaa59e9b908c81796f6a615a51483f352d251a110600000000000b16222d3945505c67737f8a96a1adb9c1c1c1c5bdb5aba09790847b6f695f554d443b322920160e050000000000000b17222e3a45515c68747f8b96a2aeb9c1c1c1b9ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5b1bcc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c1c1c1b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000050f17212a313c465059626c737f8a919ba4adb7c0c9c1c1c1c1c1c1c1c1bcb1a59a8e82776b6054483d31261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becac2b7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000008121a242d2f3a454e575e636f747e868f949ba1a8adb4b7bec1c6cacdcccbc8c6c4c2c1c1c1c2c3c5c7cacbcdccc9c4c1bab6b0aba59e9b908c827b706b625c534b423a312920160d040000000000000000000000000000000000000008121a242d2f3a454e575e636f747e868f949ba1a8adb4b7bec1c6cacdcccbc8c6c4c2c1c1c1c2c3c4c6c9cbcccccac5c1bdb7b3ada8a19b94908880786e69605a514940372f251d140a0100000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5b4aba29c91867d716b61584f453d342b22181006000000000000000b17222e3a45515c68747f8b96a2aeb5b5b5b5b5ada2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb5b5b5b5b5aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000071119222c364049525b656e76818d949da7b0bab5b5b5b5b5b5b5b5b5b5b1a59a8e82776b6054483d31261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608080b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2bebfbfb7ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000010a141c202b353e474e545f656e727c838d919b9da4a8adb3b7bdbfc2c7c8cacbcdd2cdcccdd3cfcccbc9c9c4c0bfb9b5b1aba7a09c95908980796f6b625b534b433b322a211810060000000000000000000000000000000000000000010a141c202b353e474e545f656e727c838d919b9da4a8adb3b7bdbfc2c7c8cacbcdd2cdcccdd4d0cccbc9cac5c1bfbab6b4ada8a49d9b918d847d756e6860595149403930271e150c040000000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaada49b918b7f736d635a51483f362d241a120800000000000000000b17222e3a45515c68747f8b96a2aaaaaaaaaaaaaaa2968b7f73685c5145392e22170b000e1a26313d48545f6b77828e99a5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaa2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000108121c263038424b555e636f7a838f96a0aaaaaaaaaaaaaaaaaaaaaaaaaaa59a8e82776b6054483d31261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113141717171717171717171717171717171612110f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2b4b4b4b4ab9f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000306111b252e363e4549565e646c707a81888f939b9ea4a8adb2b3b7bbbdbebfc3c8c2c3c2c9c4c0bfbebcbab5b3afaaa8a19c97918c847e756e69615a524b433b322a22191108000000000000000000000000000000000000000000000306111b252e363e4549565e646c707a81888f939b9ea4a8adb2b3b7bbbdbebfc3c8c2c3c3cac5c1bfbebcbab6b4b1aba8a49d9b938f89817a716d635f5850484039302820170e05000000000000000b16222d3945505c67737f8a969e9e9e9e9e9e9ea69d938d81766f655c534a41382f261c140a0100000000000000000b17222e3a45515c68747f8b969e9e9e9e9e9e9e9e9e968b7f73685c5145392e22170b000e1a26313d48545f6b77828e999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9a8e83776c6054493d32261a0f000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000030c161f28323b454b56606a707c86919ca29e9e9e9e9e9e9e9e9e9e9e9e9e9a8e82776b6054483d31261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f15191d1f1f222222222222222222222222222222221d1c1a16120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7a8a8a8a8a8a89f94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000010b141e262e353a454d555b626a6f757d838a8f949a9da4a7a8adafb1b3b4b8b6b7b7b7b6bab5b3b2b0b0aaa8a69f9c97918d86807a726d635f58514a423a322b221a1109000000000000000000000000000000000000000000000000010b141e262e353a454d555b626a6f757d838a8f949a9da4a7a8adafb1b3b4b8b6b7b7b7b7bab6b4b2b0b0aba8a8a19c99948f8a837d756f6a635d544f473f3830282018100600000000000000000b16222d3945505c67737f8a939393939393939393958f837a6f635e554c433a31271f150c030000000000000000000b17222e3a45515c68747f8b93939393939393939393938b7f73685c5145392e22170b000e1a26313d48545f6b77828e93939393939393939393939393939393939393939393939393939393939393939393939393939393939393938e83776c6054493d32261a0f000b16222d3945505c67737f8a93939393939393939393938b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000060f17222a313c465059626c737f8a929393939393939393939393939393938e82776b6054483d31261a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d292825211c150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909b9c9c9c9c9c9c9c9c94887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000040d161e252b2f3d444b525960636d71797f848a8f93979b9da4a3a5a7a9aeaaababababb0aaa8a6a5a7a09c9996908d86817c756f6a645d554f484139322a221a120a0100000000000000000000000000000000000000000000000000040d161e252b2f3d444b525960636d71797f848a8f93979b9da4a3a5a7a9aeaaababababb1aba8a7a5a7a09c9a97918e89837e79716d6360595449453e372f27201810080000000000000000000b16222d3945505c67737f8787878787878787878787857c706960554e453c332921170e05000000000000000000000b17222e3a45515c68747f878787878787878787878787877f73685c5145392e22170b000e1a26313d48545f6b77828787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878783776c6054493d32261a0f000b16222d3945505c67737f878787878787878787878787878074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000007111a222c374049535c656f7681878787878787878787878787878787878782776b6054483d31261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a22292f333636393939393939393939393939393939393433302b251e170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d78849091919191919191919191887d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8bfbfbdb1a69a8f83776c6055493d32261b0f0000000000000000000000000000050d141b202c343b424950565c63686e73797e83878b8f9495989a9b9ea59f9fa0a09fa7a09c9b999796918e8a85817c76706c636059544a453f3731292119120a01000000000000000000000000000000000000000000000000000000050d141b202c343b424950565c63686e73797e83878b8f9495989a9b9ea59f9fa0a09fa8a19c9b999797918e8b86827e79736e68635d565049433a352e261f170f080000000000000000000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7b706b625950463e352b23191006000000000000000000000007121e2935414c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e12070007131e2a35414d58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7064584d41362a1e13070007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000108121d263038434b555e636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41362a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b32393e414245454545454545454545454545454545403f3b352f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333f4a56616d78848585858585858585858585857d71655a4e43372b201409000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb4b4b4b4b1a69a8f83776c6055493d32261b0f000000000000000000000000000000040b111c242a323840464a53585f63686e72787c808487898c8e90959393949494949396918f8d8b8885827e7a75706c65625c565049443b352f2720191109010000000000000000000000000000000000000000000000000000000000040b111c242a323840464a53585f63686e72787c808487898c8e9095939394949494939791908e8c8986837f7b77726e68635f58544b464039302b251e160f07000000000000000000000006121d29343f4b56606a6f70707070707070707070706f6b625b524940362d251b120800000000000000000000000006121d29343f4b56616a6f707070707070707070707070706f6a61564b3f34291d12060007121e2935404b57616b6f70707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706b61574b4035291e12070006121d29343f4b56606a6f707070707070707070707070706f6a61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000030d162028323b454a5560696f70707070707070707070707070707070706f6b61574b4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b43494c4e515151515151515151515151515151504c4a453f372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e49545f6a74787a7a7a7a7a7a7a7a7a7a7a7a716d63584d42362b1f1408000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a8a8a8a8a8a8a69a8f83776c6055493d32261b0f000000000000000000000000000000000106141a222830363c43484f55585f63676c7074787b7e8183848687888889898887878584827f7d7a77726f6a64625b57534b464039302b251e17100801000000000000000000000000000000000000000000000000000000000000000106141a222830363c43484f55585f63676c7074787b7e818384868788888989888887858482807d7b7774706b66635f58544f47443c373028201b150d0600000000000000000000000004101b26313c4650596063646464646464646464646464615a524b423830261d140a0200000000000000000000000004101b26313c47515a61636464646464646464646464646463615a51473c31261b10040005101c27323d47515a61646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464615b52483d32271c10050004101b26313c46505960636464646464646464646464646463615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b313b4650596063646464646464646464646464646464646464615a51473d32271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434b5358595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c57554f483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1924303b45505a636a6d6e6e6e6e6e6e6e6e6e6e6e6e65635c53493e33281d1206000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89959c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f0000000000000000000000000000000000030a11181f262c31373f454a4f55575b6264696b6f727577797a7c7c7d7d7d7c7c7b7a787674716e696763605957524c48423c373028211c150e0600000000000000000000000000000000000000000000000000000000000000000000030a11181f262c31373f454a4f55575b6264696b6f727577797a7c7c7d7d7d7d7c7b7a787674726f6a6864615b57544f4a453f37312c272018110b0400000000000000000000000000010c17222d37404950565859595959595959595959595856514a423a32281f160c0400000000000000000000000000020d18222d374049515658595959595959595959595959595856514940372d22180d0200020d18232d38414a515758595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595857524a41382e23180d0200010c17222d374049505658595959595959595959595959595856514941372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000007121a222c36404850555759595959595959595959595959595959595857514a41382e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c626568686868686868686868686868686867635f584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c36404a535a5f616363636363636363636363635a58534c43392f251a0f04000000000000000000000000000a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89919191919191919191918f83776c6055493d32261b0f00000000000000000000000000000000000001070f161d22272f353b3f454a4c5257595a616467696b696f70717172717170706e686b68656360595856504c48423e39312c272018120c0500000000000000000000000000000000000000000000000000000000000000000000000001070f161d22272f353b3f454a4c5257595a616467696b696f707171727171716f6e696b696663615a5857524b49453e3b352e27221d160f070100000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4c4b474139322a21170f0600000000000000000000000000000008131d27303940474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d130800000009141e28313a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b48413a31281e140900000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000108121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c70737373737373737373737373737373736e695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c26303a424a5054565757575757575757575757574e4d49433c332920150b00000000000000000000010507090a15212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e85858585858585858585858583776c6055493d32261b0f0000000000000000000000000000000000000000060d12161e252b30353b3e42484c4d5157585b5e5960636465656666656564635f585d5a5755504c4a46403d38332e29221d160f0702000000000000000000000000000000000000000000000000000000000000000000000000000000060d12161e252b30353b3e42484c4d5157585b5e5960636465656666666564635f585d5a5856514d4b48413e3a35302b251e16130d060000000000000000000000000000000000030d17202830373c3f40424242424242424242424241403d3731292119110700000000000000000000000000000000030d17202830373c3f4142424242424242424242424242413f3c37302820170d03000000040e18212931383d40414242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403d38312921180e04000000030d17202830373c3f404242424242424242424242424241403c37302920170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f40424242424242424242424242424242424241403d38312921180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172029323a404540464b4c4f5557585755504e4c4943423e39332b23191006000000000000000000060b101314151b212c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e00000000000000000000000000000000000000000003080e151b21252b3033383e4142474b4d505250555759595a5a5a5a595857544f514e4c4a46403f3c36332e28241f17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e151b21252b3033383e4142474b4d505250555759595a5a5a5a595857554f524f4c4b4741403d3833302b25211b150e080300000000000000000000000000000000000000060f1820272d31343536363636363636363636363534322d272019110901000000000000000000000000000000000006101820272d313435363636363636363636363636363534312d2720181006000000000007101921282d323535363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e28211910070000000000060f1820272d313435363636363636363636363636363534312d272018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c31343536363636363636363636363636363636363635322e2821191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d858b8b8b8b8b8b8b8b8b8b8b8b8b8b857d71695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121b242d343c4449505658585f63646360595958534a453f382f271e150c0200000000000000030a10161b1e202126262c38444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a35404a545d64676e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d0000000000000000000000000000000000000000000000050c11161b2125282e3335383d40414447464a4c4d4e4e4f4f4e4d4d4b49454543403f3b3634312c26241f19150f0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161b2125282e3335383d40414447464a4c4d4e4e4f4f4e4e4d4c4a45464341403c3735322e2825201b16110b0500000000000000000000000000000000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2927231e17100801000000000000000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000810181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18100900000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d859095969696969696969696969690867d716d63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d16222b343d444c5459606368696e6f6f696a65625c554f483f372f251c1207000000000000030b131a2025292b2c32323238444f5b66727e8995a0acb7beb3a79b9084796d61564a3f33281c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303b444d54595b636363636363636363636363605e5951493f352a20150a00000000000000000000000000000000000000000000000002070c11161a1f24272a2e32353638363c3f404242434343424241403e3a35373533302c2826221d19140f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c11161a1f24272a2e32353638363c3f404242434343434241403f3b36383534312d2927231e1a16110b0701000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e0700000000000000000000000000000000000000000000060d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d06000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e07000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6a2a2a2a2a2a2a69f9690867d716d635d54483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e26333b444d555d636a6f74787a7b7a7975706c635f584f483f352b21160f0500000000000a131c232a303437383d3d3d37444f5b66727e8995a0acb8beb3a79b9084796d61564a3f33281c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212b343d444a4e5057575757575757575757575755534f4941382f251b1106000000000000000000000000000000000000000000000000000002070b0f14191c1e2327292a2d2c31343536373738373736363433302b2b292825211d1b17120d0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f14191c1e2327292a2d2c31343536373738383737363433302c2c292926221e1c18140e0b070100000000000000000000000000000000000000000000000000000003080c10121213131313131313131313131312100d090400000000000000000000000000000000000000000000000003080d101212131313131313131313131313131212100d0803000000000000000000000004090d101213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0904000000000000000000000003080c101212131313131313131313131313131212100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f111213131313131313131313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afadadadadafa69f9690867d716d635d544c43372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e36434c555e646d727a7f8386868684817c756e695f584f453b30291f150a0000000006101a232c343a3f42434949494947505b67737e8a95a1adb8beb3a79b9084796d61564a3f33281c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281f150b010000000000000000000000000000000000000000000000000000000000030a0e1114181c1e1e21222628292a2b2b2c2c2b2b2a29282520201d1d1a17120f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0e1114181c1e1e21222628292a2b2b2c2c2c2b2a29282521211e1d1b1813100d09030000000000000000000000000000000000000000000000000000000000000000010406070808080808080808080808070605020000000000000000000000000000000000000000000000000000000002040607080808080808080808080808080706040200000000000000000000000000000002050707080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080707050200000000000000000000000000000001040607080808080808080808080808080706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080808080808080808080808080808080707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6b9b9b7afa69f9690867d716d635d544c433c33271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e47535c646e737e858b8f939295908d8781796e695f554a42392e24190e030000010b16202a343c444a4e4f5555555551565d6974808b97a3aebabeb2a79b9084786d61564a3e33271c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242b303537384040404040404040404040403d3c39352f2820180f0500000000000000000000000000000000000000000000000000000000000000000306090d10121312171b1d1e1f1f202020201f1e1d1c1a161112110f0c070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090d10121312171b1d1e1f1f202020201f1e1d1c1a16121212100d080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb7afa69f9690867d716d635d534c433c332b23170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636d737e8790959a9da49e9c97918c82796e635c53483e33281c1106000005101b25303a444d54595b606060605a61636d77838f9aa6b1bdbdb1a69a8f83776c6055493e32261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c131a21262a2c2d34343434343434343434343432312e2a251f18100700000000000000000000000000000000000000000000000000000000000000000000000002050707080c0f1112131414151514141311110e0b07060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707080c0f1112131414151514141312110f0c0707060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0d0f10111111111111111111111111110807060300000000000000000000000000000000000000000000000000000000000000000206080a0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111105030000000000000000000000000000000206080a0b111111111111111111111111110c0b09070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060606040100010000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb7afa69f9690857d716d635c534c433c332b231b13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68717d8691979ea5a8ada9a8a19c928c80756c62574c41352a1e1107000007131e29343f4a545d64666c6c6c6c6c6a6f737e89939da7b3bebcb1a5998e82776b5f54483d31251a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161b1e2021292929292929292929292929262623201b150f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080809090908080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606080809090909080706050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1115191b1b1d1d1d1d1d1d1d1d1d1d1d1d1d1313110e0a050000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d110f0b07020000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070b0f11121212110f0c070c0b080706030000000000000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e78838f96a0a7aeb3b7b4b1aba39c91877c7065594e42352b21160b00000914202b37424e59646d727777777778787b7f86919ca3acb6c1bab1a8988c8175695e52473b2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161c20242627292929292929292929292929291f1e1c19140f080100000000000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292929292929292929292929292929292929292929292929292929292929291c1a16110c050000000000000000040b11171c1f2122292929292929292929292929292322201c18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f1112141611161a1c1d1e1d1d1a171218161313110e0a050300000000000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d88939da7b0b8bfc1c1bab6aba1978c81756a584f453b30251a0f03000a15212c38434f5b66727e838383838384868b91969faab4bcc1b6aba197897e72675b4f44382d21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010508090a1111111111111111111111110f0e0d0a060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506060606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110b0a08050200000000000000000000000000000000000000000307090b0c11111111111111111111111111111111110c0c0a0703000000000000000000000000000000000000000000000000000000000810181f262b2f3232343434343434343434343434342b2a27241f181109010000000000000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434343434343434343434343434343434343434343434343434343434343434342825211b150e06000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b0b11161a1c1d1f22242125282929292825212524221f1e1c1914100e0b0601000000000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b120b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46515d6974808b97a3acb7c0c8cccac5bab1a89b908478685f554a3e33281c1105000b16222d3944505c67737e8a8f8f8f8f9094969c9fa6afb9c4bdb4a89c91867b6f64584c41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b070c0f11121212110f0c070b0906050401000000000000000000000000000000000005060606060606060606060606060606050000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d161514110c07010000000000000000000000000000000002080d121517171d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d181715120e090300000000000000000000000000000000000000000000000000060f18212930353a3d3e404040404040404040404040403635332e29221a110800000000000000000000000000000000000000000000010b141c242b313538394040404040404040404040404040404040404040404040404040404040404040404040404040404040404033302b251e160e0500000000010b141c242b31353839404040404040404040404040403a3936322c251d150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e151a1b212528292b2d302b303334353433302c312f2d2b2a27241d1c1916110b0802000000000000000000000000000000000000000000000000020a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b120b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d98a4b0bbc8d0d9d4cabfb4a89c91857a6e63574c4034291d1206000b16222d3944505c67737e8a969a9a9a9b9ea5a8aaafb7c0bcb4aaa1998d82766b61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020001040606060605030000020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080c0f1112151712161a1c1d1e1d1d1a1712171412110f0c07030000000000000000000000030607081011111111111111111111111111111111080806030000000000000000000000040b11171c1f21222929292929292929292929292922211f1b17110b030000000000000000000000000000040c12181d20222329292929292929292929292929292929292323211d18130c050000000000000000000000000000000000000000000000020c161f2931394045484a4b4b4b4b4b4b4b4b4b4b4b4b4b42413e38322a22180f0500000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b3e3b352f271e150c0200000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a2025252b30333436393b353b3e4040403f3b363d3b393635332e292724201b17120c0601000000000000000000000000000000000000000000010a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b120b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925313c48535f6b76828d99a4b0bcc9d3ddd7cbc0b5aa9f96867a6f63574c4035291d1206000b16222d3944505c67737e8a96a1a6a6a7a9aeb3b5b9c0bab6aca39b91887c71655a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0c0d070c0f11121212110f0b070e0c0b090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f12171a1d1d2023252125282929292825212523201d1c1a16120f0b0701000000000000050a0e1113141c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1413120f0a050000000000000000040c141b21262a2d2d343434343434343434343434342d2c2a26211b140c03000000000000000000000000040d151c22272b2e2e34343434343434343434343434343434342f2e2c28231c150d050000000000000000000000000000000000000000000006111c26303942494f5455575757575757575757575757574d4c48423b32291f140a0000000000000000000000000000000000000000020d17212b353d454b4f50575757575757575757575757575757575757575757575757575757575757575757575757575757575757574a453f372f251b11070000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070d151b2025282f33353b3e4042454749454a4b4c4c4a464a48464542413e3834332f2b25211c16110b0400000000000000000000000000000000000000010a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b120b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1824303b47525e6975818c98a6afb9c4ced2d0c7bfb3a89c9085796960554a3f34281d1106000b16222d3944505c67737e8a96a1adb2b2b4b8bcbbbab5b1aba39d938d81756c63584a41372d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090d10121315171912171a1d1d1e1d1c1a1611191816141212100d0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c12161a1c222628292c2e302c303334353433302c302e2b292825211c1a16110b0702000001080f15191c1f1f2829292929292929292929292929292928201f1d1a150f09020000000000010b141c242b3135383940404040404040404040404040393835312b241c140b0100000000000000000000040c151d252c3236393a40404040404040404040404040404040403b3a37322c251e150c030000000000000000000000000000000000000000000a15202b35404952595f61636363636363636363636363635957524b42382e24190e030000000000000000000000000000000000000006111c26313b454e555a5c63636363636363636363636363636363636363636363636363636363636363636363636363636363636362554f483f352b21160b000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161e252b3033393e3f454a4b4e5053544f545758575550555452504d4c4843403e3a35312c26201b140d050000000000000000000000000000000000010a121a222b333b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433c332b231b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a969faab5bcc3c8c5beb6ada4998e82776b5950463c31261b0f04000b16222d3944505c67737e8a96a1adb1b1b1b1b0afb0aaa8a19c938f837a6f635c53493931271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1113181b1d1e2123242621252829292928252126252322201e1d1b171312100d0905030000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171c2125282c313435373a3c363b3f4040403f3b363c3a373433302c2825211b16120c05010a12191f24282a2b33343434343434343434343434343434332b2a28241f19120a020000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b1107000000000000000000040c141d252e353c4145464b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645423c362e251c13090000000000000000000000000000000000000000020d19242f3a454f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e65625b52483e33271c11060000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d5f584f453b30251a0f030008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c21262e353a3e43494d4f5457595c5e60585f6363636058615f5e5c5957524e4b49453e3b362f2b251e161008020000000000000000000000000000010a121a222b323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433b332b231b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b85909ca3abb4b8babab6aea69d948a7e73675c5044362c22170c01000b16222d3944505c67737e8a96a1a6a6a6a6a6a5a4a7a09c97918d827b6f6960554b43392920170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c12161a1c1d2327292a2c2f30322c303335353433302b32302f2e2c292926221e1e1c1814110e09040000000000000000000000000000000000000000000000000000000000000000000000000001070f161c21262c3033363b3f4043454849454a4c4c4c4a4649474543403f3b3633302b25211c150e08121a22292f3335363f4040404040404040404040404040403f3736332f29221a1209000000020d17212b353d454b4f5057575757575757575757575757504f4b453d342b21170c0200000000000000030c141d252d353e464c5051575757575757575757575757575757575752504c463e362c23180e0300000000000000000000000000000000000000030f1b26323d48545f6973787a7a7a7a7a7a7a7a7a7a7a7a7a776c62574c41352a1e1307000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a77685f554a3e33281c1105000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000010810171f262c30373e45494b5358585f6365676a6b6d686e6f6e696d6d6b696764625b5a57544e4a46403a352e262019120a03000000000000000000000000010a121a222b323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9690857d716d635c534c433b332b231b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a74808b929ca2a9aeaeb1aba59e968f83796e63574c4034291d120800000b16222d3944505c67737e8a969a9a9a9a9a9a99989797918d8781796f6b615950463b32291910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e14191c212528292d323435383a3c3d363b3f4040403e3b353d3c3b39373534312d2a2927231e1c19140e080000000000000000000000000000000000000000000000000000000000000000000000040b11171f262c30363b3f40464a4c4f5153554f5557585755505553514e4c4a45403e3b35302b251e17131a222a32393e41424a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413e39332b22190f05000006111c26313b454e555a5c636363636363636363636363635c5a554e453b31261b1105000000000000030b141c242d353e464e565b5d63636363636363636363636363636363635d5b564f463c32281d12070000000000000000000000000000000000000004101b27323e4a55616c7883858585858585858585858585857c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f858585858585858585858585858585858585858585858585858585858585858585858585858585858585796e63574c4034291d1206000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000010a111921272f363b43474f54575c6365686e7073757778797a7a7a797978767573706c6a66635e57555049453e363129231b130b0300000000000000000000010a121a222b323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9590857d716d635c534c433b332b231b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a636e79828e929c9ea5a3a8a19c9590857c70695f554a3f33281c110300000b16222d3944505c67737e8a8f8f8f8f8f8f8e8e8d8c8986817c756e69615a514840362b2219080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f15191e23252b303334373d4041444647494a464a4c4c4c4a454a4948464543413f3c373635322e2927231e181109000000000000000000000000000000000000000000000000000000000000000000060d151b20272f363b3f454a4c5055575a5d5f60585f6363636058605f5d5a57554f4b4a453f3b352f27221d222b323b42484c4e56575757575757575757575757575757564e4d49433b33291f150a000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f14080000000000030b131c242d353d454e565f66686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564c42372c21150a0000000000000000000000000000000000000004101b27323e4a55616c78848f9191919191919191919191877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a91919191919191919191919191919191919191919191919191919191919191919191919191919191857a6e63574c4034291d1206000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000109111a222931383f464a53585f63676d7175797c7f8183848585868685858482807e7c7975716e68636059544e474139332b231c130b0300000000000000000008121a222b323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9590857d716c635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37414a555f696f7a828a909596979797918d857d716c62584f453b30251a0f0300000a15212c38434f5b66727e83838383838383838281807d7a76706c636059514a41382f261a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181f24282e32353b3f4043474b4d4f515354565055575857554f56555352504e4c4b474541403d3835322e282119110800000000000000000000000000000000000000000000000000000000000000060e161e252b30383f464a4f555759606366686a6c6d696e6f6e696d6c6a6865635f5857544f4a453f37312d272b333b434b53575962636363636363636363636363636363625a58534c43392f241a0f03000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43382c21150a00000000020b131b242c343d454e555e666f747a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7570665b50453a2e23170c0000000000000000000000000000000000000004101b27323e4a55616c78848f9b9c9c9c9c9c9c9c9c9c93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c91857a6e63574c4034291d1206000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000009111a222a323a414850555c63686e72787d8184888a8d8e909196919691908f8e8c8a8784817d79736f69635e57514a433c342c231c130b0200000000000000050f19222a323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9590857d716c635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303b454f58606a6f797f84888b8c8b8986817b716d635c53483f352b21160b0000000914202b37424e59646d727777777777777777767674726f6a65625c555048413931281f160a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020710171d22292f33383d3f454a4c4f5156585b5d5e606159606363635f6261605f5d5c5a585651504d4c4842403d38312a21180e040000000000000000000000000000000000000000000000000000000000060e171f262e353a43485055585f6367696f71747677797a7a7a7a7a79777674716e6966635f58554f48443c3730333b434c535c62656d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d65635c53493e33281d1206000b16222d3945505c67737f858585858585858585858585857f73675c5044392d22160b000000020a131b232c343d444d555e656f748085858585858585858585858585858585858075695d52463b2f23180c0100000000000000000000000000000000000004101b27323e4a55616c78848f9ba6a8a8a8a8a8a8a89e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000071119222a323b424a515960636d71797e83888c909596989a9b9ca09da09c9c9b99979694908d88837f7a726e68615a534c443c342c231b1208000000000000000a151f29323b434c535c636c717d8590959fa6afb6bfbfb6afa69f9590857d716c635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16212b353f48505960686e737a7d7f807f7e7b766f6b635c534b42372f251c120700000007131e29343f4a545d64666c6c6c6c6c6c6c6c6b6a696663605957534a463f38312920170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c121820272d31393e42484c4f55575a5a616466696a6b6d6e696e6f6e686d6d6c6a69686663605a5c5857524d4c48423a31281e140900000000000000000000000000000000000000000000000000000000050e161f272f373e454953596063696e72767a7d7f81838485868686858483817f7d7a76716e68635f58544b4741393c434c535c636c70797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79716c63584d41362a1f1308000b16222d3945505c67737f8a91919191919191919191918a7e73675c5044392d22160b0000010a121b232b343c444d555e656e747f8b9091919191919191919191919191918c807570665b50453a2e23170c0000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2b4b4b4b4b4aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000050f17212a323b424b535a61696e757d838a8f93989c9ea5a4a5a7a8aab0aaa8a7a6a5a3a59e9b98948f8b847e786f6a635c544d443c342b231910070000000000030e19242f39424b535c636c717d8590959fa6afb6bfc0b7afa69f9590857d716c635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f37404950585f63696e71747574726f6a64615a534c433b32271e150c0200000005101b25303a444d54595b60606060606060605f5e5d5a5856504c48423b362f272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212930373c43494c5257585f63666a6b6f7274767778797a7a7a7a7a797977767573716f6a6a6764625b5957524a42382e23190e030000000000000000000000000000000000000000000000000000010b151e272f383f474f545d63696e73797e8285898b8d8f909197919791908f8d8b8885817d79736e69635d56514943444c535c636c717c84858585858585858585858585858585857c71655a4e42372b201408000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b00010a121a222b333c444d545d646e737f8a9099a09c9c9c9c9c9c9c9c9ca29b918d81786e635f564c42372c21150a0000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdbfbfbfb6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000020c161f27313a424b535c626b6f7980878f939a9da4a7a9aeafb1b2b3b5bab5b3b3b2b0afaea9a7a49d9b949089827b716d645d544d443c332921180e040000000006111c28333e48535c636c717d8590959fa6afb6bfc4b9afa69f9590857d716c635c534c433b332b221b120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27303840474f54585f63666869686764615a57514a433b332a22170e0500000000010b16202a343c444a4e4f55555555555555545453524f4c4a46403e39302c261f171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c303941474b53585b6264696e7175787b7e8081838485858686858585848382807f7d7b787673706b6964625b52483d32271c1105000000000000000000000000000000000000000000000000000007111b252e373f4850585f636d717a7f84898e919696999a9b9ca09da09c9c9a989696908d89847e79726d63615a534c4c545c636d717d85909591919191919191919191919590857c716c63584d41362a1f1308000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a1968a7e73675c5044392d22160b0109111a222b333b434c545d646e737e87919ca0a9a8a8a8a8a8a8a8aca39c928d81796e685e544f463c32281d12070000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cbc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000007121c262f38424a525b626c707b838c91979da3a8adb3b4b8bbbdbebfc0c4c0bfbfbebcbab8b4b3ada8a59e9b928e847d726e645d544c433a31281e14090000000007131f2a35414c57626c717d8590959fa6afb6bfc7c0b5aa9f9690857d716c635c534c433b332b221b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17202830373f454a4f55575a5c5d5d5b5856514b47413a332b221a110600000000000006101a232c343a3f4243494949494949494948474643403f3c36332e29211c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820272f363b444951565c62656b70757a7d818486898b8d8e9090919791979190908f8d8c8a888684817f7b7874706b62574c4035291e120700000000000000000000000000000000000000000000000000071018212b353f47505860686e747d848b9095999c9fa6a4a6a7a8abb0aaa8a7a6a4a69f9c9994908a847d766f6a635c55545d636d717d8590959ea59c9c9c9c9c9c9ca49e9490847c706c635c53493e33281d1206000b16222d3945505c67737f8a96a1adb4b4b4b4b4ada1968a7e73675c5044392d22160b09111a222a323b434c545d646d727e879197a1abb0b4b4b4b4b4b4aca39c928d81796e685f574e453e362c23180e030000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d6dbd4cfcac7c7c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2bfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000040d16212c363f48525b626c707c848f939ca1a8acb3b7bdbfc3c8c5c9c4c0bfbfc0c4c9c5c8c2bfbdb7b3aea8a39c9590867e726e645c534a41382d23180d0200000008141f2b36424e5965707c8590959fa6afb6bfc7cabfb3a89c91857c716c635c534c433b332b221b120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820272e353b3f454a4c4e515251504c4b47413d383129221b120a01000000000000000a131c232a303437383d3d3d3d3d3d3d3d3c3c3a383534312c26241f17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091019212930383f464a545a61636c70767c8184898c90949597989a9b9c9ca09da09c9c9b9a99979697918f8d8a8783807c7064594d41362a1f1307000000000000000000000000000000000000000000000000030d172029303b454f5860696e7880878f949c9ea5a8aaafb0b1b3b4b5bab5b3b3b1b0afaaa8a59e9b948f89817b716c655e5d646d717d8590959fa6aea8a8a8a8a8ada49d948f847c706c625c534c43392f241a0f03000b16222d3945505c67737f8a96a1adb9bfbfbfb8ada1968a7e73675c5044392d2216081119212a323b434c535c636d727e869197a0a8b1bac1bfc5bdb4aca39c938e82796e695f584f473e352e251c1309000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbd3cbc4bfbcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000010b141e26303b465059626b707c8590949da4abb1b8bdc1c6c2bfbebab7b9b5b3b3b5b9b7babdbec1c6c2beb8b4aca59e9791867e726d635a51473d32271c100500000006121e2935404c58636f7a828e939ca3acb3bcc4ccc0b5aa9f968b7f746f655f564e453e352d251d150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b30363b3f40434546464441403c37322e282119120a020000000000000000030b131a2025292b2c323232323232323231302f2c292826221d19150f07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921293139414850555d646a6f757c82868c9095989b9ea5a2a4a5a7a8a8abb0aaa8a7a7a6a4a3a8a19c9b9896938f8a7f73685c5045392e22160b00000000000000000000000000000000000000000000000008131d273039414a545f686e79818c91979ea4a9aeb3b5b9bbbdbebfc1c4c1bfbebdbbb9b5b3aea8a49d9b918d847d736e63646d727e8690969fa6afb6b4b4b4b4aca49d948f847c706b625b534b433b33291f150a00000b16222d3945505c67737f8a96a1adb9c4cbc4b8ada1968a7e73675c5044392d22161019212a323a424b535c636d717d869197a0a7b0b8c1cac5bdb4ada49d938e827a6f6960584f473f362e251e150c03000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d4cbc2bbb5b1afababababababababababababababababababababababababa89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000006111b252e363e4a556069707c8490959ea5adb6bac1c9c1bdb7b3b2aeacafaaa8a8aaafabaeb1b3b7bdc0c5c2bcb5aea7a09791867d716b61574b4035291e120700000006111d28343f4b56606a6f7a828e939ca3acb3bcc4c4b9afa699908b7f746f655f564e453e352e251d150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b21262c303334373a3b3a383534312d27231e1810090200000000000000000000030a10161b1e20212626262626262626252423201e1d1b17120d0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f182129313a4149515960636e727b81878d91979c9fa5a7a8aea9a7a6a4a3a2a2a2a2a3a3a4a5a6a8aaaba8a6a4a49d968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000020d18222d374149545d636e79818d929ca1a8adb4b8bec0c4c4c0bfbcbbbabbbcbebfc2c4c0beb8b4ada8a29b9490867f746e6e727e8691969fa6afb6bfc4bcb3aca39d938f837b706b625b524b433b332b22190f0500000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d2216192129313a424b525b636c717d869096a0a7b0b8c1c9c5beb5ada49d938f827a6f69605950483f372e261e140d0500000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cfc4bbb2aba6a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000b16202b353e47535c636e79838f959ea5aeb5bdc5c4bcb6b2ada8a6a3a0a69f9c9c9fa7a0a2a6a7acb1b5bbc2c6beb7b0a7a09790847b6f64584d41352a1e130700000004101b26313c465059606a6f7a828e939ca3acb3bcc4c0b7a9a099908b7f746f655f564e463e352e251d150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161c212528292c2e2f2e2d2a2926231d18140e070000000000000000000000000000060b101314151b1b1b1b1b1b1b1b1a19181512110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172028313a414a515a61696e757e858c91979ca1a8a9aaa8a5a69f9c9a999797969697979898999b9ca0a7a3a6a8aba2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000004101b26313c47515a646e75808c929ba2abb1b8bec3c5c0bfb9b5b3b1b0afafb0b3b4b8bebfc2c2bdb7b3aba59e96918a8078737e8691969fa6afb7bfc3bcb3aca39c938f837b6f6b625b524b423b322b221a12090000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22182029313a424a525b626c717d8590969fa7b0b7c0c8c6beb5ada49d948f837a6f6a605950483f372f271e160d040000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb5aba19b98949494949494949494949494949494949494949494949494949491857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636c75808c939da5aeb6bec6c0b9b5aca7a49d9b979492969091969294979a9da3a6abb4b8bebcb6aea8a19c938e82766b5f54483c31251a0e030000010c17222c3740495059606a6f7a828e939ca3acb3bcc4b9b0a9a099908b7f746f665f564e463e352e251d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12161a1c1d20222323211e1d1b18130d090400000000000000000000000000000000010507090a0f0f0f0f0f0f0f0f0e0d0c090606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273039414a515a616a6f79808990959ca1a8aba8a79f9c999695908f8d8c8b8b8a8b8b8c8c8d8f919694979a9ca0a7968a7f73685c5045392e22160b000000000000000000000000000000000000000000000006121d2934404b56616a727e89919aa2abb6bac1c9c2bcb6b2afaaa8a5a4a3a4a5a7a9aeb2b4b8bec3c2bbb5aea7a09c908c817e869197a0a7afb7bfc3bbb3aca39c938e837b6f6a615a524a423a322a221a120a020000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d2220293139414a525b626c707c8590959fa6afb7c0c8c6beb5aea59e948f837b6f6a6159504940382f271e160e05000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bcb1a69b918d88888888888888888888888888888888888888888888888888888885796e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68717d87919ca3acb5bec6bfb7afaaa39c9a948f8b89868685858587898b8f93999ba2a9aeb5b6aca59e97918c827b6f64584d41362a1e13070000000008131d27303940495059606a6f7a828e939ca3acb3bcc1b9b0a9a099908b7f746f665f564e463e352e251d150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f111215171817161212100d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f374049515a616b6f7b828c919c9fa5aba8a49d9b96918d8a8785838280807f7f7f80808182838587898b8e919799968a7f73685c5045392e22160e0904010000000000000000000000000000000000000005101b27323d47515a636f7b85909ca1aab2bbc5c6beb8b4aba7a69f9c9a989898999b9ea5a7a9aeb4b8bec5beb7b0aaa19a918d8a9197a0a7b0b7c0c3bbb3aba29c928e827a6f6a615a514a423a322a221a120a02000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d20283039414a515a626b707c8490959fa6afb7bfc7c7bfb6aea59e948f847b6f6a615a5149403830271f170e0600000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bbafa4988d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6e63574b4034291d1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e78838f97a1abb4bdc6bfb6afa69f9c938e8883807d7b7a79797a7b7d8083888d919b9ea5adaba39c95908780796f6b61574b4035291e120700000000030d162028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b7f746f665f564e463e352e251d150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506090b0c0c0a070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060606050300000000000000000000000000000000000000000000000000000000000000000000000000060f18212b353f485059616b6f7b838f939aa1a9aba49e9b938f8a85827e7c797776757474737474757576787a7b7d808386898d918a7f73685c5045392e221c18140e0b0600000000000000000000000000000000000006121e2934404b56616b75818c959ea9b1bac3c5bdb5aea9a29c9996908e8d8c8c8e9094979b9ea5a9aeb5bac3c0bab5aaa19b98959ca0a7b0b7c0c2bbb2aba29b928e827a6f6a615a514a413a312a211911090100000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d2830394149515a616b707c8490959ea5aeb6bfc7c7bfb6aea59e9590847c706b615a5149403830281f170f060000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747171717171717171717171717171717171717171717171717171716e685e54493e33271c1005000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000005111c27323d48525b66727d89939da8b1bac4c1b8afa69f96918a827d7974726f6e69686e707174777c818890959da4a09c928e847d746e68615a51473d32271c10050000000000060f182028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b80746f665f564e463e352e251d150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102060606060606060606060606000000000003050707070b0f11121212110f0b0708060503000000000000000000000000000000000000000000000000000000000000030d162028303b454f58606a6f7b848f939da3aaa7a09c948f89837e7a7673706e686a696868686869696a6b686e707174777a7e82868a7f73685c5045392e2927231e1b16100a050000000000000000000000000000000007131e2a35414d58646f7b86919ca5aeb8c2c8bdb5ada59e9b928e8985828180818284878b90949b9ea5aab4b9bfc4bab2aba6a4a1a8abb0b8c0c2bab2aba29b928d827a6f6a605951494139312921191109010000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d30384049515a616a6f7b848f949ea5aeb6bfc7c7bfb7afa69f9590847c706b625a514a4139302820170f07000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686565656565656565656565656565656565656565656565656565635e574e453a2f24190e03000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000007121e2935404c57626b77828e9aa3acb8c1c5bab0a79f9590867f78716e686664635f5f636466686c70767d848f939d97918b827b716d635f58514a41382e23180d02000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b80746f665f564e463e362e251d150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060809090a0a0a0a0a0a0a0a06050300000000000000000000000000000004080b0d0d1111111111111111111111110b0b0903090e11121311161a1c1d1e1d1c1a16111411100e0b060100000000000000000000000000000000000000000000000000000008121d263038404a555f696f7a838f949da4aca59e97918b847e79736f6a6765635f585d5d5c5c5d5d5e5e585f636466696a6f72767b807e72675b4f44393635322e28252019140f08010000000000000000000000000006111c28333e48535c6974808b96a0aab6bfc8c0b8ada49d949089827d7a7776757576797c80848a90959ba1a9afb6bdc2bbb5b1afadb4b5bac0c2bab2aaa19b918d81796f6960595049413931292119110901000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392f3840495059616a6f7b838f949ea5aeb6bec6c8c0b7afa69f9590857c706c625b524a4139312820180f0700000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a57544e473e352b20160b00000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c87929ca7b4bdc9c1b6aba09790857d736e68635e575857555557585a5c62656d717b838f94908780796f6b635d554f48413a31281e14090000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b80746f665f564e463e362e251d150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070b0f1112131415161616161616161612110f0b070200000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d1716140f14191c1e1f22212528292929282521221f1d1c1916110b0903000000000000000000000000000000000000000000000000010c17222c374049535c636e79828e939da4ada49d949087807a726e686360595957544f52515151515252534f5457585a596063666b6f74726e64594e474541403d3834302a241f1811090300000000000000000000000007131e2a35414c57626c78848f9ba7b0bac6c4bab0a79d948f847d77726e696a696a6b6c7074797f848c919c9fa6adb5bdc4bfbcbbb8bfc1c4c1bab1aaa19a918d81796e696059504940393029201910080000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c504439373f485059606a6f7a838f949da4adb5bec6c8c0b7afa79f9690857d716c625b524a423a3129201810070000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4b49453e362e251b110600000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0b0b0b0b0b0b0b0b0b0b0b060604010000000000000000000000000000040f1a26313b46505968747f8b97a3acb6c4c4b9afa69c91877d716d635e57544e4d4c4a4a4c4d4f53575c636a6f7b838e847d746e68615a544a453f3c37302820160d040000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b80746f665f564f463e362e251d150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f11161a1c1d1f202121212121212121211d1c1a16110c050000000000000000060d14191e2224252929292929292929292929292322201a1e2327292a2e2b303334353433302b2e2b292724201b18130d080300000000000000000000000000000000000000000000040f1b26313c465059636d74808c929ca4ada49d948f847d746e69635e5756504f515353545352514f4c4b47454a4b4d4f5056585a61646867645d545453504d4c48423f3a332e28221a140c04000000000000000000000008141f2b36424e5965707c87949ea8b7c0c9c1b5aba0978f837b726d66635f585e5e5b6264696e737a818990959da4adb7c2cac7c7c4cbccc3bab1aaa19a918c81796e69605850484038302820181008000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044373f48505960696f7a838f939da4adb5bec6c9c1b8b0a79f9690857d716c635b524b423a312921181008000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464343434343434343434343434343434343434343434343403e3a352e261e140b0100000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231717171717171717171717171712110f0c080300000000000000000000000006111d28343f4a55606977838e9aa6b1bcc6c0b5aa9f968c80746d635c544e4c4c4c4c4c4c4c4c4c4c4c535a616a707c827b716d635f58514c4c4c4b47403930261e150b010000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1b9b1a9a099908b80746f665f564f463e362e251d150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12171a1d212528292a2b2c2d2d2d2d2d2d2d2d292825211b150e06000000000000060e161d24292d2f303434343434343434343434342e2d2b25282e32353639353b3e4040403e3b35393634332f2b25221d17120d060000000000000000000000000000000000000000040e182129343f4b56606a717d87919ca3aca59d938f837b716d636059545056585b5d5e5f5f5f5e5d5a5856514b49454143494d5257595c5f60616161605e5c5957524e4a443e38322a241c150d04000000000000000000000b16222e3945505c67737f8a96a4adb7c7cbbfb4a89c91867c706b635d57554f52525257585f636a6f757e858f949da8b3bfcad3d2cfd6c9beb4aaa19a908c80786e685f585048403830282018100800000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c50443f474f5860696f7a828e939da4adb4bdc5cac1b8b0a7a09791867d716d635c534b423a322a2119100800000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3737373737373737373737373737373737373737373734332f2b251e160d040000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23222222222222222222222222221e1d1b17120d06000000000000000000000006121d2935404c57636f7a85919ca8b3bfcabfb3a89c90857a6f635c585858585858585858585858585858585a626c70766f6a635d58585858585856514940372e251b1107000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1a9a09a908b80746f665f564f463e362e251e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161c2126282b30333436373838383838383838383433302b251e160e0500000000040d161f262d33383b3c4040404040404040404040403a39363033383d40414547454a4c4c4b4a45484542403e3a35312d27221c160f070200000000000000000000000000000000000009141e28323d48525b636f7a849097a1aba79e948f837b6f6b635c55535859606366686a6b6b6b6a686663615a57544f474a53585b6264686a6c6d6d6d6c6a6764625b59544c48423a342d251d150c040000000000000000000d1924303b47535e6a75818d98a4afbbc7c6bbafa4988c81756c625b544c4a454647484c4f555960636e727c848f9ba7b2bec9d5dedbd2c6bbb0a59a908c80756e685f584f483f382f281f180f070000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044474f585f696e79828e939ca3acb4bdc5d0c5bab1a8a09791867e726d635c534b433b322a211911080000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2b2b2b2b2b292724201b140d05000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e292826221c160f07000000000000000000000914202b37434e5a65717d8896a0aab5c0c6bbafa3988c81756a636363636363636363636363636363636363636363656b64636363636363636363615a51473e352b20160b00000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1a9a09a908b80746f665f564f463e362e251e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b20262c3134353b3e404242434444444444444444403e3b352f271e150c020000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413b3e42484c4d50534f55575757544f53514e4b49453e3c37312c261f1712070100000000000000000000000000000000020d18232e38404c57626b74808c949ea8aa9f9690847b6f6a615a53565c63656a6f7274767677767574726f6a66635f5853545c63656b70737678787978777573706b66645d57524b443d352d251d140b0200000000000000000f1a26313d4954606b77838e9aa5b1bdc8c3b9afa694887d71665c534a443f3b35383e3f454a505960696e79828d99a4b0bcc7d3deddd1c6baaea3978c807570635f584f473f372f271f170f07000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c50454e575f686e79818d929ca3acb4bcc4cac1b9b6aba19791877e726d645d534c433b322a221a1109000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a383838383838383838383838383838383534322d27201d1c1916110b0400000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3939393939393939393939393939393534312c261f170f060000000000000000000a16222d3944505c67737e8a95a7b0bac4c3b8aca095897e726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a61584f453a30251a0e0300000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1a9a09a908b80746f665f564f463e362e251e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b30363b3f40454a4b4d4e4f4f505050505050504c4a453f372f251b11070000040f19242d373f474d515357575757575757575757575751504c454a4b5257595c5f585f6363635f585f5c5957544e4b47413c363028221b110b0400000000000000000000000000000005101c27323d47515a64707c86919ca5aca39c91867c706b615a535a61646c71767a7d8081828282817f7d7b77726e68635c5f636c71777c7f818384848483817f7b77726e64625b554d453e352d251b13080000000000000000101c27333e4a55616d78848f9ba7b2bec9c0b5aa9f96867a6f63574c423a33302b31394149515960696f79818d929ba6b1bdc8d4dbded2c7bbafa4988d81766f655d544c433a312820170f0700000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5049545e686e79818d929ca3acb3bcc4cac1b9b1a9a09c91877e736e645d544c433b332b221a110901000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146444444444444444444444444444444444441403c37312920170e0b06010000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514645454545454545454545454545454545403f3c3630281f160d0300000000000000000c17232f3a46515d6974808b97a3aebacac2b6aa9f93887c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a76685f54493e33281c11050000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1a9a09a908b80746f665f564f463e362e261e150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f1820262e353a40464a4c4f5457595a5b5b5b5b5b5b5b5b5b57554f483f352b21160b000008131e29333d4750575d5f6363636363636363636363635d5b564f54575b6264686a6c686e6f6e686c6a6865635e5756514a464038332b201b150d06000000000000000000000000000007121e2935404b57616b76818d96a0aaa89c928a7f736c625a535c626a6f767d8285898b8d8d8e8d8c8b8986827e79716d63686e747d82878a8d8f90908f8e8d8a87827e77706c645e564e453d352c2319100700000000000000101c28333f4a56626d7984909ca7b3becabfb3a89c9085796960554a3f312a293139414a515a606a6f7a828d929ba2abb5c0cbd6d0d6d3c8bcb1a69b918b7f746e645c534a413930271e150c02000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c50565f636e78818d919ba2abb3bcc4cbc2bab1a9a099908a7f736e645d544d443c332b221a12090100000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d515050505050505050505050505050505050504c4b47413931271d130900000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5151515151515151515151515151515151514c4a46403830261c120800000000000000000d1924303b47535e6a75818d98a4afbbc7c3b7aca1968d888686868686868686868686868686868686868686868686868686868686868686868686796e63574b4034291d1106000000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1aaa19a908b80746f665f564f463e362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17202830373e4549505557585f636465666767676767676767635f584f453b30251a0f03000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f585f63666b70737678797a7a7a79787673706e6863615a555049433b302b251e160d05000000000000000000000000030f1a25303b454f58646f7b86919ca7aba1978e82786e635c535c626c707b81888d91969798999999989797918e89837d746e6e7980878e9296999a9b9b9b9a9896928e89827c736e655f564e453c332920170e04000000000000111c28333f4b56626d7985909ca7b3bfcabfb3a79c9085796a60564b3f342a313a414a515a616a6f7a828e929ca2abb2bbc5cbcac4cacbcabfb5aba29c91877e726c635b524940372f251b1107020000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c565f667075808c919ba2abb3bbc3cbc2bab1aaa199908b7f736e655e554d443c332b231b120a010000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5856514a41372d23180d02000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5755504940362c22170c01000000000000000e1925303c48535f6a76828d99a4b0bbc7c5bbb0a69d969392929292929292929292929292929292929292929292929292929292929292929297867a6f63584c4035291e120700000000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1aaa19a908c80746f665f564f463e362e261e150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28303840474f5459606367686e70717272727272727272726e685f554a3e33281c1105000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f6563686e72777b7f8183858586858583817f7c79746f6a636059534c453a352e261e160d04000000000000000000000005111c28333f4a555f6974808c97a0aaa89c91877c70685e545a626c707c848d91999ca0a7a4a5a5a4a4a7a09c99938f87807879818c91979ca3a4a6a7a7a7a6a4a39c9a938e857e746f655e554c443931271d1309000000000000101c27333e4a56616d7884909ba7b2becac0b5a99f95867a6f63584c4338323a424a525a616a6f7a828e929ca2abb3bbc3c4c0bfb9bfc0c3c4bbb6aba19791867d716b615950483f352b211b130a0100000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5e666f75808c919aa1abb2bbc3cbc3bbb2aaa19a908b80746f655e554d443d342c231b120a02000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468676767676767676767676767676767676767676764615a51473c32261b1005000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686868686868686868686868686868686868686863605950463c31261b0f04000000000000000e1a25313c48545f6b76828e99a5b0bcc8cac0b6aea6a19f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d92867b6f64584c41352a1e13070000000000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1aaa19a908c807570665f564f463e362e261e150600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038404950585f63696f73767a7c7c7d7e7e7e7e7e7e7e7e796e63574c4034291d1206000d1925303c47535f6a76818585858585858585858585857f74686d71797e83878a8d8f90969196908f8d8b87847f7b746f69635c5549453e372e261e140b010000000000000000000006121d2934404c57636e7984909ca7aca3988d81766c625756616b707c8590949ba2a8aab0afb0b0b0afb0aba8a49d97918b81808c919ca1a8acb0b2b2acaaabacaca7a39c96908a7f746f655d544a41372d23180f0500000000000f1b27323e4955606c78838f9aa6b2bdc9c3b9afa694897d72665c53483f3a424b525b616b6f7b838e939ca3acb3bbc3bfb9b5b3adb3b5b9bfc5bab1a89f9690847b706a60584f453b302c231a110800000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675e656f74808b909aa1aab2bbc3cbc3bbb2aaa19a918c80746f665e554e453d342c241b130b0200000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747272727272727272727272727272727272727272726f6a61564b4034291d1206000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807473737373737373737373737373737373737373736f6960554a3f34281d1106000000000000000e1a25313c48545f6b76828e99a5b0bcc8d3c7beb6b0acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99e92877b6f64584d41362a1e1307000000000000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3bcc1bab1aaa19a908c807570665f564f463f362e26160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d16222c364049505960686e737a7e828587888989898989898989867a6f63574c4035291e1206000d1925303c47535f6a76818d919191919191919191918b7f746e757d83898e9396999b9c9fa69f9c9b9996948f8b85807a716d655f544f473e362e251b1106010000000000000000000915202c37434f5a66717d89959fa9a79c93887c70655c555e646f7b8490959ea5abb3b5b5b3b0acaaa9aaacafada8a19c918c8c909aa2abb1b4ada8a6a19f9fa1a5a8aba69f9c908a7f736d635a51473d32291f150a00000000000e1a25313d48545f6b77828e99a5b1bccac9bcb0a5998d82766c63595046424b525b626b707b838f939ca3acb3bcc3bfb7afaaa8a1a8aaafb6bfc1b8afa69e958f837a6f685f554a453c332a22191007000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e7367656e747f8b909aa1aab2bac2cbc3bbb3aba29b918c80756f665f564e453d352c241c130b020000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bcb0a4998d817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6f64584c41352a1e1207000000000000000b16222d3945505c67737f8a96a1adb9c4d0c8bcb1a5998e827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6f63574c4035291e1206000000000000000e1925303c48535f6a76828d99a4b0bbc7d3cfc6bfb9b4b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b3b7b5b5b5b5b5b5b5a99e92877b6f64584d41362a1e130700000000000000000000000000000000070f182028303940495059606a6f7a828e939ca3acb3b5b5b5b1aaa19a908c807570665f564f463f36271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e26313c465059606a6f787f848a8d9095949495959595959591867a6f63574c4035291e1206000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f747980888f939a9ca3a4a6a8aaafaaa8a6a4a49d9b96908b847d746f635f584f473e352b201a1106000000000000000005111c27323d48525b6a75818c98a5aea69a8e83776c625858646e77828e959ea6aeb5b7b0aaa8a4a09f9e9fa1a4a8aaaba19a98979aa1aab6b5ada49d9b95939395999ca0a7aaa09c91877d716a61564b42392e24190d03000000000c18232f3a46525d6974808c97a7b0bac4cbbfb4a89c91867c716960554e4b535b626b707b838f939da4acb4bcc4bfb6afa69f9c969c9fa6afb8c1c0b7aea59d938e82796e635e554c443b322920170f060000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73676e737f8a9099a0a9b1bac2cbc4bcb3aba29b918d81786e635f564e463e352d241c140b03000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c8bdb1a69b928d898989898989898989898989898989898989898989887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0c9bdb2a79c928e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b877b6f64584d41352a1e1307000000000000000d1924303b47535e6a75818d98a4afbbc6d2c8bfb6afa9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a8adb5bdc7c0c0c4b9afa692867b6f63584c4135291e12070000000000000000000000000000000000070f182028303940495059606a6f7a828e939ca3acaaaaaaaaaaaaa19a908c807570665f564f46372f251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373e4a5560696f7a818a9095999c9fa6a0a1a1a1a1a19d91867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f7a828c909a9da4a7acb0b2b3b5b9b5b3b2b0ada8a69f9c948f877f756e685f574e453a2f2a22160e050000000000000007121e2935404c57626b7984909ba7ada4968a7f73675c555f69727e8a929ca5aeb6b5aea7a09c999593929395989c9fa6aaa5a3a3a5aab1b8aea59d938f8a8788898d91979ea5aba19790847b6f645c53483e33271d1309000000000a15212c38444f5b66727e8996a0aab5c0ccc1b6aba0978f83796e635e57535c626c707c848f949da4adb4bcc4beb6aea69f96908a90969fa8b1bac5beb5ada49c928c80756f655d544b423931281f160d0400000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e736e737e87919ca0a9b1bac2cac4bcb3aca29b928d81796e685e544f463e352d251c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbc0b5aba29b99959595959595959595959595959595959595959594887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbc0b6aca29c999696969696969696969696969696969696969692877b6f64584d41352a1e1307000000000000000c17232e3a46515d6874808b97a2aebac9cec3b9afa69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da4adb7c2cdccc0b5aa9f96867a6f63574c4035291d1206000000000000000000000000000000000000070f182028303940495059606a6f7a828e939ca39e9e9e9e9e9e9ea19a908c807570665f56483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e47545e636f7a838d929b9ea5a7a9afacacacacaca99d91867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b80828e929aa1a8adb2b6bbbdbfc0c4c0bfbdbbb7b3afaaa49d97918b81786e685e5449443b32271e150c0200000000000007131f2a36414d5964707b87959ea9a89d93877b6f645857636e7984909ba3acb5b6aea59e97918d89878788898d90969ba1abb1aeb0b4bab4a89e948f837e7c7c7e828690949ea5a89e958d81756c62574c41372d22180d0200000007121e2a35414c58636f7b85919ca8b3bcc7c5bab0a79d938d81766e68605c636c707c8490949da4adb4bdc4beb6aea59f9590857f859097a1abb6bbc4bdb4aba29a918a7f736d645c534a41382f261e150b01000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73727e879197a1abb0b9c1cac4bcb4aca39c928d81796e685f574e453e362e251d140c040000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cfc5bbb2aba6a4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c5bcb3aca7a5a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e92877b6f64584d41352a1e1307000000000000000a16212d3944505b67727e8a95a6afb9c3cbc0b4a99f95908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f949da8b3bfcacabfb3a89c9185796960554a3f34281d110600000000000000000000000000000000000000070f182028303940495059606a6f7a828e939292929292929292929292908c80757066584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58646e76818d939ca2a9aeb3b4b9b7b8b8b7b4a99d91867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0bbbfbfbfb3a79c90858e939ca3aab3b7bdc1c0bfc0c4c9c6c9c9c7c2bfb9b5ada7a09c918c81786e635e554b42372f251b11070000000000000a16212d3844505b67727e8a95a5aea69b8f83786b61575967727e89949ea8b3b9afa69e949086817d7c7b7c7e81858d919ca1a8b1babebeb2a79b90847a72707172767c8490959ea9a59c91877c70655a51473c31261b100500000006121d2934404b56616a76828d99a3acb7c0c9c1b8ada49b918c80786f69636c717c8590959ea5adb5bdc5beb5aea59e9590857d737e87919ca2abb4bcc5bcb3aaa19c91877e726c625a514840372e251b1107000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e737e869197a0a8b1bac1c9c5bdb4aca39c928e82796e695f584f473e352e251d150c04000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d5cbc3bbb5b1b0acacacacacacacacacacacacacacacacacacab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0d5ccc3bcb6b2b1adadadadadadadadadadadadadadadadada99e92877b6f64584d41352a1e13070000000000000008141f2b37424e5965707c88969faab5c0cabfb3a79c9085848484848484848484848484848484848484848484838f9ba7b2bec9c9beb2a69b8f84786c5950463b31261a0f040000000000000000000000000000000000000000070f182028303940495059606a6f7a828787878787878787878787878787878075685f554a3e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f68727e8a919ba4abb4b8bebab6b4b0adababa99d91867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0bbc7cbc0b4a99f9590959ca3acb3babab7b9b5b3b5b9b7babebfc2c7c9c3bdb8b0aba19b918c80756e645b52483f352b21160d0300000000010c18242f3b46525e6975808c98a3afa4988c81756a5a56606a77828e99a5aeb8b5aa9f9690847d7672706f7072757b818a9197a1abb6bcb9ada2968b7f736a6565676c707b85909ca3aba1978d81766a61564b4034291d110700000005101b26313c47515a66717d89929ca7b0bac4c8bdb4aba29a918c817a706d717d8590959ea5aeb5bdc5beb5aea59e9590857d716d747f8b919ba3acb5bebebab6aba09790857c706b615950473e352b201610060000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7f7d869197a0a7b0b8c1cac5bdb4ada49c938e827a6f6960584f473f362e251e150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dcd3cbc5c0bdbcb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7ab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0dcd4ccc5c0bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b5a99e92877b6f64584d41352a1e13070000000000000006121d2934404c57636e7a85909ca8b3bfcabcb0a5998e827878787878787878787878787878787878787878787d88939fabb6c2c8bcb0a5998e82776b5f5448362c22170c01000000000000000000000000000000000000000000070f182028303940495059606a6f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f9ba2abb4bbc1b8b1aba8a5a1a09f9f9d91867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0bbc7cec3b9afa69f9c9fa6acb3b4b2afabafaaa8aaafabafb2b4b7bec3c8c8c1bab6aaa19a908a7e736c62584f453b30271d130800000000030e1a25313c48545f6b76828e99a5ada1968a7e73675c58636f7a85919ca8b3b8aea59c90857c716c66656465676a6f757f87919ca3acb8b6ab9f94887c716559595c626b727e89939ca7a89c91867b6f63584c41352b21160b000000020d18222d37414d59636d77828e96a0aab5bac2c4bbb2aaa19a918d837c747d8590959ea5aeb5bec5bdb5ada59e9590847c716c656f76818d939ca5aeb3b3b3b3b0a79f9690847b6f6960584f453a302a20160c0100000000000b16222d3945505c67737f8a96a1adb9c4d0c7bbb0a4988d81859096a0a7b0b8c1c9c5bdb5ada49d938e827a6f69605850483f372e261e140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdcd5cfcbc8c7c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c2b7ab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdcd5d0cbc9c8c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c1b5a99e92877b6f64584d41352a1e13070000000000000005111c28333e4a555f6877828e99a7b0bac4bfb3a89c91857a6f6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6974808b97a2aebac5c4bab0a7978b8074695d51463a2f2312080000000000000000000000000000000000000000000000070f18202830394049505960696f707070707070707070707070707070706e685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d89949da8b2bbc1b8b0a8a19c99969494949491867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0bbc7d3c8bfb6afa9a7a9afb4aea9a7a3a0a69f9c9fa6a0a3a7a8adb4b8bec6cac5bbb2aaa19c91867c70685f554a40372d22170c02000000040f1b26313c4650596c78848f9ba6ab9f94887d71655a5a66717d8896a0aab5b4a99e948a7f736c635c5958595a61646e747f8b929ca8b1baaa9f93877c7065594e535b646e77838e9aa7aaa0968a7e7367584f453b30251a0f0300000009131d27343f49545d64707c86919ca1aab2bac5c2bab1aaa29b938f85808590969fa6aeb6bec5bdb4ada49e9490847c706c635f636e79828e949ea6a7a7a7a7a7a7a69e948f837a6f685f5449443a30251b100500000000000b16222d3945505c67737f8a96a1adb9c4d0c8bcb1a69b918d90969fa7b0b7c0c8c7beb5ada49d948f837a6f6a605950483f372f271e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbe0d9d3cecbcacacacacacacacacacacacacacacacacac2b7ab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdfd8d2cdcbcac9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c1b5a99e92877b6f64584d41352a1e130700000000000000030f1a25303b454f5867737e8a96a0aab5c0c0b5aa9f968b7f746b61596161616161616161616161615c636f7a84909ba7b3becac0b5aaa096897d72665a4f43382c211509000000000000000000000000000000000000000000000000070f182028303940495059606364646464646464646464646464646464635f584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596a75818c98a4adb7c5bab0a7a097918e8a8988888888867a6f63574c4035291e1206000d1925303c47535f6a76818d99a4b0bbc7d2cfc7bfb9b4b3b4aea9a59e9b9894929690969294979b9ea4a9aeb6bdc4cfc2bab5aa9f968f83796e635950463c31261c120700000006111d28343f4a5560697985919ca8b0a792877b7064585c68737f8b96a7b0bab2a79b90847a6e635b534d4d4e51565e656f77828e97a1abb6ab9f93887c7165594e4a545d67737e8a969faaa7998e8276685f554a3e33281c1105000000030d1a25303a444c57626c737f8a909aa1aab6bac1c2bab2aba39d96908c90969fa6afb6bec4bdb4ada49d948f847c706c625c5560696f7b8490969c9c9c9c9c9c9c9c9c9c938d81786e635d544a3f34291e130700000000000b16222d3945505c67737f8a96a1adb9c4d0cac0b5aba29b989c9fa6afb7c0c8cdc2b8aea59d948f837b6f6a6159504840382f271e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0e0d7cfc9c3c0bfbebebebebebebebebebebebebebebebebeb7ab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0dfd6cec8c2bfbebdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb5a99e92877b6f64584d41352a1e130700000000000000000b16212b35414c58636f7b86919ca8b3bbc4b9afa69c90857b6f69625b555055555555555550565d636d747f8b959ea9b4bfcbbfb3a89c91857b6f63584c4135291e120700000000000000000000000000000000000000000000000000070f182028303940485055575858585858585858585858585858585857554f483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a78848f9ba6b2bdc1b6aba0979187827f7d7c7c7c7c7d786e63574b4034291d1106000d1925303c47535f6a76818d99a4b0bbc7d2d7cfc8c3bcb4ada59f9c94908c898786858687888c8f949c9ea5acb4bcc4cfc4b9afa79d938a7f736a60564b3f362c21160c01000006121d2935404c57636f7a86969faaaaa096867a6e63575e6975808c98a3afbaafa3978c8075695f554b434142474b555e64707c87919ca8b4aca095897e72665b4f444c57636f7a85919ca8a89c90857a6e63574c4034291d1206000000000b16202a323d48525b656e75808c919ba1abb1b8bfc2bbb4aca69f9c979c9fa6afb6bfc4bdb4aca49d948f847b706b625b535059616b707c86909090909090909090909090908c80746e64594e42372c20150900000000000b16222d3945505c67737f8a96a1adb9c4d0cfc5bbb2aba6a4a8aaafb7bfc7d0cbbfb4a99e948f847b6f6a615a514940382f271f170e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d9cfc7bfb9b5b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ab9f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0d8cec6beb8b4b3b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a99e92877b6f64584d41352a1e1307000000000000000007111d2934404b56616a76818d98a2abb6bfc0b4a99f958f837a706b6360595856515055575960636d717d86919ca5aeb8c3c2b8aea5998e82766a60564b3f34291d12060000000000000000000000000000000000000000000000000000070f182028303840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f372f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86949da8b3bfbfb4a89c91877e76737171717171716e685f54493e33281c1105000d1925303c47535f6a76818d99a4b0bbc7d2d8cfc6bcb4aca49d95908b84807d7b7a797a7b7d80848a90959da3acb3bcc6c9c0b7aca39c90857a6f63584f453b30251a0f04000007121e2a35414c58636f7b8692a6afa89c918579695f555f6a76818d99a4b0b8aca095897e7266584f453a36373c454c57626c76828d99a7b0aea2978b7f74685d51464a55606977838e9aa5aa9f96887c7165594e42372b1f140800000000061019242e38424b555e636e78818c919ca1a8afb7bdc4bdb7afaaa8a3a8aaafb7bfc7bdb4aca39d938f837b706b625b524b48515a626c727e8484848484848484848484848484847e72665b4f44382c21150a00000000000b16222d3945505c67737f8a96a1adb9c4d0d5cbc2bbb5b1b0b3b5b9bfc7d0d5cabeb2a79b90847b706b615a5149403830281f170e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d3c9bfb6afa9a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79f94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0d2c8beb5aea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69e92877b6f64584d41352a1e1307000000000000000004101b26313c47515a65707c87919ba6afb9c3b9afa69d938f837c746f696663605a596063656a6f757d859097a0aab5bec8c0b4a99e948a7e72675a51473c31261b1004000000000000000000000000000000000000000000000000000000070f1820282f363b3f4041414141414141414141414141414141403e3b352f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b8792a4adb7c2bbafa4988c81756d67666565656565635f584f453a30251a0e03000d1925303c47535f6a76818d99a4b0bbc7d2d3c8bfb6aca39d938f857f7a75716f6e696e6f7175797f848f939ca3acb5bec8c7bdb4a99e958b8074695f554a3f33281c1207000007131e2a36414d5864707b87929eaaa79c9085796d624f5f6b76828d99a5b0b6ab9f93887c7165594e42362b2d323d48525b66727e8997a0aab0a5998d82766b5a51474650596974808b97a3afa6968a7e73675c5044392d22160a00000000000a141e28323a4549545f686e78808b91979fa6acb4bac1bfb9b5b3aeb3b5b9bfc7c1b7aca39d938f837b6f6b625b524b42414a535c646e72797979797979797979797979797979726e64594e42372c20150900000000000b16222d3945505c67737f8a96a1adb9c4d0d6ccc4bcb6b2b1b2b6bcc4cad2cfc4b8aca1958a7e726b625a514a4139302820170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cec3b9afa69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b94887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0cdc2b8aea59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a92877b6f64584d41352a1e13070000000000000000020d18222d37414c57626c76818d959fa9b5bbbfb6ada49d938f857f7a75716f6a6c6c696f71757a808690959fa7b0bac6c0b8ada49b9084796e63574c40372d22170d0100000000000000000000000000000000000000000000000000000000070f171f262c313435363636363636363636363636363636363433302b251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88939fabb6c5bab1a894887d71665d5a5a5a5a5a5a57544f473e352b20160b00000d1925303c47535f6a76818d99a4b0bbc7d2cec3b9afa69d938f837b736e6966646360636466686e737b838e929ca5aeb8c3cdc3b8aea59b90847a6e63574c40362c21160c010007131f2a36414d5964707b87939eaaa79c9084796d62565f6a76828d99a4b0b6aa9f93877c7065594d42362b242e38424c58636f7a85919ca8b3a79b9084796b61564b444f5b66727e8995a0aca3978c8075695d52463b2f23180c0100000000050f18212a303a454f585f686e78808790969da3aab1bac3c4c0bfbabfc0c4c9c9beb3a79d938f837b6f6a615a524a423a39434b545d64666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d66645d544a3f34291e130700000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bcb3aca7a5a7acb3bac1cad6cabeb3a79c90857c706a61584f453b302c241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbc0b5a99f9590909090909090909090909090909090909090909090887d71655a4e43372b201409000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbbfb4a99e94908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877b6f64584d41352a1e130700000000000000000008131d27333e48525b646f7b85909ca2abb4bcbdb4ada49d96908b85817d7b797878797a7d80858c91979fa6afb7c0c4bab0a79d938a7f73695f554a3f30271d1308000000000000000000000000000000000000000000000000000000000000070f161c212628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7c1b6aba197867b6f63584f4e4e4e4e4e4b49453e372e251b110700000d1925303c47535f6a76818d99a4b0bbc7d2cbc0b4a99f958f837a6f6b6360585857555758585f636a6f7a828e959ea9b4bcc6c8bfb4a99e95897e7266584f453b30251a0f040007131e2a35414d58646f7b87929ea9a89c9085796e59505e6a75818d98a4afb7ab9f94887d71655a4e43372b2028343f4b56606a78838f9ba6b2a99e94877b6f64584d424e5965717c8893a7b0a5998d82766b5f53483c31251a0e02000000000008111a202b353e474f585f686e747e858f939aa1aab4bec9cbcac6cacbced3c9bdb1a69a8f837b6f6a625b554a453f38323b444d54595b6262626262626262626262626262625b59544d443a30251b100500000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b6aca39c9a9ca3aab1bac3cbcbbfb4a99e958f837a6f695f554a453d342b22191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb3a79c9085848484848484848484848484848484848484848484847d71655a4e42372b201408000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb3a79b90848383838383838383838383838383838383838383837b6f64584c41352a1e1207000000000000000000030d19242e39424b56616b737e8a919ba3acb4bcbdb4ada69f9c95908c89868483838485888c90959ca0a7afb6bfc2bbb5aba0978f83796e63584f453b3020170d0300000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1c1a16110c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb4a89c91857a6e63574b4342424242403e3a352e261e150b0100000d1925303c47535f6a76818d99a4b0bbc7cdc2b7ada49c90857b706a615a55504d4c4a4c4d4f555a61696f7b84909ba3acb6c1ccc3b8aea5998d8176695f554a3f33281c11050007121e2935414c58636f7a8692a6afa89c91857a6960555d6974808c97a3aeb8aca1958a7e73675b5044382e2426313c4650596b76828e99a5b0aea595897d72665b4f434c58646f7b8697a0aba69a8f83776c6055493d322611060000000000000107111b252e373e474f575e636e727c838b909aa5b0bbc6d2d6d1d6d4d4d6cabfb3a79c90857f78706c655e554f484038343c444a4e4f5656565656565656565656565656564f4e4a443c342a20160c0100000000000b16222d3945505c67737f8a96a1adb9c4d0c9beb2a79c938e939aa1aab2bbc4cec3b8aea59d948e82796e635f564d443b332a21180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8078787878787878787878787878787878787878787878716c63584d41362a1f1308000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807777777777777777777777777777777777777777776f6a61564b4034291d1206000000000000000000000a141f29323d47515a646e76818d939ca4acb4bbbdb6afaaa69f9c989495908f8f909197989c9fa6abb0b8bfc3bab2aba19c91867d71695f55483f362c210f0600000000000000000000000000000000000000000000000000000000000000000002080c0f11121313131313131313131313131313131312110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c918579685e54493e373737373433302b251e160d040000000d1925303c47535f6a76818d99a4b0bbc7cabfb3a89d93897e726b625a514a4641403f4041454a5159616a727d89939ca7b3c0cac8beb3a89c9085796e63574c4034291d12060006121d2934404c57636e7a86969faaaba097867a6f63575c67737f8a96a7b0baafa3978c8075695b52483d3228222c3747535e6a75818d98a4afaea3978b807469574e454b57636e7a85919ca8a79b9084786d61564a352b20160b00000000000000010b151e262e373e474e545d646c7079808b97a3aebac5d1d6d0ccc9c8cbcbc0b5a99f95908a837c736e635f5850494038343a3f43444a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44423f3a342c231a10060000000000000b16222d3945505c67737f8a96a1adb9c4d0c8bdb1a59a8e828c909aa2abb4bcc5c8beb6ada49c928d81756f655d544c433a312820170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d65635c53493e33281d1206000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a51473c31261b100500000000000000000000050f18232d37414a555e636f7a828e939da3abb5babfb9b5afa9a7a3a59e9b9b9a9b9ca0a7a7a9afb5bac0bfb8b4aaa29b918b7f746d63584f45382f261c120000000000000000000000000000000000000000000000000000000000000000000000000104060607070707070707070707070707070707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e624e453a2f2b2b2b292825201b150d06000000000d1925303c47535f6a76818d99a4b0bbc7c5bab1a89b8f83796e635b5249413b36343334353b4149515a636d77838e9aa7b0bac4cbc0b5aa9f96887d7165594e42372b2014080005111c28333f4a555f697985909ca8b0a793877b7064595a65717d8897a0abb5b2a69a8f83786c62574c42383029303b454f586a76818d99a4b0b1a5998e8277685e544949545e687985909ca8a79c9085796e624e453a2f24190e0300000000000000040d161e262e363e4549545d656f747f8b97a2aeb9c5d4cfc6c1bebcbfc1c3b9afa69f9c938f857f756e696059504840372e3437383f3f3f3f3f3f3f3f3f3f3f3f3f3f3f383734302a231c130a000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7f808c929ba3acb5bec7c6bdb4aca39b918b7f746e645c534a423930271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746861616161616161616161616161616161616161615a58534c43392f24190e03000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468606060606060606060606060606060606060605856514a41372d23180d02000000000000000000000009131e273139454a5560696f7a838f939ca2aab0b7bcbfb9b4b3afaea9a7a6a6a7a8abb0b3b4b9bfc1bbb6aea9a19a918d81786e635c53483f35271f150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b352b2020201d1c1a16110b0400000000000d1925303c47535f6a76818d99a4b0bbc7c1b6aba1978a7e73685e544a4239302c2928292b3038414a545d66727e8996a0aab5c0ccc3b9afa6968a7f73685c5045392e22160b00040f1a25303b454f586c78838f9aa6aba094887d71665a57636f7a86919ca8b4b3a89d93877c70645b5249403834343f4a555f6977838e9aa5b1b3a79c9085796e63574b454e626d7984909ca7a89c918579685e54493e33271c10050000000000000000060d16212b353f48525b636d737f8a9099a4afbbc6cac4bcb6b2b1b4b6babfb6afa9a39d96908a81796f6a605950473f352b2c2c3333333333333333333333333333332c2c2925201a130b03000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e79818d939da5aeb6bfc8c5bcb3aba19c91877e726c635b524940372f251c1207030000000000000000000000000000000000000000000000000000000000000000000205060707070707070707101b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1308070707070707070606040100000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d565656565656565656565656565656565656564e4d49433b33291f150a00000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5555555555555555555555555555555555554c4b47413930271d1309000000000000000000000000040e172029313c465059616a6f7b838e929ca0a7acb2b6bcbfbfbbb8b4b3b2b2b2b4b5babfc0bfbcb6b2aba59e9c908b81796e685e544c43372f25170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d1411110e0b07010000000000000d1925303c47535f6a76818d99a4b0bbc7bfb4a89c91867b6f63574e453a3128211d1d1d21283139444c57636f7a85919ca8b3bfcbc9bbafa4988c81756a5e52473b3024190d00010c16212c3648535f6a76828d99a4ada1968a7e73675c55606977828e9aa7afb7ada4988c80756c62595048424040454e57636e7a85919ca8b3b4a99f95877c7064594d4a56616d7884909ba7aaa096857a6e63574b4034291d11060000000000000000030f1a25303b454f58626b727e87919ca0a9b3bec8c0bab5aca7a5a8abb1b8bcb9b5aca69f9c918d827a6f6960584f453b30282128282828282828282828282828282821201e1b16100a0300000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e737a838f949ea6afb8c1cac4bbb6aba19791867d716b625a51483f352b211c130a0200000000000000000000000000000000000000000000000000000000000003090d10121212121212121212121b27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f13121212121212121212110f0c08030000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a42413e39332b22190f0904000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51494949494949494949494949494949494941403c37302920170e0b06010000000000000000000000071019222c364049515a616a6f7a828b91969ca3a7acb3b4b8bbbdbebebdbdbebfbebdbbb8b4b2aca7a29b95908980786e685f574e453b33271e1506000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110605030000000000000000000d1925303c47535f6a76818d99a4b0bbc7bdb2a69b8f83786a6156473e352a2118121111172029343f4a55606977838e9aa5b1bdc8c8bcb1a5998e82776b6054483d31261a0e00000712232f3b46525d6974808c97a3aea4988c81756a5a515968737f8a969faab5b3a89c91867c70696059524d4b4b4c545e68727d89969faab5b9afa695897e72675b504a56616d78848f9ba7a89c91857a685e54493e33271c100500000000000000030d172029333e4a555f68707c859097a0abb1b9c7c0b7b0aaa39c9a9ca1a8abb4b9bcb7afaaa19b928e82796f685f544a42382e23191c1c1c1c1c1c1c1c1c1c1c1c1c1c151513100c06000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e736f7b8490969fa7b0bac5cfc5bab1a89f9690847c706a60584f453b302c241a12090000000000000000000000000000000000000000000000000000000000070d13181b1d1e1e1e1e1e1e1e1e1e1e27323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b1f1e1e1e1e1e1e1e1e1e1e1d1b17120d0600000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3736332f29221d1b18130e070000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3534312d27201d1c1916110b04000000000000000000000008121c2630384149515a61696f787f868e929a9ca3a7a9aeafb1b3b3b5bab5b3b2b1afaea8a7a39c99928d857e746e685f584f473e352b23170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7bbafa4988d81756a5a5147362e251911070607101a26313b4650596975808c97a3afbac6c9beb2a69b8f84786c61554a3e32271b1000000a16212d38444f5b67727e8995a5aea69b8f83786a615658636f7b85919ca7b0b5aaa0968f837a6f69625b585756585e636e78838e9aa6afb9baafa3978c807569584f47515a6d7984909ca7a79c9085796e624e453a2f24190e030000000000000008131d27323d47515a636e79838f959fa7b0bac1c0b7afa7a09c928e91979ca2a9afb6beb9b5aba29c938d81796e635b52483d32271d13081111111111111111111111100a0907050100000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e736b707c859097a0abb6bac3cac1b8afa79e958f837a6f695f554a453d342b221911070000000000000000000000000000000000000000000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a323e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42362b2a2a2a2a2a2a2a2a2a2a292826221c160f07000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a333333333333333333333333333333332b2a2a2a2a2a2927231d17100800000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3232323232323232323232323232322a2a2a2a2a2a292724201b140d0500000000000000000000030c161f283039414a515960686e737c82898e93989b9ea5a4a5a7a8aab0aaa8a7a5a4a59e9b97928e88817b726e635f584f473f362e251b120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc6baaea3978c8074695d5246372f1e14090000010c17222c3645515d68747f8b97a2aeb9c5cabeb3a79b9084796d61564a3f33271c10000007131e2a36414d58646f7b87949ea8a89c91867b6f635856616a75818d96a0aab5b0a79d938e827a706c6764636163666e747f8b939ca7b7c0bdb1a69a8e8377695f554b56616a7985909ca8a79b9084796d61564a352b20160b00000000000000020d18222d37404b56616b747f8b939da6afb8c1c0b7afa69f96918982878e929c9fa6aeb5bebbb3aca39b928b7f746b62574c41372d22180d020505050505050505050505000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73676c727e87919ca1aab3bcc5c9c0b7aea59d948e82796e635f564d443b332a21180f060000000000000000000000000000000000000000000000000007101820272d32343535353535353535353535353e4a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d423635353535353535353535353534312c261f170f060000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3535353535353535353535353535353535353535353534322d2720191006000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a35353535353535353535353535353535353535353534332f2b251e160d0400000000000000000000060f1720293039414950575e636c70777e83888c909596989a9b9ca09da09c9b9a989694908c87827d766f6b645d544f473f372e261e140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc5b9aea2968b7f74685c51453a2e22170b0000000812222d3945505c67737f8a96a1adb8c4cabfb3a79c9085796e62564b3f34281c11000007121e2935404b57616b7884909ba7aba1978a7e73675a515a64707b86919ca4adb6aca39c928e837c76726f6e6a6f72777f86919ca3acb6c0bfb3a89c91857a6e63574c58636f7b86969faaa69b8f83786c6155493e322711060000000000000004101b26313c47515a646f7b85909ca3acb6bfc0b8afa69f9691867e777c828990959ea5aeb7c0bcb3aba29c91857c70645a51473c31261b10040000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e7367646d737f8a919aa2abb4bdc6c7beb6ada49c928d81756f655d544c433a312820170e050000000000000000000000000000000000000000000000030d17202931373c40414141414141414141414141414a55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d42414141414141414141414141403f3c3630281f160d0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464141414141414141414141414141414141414141414141403d37312920160e050000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514641414141414141414141414141414141414141414141403e3a352e261e140b01000000000000000000000710182029303840474e545b62656d72777c8084888a8d8e909196919791908e8d8a8784807c77716c64615a5449453e372e271e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc5b9aea2968b7f74685c51453a2e2213090000000b16222d3945505c67737f8a96a1adb8c4cabfb3a79c9085796e62564b3f34281c11000005101c27323d47515a6a75818d98a5aea8998e82766a615657626b74808c939da6afb4aba29c938f87817e7b7a797b7d828a9197a0abb0b2b6bbb5aa9f96887c7065594e5965717c8893a6afa5998d82766b5f53483c31251a0e0200000000000006121d2934404b56616a75808c969faab4bcc4bab0a79f9691867e726e70777e8590949ea6afb9c4bbb5aa9f968d81756a61564b4034291d12060000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675d656f75808c929ca4adb5bec7c6bdb4aca39b918b7f746e645c534a423930271e150c020000000000000000000000000000000000000000000009131d27313941474b4c4c4c4c4c4c4c4c4c4c4c4c4c4c55616c78848f9ba6b2bdc9cdc1b6aa9e93877c7065594d4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a46403830261c120800000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b47413931271e150c0200000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b49453e362e251b11060000000000000000000000081018202830363e454952575d64666c7175797c7f81838485858686858483817e7c7875706c65635c56514a443a352e261e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc6baaea3978c8074695d5246372d22180b0100000817232e3a45515d68747f8b97a2aeb9c5cabeb3a79b9084796d61564a3f33271c100000020d18232e38434f5a66727d89959ea9a89c91867b6f6459525b636e79838f969fa7b0b3aba49d97918d8986858586898e929ca0a7a7a5a7abb3b9afa6968a7e73675c505b67737e8a95a1aca3978c8075695d52463b2f24180c0100000000000007121e2935414c58636f7b85909ca6afb9c4c1b5aba09791867d716d64656e727c8490969faab5c0c4b9afa69c91857b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5e636e79828e939da5aeb7c0c9c5bcb3aaa19c91877e726c635b524940372f251c1207030000000000000000000000000000000000000000020d18232d37414a5156585858585858585858585858585858616c78848f9ba6b2bdc9cdc1b6aa9e93877c70655958585858585858585858585858585755504940362c22170c01000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5858585858585858585858585858585858585858585858585856514a41372f251b110700000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d58585858585858585858585858585858585858585858585857544e473e352b20160b0000000000000000000000000810171f262e353a42484c54595c6365686e7073757779797a7a7a7a79777573706c6965625b58534b474139302b251e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7bbafa4988d81756a5a51473c31251b11070607101b26313c4650596975808c97a3afbac6c9beb2a69b8f84786c61554a3e32271b1000000009141d2934404c57636e7984909ca8aaa0978b80746a6056556069707c859097a0a7afb4ada8a19c99959791919695999ca2aba29c999ca2abb6afa4988c81756a59535c6a75818d98a4aea5968a7e73675c5045392d22160b000000000000030e19242f3a454e5767737f8a969faab6bfc2b7ada49c91867e726d635d5d646b707c86919ca8b3bfc9c0b5aa9f968a7e73675c5044392d2211070000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c555f686f7a838f959ea6afb8c1cac3bbb6aba19791867d716b625950483f352b211c130a020000000000000000000000000000000000000005101b26323c47515a61646464646464646464646464646464646c78848f9ba6b2bdc9cdc1b6aa9e93877c706564646464646464646464646464646463605950463c31261b0f04000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686464646464646464646464646464646464646464646464646464615a51483f352b21160b00000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746864646464646464646464646464646464646464646464646464635e574e453a2f24190e03000000000000000000000000070f161e252b2f393e444a4e5358585f6365676a6b6d686e6f6e696d6b6a6765625c5957524d49433d373129201b150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7bdb2a69b8f83786a61564b3e352b2018121112182029343f4a55606977838e9aa5b1bdc8c8bcb1a5998e82776b6054483d31261a0e00000005111c28333e4a555f6875808c97a1aba79c90857a6f635b5259626c727e8691979fa6adb4b1aba8a4a7a09c9c9fa7a5a7aba39c928e929ca7b2b2a69a8f8378696058636c78848f9ba7a99e95877c7065594d42362b1f130800000000000005101c27333e49545e6877828e99a6afb9c7bfb4a89e948b7f746d645d54545b626c75808c97a7b0bac4c4b9afa7988d81756a5e5347352b20160b0000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c4f58606a707b8490969fa8b1bac5d0c5bab1a89f9690847c706a60584f453b302c231a12090000000000000000000000000000000000000006121d2934404b56616a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f78848f9ba6b2bdc9cdc1b6aa9e93877c706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6960554a3f34281d1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a61584f453b30251a0f03000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e685e54493e33271c100500000000000000000000000000050d141b20292e333a3f43494d4f5457595c5e60585f6363635f58605e5c5957534d4c48423e39322d272019110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7bfb4a89c91867b6f63584f453a3029211d1d1d21283139414c57636f7a85919ca8b3bfcbc6bbafa4988c81756a5e52473b3024190d000000030f1a25303b454f5865707c86919ca8a99f958b80746b6258525b646d727e8790969da4a9afb3b4b0b0aba8a8aaafb0aca49c928e828e99a6afb2a89c91857a6f635a65717c88949ea8a79c9084796e63574b4034291d110600000000000006111d2934404b57636e7985909ca7b3bfc9beb2a79b8f84796e635d544c4b525b65707c8897a0abb5c1c9bdb2a69b8f83786c584f453a30251a0e0300000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c505059616b717d869197a1abb6bbc4cac1b8afa69e958f837a6f695f554a453c342b2219110700000000000000000000000000000000000007121e2a35414c5864767b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b838f9ba6b2bec9cec2b7ab9f94887d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6f63574c4035291e1206000b16222d3945505c67737f8a96a1adb9c4d0c6baaea3978c807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b77685f554a3e33281c1105000b16222d3945505c67737f8a96a1adb9c4d0c6baaea3978c807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796e63574b4034291d11060000000000000000000000000000040b11161f242a3034393e3f454a4b4e5053544f55575857554f5453504e4c4842413e38332f29231e1710070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c1b6aba1978a7e73685f54494239302c2928292b3038414a545d66727e8996a0aab5c0ccc3b9afa6968a7f73685c5045392e22160b000000000b16212b353f4c57626c76828d99a2aba69c91867c70685f54545d646e727e858f939c9fa6a8adafb0b1b1b1b0aea8a39d948e827c87959fa6a6a6a097887d7165616b75818c98a4ada6998d8176685e54493e33271c100500000000000007131e2a36414d5864707b87959fa9b5c0c5baaea3978c8074685f544c44424b57636e7a85919ca8b4bfcabfb3a79c908579685f54493e33281c110500000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5049525b636c727e87919ca1abb3bcc5c9c0b7aea59d938e82796e635f554d443b332a21180f060000000000000000000000000000000000111d2834404b57626e7a8686868686868686868686868686868686868f949da8b3bfcacfc3b8aca1978d8886868686868686868686868686868686868074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0c7bbb0a59a908c86868686868686868686868686868686868686868686868686868685796e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c7bbb0a59a908c8686868686868686868686868686868686868686868686868686867a6f63584c4035291e120700000000000000000000000000000001060f14192025292f33353b3e4042454749454a4c4c4c4a4549474542413e3935332e29241f18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5bab1a89b8f83796e635b5249413b36343334353b4149515a646d77838f9aa7b0bac4cbc0b5aa9f96887d7165594e42372b2014080000000007111b25333e48525b65717c88929ba6aaa0968e82786e635d54545d646d727c838b90959b9da4a3a5a5a6a5a4a59e9b938f847b7885909b9b9b9b9b968a7f7368646f7b85919ca8a99f95897e7266574e453a2f24190e0300000000000008141f2b37424e5965707c8893a6afb9c3c4b8aca1958a7e7267584f453c3e4a545f687984909ca7b3becabfb4a89c91857a6e63574b4034291d110600000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c50444a535c646e747f8b919ba3acb5bdc6c7beb6ada49c928c81756f655d544c433a312820170e0500000000000000000000000000000000111d2834404b57626e7a8591929292929292929292929292929292929b9da4adb7c2cdd1c6bbb1a79e9794929292929292929292929292929292928b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0c9beb4aaa19a97929292929292929292929292929292929292929292929292929291857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c9beb4aaa19a979292929292929292929292929292929292929292929292929292867a6f63584c4035291e12070000000000000000000000000000000000050a10161a1f24252b30333436393b353b3e4040403f3b353b393635332e2a27241f1a150f090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cac1b3a89d94897e726b625a524a4641403f4041454a5159616b727d89939da7b7c0cacabfb3a89c9085796e63574c4034291d120600000000020c19242e38424c58636c76818d969faaa79c928b7f746d635c53545d646c70797f858b8f939597999a9a99989794908a837b6f77828e8f8f8f8f8f8f8d81766a6c75808c969faaa79c90857a6e63574c40352b20160b000000000000000914202b37424e5a65717c88949fabb6c8c3b8aca195897e72675b50443e414b57616b7985919ca8b3bfcbc1b6aba197867a6f63574c4035291d120600000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044434c545d656f75818d929ca4adb6bfc8c6bdb4aca39b918b7f746e645c534a423930271e150c02000000000000000000000000000000111d2834404b57626e7a85919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea6a8adb5bdc7d1d5cbc1b7aea7a19f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0cec4bab1aaa5a39e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0cec4bab1aaa5a39e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d92867a6f63584c4035291e120700000000000000000000000000000000000000060b0f151a1b212528292b2d302b303334353433302b302d2b2a28241f1c19140f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020714202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cdc2b7ada49c90857c706a615b55504d4c4a4c4d4f555a616a6f7b84909ca3acb6c8cdc2b8aea5998d8176695f554a3f33281c110500000000000a141f29333e49535c646f7b85909ca3aca39c91877d716c635c54545b62696e747b7f83878a8c8d8e8e8e8d8b88847f796f6b747f8384848484848483827669717d86919ca6aaa0968c80756960554a3f33251b11060000000000000008141f2b36424e5965707c8793a5aeb8c3c5b9aea2968b7f74685d544b4a4b515a64707b87969faab5c0cbbfb4a89c91857a6e63574b4034291d110600000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c50443b444d565f636e79828e949da5aeb7c0cac5bcb3aaa19c91877e726c635b524940372f251c1207030000000000000000000000000000111d2834404b57626e7a85919ca8a9a9a9a9a9a9a9a9a9a9a9a9a9a9b2b3b7bdc5ced7dad1c7bfb7b1acaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0d4cac1bab4b0aea9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0d4cac1bab4b0aea9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d92867a6f63584c4035291e1207000000000000000000000000000000000000000001050a0b11161a1c1d1f222421252829292928252124221f1e1c1915110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c1216202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d1c7bdb4a99f958f837a706b6360585857555758585f636b6f7a828e959ea9b4bcc6cbbfb4a99e95897e7266584f453b30251a0f040000000000050f19242f39434b57616b737f8b939ca5aba09790857d716c635d5552585f636a6f73787b7e8082828382817f7d79736e68656f74787878787878787876716f7a838f97a0aba59c91867b6f645850463b3025140b010000000000000007121e2935414c58636f7b86959ea9b4bfc8bdb1a69a8e83776e645d5754565a616a737f8a96a7afb9c4cabeb2a79b908479685e54493e33271c100500000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044393c454a555f696f7a838f959fa7b0bac4cfc3bbb6aba19791867d716b625950483f352b211c130a0200000000000000000000000000111d2834404b57626e7a85919ca8b4b5b5b5b5b5b5b5b5b5b5b5b5b5bebfc2c7ced5dee1d8cfc7c1bbb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5aea2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0dad2cac4bebbbab5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0dad2cac4bebbbab5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4a99d92867a6f63584c4035291e1207000000000000000000000000000000000000000000000001070b0f1112141611161a1c1d1e1d1c1a1612161413110e0a06030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21252c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cec3b9afa69d938f837b746e6966646360636466696e737b838e939ca5aeb8c4cec3b8aea59b9084796e63574c40362c21160c010000000000000a151f29323d47515a636e79828e959ea7a79f9690857c716d655e5651555a6163686b707375767777777674716e68635f5e65686c6c6c6c6c6c6c6c686e79818d939da7a99f958c81756b6156483f362c211704000000000000000006121d2934404b56616a7984909ba7b3bec8beb3a79c93897e726d65635f60636a6f7b84909ba7b3bec9c8bcb1a5998e82776b574e453a2f24190e0300000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c504439303b454f58616a707c859096a0aab5bac3d0c5bab1a89f9690847b706a60584f453b302c231a120900000000000000000000000000111d2834404b57626e7a85919ca8b4bfc0c0c0c0c0c0c0c0c0c0c0c0c9cacdd1d7ded8d8d8d8d1cbc6c3c2c0c0c0c0c0c0c0c0c0c0c0c0baaea2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4d0d8dad4cec9c7c6c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0d8dad4cec9c7c6c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b4a99d92867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000030506080b070b0f11121212110f0b070b0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f262c303337434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d3c8bfb6aca39d948f857f7a75726f6e696e6f7175797f848f939ca3acb6bec8c7c0b4a99e958b7f74695f554a3f33261c120700000000000000050f18232e38414a555f686f7b849097a0aba69f9590857e736f63615a545156585b626467696b6b6c6b6a6865635f5855555a5c61616161615b62696e79818c929ca4aba29c90857b6f645a5147382f261c1207000000000000000004101b26313c47515a6a76818d99a5aeb8c3c1b6aca39c91867e76716e686a6f737a828e959ea9b4bfcbc1b7aca3978b7f74685d5145352b20160b0000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392c363f48515a626b717d86919ca1aab2bbc4cac1b8afa69e958f837a6f695f554a453c342b22191107000000000000000000000000111d2834404b57626e7a85919ca8b4bfcbcccccccccccccccccccccccdcdcdcdcdcdcdcdcdcdcdcdcdcdcdccccccccccccccccccccccc5baaea2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdcdcdcdcdcccccccccccccccccccccccccccccccccccccccccccbbfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdcdcdcdcdccccccccccccccccccccccccccccccccccccccccccc0b4a99d92867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000000000000000000305060606050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f272f363b3f40434f5a66717d8994a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d9cfc7bdb4aca49d95908b84817d7b7a797a7b7d80848a90959da4acb3bcc6c9c0b7aca39c90847a6f63584f453b3025150c02000000000000000009141e28303b454f58616b717d86919ca0a9a69f9590867f766f6a645d58534c5257595b5d5f6060605e5d5a57544f4a4b4f51555553585f636b7079818c919ba2aba49c928a7e736a61564a4138271f160c020000000000000000020d18222d37444f5b67727e89959ea9b4bdc8bcb5aa9f969189817c7a78787a7e848e939ca5aeb8c3c7bfb3a79d93877c7065594e42362b1f11060000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d2f384149525b636d737e8a909aa2abb4bcc5c9c0b7aea59d938e82796e635e554d443b332a21180f060000000000000000000000111d2834404b57626e7a85919ca8b4bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1baaea2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0b4a99d92867a6f63584c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f454a4c4c505867727e8995a1acb8bfb3a79c9085796d62564b3f33281c110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d7cfc8c3bdb4ada69f9c94908c898786858687898c90949c9ea5adb4bcc4cfc4b9afa69d938a7f736a6056483f352b211605000000000000000000040e16212b353f48515a636d737f8a9099a0aba69f97918a817b726e65635c57554f4d50525354545453514e4b4a45464a4c4f55575c63686e737c838d929ba1aaa69d948e82766e645a51473a3128170e050000000000000000000008131d2935404c57636e7a84909ca4adb7c0c4b9afa69f9c918d88858484858a90949ca3acb5bec9bfb6aca39a8f83776c62574c41352a1e13010000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d273039424b535c646e74808b919ba3acb5bec7c7beb6ada49c928c81756f655d544c433a312820160e0500000000000000000000111d2834404b57626e7a85919ca8b4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aea2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4a99d92867a6f63584c4035291e120700000000000000000000000000000000000000000000000000000000000000000000000003050606060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f484f55575858606974808c97a3aebabeb2a79b9084786d61564a3e33271c100400000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cfc7bfb9b4b3b4afa9a59e9b9894929690969294989b9ea5a9aeb6bdc4cfc2bab5aa9f968f83796e63595046372f251c12070000000000000000000007111b252f37414a535c656e737f8b909ca0a7a7a09c928d847e77716c66635f5858565051504f4e4e4e4e4f5051505557585f63666d71797f858f939ba2aaa69f958f837a6f635e554a413729211706000000000000000000000006111d28333f4a556069747f8b949da7b0bac4c0b7afaaa29b9896908f9091979b9ea5acb3bcc6c1b8afa69c92897e72665c53483e33281c11060000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cdc4b8ada1968a7e73675c5044392d2029323a434c555e636e78818d939ca5aeb6bfc8c6bdb4aca39b918b7f746e645c534a423930271e150c02000000000000000000111d2834404b57626e7a85919ca8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2978b8074695d51463a2f23170c000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99d92867a6f63584c4035291e120700000000000000000000000000000000000000000000000000000000000002050607070b0e11111212110f0c0708080603000000000606060606060606060606060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f585f636464686e7984909ba7b2bebcb1a59a8e82776b6054493d31261a0f0300000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d3c8bfb6afa9a7a9afb4aea9a7a3a0a69f9c9fa6a0a3a7a8aeb4b8bec6cac5bab2aaa19c91867c70685f54494037271e150c0200000000000000000000020c151e27313a434c555e656f747f8a91979fa6aba29b949089827d77726e69666360595d5b5a5a59595a5a5b5d59606366696e72777d838a90959da3aba69f9590857c706a60564d443931271910070000000000000000000000040f1a25303b465059636f7a838f97a0aab5bac1c0b9b5aba6a69f9c9b9b9ca0a7a8aeb5bcc4c0bab1a89f968e82786e63574b42392e24190e030000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c1c1c1b8ada1968a7e73675c5044392d22212a333c4449545e686f79828e949ea6afb8c0cac5bcb3aaa19c91877e726c635b524940372f251b1107000000000000000000111d2834404b57626e7a85919c9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e978b8074695d51463a2f23170c000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d91857a6e63574c4034291d1206000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d92867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000000004090d10121311161a1c1d1e1d1d1a17121413110e0a040611111111111111111111111111110707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f696e6f707278808c949ea9b4bfb8aea5988c8075695e52473b2f24180d0100000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cec3b9afa69f9c9fa6acb3b4b2afabafaaa8aaafabafb2b4b8bec3c8c8c1bab6aaa19a908a7e726c62584f45393027170e05000000000000000000000000050e162129333c454e555e666f747f8790969da4aba59e9b938e88837e7a75726f6a6a686766656565656667686a696f7275797e82888e939c9fa6aca49d9590857d716c625950463d3429201708000000000000000000000000010c17212c363f4a556069717d86919ca0abb0b8bec4bbb5b1afaaa8a6a7a8abb0b4b8bec5beb8b0aba19790857c70685e54493e32291f150a000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5ada1968a7e73675c5044392d2219232b2f3a454e5760696f7b8490959fa7b0bab5b5b5b5b6aba19791867d716b625950483f352b21160c020000000000000000111d2834404b57626e7a869193939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938b8074695d51463a2f23170c000b16222d3945505c67737f8a93939393939393939393939393939393939393939393939393939393939393939393939393939391857a6e63574c4034291d1206000b16222d3945505c67737f8a939393939393939393939393939393939393939393939393939393939393939393939393939392867a6f63584c4035291e12070000000000000000000000000000000000000000000000000000060b0e13181b1d1e22202528292929282521231f1f1d19150f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1312100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e797b7c7e828c919ba5aeb8bab4a99e94897d72665a4f43382c2015090000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cbc0b4a99f9590959ca3acb6babbb7b9b5b3b5b9b7babebfc2c7c9c3bdb8b0aba19a918c80756e645b52473f35282016060000000000000000000000000000061019232b343d454e565f666f737e858f949ba2a9a9a39c9a938e8984817d7a78757472717170707171727475787a7d8084898e929a9ca3a9aaa29c948f857d716c635b524940372d241810070000000000000000000000000007121c26313b465059636d737f8a909ca0a7aeb6bac1c0bfb9b5b3b2b2b4b5bac0c2c1bbb6aea7a09c91877e726b62574e453a2f22190f05000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaa1968a7e73675c5044392d22161b202b353e475059616a707c859097a0abaaaaaaaaaaaab1a89f9690847b706a60584f453b30251b11070000000000000000111d2834404b57626e7a86878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878074695d51463a2f23170c000b16222d3945505c67737f878787878787878787878787878787878787878787878787878787878787878787878787878787878785796e63574c4034291d1206000b16222d3945505c67737f87878787878787878787878787878787878787878787878787878787878787878787878787878787867a6f63584c4035291e1207000000000000000000000000000000000000000000000000040910151a1e2327292a2d2b303334353533302c2e2b2a28241f1b1d29292929292929292929292929291e1e1c18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e8687898e939ba1aab5b8b0aba29b90847a6e63574c4034291d12060000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cabfb3a79c90858e939ca3abb1b8bdc1c0bfc0c4c9c6c9c9c7c2bfb9b5ada7a09c918c80786e635e544b42372e25180f0600000000000000000000000000000008121b242d353e464e565e656d727d838d919b9ea5aaa7a39c9a95908c898683817f7e7d7c7c7c7c7d7e7f818385898c90959a9ca3a7aba69f9c928e837c716c635c534b423930271c14080000000000000000000000000000020c17222c364048535c656e74808b91979ea5abb0b5babebfc0bfbebebfc1bfbebab5b4aba59e97918a7f736d645b52473e352b20110800000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e968a7e73675c5044392d2216111b252e364048515a626c717d86919ca19e9e9e9e9e9e9e9ea69e958f837a6f685f554a3f352b21160b000000000000000008131f2a36424d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e12070007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c77685f554a3e33281c11050007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6e63574b4034291d11060000000000000000000000000000000000000000000000070e14182025272d32343539353a3e4040403f3b363a3736332f28262834343434343434343434343434342a2927231e17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8993959a9ca3aab2b3aba7a09c918a7e736960554a3f33281d11060000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5baaea2978b80828e929ca1a8adb2b6bbbdbfc0c3c0bfbdbbb7b3afa9a49d97918b80786e685e544d443a32271e150700000000000000000000000000000000020a141c252d353e464e555d646c707a818990959ca0a7aaa7a59e9c9897918f8d8b898988878888888a8b8d8f9197989c9ea5a7aca7a29c96908a827a706c635c534c433a322820170c0300000000000000000000000000000008121c262f38434c555e666f747f8790959ca0a7aab0b2b3b7b7b7b7b7b8b4b2b0aba8a29b9590867f736e655d544a42362e251b110600000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a93939393939393939393938a7e73675c5044392d22160b141e262f38414a525b636d737f8a91939393939393939393939393938e82796e63584f453b30251a0f030000000000000007131e2a35404c57626b70707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706f6a61564b4034291d12060006121d29343f4b56606a6f7070707070707070707070707070707070707070707070707070707070707070707070707070707070706c5f584f453b30251a0f030006121d29343f4b56606a6f70707070707070707070707070707070707070707070707070707070707070707070707070707070706e685f54493e33281c1105000000000000000000000000000000000000000000020910181e232a2f34373d4041444745494b4c4c4a46484542413e3933313440404040404040404040404040403535322d2821191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a6a7acb3b5aba29b97918c81766e655850463b30251a0f040000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7a828c91979da4a7acb0b2b3b5b9b5b3b2b0ada8a69f9c948f877f756e685f574e453d342a21160e050000000000000000000000000000000000030c141d252e353d454d545c626a6f767e848c91969c9fa7a9a9a7a8a19c9a9897959494939394949597989b9ca0a7a7a9aaa8a39c9a928e857f786f6a625b534c433b322a21180f0600000000000000000000000000000000020c161f28333b454e565f666f737d848d91979ca0a7a7a8adababababaea9a7a7a09c99918d847d736e655e554d443a31261e140b0100000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f878787878787878787878787877f73675c5044392d22160b0d161f283139424b545d656e7580878787878787878787878787878787878175685f554a3e33281c11050000000000000005111c27323d48525b62646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463615a51473c31261b10040004101b26313c4650596063646464646464646464646464646464646464646464646464646464646464646464646464646464646464625b4f483f352b21160b000004101b26313c46505960636464646464646464646464646464646464646464646464646464646464646464646464646464646464635f584f453a30251a0e030000000000000000000000000000000000000000030b131921282e323a3f41474b4d50534f54575757555054514e4c49433e3c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312921170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb2b6bcb2a69b928d8680786e635e55483f362c21170c010000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f747980878f939a9ca3a4a6a8aaafaaa8a6a4a49d9b95908b837d736f635f584f473e352c241a110600000000000000000000000000000000000000040c151d252d353c444b535960636e727a80868c91969b9ea5a7a9aba8a6a4a2a1a09f9f9f9fa0a1a2a4a6a8abaaa8a7a09c99938e88827c736e68605a524b433b322b221a1107000000000000000000000000000000000000060f17222b353d464e565e656d717b81868d9196989b9da49fa0a09fa59e9b9997918d88817b716d655e554e453c342a21160d0400000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e1207050f172029323b444c555e636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574c4034291d120600000000000000030e19232e38424b525759595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595856514941372d22180d0200010c17222d37404950565859595959595959595959595959595959595959595959595959595959595959595959595959595959595957524b3f372f251b11070000010c17222d374049505658595959595959595959595959595959595959595959595959595959595959595959595959595959595957544f473e352b20160b0000000000000000000000000000000000000000030c131b232931383d43494d5156585c5e585f63636360595f5d5958534b4a464a57575757575757575757575757574d4b47413a31281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb7c1bcb0a5998d827c746e685f544d45382f261c1207000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746e757d83898e9396999b9c9fa69f9c9a9996948f8b857f7a716d655e544f473e362e251c1309010000000000000000000000000000000000000000040d151d242c343b434950565d646a6f747c81858b9094989b9ea5a4a5a7a9aeaaabaaaaababafa9a7a6a4a69f9c9996918d88837d77706b635f585149423a322b221a1209010000000000000000000000000000000000000007121b242d353e464e555d636a6f757c81858a8d8f9493949494949394908d8a86817c766f6a635d554e453d352c231911050000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a6f707070707070707070707070706f6a60564b3f34291d120600071019222a333c454a545f686e70707070707070707070707070707070706e685f554a3e33281c110500000000000000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d130800000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a2f271e150c0200000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b49453e372e251b110700000000000000000000000000000000000000020b131c242c333a41484b53585a6164676a6c686e6f6e696d6b6865635c5754505562636363636363636363636363636256514a41382d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb6bcbfb4a89c9187827c716d635b52483d33291f150a000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74686d71797e83878a8d8f90969196908f8d8b87847f7b746f69635c5549453e372e261e140c0300000000000000000000000000000000000000000000040c141b232b323840464a545960636b70757b8084888c909595989a9b9ea59f9fa0a09f9fa69f9c9b999696918d8a85817d77716d64625b544f474039322a221a120a010000000000000000000000000000000000000000020a141c252e353e454c545a61636c70767b7e8184868788898988878684817e7b76716c64615a544c453d352d241b1309000000000000000000000000000000000000000000000000000000000000000004101b26313c46505960636464646464646464646464646463605950463c31261b1004000008111a232c303b454f585f636464646464646464646464646464646464635f584f453b30251a0f030000000000000000040e18212a32383d40424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241403c37302920170d03000000030d17202830373c3f40424242424242424242424242424242424242424242424242424242424242424242424242424242424242403d38322a1e160e0500000000030d17202830373c3f404242424242424242424242424242424242424242424242424242424242424242424242424242424242403e3a352e261e150b010000000000000000000000000000000000000009131b242c343c444a52575c63666b6f737577797a7a7a7a787674716c67635f59606d6e6e6e6e6e6e6e6e6e6e6e6e6e6d615a51473d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a7acb3b7b6aba197918e857e716c62574c42392e24190e030000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746863686e72777b7f8183858586858583817f7c79746f6a636059534c453a352e261e160d04000000000000000000000000000000000000000000000000040b131a222830363c444950565b62646a6f74797d8184878a8c8e9095939394949494939395908f8d8b8885827e7b76716d65635c575249453e373028221a120a0100000000000000000000000000000000000000000000040c151d252d353c444951565b62656a6f7276787a7c7d7d7d7d7c7a7876736f6a65635c56514a433c352d241c140b030000000000000000000000000000000000000000000000000000000000000000010c17222d374049505658595959595959595959595959595856504940372d22170c0100000109131b212b353f474f5457595959595959595959595959595959595957554f483f352b21160b0000000000000000000008111921282e323536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312d27201810070000000000060f1820272d31343536363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e28211a0e06000000000000060f1820272d31343536363636363636363636363636363636363636363636363636363636363636363636363636363636363433302b251e160d0400000000000000000000000000000000000000051119232c343d444c545b61646d71777b7e8183858586868584827f7c78736e686269777a7a7a7a7a7a7a7a7a7a7a7a7a776b61564b4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d89959a9ca3a8adb5b1a8a19c9690857c70645c53483e33281c11060000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7468585f63666b70737678797a7a7a79787673706e6863615a555049433b302b251e160d050000000000000000000000000000000000000000000000000000030a12181f262c313840464a52575a6164686e7175797b7e818384868788888989888887868583817f7d7a76736f6a65635c58534c48423a352e262018110901000000000000000000000000000000000000000000000000040d151d252c333941474b52575a6163676a696f7071717271706f6a6a6764615a58534b474139332c241c140c040000000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d1308000000000207111b252e373f454a4b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f372f251b110700000000000000000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292926221d17100800000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27241e1811090000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825201b150d0600000000000000000000000000000000000000040d16212a333c444d545d636b70777d82868a8d8f90959197918f8e8b88837e79706c6f7a858585858585858585858585857b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d898c8e939b9da4adb7b1aba69f968e82776c62574c41352a1e13070000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d54575b6264686a6c686e6f6e686c6a6865635e5756514a464038332b201b150d060000000000000000000000000000000000000000000000000000000001070f161d222830363c42484c5156585f6365696b70737577797a7b7c7d7d7d7d7c7c7a79787673716f696764615a58534d49433d38302b251e160f08010000000000000000000000000000000000000000000000000000040c141b232930373c42484c5156585b5960636465666665656360595c5856514c49433c373129231b140c040000000000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f4042424242424242424242424242403f3c37302820170d030000000000010b151e272e353b3e404242424242424242424242424242424242403e3b352f271e150c02000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d07000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140f0801000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110b0400000000000000000000000000000000000000010b141e26313a444c545e646d727b82888e9197989a9c9fa6a09c9b9997938f8a837c726f7a869191919191919191919191877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c808083888f949da7afb9b6afa69c92877c7065594e42362b1f14080000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d514b5257585c5f585f6363635f585f5c5957544e4b47413c363028221b110b0400000000000000000000000000000000000000000000000000000000000000060d12181f262c31383d41474b4f54575a5b6264676a6b696f70707171717171706f6a6c6a68656360595856514d49433e39322e28201b150d060000000000000000000000000000000000000000000000000000000000040b131820272d31393e40474b4c50505557595a5a5a5a59585650504c4b47413e39322d272018130b0400000000000000000000000000000000000000000000000000000000000000000000000000060f1820272d313435363636363636363636363636363534312d2720180f0600000000000000050e161e252b30333436363636363636363636363636363636363433302b251e160e050000000000000000000000000000040a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131212100d0803000000000000000000000003080c10121213131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a0500000000000000000000000003080c101212131313131313131313131313131313131313131313131313131313131313131313131313131313131311110e0b0701000000000000000000000000000000000000000006111b252e36424a545d646e727e858e92999ca0a7a6a7a9afaaa8a7a5a49d9b938f857e727a86919c9c9c9c9c9c9c9c9c92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c707475777c838f969faab5bfb7aca3978b7f74685d51463a2e23170c0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5145484c4d50534f54575757544f53514d4b49453e3c37312c261f1712070100000000000000000000000000000000000000000000000000000000000000000003080f161d22282e32373d3e45494b4e5257595b5e59606364656566666565646360595f5c5a5755504c4b47413e39332f2a231e16110b0400000000000000000000000000000000000000000000000000000000000000020810171d22292e33373c3f4144464a4c4d4e4f4f4e4d4c4b464441403c37332f29231d17100802000000000000000000000000000000000000000000000000000000000000000000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f07000000000000000000060e151b212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211b150e060000000000000000000000000000000000030507080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807060402000000000000000000000000000000010406070808080808080808080808080808080808080808080808080808080808080808080808080808080808080705030000000000000000000000000000000001040607080808080808080808080808080808080808080808080808080808080808080808080808080808080806050300000000000000000000000000000000000000000000000b16202b353e47525b646d727e8690959ca2a8abb0b1b3b4b9b5b3b2b0ada8a49d9690877e7a86919da8a8a8a8a8a8a89e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b626469696c707c86919ca8b3bfbcb0a5998e82766b5f54483c31251a0e0200000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453d40414547454a4b4c4b4945484542403e3a35312d27221c160f0702000000000000000000000000000000000000000000000000000000000000000000000000060d12171e23272d32353a3e4043484c4d505250555759595a5a5a5a595958565053514e4c4a4641403c37332f29252018140e070100000000000000000000000000000000000000000000000000000000000000000000070d13181f24272d313435363c3f40424343434342403f3c373534322d27241f18130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d060000000000000000000000050b11161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57626b727e8691979fa6acb4b6babdbfc0c3c1bfbebcb7b3ada69f9791867d8994a0abb4b4b4b4b4a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424b5257595d5c626b76818d98a4b0bbbeb2a69b8f84786c61554a3e33271b100400000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a353639353b3e4040403e3a35393634332f2b25221d17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000003080e14191d23252b303334383d40414447464a4c4d4e4e4f4f4e4e4d4c4b46474543403f3b3634312d27251f1a151009040000000000000000000000000000000000000000000000000000000000000000000000000003090f15191d222629292c3134353637383837363534312c2a2926231d19150f0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c101212131313131313131313131313131212100c08030000000000000000000000000001070b0f1112131313131313131313131313131313131312110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b09070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050606060604010000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68707c859097a0a7afb6bcc1c5cacac8cac4c1bfbfc0bdb7afa7a0979084909ca7b3bebfbfbfb5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323a42484c4d51535b67737e8a96a1adb8beb3a79c9084796d62564a3f33281c110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2a2e2b303334353433302b2e2b292724201b18130d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13181b202528292e32353639363c3f404242434343434242403f3c3739373534312c2926231d1a15100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d13181b1d1e222628292a2b2c2c2b2b292826221e1d1b18130d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070808080808080808080808080807060401000000000000000000000000000000000000030506080808080808080808080808080808080806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c070807060300000000000606060606060606060606060303010000000000000000000000030f1a25303b454f58636e78828e959fa7b0b8bfc7cccec5c0bdbcbab5b3b3b5babab8b0a79e9590959ea9b4bfcbcbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a32383d4142464f5a66727d8994a0acb7bfb3a89c9085796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2322212528292929282520221f1d1c1916110b08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090b11161a1c1d2327292a2d2c31343536363738383737363534312d2e2b292826221d1b18130d0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d101212171b1d1d1f202020201f1e1d1b171212100d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1d1a17121413110e0a0408090a1111111111111111111111110f0e0d0a0601000000000000000005111c28333e4a545f68727e8a939ca6afb8c0c8cfc8c3bbb5b1b0b0aaa8a8aab0afb3b4aea59e9c9ea5aeb8c3ceccc1b5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282e323537434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2311161a1c1d1e1d1c1a16111311100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e1114191c1e1f21222628292a2b2b2c2c2c2b2b2929262222201d1d1a1712100d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406080c0f111213141515141312110f0c08060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0a1111111111111111111111110f0e0c090601000000000000000000000000000000000000000000010508090a1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110e0d0b0905000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f14181c1e1e22202427292929282521231f1f1c19150f1315161d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b050000000000000006121d2934404b57636e79848f9ba3acb6bfc8cfc7bfb9b4aba6a4a7a09c9ca0a7a3a7a9aeaea9a7a9aeb6bec8d2ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e24272c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0f11121211110e0b070806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090e11121312171b1d1d1f1f202020201f1f1e1d1b17131412110f0c08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060809090909080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1a1a1814100b0500000000000000000000000000000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d191917140f0a04000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12171a1e2327292a2d2b2f3334353433302c2e2b2a28241f1a1e2021292929292929292929292929262623201b150f07000000000004101b26313c47515a66727e89949da8b3bcc7cfc8bfb6afa9a29b99959791919694979c9ea5abb4b3b4b8bec6cfd8ccc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f1419202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b03050606060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050707080c0f111213141415151414131212100c0809060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b11171b1f21222929292929292929292929292625231f1b150e0700000000000000000000000000000000030a11161b1e20212929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292524221f1a140d06000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a3635332f28252a2c2d34343434343434343434343432312e2a251f1810070000000006121d29343f4b56606a76828e99a4adb7c4cccac0b7afa69f9c928d8986858586888c90959ba2aab1bac3c8cfd6dfccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a14202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080909090908080706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0d0e111111111111111111110c0b0a07030000000001060a0d0f0f111111111111111111110a0a08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b21262a2c2d34343434343434343434343431312e2a251e170f070000000000000000000000000000030c131a21262a2c2d34343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343431302d29241e160f06000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b20262c3033383d4041444745494b4c4c4a46484542413e3933303537384040404040404040404040403d3c39352f2820180f0500000007121e2935414c58636f7b86919ca8b3bdc7cfc4bab0a79f959089827e7b7a7a7b7d80848d919aa1aab2bbc6cfd8d8ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a101417191a1d1d1d1d1d1d1d1d1d1d181715120e090200060c1115181a1b1d1d1d1d1d1d1d1d1d1d161513100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b313538394040404040404040404040403d3c39352f2820170e05000000000000000000000000010a131c242b303537384040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403c3b38342e271f160d04000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020911161e252b30363b3f42484c4d50534e54575757555054514e4c48423f3b4043444b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281f150b0100000a15212c38434f5b66727d8997a0aab5c1ceccc0b5aaa09690857d76726f6e6e6f71757b818b909aa2abb6bfc8d3ddccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1f222425292929292929292929292322201d18120c080f161b202426272929292929292929292922211f1b17110b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d343b4043444b4b4b4b4b4b4b4b4b4b4b4b4947443f3830281e150b01000000000000000000000007111a242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4847433e372f271e140a000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b131921262e353a3f464a4c5257585c5e575e63636360585f5d5957534c4a464a4e5057575757575757575757575755534f4941382f251b110600010c18242f3b46525e6975808c97a7b0bac4cfc4b9afa79c91867d716d6663636363656a6f76808b919ba6afb9c3cedaccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24292d3031343434343434343434342f2e2b28221c1510181f252b2f3132343434343434343434342d2c2a26211b140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212b343d454b4e5057575757575757575757575754534e4841382f251b100600000000000000000000010c16212b343d444a4e5057575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575753524e4740372e241a0f05000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b232a31373e45495055575b6264676a6c686e6f6e696d6b6865625c57555054595b636363636363636363636363605e5951493f352a20150a00040f1a25303b4650596b77828e9aa5b1bccaccc0b5aa9f968c80756d635d585757585a61636f76818d959fa9b4c1cad4ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e171f272e34383b3c404040404040404040403a3937322c251d1821282f353a3d3e40404040404040404040393835312b241c140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313b454d555a5b636363636363636363636363605e5851483f352a1f14090000000000000000000005101b26303b444d54595b6363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635f5d5850473e34291f1409000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141d242c333a42474f54596063676b70737677797a7a7a79787674706c676360585d64676e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d0006111d28333f4a5560697984909ca7b3becacbbfb3a89c91857b6f635c544c4b4b4c51565f646f7b85909ca8b1bac5d0ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e272f373e4347484b4b4b4b4b4b4b4b4b4b4645413c362e251f2831393f4548494b4b4b4b4b4b4b4b4b4b4443403b342d241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a35404b555e64676e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23180c0100000000000000000008131e2a35404a545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b6860584e43382d22170b000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141c242d353c444a52585f63696e73777b7e8183858586868584827f7c78736e6964646e727a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e0006121d2935404c57636e7a86959ea9b4bfcbc7bcb0a5998d82766a61564c44404041474b56616a747f8b97a1abb6c1ccccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242e3740484e52545757575757575757575752504c463e362c252f3941494f535557575757575757575757504e4b453d342b21170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434e5a646e737a7a7a7a7a7a7a7a7a7a7a7a7772685e53473c31251a0e030000000000000000000915202c37434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7671685d52473b3024190d000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242d353d454c545b62686e737a7e83878a8d8f90919796918f8d8b88837e79726d67727e85858585858585858585858583776c6055493d32261b0f0007131e2a36414d5864707b8792a5aeb8c3cec4b8ada1968a7e73675a51473b3434373c47515a64707b86919ca8b4bfcbccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29343e4850585d5f636363636363636363635d5b564f463c322b353f4952595e61636363636363636363635b5a554d453b31261b0d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e85858585858585858585858582776b6054493d31261a0f030000000000000000000a16212d3844505b67727e85858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858581766b5f53483c3125190e000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000007121a242c353d454e555d646b70787e848a8e9396989a9c9ca1a09c9b9997938f8a837e756f727e89919191919191919191918f83776c6055493d32261b0f0008141f2b36424d5965707c87939faab6c8cfc5bab0a794887c71655a4e42372b292d37414b57616b77838e9aa6b1bdc8ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d38434e5861686b6e6e6e6e6e6e6e6e6e6e69665f564c4137283a454f5962696c6e6e6e6e6e6e6e6e6e6e67645e554b4035261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a919191919191919191918e83776b6054493d31261a0f030000000000000000000a16212d3844505b67727e89919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191918d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b343d454e555e656d727c828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e89959c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f0008141f2b37424e5965717c88939fabb6c2ccc1b6aba097867b6f63584c4135291e27323d48525b6975808c97a3afbac6ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303b47525d6871767a7a7a7a7a7a7a7a7a7a746f665b5042382e3d48535e6972787a7a7a7a7a7a7a7a7a7a736e645a4e40362c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a959c9c9c9c9c9c9c9c9a8e83776b6054493d31261a0f030000000000000000000a16212d3844505b67727e89959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28323b444d555e656e737e858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1a8a8a8a8a8a8a69a8f83776c6055493d32261b0f000814202b37424e5a65717c88949fabb6c2cbbfb4a89c91857a6a60564b3f34291d232e3844505b67737e8a95a1adb8c4ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313c48545f6b7682858585858585858585858074695b52483d323e4955616c7883858585858585858585857f73675950463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a95a1a8a8a8a8a8a8a59a8e83776b6054493d31261a0f030000000000000000000a16212d3844505b67727e8995a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000008121d263038434b545d656e737f8790969ca3a9aeb3b6bbbdbfbfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb4b4b4b4b1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabfb3a79c9085796e5a51473c31261b202b37424e5a65717c88939fabb6c2ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a97919191919191918f83786c62574c40353a46515d6874808b91919191919191918d82766960554a3f34281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505b67737e8a95a1adb4b4b4b4b1a59a8e83776b6054493d31261a0f030000000000000000000a16212d3844505b67727e8995a1acb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c364049535c646e737f8a91979fa6acb4b8bec1c6c9cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfbfbfbdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a372d22171f2a36424d5964707c87939eaab6c1ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110500000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86919c9c9c9c9c9c9d94877c7064594d423736424e5965707c87949d9c9c9c9c9c9c91857a6f63574c40352b21160b00000000000000000000000000000000000000000000000000000000000000020507070b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b16222d3944505b67737e8a95a1adb8bfbfbdb1a59a8e83776b6054493d31261a0f070401000000000000000a16212d3844505b67727e8995a1acb8bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbcb0a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f3328131e2a35414d58646f7b87929ea9b5c0ccc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f34281d110606040100000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e9aa5a8a8a8ada4968b7f74685a51473d35414c57626c78848f9ba7a8a8a8aa9f96897e7266584f453b30251a0f030000000000000000000000000000000000000000000000000000000004090d10121317171717171717171717171717171717171717171717171717222d3944505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a1413100b060000000000000a16212d3844505b67727e8995a1acb8c3cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc7bcb0a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000006101a232b343f4a56606a707c859097a1abb0b8bfc7c9c3beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c58636f7a86929da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b3f3428121b12110f0c080200000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a68737f8b96a4adb7b4b1a69a8e83776b61564b40343e48535c6975808c97a5aeb8b9afa7988d8176695f554a3f33281c1106000000000000000000000000000000000000000000000000000000070e14181c1e1e22222222222222222222222222222222222222222222222222222d3944505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d312621201e1a16100a03000000000a16212d3844505b67727e8995a1acb8c5ced8e1d6d6d6d6dbd5cfcac8c7c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2bcb0a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000b16202a333e49535c636f7a848f969fa8b1bac1c8c7bfb9b5aea9a7a3a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e62574b362c2126261d1d1a17120c060000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414d5864707b87939da8b3bfb4a89c91867b6f64584d413739424e5a65717d88959ea9b4bfb3a79c90857a6e63574c40352b20160b00000000000000000000000000000000000000000000000000000910181e2327292a2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e3944505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d312e2c2b2925201a130b030000000a16212d3844505b67727e8995a2abb5bdc8d0dae4e2e5dbd3cbc5c0bcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b0a4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c020000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3a414d58636c75818c949ea6afb8c1cac5beb6afaaa59e9c9894929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796e6250463b30323232292826211c160f0700000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e2935404c57626b78838f9aa6b2bdb6aba1978a7e73675950463c34404b57636e7984909ba7b3beb4a99f95887d7166574e453a2f24190e0300000000000000000000000000000000000000000000000007101921282e3235363939393939393939393939393939393939393939393939393939393944505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d3939383734302a231b130a0000000915202c37434e5a66717d88919ba4adb7c0cad4dee7ded5cbc2bbb5b1b0abababababababababababababababababababababababababababababa4998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170e0d0c0b09060604010000000000000000000000000000000000000000000000000000000007121d29343f49545d65717d88919aa4adb7bfc9c5bdb5ada69f9c95908c898786858586888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7bfb3a89c9185796960554a3f363d3d3d3534312c261f170f0600000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b6874808b97a4adb7bab1a8998e82776a60564b3f343e49545f6875818c98a6afb9b9afa6988c8075685e54493e33271c10090909090807060300000000000000000000000000000000040e18212931383d40414545454545454545454545454545454545454545454545454545454545505b67737e8a95a1adb8c4c8bdb1a59a8e83776b60544945454543423f3a342c231a1006000008141f2b36424d58636d76818d949da7b0bac4cfd7dfd9cfc5bbb2aba6a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231a191918161412110f0c080502000000000000000000000000000000000000000000000000000814202b36424d58636d77828e9aa1aab5bec7c7bdb4ada49e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d8894a0abb7c0b5aaa096867a6e63574c4549494949403f3b362f281f160c0200000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38424e5965707c88949ea8b4bfb3a89c91857a6f63584c40363a454f5866717d89959fa9b4beb2a79b9084796e63574b4034291d14141414141313110e0a05000000000000000000000000000009141e28313a41474b4d5151515151515151515151515151515151515151515151515151515151515b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054515151514f4e4a443c342a20160b010007121d29343f49535d636f7a848f97a0aab5bcc6cfd8d6cac0b5aba29b98949494949494949494949494949494949494949494949494949494949494948d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e262525242322201d1d1a1712110e09040000000000000000000000000000000000000000000005101c27323d47515a66717d89939ca7b2bac5c9c0b7ada49d948f857f7a75726f6e696e6f7174797e848e929ca2abb5bdc7d1d4c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717c88949fabb6c4bab0a793877c706459554f555555554c4a4640382f261c12080000000000060d14191e2224252929292929292929292929292322201c18120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f151f2a35414c57626c78848f9ba7b2beb5aaa096897e72675850463b35404c57636e7a85909ca7b3bfb4a99e94887c7165594e42382e2420202020201f1e1c19140f08010000000000000000000000020d18232e38414a5157585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c67737e8a95a1adb8c4c8bdb1a59a8e83776b605c5c5c5c5c5b59544d443a30251a100400040f1a252f3a434b56606a717d86919ca3acb6bfc8d2d3c8bcb1a69b918d888888888888888888888888888888888888888888888888888888888888888881766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a31313131302f2d2b292826221e1c18140e0b06000000000000000000000000000000000000000007121e2935404b57616b76828e99a3acb6c2cfc4b9afa69d948f847c746f6966646360636465686e727a828d929ca4adb7c2cdd4c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5964707c8793a6afb9c3b9ada1968a7f736a635f58606060605755504840362c21170c010000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f2428333e48535c6975808c97a5aeb8bab0a7998d81766960554a3f333f4a555f6976818d98a6afb9b8aea5978b8074695b52483d322b2b2b2b2b2b2b2a27241f181109010000000000000000000005101c27323d47515a61646868686868686868686868686868686868686868686868686868686868686868737e8a95a1adb8c4c8bdb1a59a8e83776b68686868686866645d544a3f34291e130700000b15202a313c465059636c747f8b929ca6afb9c3ced2c7bbb0a4988d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7065594d42362b1f1308000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463d3d3d3d3c3c3a39373534312c2927231e1a15100a0500000000000000000000000000000000000007131e2a36414d58646f7b86919ca8b4bcc6ccc0b5aa9f968f837b706c6360595857555758585f636a6f79818d949da8b3bbc5cfc9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c58646f7b86959fa9b5c0beb2a79b90847a716e696c6c6c6c6c63605950463b31261a0f040000000000000004080b0d0d1111111111111111111111110b0b090603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f333639434e5a65717d88959ea9b4bfb3a79c90857a6e63574c40353b454f5866727e89969faab5bdb2a69b8f83786c62574c40373737373737373635332e28221a11080000000000000000000007121e2935404b57616b6f7373737373737373737373737373737373737373737373737373737373737373737e8a95a1adb8c4c8bdb1a59a8e837773737373737373726d64594e42372b2014090000061017222c374049535c636e79828e959fa9b4bbc5cecbbfb3a89c91867c71717171717171717171717171717171717171717171717171717171717171706c62574c41352a1e1307000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5148484848484847464543403f3b3635322e28252019140f0701000000000000000000000000000000040f1a25303b454f5868737f8a97a0abb6c1cdc2b8aea59c91867c706b625b55504d4c4a4c4d4f545960696f7a848f9ba2abb6c0cbc9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7a85909ca7b3bfbfb4a89e948f837d7a7877777777776f6960554a3f34281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b32393e4142424b57636e7984909ca7b3beb5a99f95897d7166584f454242424c57636f7a85909ca8b3bfb3a89d94877c7064594d424242424242424242413e38322a22180f0500000000000000000007131e2a36414d58646f7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818d99a4b0bbc7c9beb2a79b8f847f7f7f7f7f7f7f7f7e72665b4f43382c21150900000008121d263038434a545f686f7b85909ca1abb5bdc8ccc0b5aaa0968f837a6f656565656565656565656565656565656565656565656565656565656565625b52483e33271c1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d545454545454535352504e4c4a4641403d38342f2a241f16110b04000000000000000000000000000005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e948a7f736c625a524a4641403f404145495058606a717d88929ca7b2bfc8c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6876828e99a6afb9c2b8aea59d938f89858483838383837a6f63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b090603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060607070707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b43494d4e4e4e545f6875818d98a6afb9b9afa6988c8175685f544e4e4e4e4e55606976828d99a7b0bab7ada4968b7f74685a514e4e4e4e4e4e4e4e4d4c48423a32281f140a0000000000000000000914202c37434e5a66717d888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8d919ba6b1bcc8cabfb4a89e948f8b8b8b8b8b8b8b8b82766b5f54483c31251a0e000000030d162028303b454f58616b727e89919ba4adb7c0cac4bab0a79d948c81756e645a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5957524b42382e24190e03000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685f5f5f5f5f5f5f5f5e5d5c5a5755504d4c48423f3a332e28201b150d060000000000000000000000000006121d2934404c57636e7985919ca8b3bfcacabeb3a79b90847a6e635b524a423c36353334353a40485059636c76828e99a5aeb8c3c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5868737f8b969faab5bebeb5ada49d9a96918f8f8f8f8f867a6f63574c4035291e12060000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070b0f1112121313131212110f0c080a070705020000000000000000000000000000000106060606060606060606060606060606060604000000000000000000000000030e19242f39434c5358595a5a5a5866727d89969faab5beb3a79b9084796e635a5a5a5a5a5a5a5967727e8a97a0aab5bdb1a69a8e83776b615a5a5a5a5a5a5a5a5a5957524b42382e24190e0300000000000000000914202c37434e5a66717d889496969696969696969696969696969696969696969696969696969696969696999ba2abb5c0cbcdc2b7ada49e9b969696969696968d82766b5f54483c31251a0e00000000060f18212b353f47515a646e75818d949da7b0bac4c9c0b7ada49b91897e726b61584f4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4c48423b32291f140a00000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746b6b6b6b6b6b6b6b6a6a6967656360595957524d49433e38302b251e160f0700000000000000000000000008141f2b37424e5965717d88969faab5c0ccc2b8aea5968b7f746960554b4239312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35414c58646f7b85919ca5aeb7bfbdb4ada8a79f9c9b9a9a9a91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b040000000000000000000000000000000000000000000000000000000000000000000000000104070b0f11121411161a1c1d1e1e1f1e1e1e1d1b1712151312100d0906040000000000000000000305060c1111111111111111111111111111111111111007070503000000000000000006111d28333e49535c636565656565656f7a85909ca8b3bfb4a99e95887c71656565656565656565656f7b86919ca8b3bfb4a89c91867b6f6565656565656565656564625b52483e33271c110600000000000000000914202c37434e5a66717d8894a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a4a6abb2bbc5cfd1c7beb5ada8a7a2a2a2a2a2a2998d82766b5f54483c31251a0e000000000007111b252e37414a545d636f7a838f97a0aab5bcc6c7bdb4aaa19c90857b6f685f544a434343434343434343434343434343434343434343434342413e38322a22180f0500000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8077777777777777777776767473716f696864625b58534c48423a352e262018100800000000000000000000000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3229221d1d1d20273039434b57636e7984909ca7b3bec9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111d2934404b56616a75808c959ea7afb6bdbdb7b3afaaa8a6a6a69d91867a6f63574c4035291e1206000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d0400000000000000000000000000000000000000000000000000000000000000000003080c0f11161a1c1d1f2221252829292a2a2a2a2928262223211e1e1c1814120f0b040100000002070b0f1112181d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1312110e090400000000000008131f2a36414d58636c7171717171717176828d99a4b0bcb8aea5978c8074717171717171717171717177828e99a5b1bcb6aba1978a7f7371717171717171717171706c62574c41352a1e130700000000000000000914202c37434e5a66717d8894a0abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadb0b1b5bbc3cbd5d7cec5beb7b4b2adadadadada5998d82766b5f54483c31251a0e0000000000010b151e27313a444a556069717d86919ca3acb6bfc8c5bab4a99f958e82796e635c5349403737373737373737373737373737373737373737373635332e29221a11080000000b16222d3945505c67737f8a96a1adb9c4d0c9beb2a79b8f848282828282828282828281807e7d7a7774706b66635d575249453e37302821191008000000000000000000000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c6257483f362a2219121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a646f7b8490979fa6adb3b7babbb9b5b3b2b1a99d91867a6f63574c4035291e12060000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02000000000000000000000000000000000000000000000000000000000000050a0d12171b1d212528292b2e2b30333435353636353534312c2f2d2a2927231f1d1a15100d0803050c11161a1c1d24292929292929292929292929292929292929271f1e1c19140e08010000000008141f2b37424e5965717d7c7c7c7c7c7c7d808c97a3aebabeb2a69b8f837d7c7c7c7c7c7c7c7c7c7c7c7d808c98a3afbabab1a89a8e827d7c7c7c7c7c7c7c7c7c7c7c7064594d42362b1f130800000000000000000914202c37434e5a66717d8894a0abb7b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbbcc0c5cbd3dcded6cec7c2bfbeb9b9b9b9b0a5998d82766b5f54483c31251a0e000000000000050e162129313c465059636c747f8b929ca5aeb8c3cec3b9afa69c928b7f746c635950463c312b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a27241f181109010000000b16222d3945505c67737f8a96a1adb9c4d0cabfb3a89d948f8e8e8e8e8e8e8e8e8e8d8d8c8a8885837f7b76716d64625b544f4740393129211810070000000000000000000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b5248382f261a110806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414b56616a717d8690969da4a8adafb0b1b1b1b1b1a99d91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000000000000000000000000000000060b0f15191d2226282b3033343739353b3e404041414141403f3c363a383635322e2b28241f1b17130d0e151b212528292f343434343434343434343434343434343434322a2927231e18110901000000111c28333f4a56626d7984888888888888888c909aa5b0bbbfb3a89d948f888888888888888888888888888c919aa5b0bcc1b2a79c928e888888888888888888888882766b5f54483d31251a0e03000000000000000914202c37434e5a66717d8894a0abb7c2c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c7c8cbcfd5dce3e6ded7d1cdcac9c5c5c5bcb0a5998d82766b5f54483c31251a0e00000000000000061019222c364049535c636e78828e959ea9b4bac5c8bfb6aca39c91867d716a60564b443a31271e202020202020202020202020202020201f1e1c19140f0801000000000b16222d3945505c67737f8a96a1adb9c4d0cdc2b7ada49d9b9999999999999999999998979697918e8b86827d77706c635f585049413a312920180f0600000000000000000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e534738301f16090100000b16202b3545505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d47515a636d727e858f949b9da4a3a4a5a6a6a6a6a69d91867a6f63574c4035291e120600000000000000000000000000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d0300000000000000000000000000000000000000000000000000040910151a1f24262c3134353b3e40424547454a4b4c4d4d4d4c4c4a4648464441403d3836332f2926221d18161e252b3033343b4040404040404040404040404040404040403e3635322e2821191108000000111c28333f4a56626d798490949494949494979aa1aab4bec2b7ada49d9b94949494949494949494949494989aa1aab4bfc1b6aca39c9a949494949494949494948e82766b5f54483d31251a0e03000000000000000914202c37434e5a66717d8894a0abb7c2ced0d0d0d0d1cac5c1bfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdbec1c6ccd4dddfd6cfc8c3bfbebbbbbbbbb0a5998d82766b5f54483c31251a0e000000000000000008121c2630384349545f686f7b85909ca1aab4bdc7c6bcb5aba0978f847a6f635e554b42372f251c1214141414141414141414141414141313110e0a050000000000000b16222d3945505c67737f8a96a1adb9c4d0d1c7bdb5ada8a7a5a5a5a5a5a5a5a5a5a4a4a3a7a09c9a97918e88827c746e686059514a413931281f160d03000000000000000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23180c0100000711212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414a535c646d727c838a8f939598999a9a9a9a9a9a9a91867a6f63574c4035291e12060000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1106000000000000000000000000000000000000000000000001070e14182025292f33373c3f40454a4c4e51534f5457585859585858565054524f4d4c4842413e3934312d272220272f353b3e40464b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a41403d38312a21180e040000111c28333f4a56626d7984909c9f9f9f9f9fa3a5aab1bac3c7bdb5ada8a69f9f9f9f9f9f9f9f9f9f9f9f9fa3a5aab1bac4c6bcb3aca7a59f9f9f9f9f9f9f9f9f998e82766b5f54483d31251a0e03000000000000000914202c37434e5a66717d8894a0abb7c7d0d9e1dad1c8c1bab6b4b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1b2b6bcc4ccd6d8cfc6beb8b4b3b0b0b0b0b0a5998d82766b5f54483c31251a0e0000000000000000030d161f28303a454f58616b727e89919ba4adb7c0c9c4bab0a79e948d81766e645b52483f352b211810090909090909090909090909090807060300000000000000000b16222d3945505c67737f8a96a1adb9c4d0d7cec5bdb7b3b2b1b1b1b1b1b1b1b1b0b0b0aeb0aaa8a8a19c99928e867f786f6a615a514a413830261d1208000000000000000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23140a0000000a15212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6c2cabeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4c0cbc1b5a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139434c545d646c70797e83878a8c8d8e8f8f8f8f8f8f8f867a6f63574c4035291e1206000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000000000000000000000000000000000000050b11161e232a2f34393e40464b4c4f5557595c5e585f6363646464646360595f5d5b5857524e4d49433f3c37312d2830373f454a4c52575757575757575757575757575757575757554d4c48423a31281e14090000111c28333f4a56626d7984909ca7ababababaeb0b4bac1cdcec5bdb7b3b2abababababababababababababafb0b4bac2cdccc4bcb6b2b1ababababababababa5998e82766b5f54483d31251a0e03000000000000000914202c37434e5a66717d8894a5aeb7bfc9d1dad4cac1b8b0aba8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a6a7acb3bcc6d0d2c8beb6aea9a7a4a4a4a4a4a4998d82766b5f54483c31251a0e000000000000000000060f17202b353e47515a646e75818c949da7b0bac4cac0b8ada49b918a7e726b62584f453b302920170d0300000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ded5cec7c2bfbebcbcbcbcbcbcbcbcbcbcbbbabab5b3b1aba8a29c96918b827a6f6b615a514940362c221810070000000000000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e5347382e24190c0200000716222d3945505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb6bfbfbeb3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4bfbfbfb5a99e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029333b444d545b62686e72787b7e81818283838383838383837a6f63574c4035291d1206000000000000000000000000000000000000000000000000000000000000010d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b000000000000000000000000000000000000000000060e151b21282e323a3f43494d505658585f6365686a6b686e6f6f70706f6f6a6c6b696764625b5a58534c4b47403c37303940484f55575e636363636363636363636363636363636363615957524b42382e23190e0300111c28333f4a56626d7984909ca7b3b6b6b6babdbdbebfc2c7cec7c2bfbeb6b6b6b6b6b6b6b6b6b6b6b6b6babdbdbebfc2c7ccc6c1bebdb6b6b6b6b6b6b6b0a5998e82766b5f54483d31251a0e03000000000000000914202c37434e5a66717d88959ea6afb8c1cad4cfc5bab0a7a09c99989898989898989898989898989898989a9ca3acb6c1cccec3b8aea59e9c989898989898988d82766b5f54483c31251a0e0000000000000000000007111b252e37414a545d636f7a838f96a0aab5bcc6c8beb5aba29c90857c70695f554a433930271d130901000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbded7d1cdcac9c8c8c8c8c8c8c8c8c8c7c7cac4c1bfbab6b4aba7a09c928e837b6f6a615950463c312920170d0300000000000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b52483d32261c120806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fabb4b4b4b4b3a79b9084796d61564a3f33281c1e2935404c57636f7a86919da9b4b4b4b4b4a99e92877b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b343c444b52585f63676b707375767777777777777777776f6960554a3f34281d1106000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b00000000000000000000000000000000000000020810161e252b30383d43494d535859606367686e71737577797a7a7b7b7b7b7a7978777472706b6965635c5856514b47413b424951585f63696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c64625b52483d32271c110500111c28333f4a56626d7984909ca7b2b2b2b2b2b2b2b2b3b7bdc5cecdcac5bdb7b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b3b7bdc5ceccc9c5bdb7b3b2b2b2b2b0a5998e82766b5f54483d31251a0e030000000000000007121e2a35414c58646f7b8490969fa8b1bac5d0ccc1b6aba097918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939ca7b2bec9cbbfb4a99e95908d8d8d8d8d8d8d8d82766b5f54483c31251a0e00000000000000000000010b151e26313a444a556069707c86919ca2acb6bec8c5bbb5aa9f968f83796e635d534941372d221a1107000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdcd5cfcbc8c7c3c3c3c3c3c3c3c3c3c4c6c9cbcccac5c1bcb7b0aaa29c938f837b6f6a60564a453931271d130900000000000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c62574c3f362c2119121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949fa8a8a8a8a8a8a79b9084796d61564a3f33281c1e2935404c57636f7a86919da8a8a8a8a8a8a89e92877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b232c343b42474f54575b626467696a6b6c6c6c6c6c6c6c6c63605950463b31261a0f04000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b000000000000000000000000000000000000030a121920272e353b42484c53585c63656a6f72767a7c7f81838485868687878686858482807e7b7875716d6863605a56514a454b525a61686e757a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78706b62574c4035291e120700111c28333f4a56626d7984909ca6a6a6a6a6a6a6a6a6a8adb5bdc6cfc7bdb5ada8a7a6a6a6a6a6a6a6a6a6a6a6a6a7a8adb5bdc7cfc7bdb4ada8a6a6a6a6a6a5998e82766b5f54483d31251a0e030000000000000006121d2934404b56616a717d869097a1abb6bbc4cbbfb4a89c91868181818181818181818181818181818181828e9aa6b1bdc8cabeb3a79c908481818181818181817f73685c5145392e22170b0000000000000000000000040d162129313c465059626c737f8b929ca5aeb8c3cec3b9afa69d938c80746d635a51473c312a22170f060000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dcd3cbc5c0bcbbb7b7b7b7b7b7b7b7b8b9babdbfc1c5caccc8c0bab5aca49d948f837a6f635e554a41372d23180e04000000000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3029221d1d1d20273039404b57636e7985909ca7b3bfc9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88949c9c9c9c9c9c9c9c9b9084796d61564a3f33281c1e2935404c57636f7a86919c9c9c9c9c9c9c9c9c92877b6f64584d41352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131b232a32373f454a4b5257585b5e5f6060606060606060605755504840362c21170c01000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b0000000000000000000000000000000000040b131b232931373f454a52575d63666c71767a7e8285888a8c8e9094929293929296908f8e8c898784807d78746f6a63615a544f545b626a6f7980858585858585858585858585858585858585837b7064594d41362a1f130700111c28333f4a56626d7984909b9b9b9b9b9b9b9b9b9b9da4adb6bec8c2b7ada49d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da4adb6bfc8c2b7ada49d9b9b9b9b9b9b998e82766b5f54483d31251a0e030000000000000005101b27323d47515a636c727e87919ca2abb3bcc5c1b6aba0978c80767676767676767676767676767676767e8a95a1adb8c4c8bdb1a59a8e827776767676767676736f655a4f44382d21160a000000000000000000000000061019222c364049535c636e78828e959ea9b4bac5c9bfb6aca39c91877d716a61564b453b32281f160c0200000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d5cbc3bbb5b1b0acacacacacacacacacadaeb1b4b6bac1c4c9cac4bcb4ada49d938d81766e655a51473c32281e13090000000008141f2b37424e5965717d88969faab5c0ccc3b8aea5968b7f746960554a423a312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717c88919191919191919191919084796d61564a3f33281c1e2935404c57636f7a869191919191919191919191877b6f64584d41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a22272e353b3e42484c4d5052535455555555555555554c4a4640382f261c120800000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b00000000000000000000000000000000040c141c242b333941474f545b62646d71777c81858a8e909696989a9b9ea59e9e9ea69f9c9b999795948f8c88837f7a746f6a635f585d636c707a828c919191919191919191919191919191908c827a706b62574c4035291e120700111c28333f4a56626d79848f8f8f8f8f8f8f8f8f8f8f949da5aeb8c3bfb3a89d948f8f8f8f8f8f8f8f8f8f8f8f8f8f949da6afb9c3bfb3a89d948f8f8f8f8f8f8f8e82766b5f54483d31251a0e0300000000000000020d18232d37414a535c646e747f8b919ba3acb5bec5bab0a79a918a7f736d6a6a6a6a6a6a6a6a6a6a6a6a737e8a95a1adb8c4c8bdb1a59a8e83776b6a6a6a6a6a6a68655e554b41362b1f14090000000000000000000000000008121c2630384249545e686f7b84909ca1aab4bdc7c7bcb6aba19790847b6f635e554b42382f261c120800000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cfc5bbb2aba6a4a0a0a0a0a0a0a0a0a1a2a3a6a8abb0b5b9c0c7cfc4bdb4ada49b918a7f736a61564b41382d23180b0100000006121d2934404c57636e7985919ca8b3bfcac8beb3a79b90847a6e635b524a423c36353434353a40485059636c76828e99a6afb9c3c9bdb1a69a8f83776c6055493d32261b0f000914202b37424e5a65717d85858585858585858585858584796d61564a3f33281c1e2935404c57636f7a858585858585858585858585857b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030911161e252b3033383d4041444747484949494949494949403f3b362f281f160c0200000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b000000000000000000000000000000040c141d242c343c434a51585f636b70767d82888d9196999c9fa6a4a5a7a9aea9aaaaafaaa8a6a5a3a49d9b97948f8b85807b736e6862656d717c838e929aa19c9c9c9c9c9c9c9c9ca59e96918a80786f6a625b52483d32271c1105000f1a26323d4954606c778284848484848484848484838f959ea9b4bfbeb2a79b8f83838484848484848484848484838f959fa9b4c0bdb2a69b8f838484848484848380756a5e52473b3024180d01000000000000000009131d273139434b545d666f76818d939ca4adb6bfc1b8aaa19c91867d716c625a5e5e5e5e5e5e5e5e67737e8a95a1adb8c4c8bdb1a59a8e83776b605e5e5e5e5e5c5a554e453b31271c110600000000000000000000000000030c161f282f3a454e57616b727e89919aa4adb7c0c9c5bab1a89e958d82766e655b524840362c21191006000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbc0b5aba29b9995959595959595959596979a9ca0a7aaafb7bdc5cdc5bdb4aba29c90857b6f645a51473d32251b110600000005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e958a7f736c625a524a4641403f404145495159606a717d88929ca7b6bfc8c9bdb1a69a8f83776c6055493d32261b0f0008131f2b36414d58636d717a7a7a7a7a7a7a7a7a7a7a7a79746a5f54493e32271b1d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a7a7a776b61564b4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b2125282e323536393b3c3d3d3d3d3d3d3d3d3d3534312c261f170f060000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b0000000000000000000000000000030c141d252d353d444c535a61686e747b82888e92999c9fa6a8aaafafb1b3b4b8b5b5b5b9b5b3b2b0aeada8a6a49d9b95908b857f79706c6f737e858f949ca3aaa8a8a8a8a8a8a8aba39d9590867e756e686059524b42382e23190e03000e1a25313c48535e687277787878787878787878787884909ca7b3beb7aca095897e7878787878787878787878787985909ca7b3bfb6aa9e93877c787878787878787570675c51463a2f23180c010000000000000000040e172029323b444d565f636e79828e949ea6afb8c0bab5aba09790857c706a61585053535353535b67737e8a95a1adb8c4c8bdb1a59a8e83776b605453535353514f4b453e352b22170d020000000000000000000000000000060f17202b353e47515a646d75808c939da7afb9c4cac1b8aea59c928a7f736c625950463b312921160d040000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c8bcb1a69b918d8989898989898989898a8c8f91979c9fa7adb5bdc5cdc4bbb4a99f958c81756b61564b3e352b20160b000000040f1a25303b454f5868737f8a97a0abb6c1ccc2b8aea59c91867c706b625b55504d4c4a4c4d4f545a61696f7a848f9ba2abb6c6cfc9bdb1a69a8f83776c6055493d32261b0f0006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6d6a635a50463b3025191b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6d615a51473d32271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1e2327292a2d2f30313232323232323232292826211c160f07000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000020b131c252d353d454d545c636b6f797f858d929a9ca3a8aaafb3b5b9bbbcbebfc2c8c1c9c4c0bfbdbcbab7b3b2ada8a69f9c95908a837c73757f8790959da4acb3b4b4b4b4b8b1aba29b938f847d726e635f585049423a31281e140900000c18232e39444f5961686c6c6c6c6c6c6c6c6c6c6875818d98a6afb9bbafa4988d8175686c6c6c6c6c6c6c6c6c6976818d99a7b0bab9aea2978b7f746c6c6c6c6c6c6a6760574d42372c21160b00000000000000000000071019222b343c454a5560696f7b848f959fa7b0bac4bab0a79f958f847b6f6960554a474747505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054494747474544413b352d251b12080000000000000000000000000000000006111b252e36414a545d636f7a838f969faab5bcc6c9beb5aba29c91867c706960554a443a31261e150b0100000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bbb0a4998d817e7e7e7e7e7e7e7e7e7f8083868c91969da4adb5bdc7cec3b9afa69c91867b6f64574e453a2f24190e030000010c16212c36414d58646f7b86919ca8b4bcc9c8beb5aa9f968f837b706c6360595857555758585f636a6f79828e949ea8b3bcc5d4c9bdb1a69a8f83776c6055493d32261b0f00040f1a242f39434c53585a636363636363636363636363615f5a534a41362c211617222c364049505562636363636363636363636363636256514a41382d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f14181c1e1e2124252626262626262626261d1d1a17120c0600000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000009131b242c353e454e555d646d717b828b90969ca2a7acb3b5b9bfc0c3c9c8cacbcdd2ccd3cecbcac9c8c7c2bfbdb7b3afa9a59f9c938f867f818b91979fa6adb5bcc3c5beb7afa8a19c918d837b716c645e544f474039312a21180e0400000a15202a353f4851595e6061616161616161615866727d89969faab5beb3a79c9084796e63616161616161615867727e8a97a0abb6bdb1a69a8f83776b61616161615e5c574f473d33281e1308010000000000000000000008121a232c303b465058616a707c859097a0abb5bac0b8afa69e948e82796e635f564d4444505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d3c3c393836312b251d140b0200000000000000000000000000000000010b141e263139444a556069707c86919ca2abb5bec8c6bbb5aa9f968f837a6f635d544a41372e251b110700000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807472727272727272727375777b80868f949da4adb7bfc9c8bfb5aaa0968b8074685e54493e33271c100500000007121e2935404b57616b76828d99a3acb8c1cac4b9afa69d948f847c746f6966646360636466686e737a828e929ca4adb7c3ccd4c9bdb1a69a8f83776c6055493d32261b0f00000b151f29333b43494d4e5757575757575757575757575654504a433a31271c12121c26303840464a57575757575757575757575757574d4b47413a31281e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012131618191a1b1b1b1b1b1b1b1b12110f0c08020000000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000061119232c343d454e555e656e727d848e929c9fa6abb2b6bcc0c4c9cbcecbcac7c5c4c3c3c3c4c5c7c9cbcccdcac7c2bfb9b5aea9a39d96918a8d919ca0a7afb6bdc5c4bcb5aea69f97918b817a6f6b635c5549453e3730282119110800000006101b252f3841484f5354555555555555555557636f7a85919ca8b3bfb4a99e95887d71655a55555555555558636f7b86919ca8b4bfb3a79d93877b6f645855555552514d473f362d231913100c07010000000000000000010a131c212c363f48515a626c717e86919ca1aab3bcbfb6ada49c938d81766f665d544c44505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31302e2d2b27221b140c04000000000000000000000000000000000000040d162029313b465059626c737f8a929ca5aeb8c3cec4b9afa79d938c80756d645a51473e352b20180f06000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686666666666666768696b6f757c848f949da6afb9c4cec4bab0a79b9084796e63574b4034291d110600000005101c27323d47515a66717d88929ca8b1bac5c9c0b7ada49d949085807a7572706f696e6f7174797e848e939ca2abb5bec7d3d4c9bdb1a69a8f83776c6055493d32261b0f0000050f19222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4a4946413a322a20170d0d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312921170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a0d0e0e0f0f0f0f0f0f0f0f0606040100000000000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000050e17212a333c444d555e656f737e8690959ca3aaafb7bbc1c6cccdcbc8c3c0bebcbab8b8b7b7b8b9bbbdbfc1c4cacccdc9c3bfb8b4aca69f9c96989ba1abb0b8bfc7c5bbb3aca59e96908780786f69615a534c443a352e262018110901000000010b151f2830383f4448494a4a4a4a4a4a4a4a55606976828d99a8b1bab8aea5978c8075695c53484a4a4a4b56616a77838e9aa6b1bdb6aca3968a7f73675a51474a4746423d362e2621201e1b16110a0300000000000000000307121c262f38414a525b636d737f8a919aa2acb4bdbeb5aca39b918b7f746e645c534a505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d312622211f1c17120b040000000000000000000000000000000000000000051019212c364048525b636e78828e959ea9b4bac4c9c0b7ada49a91897e726b61584f453a30281f160d030000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5b5b5b5b5b5b5c5a61646c707b838f969faab5c0cac9c0b4a89e94887c7165594e42372b1f1107000000020d18232e38414d58636d77828e97a1abb6bdc7c7bdb4ada59e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f00000009121b22292f3336374040404040404040404040403f3e3b36312a22191007060f171f262c313440404040404040404040404040403535322d28211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000020c161f27313a444c545e656f737f8791969ea5acb5b9bfc7cccdc8c3bfbeb8b4b3b0aeadacabacadadafb2b4b5bac0c1c6cbcec8c3bdb7afaaa8a2a4a6abb6bac1c8c1bab6aba39c9490857e746e686059514a433b302b251e160f07010000000000050e1720282f35393c3d3e3e3e3e3e3e3b46505967737e8a97a1abb6beb2a79b8f84786c62574c413e3c47515a68747f8b96a5aeb8bcb1a5998e82776a60564b3f3b3a37332f2f2f2d2c2a26211a130c030000000000000000020c161f273039424b545d656f75808c929ca4adb6bfbcb3aba29c91877e726c635a51505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a1614110d08020000000000000000000000000000000000000000000008121c262f384249545e686f7b84909ba1aab4bdc7c7bdb4aaa19c90857b6f685f5449433830261d12080000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514f4f4f4f505051565c626a707c85909ca7b0bac4cdc2b8aea5968b7f74685c5145352b20160b0000000009141e28343f49545d65717d87919ca4adb7bfc9c5bdb5aea69f9c95908c898786858587888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f000000020a12191f24282b2b3434343434343434343434343332302c27201911090000070f161c22262834343434343434343434343434342a2927231e171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010405060a0a0a0a0a0a0a0a0a0a0707050300000000000000000000000000000206090a0b0c0c0c0c0c0c0c0c0c0c08070603000000000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000007121c262f38424a545d646e737f8a9197a0a7aeb5bcc4c9cfc8c2beb8b4b3aea9a7a5a3a1a0a0a0a1a2a4a6a8abb0b2b6bcc1c5cccec7c0b9b5b3adafb1b5bbc5c7bfb8b0aba19b938e847c726e635e575048413a332b201b150d0600000000000000000710171f252a2e313232323232373936414c58646f7b86919ca8b4bfb4a89e94887c7065594e423837424d5965707c87949ea8b4bfb3a89c91867b6f63584c41363b3b3b3b3b3b383735302b241c130a010000000000000000050e172029323b444c555e636e79828e949da5aeb7c0bbb6aba19791867d716b6159505b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f090602000000000000000000000000000000000000000000000000020c161f282f3a454e57616a717d89919aa4adb7c0c9c5bab4a99e958e82786e635c534940362c2219110600000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464444444445474b535a626c74808b97a0aab5c1ccc7bcb0a5998d82766b584f453a30251a0e03000000040e1a252f3a434d58636c75808c949da6afb8c1cac5beb7afaaa59e9c9895929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f0000000002090f151a1d1f20292929292929292929292929282725211c17100901000000060d12171b1d29292929292929292929292929291e1e1c18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112161616161616161616161312110e09040000000000000000000002080d11141617181818181818181818181413110e0a0500000000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000050e16212c363f48525b636d727e87919ca1a8b0b7bec6cecac5beb8b4aea9a7a59e9c9997969594959596989a9ca0a7a7acb2b6bcc3ccd0c9c4c0bfb9bbbcbfc4c5bdb6afa7a09c918d827b706c645d544e4740383129221a110b0400000000000000000000070e151b20232526252e363c414546464b56616b77838e9aa6b1bdb7ada4978b8074685b52484646464c57626c7884909ba7b2beb5aaa0978a7e7267595046464646464646464443403b342c241a1107000000000000000000061018222a333c454a555f686f7a838f959ea7b0bac4bab1a89f9690847b6f6960585b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000060f17202b353e47515a636d75808c939da6afb9c4cec3b8aea59c928b7f746c635950463c312a21160e05000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a383838383d4249525b636f7b86919ca8b3bfcbc9beb2a69b8f8478685f54493e33281c1105000000000b15202a333e49535c636f7a848f969fa8b1bac0c8c7bfb9b5aea9a7a4a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f000000000000050b0f1213141d1d1d1d1d1d1d1d1d1d1d1d1c1b1916120d0700000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d1d1d1312100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1c1d212121212121212121211f1e1c19140e080100000000000000040b12171c1f2122242424242424242424241f1f1c19150f08010000000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000010b151e27303b465058626b727e869197a1abb1b8c0c8cfc8c1bab6aea9a59e9b9795908d8c8a8989898a8b8d8f91979a9ca3a7acb3bcc5d0d3cfcccac4c7c8cac7bdb5ada69f97918b81796f6a625c5449453e362f282119120701000000000000000000000000050b10151818222c363e464c50525252515a68747f8b96a4adb7bdb2a69a8f83786b62575252525252525b6975818c98a6afb9bab0a7998d82766960555252525252525252504e4a443d342b21160c0100000000000000000008111a232c303b454f58606a707c859096a0aab5bac1b8afa69e958f837a6f685f5b67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000000000000000000000000000000000000006111b252e36414a545d636e79838f969faab5bbc6c8bfb6aca39c91867d716a60564a443a31271e150c020000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2c2d2d3239424b56616a77838e9aa5b1bdc8cbbfb3a89c91857a6e63574b4034291d110600000000061019242f39434a556069707c859097a1abb0b8bfc7c9c4beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f00000000000000000406080911111111111111111111111110100e0b0703000000000000000000010406111111111111111111111111111107070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c212528292d2d2d2d2d2d2d2d2d2d2a2927231e181109010000000000040c141b22272b2d2e2f2f2f2f2f2f2f2f2f2f2b2a28241f19120a0100000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000007111b252e373f4a556069707c859097a0a8b1bac1c9cec6beb8b0aba59e9b95908c888482807e7e7d7d7e7f8183868a8e92999ca3acb6c1cbd7dad7d6d0d2d3cdc2b7ada49d9590877f756e69615a534b443a352e261f17100802000000000000000000000000000001060a121d28323c464f565b5d5e5e5e5e65707c87949da8b3beb3a89d93877b70645e5e5e5e5e5e5e5e66727d89969faab5bfb3a89c90857a6e635e5e5e5e5e5e5e5e5e5b59544d443b30261b10050000000000000000000109131b212b353f485059626b717d86919ca1aab2bbc0b7aea59d938d81786e635e67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f0300000000000000000000000000000000000000000000000000000000010b141e263139444a556069707c86919ca2abb5bec9c6bcb5aaa0978f837a6f635d544a42372f251b11070000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23212329313c47515a6974808c97a3aebac6ccc0b5aaa096867a6f63584c4035291e120600000000000a151f29313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f262c303334383838383838383838383635322e282119110800000000020b141d252b313638393b3b3b3b3b3b3b3b3b3b3635332f29221a120800000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000b16212b353f47535c636e79838f959fa7b0b8c1cacdc5bdb6aea7a09c94908a84807c79767473727272737375787b7e82888e929ca7b2bdc9d4e0e2e2dbded6cabfb3a89d948f857d736f636058514a423b2f2b251e160f070000000000000000000000000000000000000a15202b37414c565f666969696969696c78848f9ba7b2beb7ada4968a7f73696969696969696969696e7a85909ca8b3bfb5aa9f96897d726969696969696969696967645d544a40352a1e1308000000000000000000000207111b252f374049525b636d737e8a909aa2abb4bdbeb5ada49c928c80756e6567737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000000000000000000000000000000000000000040d162029303b465059626c737f8a929ca5aeb8c1cac4bab0a79d948d81766e645b52483f352b2118100700000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231318222d3745515c68737f8b96a2adb9c5cfc4bab0a792877b6f64584d41352a1e13070000000000050f17222c364049535c646e737f8a91979fa6acb4b8bec1c6c8cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfbfbfbdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000000000000000000000000000000000000000001040607111111111111111111111111111111111111111111111111111111111111111111111111111111110807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f272f363b3f404444444444444444444441403d38312a21180e0400000008121b252d353b4144454646464646464646464642413e39322a22190f05000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000030f1a25303b454f58636c75808c939da6afb7c0c9cdc5bdb5ada59e97918c847f7a75706e68696766666667686a6a6f73777d828e99a5b1bcc8d3dfebede7e0d5c9beb2a69b8f837c716d655e5550484139322a201b140d05000000000000000000000000000000000000000b17222e3945505b666f7475757575757575808c97a3afbabcb1a59a8e8277757575757575757575757576828d99a5b0bcb9afa6988c817575757575757575757575726e64594e43372c2015090000000000000000000000020c151e273039424a535c646e74808c929ba3acb5bebdb4aba29a908a7f736d67737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000000000000000000000000000000000000000000000051018212c363f48525b656e76818d959ea8b1bac5cac0b7ada49b91897e726b62584f453b302920170d03000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231715222d3945505c67737f8a96a1adb9c4d3c9b5a99e92877b7064584d41362a1e130700000000000008121c263038424b545d656e737f8690959ca3a8aeb2b6bbbdbebfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb4b4b4b4b1a69a8f83776c6055493d32261b0f0000000000000000000000000000000000000000000000000000000000000003080c1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f454a4c4f5050505050505050504d4c48423a31281e14090000020d17222b353d454b4f51525252525252525252524e4c48423b32291f150a000000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000005111c28333e4a545f68717d87919ca3acb6bfc8cec6bdb4ada49d959087807a736e6965635e575c5b5a5b5b5c5a61636a6f7a818d98a4b0bbc7d2dee6e7ebdfd4c8bcb1a59a8e82776e645d554a463f383129221a110b0400000000000000000000000000000000000000000c18232f3a46525d69748080808080808080828e99a5b0bcbfb4a89c918780808080808080808080808080828e9aa6b1bdbeb3a79c908580808080808080808080807e72675b5044382d21160a000000000000000000000000050e162028313a434c555e636e78818d939da5aeb7bfbbb3aaa19c91867d716b737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000000000000000000000000000000000000000000007121c262f38424b555e636f7b849097a1abb6bdc7c8bdb5aba29c90857c70685f554a433930271d1308010000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231c1e25303a454f586874808b97a2aebac5cdc3b8aea592867b6f63584c4135291e1207000000000000030d161f28323b444d555e656e737d858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1a8a8a8a8a8a8a69a8f83776c6055493d32261b0f000000000000000000000000000000000000000000000000000000000000060d13171b1d1e292929292929292929292929292929292929292929292929292929292929292929292929292929291f1e1c19140f08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f484f55575b5b5b5b5b5b5b5b5b5b5957524b42382e23190e030006111c27313b454e555a5c5d5d5d5d5d5d5d5d5d5d5957534b42392f24190e030000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000030f1a25303b454f58636e79838f97a1abb4bdc7cfc7beb5ada49d948f857d756f6a63605957544e504f4f4f50555d646c707b828d919ba6b1bcc8d3e0dadbdde0d4c9beb2a79c92897e72695f554a3f362f272018120601000000000000000000000000000000000000000005111c28333f4a56626d79848c8c8c8c8c8c8c8e929ca7b2bdc1b6aba097918c8c8c8c8c8c8c8c8c8c8c8c8c8e939ca7b2bec0b4a99f95908c8c8c8c8c8c8c8c8c8c8c81756a5e53473b3024190d00000000000000000000000000060f18212a333b4449545f686f7a838f959ea6afb8c1bab5aaa09790857c70737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f0300000000000000000000000000000000000204060707070707070707070707070c161f27323b454b56616a717d87919ca3acb7bfc9c5bbb5a99f958e82796e635c534941372d221a11070000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2528292e353e49545f6876818d98a4b0bbc7cbbfb4a99e95867a6e63574c4035291d120600000000000000060f17222a343d454d555e656d717b828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e89959c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f0000000000000000000000000000000000000000000000000000000000070f171d22262934343434343434343434343434343434343434343434343434343434343434343434343434343434342a2a27241e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f585f636767676767676767676764625b52483d32271c11050009141f2b36414b555e65686969696969696969696965625c53483e33281c11060000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000005111c28333f4a555f69737f8a939da8b1bac4cdc9c0b7aea59d938f837b716d63605955504b49454444484f555e656d727c848e939ba2abb5c0cad5d5cfd0d2d6d7ccc1b6aca39b8f84796e63584f453b30251a10080100000000000000000000000000000000000000000005111c28333f4a56626d798490989898989898999ca2abb6c0c5bab0a7a09c989898989898989898989898989a9ca3acb6c1c3b8aea59f9c989898989898989898988d81756a5e53473b3024190d0000000000000000000000000000071119232b303a454f5860696f7b8490969fa8b1bac4bab0a79f958f837a737e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f0300000000000000000000000000000003080d1012121212121212121212121212121217222a313c47515a636d75808c939da6afb9c4cec3b9afa69c938b80746d635a51473c312a22170f0500000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2b303334373e454f58636e7984909ca7b3becacabeb3a79b9084796960554a3f33281d1106000000000000000007111a242c343d454e555d636b70787e848a8e9395989a9c9ca09f9c9b9997938f8a837e756f727e89919191919191919191918f83776c6055493d32261b0f00000000000000000000000000000000000000000000000000000000060f1820272d313440404040404040404040404040404040404040404040404040404040404040404040404040404040403635322e28211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c28333f4a555f696e72727272727272727272706b62574c4035291e1207000a16212d38444f5a656f7375757575757575757575706c62574c41352a1f13070000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000006121d2934404c57636e7984909ba3acb8c1cacfc4b9afa79e948f837b706b635d56504a46403e3a424951585f636f747e8590949ca3abb2bbc5cdcac9c3c4c7ccd1d0c6bcb4a89e948a7e73685f544a3e33281d13090000000000000000000000000000000000000000000005111c28333f4a56626d7984909ca3a3a3a3a3a5a7abb3bcc5cac1b8b0aba8a3a3a3a3a3a3a3a3a3a3a3a3a3a6a7acb3bcc6c8bfb6aea9a7a3a3a3a3a3a3a3a3a3988d81756a5e53473b3024190d00000000000000000000000000000009121b202b353e475059616b717d869097a1abb6bbc0b7afa69d948e82797e8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000000000060d13181b1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e222d374149545d636e79838f969faab5bbc6c9bfb6aca39c91877d716a61564b453a32271f160c02000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463f353a3e4042474f555f68727d89959ea9b4bfcbc8bdb1a59a8e83776b5950463b30251a0f040000000000000000010a131c242d343d454c545b62686e737a7e83878a8d8e90919796918f8d8b87837e79726d67727e85858585858585858585858583776c6055493d32261b0f000000000000000000000000000000000000000000000000000000030d17202830373c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42403d38322a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a25303b465059636e797e7e7e7e7e7e7e7e7e7e7c7064594d41362a1f1307000b17222e3945515c68737f808080808080808080807c7065594e42362b1f14080000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000006111d28333e49535c67737e8a949ea8b4bdc9d1c8c1b5aa9f9690847b6f6b625b544a46403b3638424b525a61696e757f8790969ea5acb3bbc2c7c2bfbeb8b9bcc1c8d0cdc2b7ada49b8f84796e63574b41372d22180d0200000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7afafafafb0b2b6bcc3cccfc8c1bab6b4afafafafafafafafafafafafafb1b2b6bcc4c9cfc6bfb8b4b3afafafafafafafafa4988d81756a5e53473b3024190d0000000000000000000000000000000207111b252e374049515a636c727e87919ca2abb3bcbfb6ada49c928c817f8a95a1adb8c4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3039434a555f69707c85909ca2abb5bec9c7bcb6aba09790847a6f635e554b42382f261c1207000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514a4a4a45494b4d52585f636e79838f9ba5aeb8c3cec4bab0a7988c8075695e5246362c21170c01000000000000000000030b141c242d343c444a52575e63696e73777b7e8183858586868584827f7c78736e6964646e727a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e00000000000000000000000000000000000000000000000000000008131d27303940464b57575757575757575757575757575757575757575757575757575757575757575757575757575757574d4c48423a32281e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161d28333f4a556069737f898989898989898989857b6f64584d41352a1e1307000f1b26323d4955606c77838c8c8c8c8c8c8c8c8c897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000008131f2a36414c58636c78838f9ba5aeb8c4cdcac1b8aca39c91867c706b615a524a433c3630333e48525b626a6f79818b91979fa6aeb5bcc4c5bdb7b3b2acadb2b8c0c8d1c7beb4a89e94897d72665a51473c31261b100500000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7b3b9b9b9b9b9b9b9bfc0c4c9cac5c1bfbabababab9b9b9b9b9b9b9b9b9b9b9b9babbbec3cac8c3c0bebabababab9b9b9afa4988d81756a5e53473b3024190d00000000000000000000000000000000010b151e263038414a535c646e747f8b919ba3acb5bebdb5aca39b918c838f9aa6b1bdc9c8bdb1a59a8e83776b6054493d31261a0f0300000000000000000000000006101820272d313435353535353535353535353535353535353535353b454f58626c737f8a929ba5aeb8c1cac5bab0a79e948d81766e655b52483f362c211910050000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d565656564f5457585b62686e75808c939da8b6bec8ccc0b5aaa096897e72665b4f44382c2112070000000000000000000000030c141c242c333a42474e54586063676b70737577797a7a7a79787674706c676360585d64676e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d0000000000000000000000000000000000000000000000000000010c17222d374049505662636363636363636363636363636363636363636363636363636363636363636363636363636363635957524b42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26313b465059636e7a8490959595959595978c81756b61564b4035291e1207000f1b26323d4955606c77838f9797979797979795897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000030e1a25303a454f5865717c88939da8b5bec7cfc5bab0a79c928a7f736c625a514a423a312c2a35414c57626c707b828d919ca1a8afb6bec5c3bcb4ada8a6a0a2a8afb8c3cccdc2b7ada4998e82766a61564b4034291d110700000000000000000000000000000000000000000005111c28333f4a56626d7984909ca7aeaeaeaeaeaeaeaeb3b5b9c0c7cfccc2bbb5b1b0aeaeaeaeaeaeaeaeaeaeaeaeaeb0b4bac1cacecbc2bab4b0afaeaeaeaea4988d81756a5e53473b3024190d0000000000000000000000000000000000040d161f28313a434b545d666f76818d939ca4adb6bfbcb3aaa19b938f939da8b3becac8bdb1a59a8e83776b6054493d31261a0f030000000000000000000000030d17202830373c3f4141414141414141414141414141414141414141414148525b656e76818d949ea8b1bac5cac1b8aea59b928a7f736c625950463b302920160d0400000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686161616161615f6364676b7078808b919aa4adb7c6cfcbbfb3a89c91857b6f63584c4135291e1207000000000000000000000000040c141b232a31363e45495055575b6164676a6c686e6f6e696d6b6865625c57555054595b636363636363636363636363605e5951493f352a20150a000000000000000000000000000000000000000000000000000004101b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d625b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f4a556069737f8a949ea1a1a1a89c91867b70645a51473d32271c1005000f1b26323d4955606c77838f9aa3a3a3a3a3a095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000005111c28333e49545f6875808c97a4adb7c5ceccc1b6aba0978e82776e655c534a4139312a222b36424d5965707c848e939ba1abb1b8bfc7c4bab3aca49d9b95989fa8b3bcc6d0c7beb4a89c91867b6f63584c41352b21160b00000000000000000000000000000000000000000005111c28333f4a56626d7984909ca2a2a2a2a2a2a2a2a2a8aaafb7c0c9c5bbb2aba6a4a2a2a2a2a2a2a2a2a2a2a2a2a3a5aab1bac5cdc4bab1aaa5a3a2a2a2a2a2988d81756a5e53473b3024190d000000000000000000000000000000000000060f172129323b444d565f636e79828e949ea6afb8c0bbb2aaa39d9a9da3acb7c1ccc8bdb1a59a8e83776b6054493d31261a0f03000000000000000000000008131d27303940474b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c555e636f7b849097a1abb6bcc7c8beb5aba29c90857c706960554a443931261e140b01000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746d6d6d6d6d6d6d686e7072767c828b909aa1aab4bdc7ccc1b7aca3998d82766a60564b3f34291d120600000000000000000000000000040b131921262e353a3f464a4c5257585b5e575e6363635f585f5d5957534c4a464a4e5057575757575757575757575755534f4941382f251b1106000000000000000000000000000000000000000000000000000006121d29343f4b56606a777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c62574c40352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b465059636f7a84909ba5aeacaba1978d81766b62574a41382d23180d02000f1b26323d4955606c77838f9aa6afafafaca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000006111d2934404b57636e7984909ba7b3bdc7d5cbbfb4a89c91867c70655e554b423a31292126323d4954606c77838e949ca3abb6bac1c8c0bab5aaa29c948f898e98a3acb6c1ccccc1b5aba0978a7e7367584f453b30251a0f03000000000000000000000000000000000000000005111c28333f4a56626d798490979797979797979797979c9fa7afb9c4c0b5aba29b98979797979797979797979797979aa1aab4bdc7bfb4aaa19a989797979797978d81756a5e53473b3024190d00000000000000000000000000000000000000071019222b343c454a5560696f7b848f959fa7b0bac4bbb4aca8a6a8acb4bdc6d0c8bdb1a59a8e83776b6054493d31261a0f0300000000000000000000020d18222d37404951565858585858585858585858585858585858585858585858585858616a717d87919ca3acb7c0c9c5bbb5aa9f968f83796e635d544a41362e251b1106000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807878787878787878797a7b7e81868e929aa1aab2bac5cdc6beb3a89d93897d72665a51473c31261b10040000000000000000000000000000020911161e252b2f363b3f41484b4d50534e54575757554f53514e4c48423f3b4043444b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281f150b01000000000000000000000000000000000000000000000000000007121e2935404c58636f7a858585858585858585858585858585858585858585858585858585858585858585858585858585857c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a556069737f8b959ea9b5b4a89c91867c70645b52483a31281e130900000f1b26323d4955606c77838f9aa6b1bab8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000008141f2b36424e5965707c88959ea9b4bfcbcdc2b7ada4998d81766c62574e453b322921191f2a36414d5864707c859096a0aab5bac3bfb8b0aba19a928e837e89929ca7b2c0c9cfc4bab0a7998d8276685f544a3e33281c1105000000000000000000000000000000000000000005111c28333f4a56626d79848b8b8b8b8b8b8b8b8b8b8b91969faab5c0bcb1a69b918d8b8b8b8b8b8b8b8b8b8b8b8b8c909aa4adb7c2bcb0a59a918c8b8b8b8b8b8b8b81756a5e53473b3024190d000000000000000000000000000000000000000008121a232c303b465058616a707c859097a0abb5bac3bdb7b3b1b3b7bdc4cdd4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000004101b26313c47515a61636464646464646464646464646464646464646464646464646464646d74808c939da7b0bac4cec4b9afa69d938c80756d635a51473e352b20160d040000000b16222d3945505c67737f8a96a1adb9c4d0cabfb3a79c908584848484848484848485878a8d91979ca2aab1bac2cbc8beb5aba29a8f83786d63594940372d22170d0100000000000000000000000000000000050d141b20262c3033383d4041444745494b4c4c4a45484542413e3933303537384040404040404040404040403d3c39352f2820180f0500000000000000000000000000000000000000000000000000000007121e2935404c58636f7a869191919191919191919191919191919191919191919191919191919191919191919191919191877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7a84909ca5aeb7ada4998d82766c62574a42382921170e0400000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000b16222e3945505c68737f8a96a5aeb8c3cdcabeb3a89d93887c71655b52483d352a2219121e2935404c57626b717d86919ca1aab3bcb6afa7a09c918c827a77828e9aa7afb9c4cfcabfb3a79c9085796e63574b4034291d12060000000000000000000000000000000000000000000b17222e3a45515c68737f808080808080808080808086919ca8b3bfbbb0a4988d81808080808080808080808080808c949da8b3bfbaafa3988c80808080808080807e72665b4f43382c2115090000000000000000000000000000000000000000010a131c212c363f48515a626c717e86919ca1aab3bcc5c1bebdbec1c6cdd5d4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000006121d29343f4b56616a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f79838f96a0aab5c0ccc9bfb7ada49a91897e726b61574e453a2f261e140b0100000b16222d3945505c67737f8a96a1adb9c4d0cbc0b5a99f9590909090909090909090919795999ca0a7abb3bac1cac8c0b7aea59b91897d71665d544a3930271d1308000000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a3635332e28252a2c2d34343434343434343434343432312e2a251f1810070000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c93877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737e8a959ea9b5b3a89d94887d71665b52483a31281910070000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000040f1a25303b454f586a76828d99a4b0bcc8d2c9bdb2a69b8f83786c63584b42392d241a12101c27323d48525b636d737f8a909aa2abb4ada69f97918a80796f727e89969faab5c0cccbc0b4a99f95887c7065594e42372b1f14080000000000000000000000000000000000000000000b16222d39444f5a656f737474747474747474747476828e99a5b0bcbaaea3978b8074747474747474747474747478838f9ba6b2beb8ada1958a7e74747474747474726d64594e42372b2014090000000000000000000000000000000000000000000307121c262f38414a525b636d737f8a919aa2acb4bdc6cac9caccd0d6ddd4c8bdb1a59a8e83776b6054493d31261a0f030000000000000000000007121e2935414c58636f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7d85919ca8b3bfcbd0c7bdb4aaa19c90847b6f685e544943362e251b110600000b16222d3945505c67737f8a96a1adb9c4d0cec3b9afa69f9c9b9b9b9b9b9b9b9b9c9ca0a7a4a8abb0b8bcc3cac8c1b8b0a79e948d81766d63584c443a2820170d030000000000000000000000000000000000000001060c12171a1e2327292a2d2b2f3334353433302c2e2b2a28241f1a1e2021292929292929292929292929262623201b150f07000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e93877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f9ba5aeb8afa69b8f83796e63574b423829211808000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000005111c28333f4a555f6978848f9ba7b2bec9cfc4bab0a7978b7f74685c53493b32291d140a0d18232e38424a535c656e75808c929ca4aca49d9590867f756e686f7a85919ca8b3bfcbcec3b9afa6958a7e73675b5044392d22160a00000000000000000000000000000000000000000009141f2b36414b555e656868686868686868686868737f8a96a3acb7bdb2a69b8f83786c6868686868686868686974808c97a5aeb8bcb0a5998d82766a686868686866645d544a3f34291e130700000000000000000000000000000000000000000000020c161f273039424b545d656f75808c929ca4adb6bfc8d0d5d7dbe0dfd4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c7782868686868686868686868686868686868686868686868686868686868686889196a0aab5c0ccd7cdc4bab4a99e958e82786e635c53473e352b20160b00000b16222d3945505c67737f8a96a1adb9c4d0d3c9bfb6afa9a7a7a7a7a7a7a7a7a7a7a8abb0b0b4b6bac1c8cfc7bfb8b0a7a09790847b6f645d54493c332a180f060000000000000000000000000000000000000000000002070c0f14181c1e1e22202427292929282521231f1e1c19150f1315161d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9e93877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27333d48525b66717d89939da8b6b5aa9f968a7f73685e54493e33271c1108000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000006121d2934404c57636e7a85919ca8b4bfcbccc0b5aaa096887d71655a4e43392b22190c0409141e28313a434c555e636e79828e939da39c948f857d736e63606976828e99a5b0bcc8d3c8baafa3988c8075695e52463b2f24180c01000000000000000000000000000000000000000006111c27313c454e555a5c5d5d5d5d5d5d5d5d5d646f7b87939da7b3beb3a89d94877c70645d5d5d5d5d5d5d5d65717c88959ea9b4bfb3a89c91857a6f635d5d5d5d5b59544d443a30251a0f040000000000000000000000000000000000000000000000050e172029323b444c555e636e79828e949da5aeb7c0cad4dee4eadfd4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9292929292929292929292929292929292929292929292929292929292949ca0a7b0bac4cfdad5cec3b8aea59c928b7f736c62574e453a2f24190e03000b16222d3945505c67737f8a96a1adb9c4d0d9cfc7bfb9b5b3b2b2b2b2b2b2b2b2b3b4b6babbbfc1c5cacac4bdb7afa7a09791867d716a61564c443a2c231a08000000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1c1a16121413110e0a0408090a1111111111111111111111110f0e0d0a06010000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb5aa9e93877c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c77828e99a4adb7b3a89c90857a6f63574e453a2f24190e00000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000008131f2a36424d5964707c8797a0abb6c1cccbbfb3a89c91857a6e63574c4034291d120800040e18212a333b454a545f686f7a838f959b928e837c716d655e5968747f8b97a2aeb9c5d1c8bcb0a5998e82766b5f54483c31251a0e030000000000000000000000000000000000000000020d17222c353e454b4f51515151515151515156616b77838f9aa6b1bdb7ada4968b7f74685a51515151515157636e7984909ba7b3beb5aa9f96897e7266584f51514f4e4a443c342a20160b01000000000000000000000000000000000000000000000000061018222a333c454a555f686f7a838f959ea7b0bac4cfd3dce5dfd4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa8aab0b7c0c9d3deddd2c8beb6aca29c91867c70685e54493e33271c1005000b16222d3945505c67737f8a96a1adb9c4d0e0d7cfc9c3c0bfbebebebebebebebebebfc1c5cacbcccac5c0bab5ada69f9791877e726d635a51473c332a1b130a0000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c070807060300000000000606060606060606060606060303010000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c0cbcbcbcbcbcbcbcec8c3bfbebebebebebebebebebebebebebebebebebeb5aa9e93877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5864707c87929ca7b4b7ada4988c81756a6056473e352b20160b00000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000915202c37434f5a66717d8994a7b0bac5cfc9bdb2a69b8f83786960554a3f33281d11060000081119232b303b454f58606a707c8590918c827a706c635d555b66727d8995a0acb7c3cfc9bdb2a69a8f83786c6055493e32261b0f0400000000000000000000000000000000000000000008121b252d353c4144454646464646464647515a68747f8b97a5aeb8bdb1a69a8e83776b61564b46464649545f6875818c98a6afb9b9afa7988d8176695f554a4643423f3a342c231a1006000000000000000000000000000000000000000000000000000008111a232c303b454f58606a707c859096a0aab5bac3cbd5dddfd4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb3b5bac0c7d0d9e3e2d8cfc6bcb5aaa0968f83796e63574b4034291d1106000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdd3cecbcacacacacacacacacacacbcbcac9c7c2c1bab6b0aaa49d9690877f736e645c534a41372c231a0b02000000000000000000000000000000000000000000000000000000000000000000000305060606050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a86929da9b4c5ced7dfd6d6d8cec6beb8b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3aa9e93877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6875808c97a2abb6b4a89e94887d7165595046362e251b110600000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000a15212d38444f5b66727e8995a0acb8cad4c7bcb0a5998d82766b5850463b30251a0f0400000009121b212b353f475059626b717d868b81796f6a625b544d5964707c87939eaab6c1cdcabeb3a79b9084796d62564a3f33281c1005000000000000000000000000000000000000000000020b141d252c3136393a3a3a3a3a3a3a38424e5965707c88949ea8b4beb3a79c93877b6f64584d41373a454f5866727d89969faab5bfb3a79c90857a6e63574c40353734302a231b130a0000000000000000000000000000000000000000000000000000000109131b212b353f485059626b717d86919ca1aab2bbc4cdd6dfd4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6bfc0c4c9d0d8e0eae8dfd6cfc4bab0a79d94857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c9c3c0bfbdbbb8b4b0aba7a09c938f857e736e645d544c433931271b130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a8692a3acb5bec7cfd8e1dcd2c8beb5aea9a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79e93877c7064594d42362a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ca7b3bcb2a79b8f84796e63574b4037291e140b0100000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000a16212d3944505b67737e8a95a1adb8c4cfc7bbafa4988d81756a5e5347362c21170c010000000207111b252e374049525b636d737f7f756e69615a524b4c58646f7b86929ea9b5c0cccabfb3a89c9085796e62564b3f34281d110500000000000000000000000000000000000000000000040c141b22272b2d2e2e2e2e2e2e2e35414c57626c7884909ba7b2beb6aca3968a7f73675a51473c35404c57636e7a85909ca8b3bfb4a99f95897d7166584f453a302925201a130b03000000000000000000000000000000000000000000000000000000000207111b252f374049525b636d737e8a909aa2abb4bdc6ced7d4c8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6b1bdc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c2cbcccfd3d9e0d8d8d8d8ded4cac0b7ada491857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9b5b3b2b0aea8a7a09c97918c837c726d645e554d443b332920170b02000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b090603000000000000000000000205080a0b1111111111111111111111110f0e0c09050100000000000007121e2935404c58636f7a86939da5aeb6bfc8d0dad9cdc3b8aea59e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a66727d89959ea9b4b7ada4978b8074685e54493e33271c0d040000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000b16222e3945505c68737f8a96a1adb9c4d0c6baafa3988c8075695e52473b2f2412070000000000010b151e273039424a535c656e73736f635f585149424c57636f7a86919da8b4c0cbcbbfb4a89c91857a6e62574b4034291d11060000000000000000000000000000000000000000000000040b12171c1f2222232323232328333e48535c6975808c98a6afb9bcb1a5998e82776a61564b3f343f4a55606976828d99a7b0bab9afa6988c8175685f54493e33281c16100a03000000000000000000000000000000000000000000000000000000000000020c151e273039424a535c646e74808c929ba3acb5bec7d0cdc8bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6b1bdc8cccccccccccccccccccccccccccccccccccccccccccccccccdcdcdcdcdcdcdcdcdcdcdcdcdd0c8b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaa8a6a4a59e9b97918d86807a706c645d554d453d342b2218100700000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000001070c111415161d1d1d1d1d1d1d1d1d1d1d1d1a191714100b05000000000006121d2934404c57636e79838f949ea6afb7c0cad4d6cbbfb4a99e9590909090909090909090909090909090909090909090877c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56616a76818d99a5aeb8b3a89d93877c7065574e453a2f24190e000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000b16222e3945505c68737f8a96a2adb9c4d0c6baafa3988c8075695e52463b2f241107000000000000050e162028313a434c555e656768655e554f4841404c57636e7a86919da8b4bfcbcbbfb4a89c91857a6e62574b4034281d110600000000000000000000000000000000000000000000000002080d111416171717171719242f39434f5a66717d89959fa9b5bfb3a89c91867b6f63584c41363b46505967727e8a97a0abb5beb3a79b9084796e63574b4034291d140a000000000000000000000000000000000000000000000000000000000000000000050e162028313a434c555e636e78818d939da5aeb7bfc9c1c1bdb1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6b1bdc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9a999694908c86817c756f69625c544d453d342c241b120800000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b0400000000030b11171b1f21222929292929292929292929292625231f1a150e070000000005111c28333e4a555f686f7b8490959fa7b0bac4cfd5cabeb3a79b9084848484848484848484848484848484848484848484847c7064594d41362a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b85919ca8b3bdb2a69b8f83786c6257473e352b20160b000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000a16222d3944505b67737e8a95a1adb8c4cfc6bbafa4988c81756a5e5347352b21160b00000000000000060f18212a333c454e555a5c5c5a554a453f37404c58636f7a86929da9b4c0cccabfb3a89c9085796e62564b3f34281c110500000000000000000000000000000000000000000000000000000206090b0b0c0c0c0a151d2934404c57636e7a85909ca7b3bfb5aaa0978a7e72675950463b36414c58636f7b86919ca8b4bfb4a99e95887c71655a4e42382e24190e03000000000000000000000000000000000000000000000000000000000000000000060f18212a333b4449545f686f7a838f959ea6afb8b5b5b5b5b1a59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6b1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4a89d91857a6e63574c4034291d1206000b16222d3945505c67737f8a939393939393939393939393939393939393939393939296908f8d8a8884807c76706c636059534b443c342d241c130a02000000000000000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d040000030c141b21262a2c2d34343434343434343434343431302e2a251e170f07000000030f1a25303b454f58616b707c859096a0aab5bac2cbc4b9ada2968a7f79797979797979797979797979797979797979797979706b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505967737e8a96a0aab5b8aea5978b7f74685b5248362e251b1106000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000a15212d38444f5b67727e8995a0acb8cad4c7bcb0a4998d82766a584f453b30251a0f0300000000000000071119232b343d454b4f50514f4b453b3536414d5864707b87929eaab5c1cccabeb3a79b9084796d61564a3f33271c10050000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6976818d99a7b0babab0a7998d82766960554a3f343f4b56616a77828e9aa5b1bcb8aea5978c8074695b52483e33271c110600000000000000000000000000000000000000000000000000000000000000000000071119232b303a454f5860696f7b8490969fa8b1aaaaaaaaaaa59a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9aa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa89d91857a6e63574c4034291d1206000b16222d3945505c67737f878787878787878787878787878787878787878787878786868583817f7c7975706b64625b555048423b342c241c140b03000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02010b141c242b313538394040404040404040404040403d3c39342e2720170e050000000b16212b353f48515a626c717d86919ca0a9b2bbc3cbbfb4a89c91877e726c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d64625b52483d32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a56606a77828e99a7b0bab4a99e94877c7065594d42392b1e140b01000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000915202c38434f5a66727d8994a8b1bac5d0c9bdb2a69a8f8378685f544a3e33281c1105000000000000000009121b242d343b4043454544413b302b37434e5a66717d8894a0abb7c2cec9beb2a69b8f84786c61554a3e32271b100400000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f5867727e8a97a0abb5bfb3a89c90857a6f63574c40353c47515a68737f8a96a4adb7beb2a69b8f84786c62574c41352a1e1409000000000000000000000000000000000000000000000000000000000000000000000009121b202b353e475059616b717d869097a19e9e9e9e9e9e9e9a8e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d91857a6e63574c4034291d12060007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a79787673706e6864625b57524a464038322a231b140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120807111b242d343b4043444b4b4b4b4b4b4b4b4b4b4b4b4847443e3830271e150b01000007111b252f37414a525b636d737e8a909aa1abb3bcc5c1b6aba09791867d716b625a616161616161616161616161616161615957524a42382e23190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a85919ca8b3beb2a79b9084796c62574c41352a1e0d0400000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000008131f2b36424d5965707c8797a1abb6c1cccabfb3a89c90857a6e63574b4034291d140a0000000000000000020b141c242b31353839393836312b2f3a454e5767737f8a96a1adb9c4d0c8bcb1a5998e82776b5f54483d31251a0e0300000000000000000000000000000000000000000000000000000000000000000000010c16212c36414c58636f7b86919ca8b4b5b5aa9f96897d7266584f453b37414d5864707b87939da8b3b5b3a89d94877c7065594d42382e23180d02000000000000000000000000000000000000000000000000000000000000000000000207111b252e374049515a636c727e87919393939393939393938e83776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77838e939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939391857a6e63574c4034291d12060006121d29343f4b56606a6f70707070707070707070707070707070707070707070706f6f6a6c6a6865635e5757524c48423b362f28221a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d0c17212b343d454b4f5057575757575757575757575754534e4840382e251a10050000020c151e273139424b535d646e74808b919ba3acb4bdc5bab0a79f9690847c706a61595056565656565656565656565656564d4c48423a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5866727e8996a0aab5bab0a7988c81756a5b52483e33281c110000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000006121d2935404c57636f7a86919ca8b4bfcbcbc0b5aa9f96887c7065594e42382e23190e040000000000000000040c141b21262a2d2d2e2d2b2727333e49545e6876818d98a4b0bbc7d2c6bbafa3988c8175695e52473b2f24180d01000000000000000000000000000000000000000000000000000000000000000000000007121d29343f4b56616a77828e9aa5aaaaaaafa6988d8175685f554a3e35404c57626b78838f9aa6aaaaaaada4978b7f74685a51473d32271c10050000000000000000000000000000000000000000000000000000000000000000000000010b151e263038414a535c646e747f878787878787878787878782776b6054493d31261a0f03000000000000000000030f1a26323d4954606c77828787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878785796e63574c4034291d12060004101b26313c46505960636464646464646464646464646464646464646464646464646360595f5c5957544e4c48423d38312c261f17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c11111b26313b454e555a5c636363636363636363636363605e5851483e342a1f1409000000050e162029323b434c555e666f75818d929ca4adb5bec1b8afa69e958f837b6f6960584f454a4a4a4a4a4a4a4a4a4a4a4a41403d38312a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6875818d98a7b0bab5aba097897e72665b4f44392e24190e0300000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b00000006111d28343f4a5560697984909ba7b2becacec4b9afa6968b7f73685b52483d32281e1409000000000000000000040b11171c1f212222211f1e2934404b57636e7984909ba7b2becacfc4bab0a7968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a68737f8b96a49e9e9e9e9e9c9084796e63574c40343d48525b6874808b97a59e9e9e9e9e9a8f83776b61574b4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000040d161f28313a434b545d666f747c7c7c7c7c7c7c7c7c7c7c7b6f64584d41362a1e1307000000000000000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c77685f554a3e33281c110500010c17222d37404950565859595959595959595959595959595959595959595959595858565053504e4b49453e3d38322e28221c160f07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b2014141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23170c00000000061019222a333c444d565f636e79828e939da5aeb6bfc0b7aea59d948e82796e685f5449453c3f3f3f3f3f3f3f3f3f3f3635322e28211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7984909ca7b3beb4a89c91867a6f63584c4035291e150a0000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b000000040f1a26313b4650596b76828e99a5b0bcc8d3c9bdb1a69a8e83776b62574c41382e2319100700000000000000000001070c1114161617151e27313c47515a65717c88949ea9b4bfcbccc1b5aaa097887d71665a4e43372c201509000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37414d5964707c87949393939393939395887d71665a4e433738424e5965707c88949393939393939393877b6f64584d41362a1e130700000000000000000000000000000000000000000000000000000000000000000000000000060f172129323b444d565f666b70707070707070707070706f6b61574b4035291e1207000000000000000000000007121e2935404b57616b7070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706c5f584f453b30251a0f03000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46474542403e3a35322e28241e17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d221615212c38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7772685e53473c3025190e000000000008111a232b343d464a555f696f7a838f959ea6afb8c0beb6ada49c938d81786e635e554d443b3233333333333333332a2927231e181109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88959ea9b4bdb1a59a8e83776a60564b3f34291d12060000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b000000010c17222c3645515c68747f8b96a6afb9c3cec9beb2a79c93877c70645a51473d322921180f07000000000000000000000206080a07111b252e373f4b56616a75808c98a5aeb8c2cdcbbfb3a89c91857a6f63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000008131e2935404c57626b7883878787878787878787878075695e52463b36414c58626c7884878787878787878787877f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000071019222b343c454e565b62646464646464646464646464615a51473d32271c1005000000000000000000000005101c27323d48525b61646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464625b4f483f352b21160b000000030d17202830373c3f40424242424242424242424242424242424242424242424141403f3c37393734332f2b25231e19140f08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e231716222d3944505c67737f85858585858585858585858582776b6054483d31261a0f00000000000109121b242c303b454f58606a707b8490969fa7b0bac4bdb4aca39b918c80756e655d544c433a31292028282828281f1e1c19140e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a5aeb8baaea3978c8074695950463c31261b10040000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b000000000812202b37424e5a65717c88959fa9b4c0cbccc1b6aca3988c81756b61574b443a312820170f070100000000000000000000040b111b212b353f47525b636f7b85909ca8b3bec7d2c8bdb1a69a8e83776960554a3f34281d11060000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b646f7b7c7c7c7c7c7c7c7c7c7c7b6f64584d4136333e49535c646f7b7c7c7c7c7c7c7c7c7c7c7b6f64584c41352a1e120700000000000000000000000000000000000000000000000000000000000000000000000000000008121a232c353e454b525759595959595959595959595857514a41382e23180d020000000000000000000000020d18232e38414a525758595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595957524b3f372f251b110700000000060f1820272d3134353636363636363636363636363636363636363636363636353534312c2e2b292724201b18140e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e231716222d3944505c67737e8a919191919191919191918e82776b6054483d31261a0f000000000000020b141c212c363f485059616b707c859097a0abb5bac3bcb3aba29a908a7f736d645c534a423930271f161c1c1c1312110e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6a76828d99a4b0bcb8aea595897e72665b4f44372d22170c010000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b0000000006121d2934404c57636e7a85909ca7b3bec7d0c6bcb3a89c91857b6f645d544a413830282018110b040100000000000003080d141b202b303b454f58626b74808b969faab5c0ceccc1b7ada4978b8074695950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000030e19232e38424b56616b6f707070707070707070706f6b61574b40352f39434b56616b6f707070707070707070706f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252d353a42484c4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e14090000000000000000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a2f271e150c020000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29282622221f1d1c1916110b0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e231716222d3944505c67737e8a969c9c9c9c9c9c9c9c9a8e82776b6054483d31261a0f000000000000000307121c262f384049525b626c727e86919ca1aab2bbc4bbb2aaa19c91877e726c635b524941382f261e140b1007070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b7984909ba7b3beb4a89e94867b6f64584d41352a1e1308000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b0000000005111c28333f4a555f6975818d98a5aeb8c2cdccc0b5aa9f968d81766d645a514940383028201b15100c08080708080a0d13161e252b2f3c434a545f68707c86919ca6afb9c4cecabeb3a89d93877c7065594d42362c22170c01000000000000000000000000000000000000000000000000000000000000000000000000000009141e28323d47515a61646464646464646464646464615a51473d3229323d47515a61646464646464646464646464615a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000030b151d252a32383d40424242424242424242424241403d38312921180e0400000000000000000000000000040e18212931383d40414242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242403d38322a1e160e0500000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1b17121411100e0b06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e231716222d3944505c67737e8a96a1a8a8a8a8a8a8a59a8e82776b6054483d31261a0f0000000000000000020c151f273039414a535c646d737f8a909aa2abb3bcc3bab6aba09790867d716b625a51483f362e251b110602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c87959ea9b4beb2a79b9084786b61564b4034291d1203000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000010d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b00000000030f1a25303b454f5866717d88949ea9b4bec8cfc4b9afa69b91897e726b615950484039302b251e1b17131413131415191d22262e353a444c545d636e79828e96a0aab7bfc9cec3b9afa69a8f83786c62574c4135261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232d37414a515658595959595959595959595857514a41382e232d38414a515658595959595959595959595856514a41372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151921282e323536363636363636363636363635322e282119100700000000000000000000000000000007101921282e323536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e28211a0e0600000000000000000003080c10121213131313131313131313131313131313131313131313131312110f0c08080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb4b4b4b4b1a59a8e82776b6054483d31261a0f000000000000000000050e172028313a434b545d656e75808c919ba3acb5bdc5bab0a79f9690847c706a615950473e352b201b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a5aeb8bbb0a4998d81766a5a51473d32271b1005000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000b16212b35404b57636e7984909ba5aeb8c3cec9c0b7aba29c90857b6f6a60595049423a352e292622201f1f1f1f2124272c31363e4549545d646e747f8b929ca7b0bac7d0cbc0b4a99f958b7f73685b52483e3328160c030000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27313941474b4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e28313a41474b4d4d4d4d4d4d4d4d4d4d4d4c4b47413931271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000040911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2927231e18100900000000000000000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27241e181109000000000000000000000000010406070808080808080808080808080808080808080808080807070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8bfbfbcb1a59a8e82776b6054483d31261a0f00000000000000000000060f182129323b444c555e636e78818d939ca4adb6bec1b8afa69e958f837a6f6960574e453a2f2c231a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975808c98a3afbab9ada2968b7f73685c5145372d23180d02000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1106000000000007121c28333e49545f68737f8b959ea9b4bdc7d0c7bbb4a99e958f837a6f6960595249453e3734312d2b2b2a2a2b2c2f33373c41474e545d646d727e87919ca3acb7c0c9cec3b9afa69c90857a6f63584c42392e2419060000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17202931373d40414242424242424242424241403d3831292118212931383d40414242424242424242424241403d37312920170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e0700000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000000000000000071019222b333c4549545e686e79828e949da5aeb7c0bfb7aea59d948e82796e685e5449453c332b22191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6b77828e9aa5b1bcbab0a794897d72665a4f43382c21130900000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d030000000000030e1a25303a454f58636f7a84909ca4adb7c2cdcec3b8aea59d938e827a6f6a625b544f47433f3c37373636363738393e40464b52575e636d727d869197a1abb3bcc7d0c8c1b5aa9f968b80746a60564b3f32291f140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272d323435363636363636363636363635322e282119101921282d323535363636363636363636363534322d27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e111313131313131313131313131312100d090400000000000000000000000000000000000000000004090d101213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040506060605030000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000000005090c0d09121a232c2f3a454e5760696f7b838f959ea6afb8c1beb6ada49c938d81786e635e554c443b322a21180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a7984909ca7b3beb5aaa096877b7064594d41362a1f130800000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000a141d262f373d433f454a4c4f5457585856514f4e4a4544413c352d251c1208000000000000000b16202b353e4a556069747f8b949da8b3bbc5cec8bfb6ada49c928e827a706c635f58534c4b464443424142424345494c50565b61686e747e8691969fa8b1bac4cccac1b8ada49c90857b6f635950463c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2927231e18100910171e2327292a2a2a2a2a2a2a2a2a2a2a2a2927231d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050708080808080808080808080707050200000000000000000000000000000000000000000000000000020507070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507080a070c0f11121212110f0b070a0707050200000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000000040a101417191a1c1c1b202b353e475059616a707c8590969fa8b1bac5bdb4aca39b918c80746e655d544b433a312820170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86959ea9b4bfb3a89c91857a6e63574c4034291d120600000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000071018222b323a42484f5557585f636463615a5b59544b474139312921160e050000000000000007111b25313c465059636f7a848f9ba2abb5bec8cfc6bdb4aca39c938e837c736e68635d585650504e4e4d4d4e4f5153585960636b70787f8691969fa7afb8c1cacfc5bab0a79d938b7f736a61564940372c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181b1d1e1f1f1f1f1f1f1f1f1f1f1e1e1c18140e0700070e13181c1e1e1f1f1f1f1f1f1f1f1f1f1e1d1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050a0e1113131612161a1c1d1e1d1c1a1611161312100d09050200000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000060e141a1f22242528282828252e363f48515a626b717d869197a1abb6bac3bcb3aba29a908a7f736d645c534a423930271f160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d8894a5aeb8bdb2a69b8f8378685f554a3e33281c110500000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000030d172029323b434b52585f6367686e6f6f6a6b66645d56514a413a31271e150c02000000000000010b17222c36404a556069727d89919ba4adb7c0cacdc4bcb3aca39c948f857f79716d676360595b5a595959595b5c5c62656a6f747b828b91979fa7afb7c0c9cec5bdb6aba0978f83796e635a51473930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d101213131313131313131313131312100d090400000004090d101213131313131313131313131212100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606070707070707070707070707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111111111111111111111111111111111111111100f0e0b0906050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1114191c1e1f222421252829292928252124211e1e1c1814100d09040000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000000060f171e24292d30313333333333332f384149525b636c727e87919ca1aab3bbc4bbb2aaa19c91867e726c635b524940382f261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737e8a96a1adb8bcb0a4998d82766a584f453b30251a0f0300000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000009131d273039434b535b62686e73777a7b7b7976726d64615a514a41372f251b11070000000000000008121c26313b465059636d76818d949ea7b0bac4cfccc3bcb3aca49d96908a837d77736f6a6967656564646566686a6c70757a7f858e929ca0a7afb7c0c7cec6bdb5aba29c91877d71685f554941372820160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607080808080808080808080707050200000000000000020507070808080808080808080807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121212121212121212121212121212110f0c08020000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b19171412110f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000050a0e14191c1f24272a2a2d302c303334353433302b2f2d2a2927231e1b18130e0904000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000040e171f272e34383b3c3f3f3f3f3f3f3f3f39424b535c646e737f8b919aa2abb4bdc3bab5aba09790857d716b625a51483f362e251b1106020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46525d6974808c97a3aebabaafa3978c8075695d5246352b21160b0000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000020d18222d374149535c626c70797e8285868685827e776f6a615a51483f352b21160b00000000000000030c17212c364048545d636f7a848f96a0aab5b9c2caccc4bcb4ada69f9c938e88837e7a7774737170707070727376797c80858b90969ca2abb0b8c0c7cfc6beb5ada49c928b7f746d63584f45393027180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171b1d1d1e1e1e1e1e1e1e1e1e1e1e1e1e1d1d1a17120c060000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f212229292929292929292929292929292929292929292929292929292929292828262522201d1c1a16110c0a050000000000000000000000000000000000000000000000000000000000000000000003090f15191e23272a2e333536393b363b3f4040403e3b353b383635322e2927231d18140e080200000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000a141e272f373e4347484a4a4a4a4a4a4a4a4a4a4a4c545d656f75808c929ca3acb5bec4bab0a79f9690847b706a605850473e352b201b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4afbbb9ada2968b7f73685c51453a2e2211070000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000005101b26313c47515a626c707c838a8e919796908d89827b6f6b61584f453b30251a0f030000000000000008121c262f38444b56606a717d86919ca0a9b1bac2cfccc5bdb6afaaa39c9a938e8a8683807e7d7c7b7c7c7d7f8184888c90959c9fa6abb5bac0c8cec6beb6aea59d948e82786e635c53483f35292017070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b11111111111111111111111111111111111111111111111110100e0d0b0907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226282929292929292929292929292929292826211c160f07000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d3434343434343434343434343434343434343434343434343434343434343332302e2b292825211b19150f0a0500000000000000000000000000000000000000000000000000000000000000070d13181f24282e3235383d4142444749454a4c4c4c4a4548474441403d3834322d27231e17120c06000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000005101a242e3740484e525456565656565656565656565656555e636e79818d939da5aeb6bfc0b8afa69e958f837a6f6960574e453a2f2b22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313d48545f6b77828e99a5b1bcb8aca1958a7e72675b5044382d21160a0000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000006121d2934404b56616a707c858f939a9ca09f9c99928e847b6f685f554a3e33281e140900000000000000020c161f28313c47515a636c737f8a9099a1aab1b9c4c9cdc7bfb9b5aca7a39c9a97918e8c8a8887878788898b8d9094979c9fa6aaafb6bbc4cacdc5beb6aea69e958f837b6f685f544c43372f251810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1b1a1817151212100c0805030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c313435353535353535353535353535353534312c261f170f0600000000000000000000000000000000000000000000000000000000000000000000010b141c242b3135383940404040404040404040404040404040404040404040404040404040403f3f3d3c3a373433302b25241f19150f0802000000000000000000000000000000000000000000000000000000010610171d22292f33383d4042484c4d5053544f55575857554f5452504d4b4741403d37322e28211c160f070100000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000009141f29343e4850585d5f6161616161616161616161616161615f686f7a838f949ea6afb9c3bfb7aea59d938e82796e685e5449453b33291f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b4650586c78838f9ba6b2bdb7aba094887d71665a4f43372c2015090000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00040f1b26313c465059636f7b8490959da4a8aaaaa8a39c948f83796e63574c41382e23180d0200000000000000060f17222d374049535c656e747f8b919aa1a9b5b9c0c7cec9c3bcb6b3aca7a7a09c9a979594939393939496989b9ea5a7a9afb5b9bfc7cfcdc4bcb5ada59e9590847c706a61584f453b33271e150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f21222929292929292929292929292929292929292929292928282727262422201e1d1b1713110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f2830363c3f4040404040404040404040404040403f3b362f281f160c0200000000000000000000000000000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a49474543403e3b35332f29241f17120c0600000000000000000000000000000000000000000000000000040b111820272d31393e42484c4d5257595c5e60585f6363635f58605e5b5857514c4b47413d38312c261f17110a03000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000c17222d38434e5861686b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d696f7b8490959fa9b4c0c7beb5ada49c928d81786e635e554c43392f241a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560697985909ca7b3beb6aa9f93877c7065594d42362b1f13080000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0006111d28343f4a55606975808c949ea6adb3b5b5b3aca59d938a7f73675a51473d32271c1005000000000000000008131d273039434b555e666f75808c9099a0aaafb7bdc5cccec6c1bcb6b3b0aaa8a6a3a19f9f9e9e9fa0a2a4a7a9aeb3b4b9bfc3c9cfc8c2bab3aca49e9590857c706b625a51473e352b22160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434343434343434343434343433333231302e2c292926221d1c1a16110b0904000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a4640382f261c12080000000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f50575757575757575757575757575757575757575757575757575757575756565553514e4c4a453f3e39332f29211c160f070100000000000000000000000000000000000000000000050d141b202930373c43494c5257595b6264676a6b6d696e6f6e686d6b696764615a5856514c48423b362f28221a140c040000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00020d1924303b47525d68717679797979797979797979797979797979797979797c85909ca7b3bfcac6bdb4aca39b918b80746e655c53493e33281d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a86959fa9b4c0b5a99d92867b6f64584c41352a1e12070000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0006121d2935404c57636f7a85919ca5aeb6bdc1c0bcb5aca39b8f83786b61574b4035291e12070000000000000000030d172028323b454d565f636e78808b909c9fa6adb4bbc1c7cdccc6c1c0bab5b3b1aeadabaaaaaaaaacadb0b2b4b8bec0c3c8cecac4beb8b4aaa39c948f847d706c625b524941372e251b1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b3135383940404040404040404040404040404040404040404040403f3f3e3d3b3a383534312d292825201b18140e0a050000000000000000000000000000000000000000000000000000000000000000000000010c17222c364049505557585858585858585858585858585755504840362c211710060000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c63636363636363636363636363636363636363636363636363636363626261605f5c5a57554f4c48423e39312c261f171109020000000000000000000000000000000000000000060e161e252b2f3941474b53585b6264696c7073757779797a7a7a79787775726f6b6864615a57524a464038322a241c150d0500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00020e1a25313c48545f6b768184848484848484848484848484848484848484848486919ca8b3bfcacdc5bcb3aba29a908a7f736c63584d41362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58636f7b8692a5aeb8c3b4a89d91867a6e63574c4035291d12060000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000915202c38434f5a66727d89969faab5bec6cccbc5bdb3a89d93877b6f64584d41362a1e1307000000000000000000060f18222b343d4649545e686e757f8a91969da4aab3b7bdc2c7cccccac4c1bfbdbab8b7b6b5b6b6b7b9bbbebfc2c8cbcecac5c0bab5aea9a19a938e847c706c625c534a423930261e150a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4a48474543403f3c373433302b25231e19150f0904000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505960636363636363636363636363636363605950463b312a20150b0000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6c6a6865635f5858534c48423b362f282119120a02000000000000000000000000000000000000060e171f262e353a444951565c62656b7074787c7e81838485868685858482817e7b78736f6a64625b555048423b342d251d150d05000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e909090909090909090909090909090909090909091969faab5c0ccd5ccc4bbb2aaa19c91867d71655a4e42372b20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87929ea9b5c0b5aaa096857a6e63574b4034291d11060000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000b16222d3945505c67737f8a96a6afb9c6ced7d6cdc2b7ada494887d71655a4e43372b2014090000000000000000000008121a242d2f3a454e575e636f747e868f949ba1a8adb4b7bec1c6cacdcccbc8c6c4c2c1c1c1c2c3c5c7cacbcdccc9c4c1bab6b0aba59e9b908c827b706b625c534b423a312920160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f5057575757575757575757575757575757575757575757575656555452514f4c4b4643403e3a35322e28241f18130e06010000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6960554a433a2f251a0f050000000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7979777674716e6865625c58534a464038312a221b120a0100000000000000000000000000000000060e171f272f363e4549545a61636c70767c8084878a8d8e909196919691908e8c8987837f7b75706b636059524b443d352e251e150d040000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9a9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6afb9c4cfdad4cbc2bab5aba0978a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707b87939eaab5bfb3a89c918579685e54493e33271c10050000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000b17222e3945515c68737f8b96a2adb9c6d0dbdacec3b9afa694897d71665a4f43372c20150900000000000000000000010a141c202b353e474e545f656e727c838d919b9da4a8adb3b7bdbfc2c7c8cacbcdd2cdcccdd3cfcccbc9c9c4c0bfb9b5b1aba7a09c95908980796f6b625b534b433b322a211810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c63636363636363636363636363636363636363636363626261615f5e5c5a5856504e4b49453e3d38332f29231d16110b0400000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6f635d53493f34281e140a0000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8585858585858585858585858585858585858585858585858585858585858483817f7d7975706c65625c555048423a332b221a1209000000000000000000000000000000040d161e272f383f474e545d636a6f757c82868b8f9496989a9b9ca0a79f9c9b999895938f8b85817b746f69625b554d463e362e251d140b0300000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafb7c0c9d3dedbd3cfc4bab0a7958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87939faab6bfb3a79c9085796d624e453a2f24190e030000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000a16212d3844505b67727e8a95a3acb7c1ccd1d0cac0b5a99f95877c7065594e42362b1f140800000000000000000000000306111b252e363e4549565e646c707a81888f939b9ea4a8adb2b3b7bbbdbebfc3c8c2c3c2c9c4c0bfbebcbab5b3afaaa8a19c97918c847e756e69615a524b433b322a22191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c6b6a68666360595a57544f4c48423e39322d27201b140d0500000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8686868686868686868686868683786d63584d42382e24190d0300000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a9191919191919191919191919191919191919191919191919191979190908f8d8b8884817c77706c636059524b433b332b2219110700000000000000000000000000010b151e262f373f484f575e636d717b81878d91979b9da4a4a5a7a8aaafaaa8a7a5a3a39d9a96918c85807a706c645e564e463e362d251c130901000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6b1b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b9c0c7d0d9d6d6ded4cab8ada1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c88939fabb6beb3a79b9084796d62564a352b20160b000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0007131f2a36414d5964707b87939da7b3bac2c7c8c0bab0a79c9085796e63574c4034291d1206000000000000000000000000010b141e262e353a454d555b626a6f757d838a8f949a9da4a7a8adafb1b3b4b8b6b7b7b7b6bab5b3b2b0b0aaa8a69f9c97918d86807a726d635f58514a423a322b221a11090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797978777574716f6a6965635f5857524c48423d372f2b251e1610080200000000000000000000000000000000000000000000000000000007121e2935414c58636f7b85909292929292929292929293887d71665b52483d32271d130800000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca19c9c9b9a999695908c88827c756f69625b534c433b322a21170f0600000000000000000000000007111b252e373f484f585f686e747d848c91979ca1a8a8adafb1b3b3b5b9b5b3b2b1afaca8a79f9c96918b837c736e665f564f463e352c23191105000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6b1bdbebebebebebebebebebebebebebebebebfc0c4c9d0cbcbcbcbcbcbc4b8ada1958a7e73675b5044392d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717c88949fabb6beb2a79b9084786d61564a3e33271c06000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0007121e2935404c57626b77838f9aa1aab3b7babab7b0aaa0968d8176695f554a3f33281c110500000000000000000000000000040d161e252b2f3d444b525960636d71797f848a8f93979b9da4a3a5a7a9aeaaababababb0aaa8a6a5a7a09c9996908d86817c756f6a645d554f484139322a221a120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f858585858585858585858585858585858585858585858585848482817f7d7a7875716e6864625b58534b47413a352e262018120a03000000000000000000000000000000000000000000000000000006121d2934404b56616a75818c97a19d9d9d9d9d9d9da4998e82766c62574c41372d22180c02000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b1aba8a8a7a6a4a59e9c98928e86807a706b635c534c433a31281f160c0200000000000000000000060f18202b353e474f585f696e78808790959ca1a8abb1b3b7bbbdbebfc0c4c0bfbebcbab7b3afaaa69f9c948f867e746f665f564e453c342a21160d040000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6b1bdbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8ada1958a7e73675b5044392d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33271207000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0005111c27323d48525b66717d88909aa1a8adaeaeaca7a09c91867c7064584f453b30251a0f040000000000000000000000000000050d141b202c343b424950565c63686e73797e83878b8f9495989a9b9ea59f9fa0a09fa7a09c9b999796918e8a85817c76706c636059544a453f3731292119120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a9191919191919191919191919191919191919191979190908f8e8c8b898683807d7975706b65625c565149453e363129231b130c040000000000000000000000000000000000000000000000000004101b26313c47515a64707c86919ca8a9a9a9a9a9a9a89c91867c70645a51473c31261c1207000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bab6b4b3b3b1b0aea9a7a39c97918c837c716c635c534a42382f261c1208000000000000000000030d162028303a454f585f696e79818b91979ea5abb1b6bac1c2c7c8c6c4c3c2c3c4c7c8c6c1c0b9b5afaaa49d96918a807570665f564d443a32261e140b0100000000000d1925303c47535f6a76818d99a4b0bbc7c6baaea3978c8074695d52463a2f231216222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6b1b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ada1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c88939faab6beb3a79c9084796d62564b352b21160b000000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00030e19232e38424d58636d74808b909b9da4a3a2a39c97918a7e726b6257483f362c21160c01000000000000000000000000000000040b111c242a323840464a53585f63686e72787c808487898c8e90959393949494949396918f8d8b8885827e7a75706c65625c565049443b352f27201911090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca09c9c9b9b99989697918f8c8884807b76706c64615a544e474139332b241c140d04000000000000000000000000000000000000000000000000020d18222d37414c57626c76828e99a4adb7b4b4b4b6aba1978c81756a61564b3f362c21160c010000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcac5c1bfbfbebdbbb8b4b3aca7a09c938f857d716c635b524840362c21170f05000000000000000008131d2730394049545f686e79818d919ca1a8aeb6bac1c5c7c2bfbebab8b7b7b7b9bbbfc0c3c8c4c0b9b5ada69f9c908b80756f655d544b42362e251b110600000000000d1925303c47535f6a76818d99a4b0bbc7c6bbafa3988c81756a5e5247372c221716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9aa6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c87939eaab6bfb3a89c9085796e624f453b30251a0f030000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000009141e28343f49545d636e7880898f9396979796938e867f736e645b5248382f261c120700000000000000000000000000000000000106141a222830363c43484f55585f63676c7074787b7e8183848687888889898887878584827f7d7a77726f6a64625b57534b464039302b251e171008010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b0aaa8a7a7a6a5a3a8a19c9b9894908c86817c756f6a635e57514a433c342c251d140d0400000000000000000000000000000000000000000000000008131d27323d48525b66717d88939da8b3bec8c5bab1a89c90857b6f63584f453b30251a0f040000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbcbcbcbd2cdcacac8c8c8c8c8c8c8c8c8c8c8c8c8c8c9cacac9c8c3bfbcb8b0aba49d9590857d716b625950463b31281e140a00000000000000010c17222c374049545d636e78818d929ba2abb1b8bec5c6c1beb8b4b2afadacabacadb0b3b4b9bfc2c7c4bdb7afaaa099908b7f746e645b52473e352b20160c02000000000d1925303c47535f6a76818d99a4b0bbc7c7bbb0a4998d81766a5950463c31261b17222e3945505c68737f8a96a2adb9c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36414d5864707b87929eaab5bfb4a89c91857a695f554a3f33281c11050000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000040e1a252f3a4349545e686e747d83888a8c8b8a87827d736e655e554a4238271f150c02000000000000000000000000000000000000030a11181f262c31373f454a4f55575b6264696b6f727577797a7c7c7d7d7d7c7c7b7a787674716e696763605957524c48423c373028211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bab5b3b3b2b2b1afb1aba8a6a59e9b97918d87817b736e68615a534c443d352d251d140c040000000000000000000000000000000000000000000000030d19242e38424d58636d78838f9aa5aeb8c3cac1b5aa9f968b7f74695f554a3f332820150b0000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ded6cec7c2bfbebdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbfc0c3c9cbcbc8c1bab6ada59e9690857c706960554a42382e24190e0400000000000004101b26313c465059636d74808b919ba2abb6bac1c9c4bcb6b2aea8a7a3a1a09fa0a1a4a7a9afb4b8bec5c7c0b9b5a9a19990897e726b62574e453a2f261c1208000000000d1925303c47535f6a76818d99a4b0bbc7c9beb2a69b8f84786a60564b3f34281e13232e3a46515d68747f8b97a2aeb9c5c8bcb1a59a8e82776b6054483d31261a0f00030f1a26323d4954606c77838e9191919191919191919191919191919191919191919191919191919191919191919191918a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c58646f7b8692a7afb9c1b6aba097867a6e63574c4034291d12060000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000b15202a2f3a454e575e636d71797c7f80807e7c77716c655e554d443a3128170e05000000000000000000000000000000000000000001070f161d22272f353b3f454a4c5257595a616467696b696f70717172717170706e686b68656360595856504c48423e39312c272018120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfbfbfbfbfbfbfbfbfbfbfbfcac4c1bfbfbebebcbbbab6b4b2aea9a7a09c97918d857f786f6a635c544d453e352d251c140b0300000000000000000000000000000000000000000000000a141e28343f49535d67737e8a959ea9b4c0c9c4b9afa69b9084796e63574c43392f251a0e0400000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d7cec5beb8b4b2b1b1b1b1b1b1b1b1b1b1b1b1b1b1b2b3b5b9bfc0c3c9cac5bdb6aea69f958f837a6f635b52483d32271e13090000000000030d172029343f4b56606a717d87919ca2abb3bbc5c8c0bab5aca7a59e9b989695949596989c9fa6a8aeb5bac2c9c4b9b1a9a09c90857c70685e544940362c22170b010000000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a89c91867a6f63584c41372d231d25303b454f586975808c98a3afbac6c8bcb1a5998e82776b5f54483d31261a0e00030f1a26323d4954606c778285858585858585858585858585858585858585858585858585858585858585858585858585857e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a86969faab5c0bab09d92867a6f63584c4035291e12060000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000061016202b353e474e545d63686e7073747473706b65635c554e453d342a2118060000000000000000000000000000000000000000000000060d12161e252b30353b3e42484c4d5157585b5e5960636465656666656564635f585d5a5755504c4a46403d38332e29221d160f0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbcbcbcbd2cdcacac8c8c8c8c8c8c8c8c8c9cac9c8cac5c1bfbdb8b4b0aba8a19c95908a827b716d645d554e453e352d241c13090100000000000000000000000000000000000000000000050f1a252f3a434c57636e7a84909ba6afb9c4c9bfb4a99e948a7e72675c53493e33281e140900000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d2c7beb5aea8a7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a9afb3b5b9bfc7cfc6beb6aea59d938b80746c62574c41372d23180d020000000009131d27323d48525b636f7a849097a1abb2bbc3c7bfb7b0aaa39c9a94908c8a8988898a8d90959b9ea5aab2b9c1cfc2b9b5a99f958e82786e635950463b31251b11060000000d1925303c47535f6a76818d99a4b0bbc7ccc1b6aba197897d71665a51473d322d2929333e4a545f6877828e9aa5b1bcc8c7bcb0a5998d82766b5f53483c31251a0e00030e1a25313c48535e6972777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736e645a4e43382c21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a7985919ca8b3bfb5aa9e93877b7064594d41362a1f13070000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000006111b252e363e454954575e63656869696764625b58534c453d352c2419110800000000000000000000000000000000000000000000000003080e151b21252b3033383e4142474b4d505250555759595a5a5a5a595857544f514e4c4a46403f3c36332e28241f17130d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ded6cec7c2bfbebdbdbdbdbdbdbdbdbdbdbebfc1c5cacacbc8c2c0bab5b1aba69f9c928e847d726e655e564e453d352c231a110700000000000000000000000000000000000000000000000b152028333f4a556069747f8b969faab5c1cac2b8aea59a8f83786d63584d42382e23190d03000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cdc2b8aea59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9c9fa6a8aaafb6bcc4cdc7bfb6ada49c91867c70645a51473d32271b1005000000020d18222d37404c57626b75808c959ea8b1bac2c9bfb6afa7a09c938e8884817e7d7d7e7f81858a90949aa1a9b0b9c2cec3b9afa69c938a7e736960554a3e352b20160b0000000d1925303c47535f6a76818d99a4b0bbc7d0c5bab1a8998d81766b61564b443c3734343a414b57636e7985909ca7b3bfcac7bbb0a4998d81766a5f53473c3025190d00010d18232e39444f5962696c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645e554b40352a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596d78848f9ba7b2beb6ab9f94887c71655a4e42372b2014090000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000010b141e262e353a44474e5457595c5d5d5c5957524d49433b352d241c1409000000000000000000000000000000000000000000000000000000050c11161b2125282e3335383d40414447464a4c4d4e4e4f4f4e4d4d4b49454543403f3b3634312c26241f19150f0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d7cec5beb8b4b2b1b1b1b1b1b1b1b1b1b2b2b4b6babbbec0c3c8cac4c1bab6afa9a29c9590867e746f655f564e453c342a21170f0600000000000000000000000000000000000000000000040f1a25303b465058636f7b85919ca8b1bac5c8beb3a89d93887d71655b52483d32271d1308000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb4a89e94908e8e8e8e8e8e8e8e8e8e8e8e8e8e8f9095979c9fa6acb3bcc4cdc6bdb5aaa0978d81766b61564b4034291d120700000005101b26313c47515a64707c86919ca5aeb8c1cac1b8afa69f96918a827d7875737271727376797e848c9199a0a9b1bac4c9bfb6aca39c90847a6f63574e453a2f24190e0300000d1925303c47535f6a76818d99a4b0bbc7d4cabfb3a89c91867b6f645e544b4741403f424a535c66717d89959fa9b4c0cbc6baafa3978c8075695d52463b2f23180c00000a15202a353f4851595e6063636363636363636363636363636363636363636363636363636363636363636363636363635b5a554d453b31261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c374954606c77838e9aa6b1bdb7aca095897e72665b4f44382c21150a0000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000000040d161e252b2f363e45494b4e505251504d4c48423e39332b241c140c030000000000000000000000000000000000000000000000000000000002070c11161a1f24272a2e32353638363c3f404242434343424241403e3a35373533302c2826221d19140f0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d2c7beb5aea8a7a5a5a5a5a5a5a5a5a6a6a7a8abb0afb3b4b8bfc1c6cac5bfb9b5aca59e9691877f746f655e554d443a32281f160d03000000000000000000000000000000000000000000010c17212c363f4b56616a75818c97a1abb6c1ccc1b7aca3998d82766b62574c40372d22170c020000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb2a79b908483838383838383838383838383838385888c90969ca3acb4bcc7cfc4bab0a79c91867b6f64584d41362c21170c01000006121d2934404b56616a75818c97a0abb5bec9c5bab1a89f9590867e77716d696766656667686e727a808b9099a1aab4bcc6c7bcb4a99e958a7f73685e54493e33271c100500000d1925303c47535f6a76818d99a4b0bbc7d2ccc0b5aaa0968d81766e645e56514c4b4b4c535a636d76818d99a6afb9c3cec4b9ada2968a7f73685c5145392e22170b000006101b252f3841484f53545757575757575757575757575757575757575757575757575757575757575757575757575757504e4b453d342b21170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081325303c48535f6a76828d99a4b0bcb9ada1968a7f73675c5045392d22160b0000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000050d141b20262e353a3e40424546464441403d38332f29221a140c040000000000000000000000000000000000000000000000000000000000000002070b0f14191c1e2327292a2d2c31343536373738373736363433302b2b292825211d1b17120d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cdc2b8aea59e9b9a9a9a9a9a9a9a9a9a9a9b9ca0a7a4a7a9aeb2b6bcc2c7c9c3bcb5aea7a097918b7f746e655d544b423830261c12080000000000000000000000000000000000000000000007121c26313c47515a64707c86919ca8b4bdc7c6bdb4a89c91867c70645a51473c31251c12070000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807777777777777777777777777777787a7c80858e939ca3acb7c0c9cac0b5aba0978b7f73685950463b30251a0f04000007121e2a35414c58636f7b86919ca7b0bac6ccc1b6aba19790857d736e65635c5c5b5a5b585f63696f757f8b919aa3acb6c1ccc3b8aea59b9084796e63574b4034291d130900000d1925303c47535f6a76818d99a4b0bbc7d2cfc4bab0a79b928a7e726e63605a585756585c626b717d88929ba6b6bfc8ccc2b7ada494887d71665a4f43372c2015090000010b151f2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b47525e6975808c98a3afbabaaea2978b8074695d51463a2f2313090000000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000000000040b11161e252b2f333436393a3a393635322e28241f19120a040000000000000000000000000000000000000000000000000000000000000000000000030a0e1114181c1e1e21222628292a2b2b2c2c2b2b2a29282520201d1d1a17120f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb4a89e94908e8e8e8e8e8e8e8e8e8f90919795989c9fa5a7acb3b7bdc5cec6beb7b0a8a19c908a7f736e645b524940362c22170e05000000000000000000000000000000000000000000020c18222d37414c57626c76828e99a4adb7c1ccc1b6aba1978c80756a60564b3f352b21160b0000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746b6b6b6b6b6b6b6b6b6b6b6b6c686e70757b828e939da7b0bac4cfc4bab0a79a8e82776960554a3f33281d110600040f1a26313b46505967737f8a96a0aab8c1cac3b8aea59c91877e726d655e5853504f4e4f4f555960636f75808c939ca7b3bcc6c8beb4a89e94887d71655a4e43372d23180d02000d1925303c47535f6a76818d99a4b0bbc7d2d4cac0b7aba29c91867e756f6a6664636163666c707b848f9ba2abb5c6cfcabeb3a89d93867b6f64584c41352a1e1207000000050e1720282f35393c3d4040404040404040404040404040404040404040404040404040404040404040404040404040393835312b241c140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a45515c68747f8b96a2aeb9bbafa4988c81756a5e5347372d22180d0200000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000000001060d141b202427292b2e2f2f2d2a2a27231e19150f090200000000000000000000000000000000000000000000000000000000000000000000000000000306090d10121312171b1d1e1f1f202020201f1e1d1c1a161112110f0c0704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb2a79b9084838383838383838383838485878a8d90959a9ca3a8adb4bac4c9c8c0b8b1aba09c91877e726c625950463c31271e150c0200000000000000000000000000000000000000000009131d27333d48525b66717d88939da8b3bec8c5bab1a89c90857a6f63584f453b30251a0f0300000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686060606060606060606060585f63656b707a838f96a0aab5c0cccabfb3a89c91857a6e63574c4035291d12060006111d28343f4a55606977828e9aa7b0bac8cbbfb4a99e958c80746d645c554d4944434344454a50555f636e79828e9aa3acb6c1ccc2b8aea5988c8075695a51473c32261b1005000d1925303c47535f6a76818d99a4b0bbc7d2dad0c8bbb5aba0979187807a75716f6e6a6f71757c838f949ea8b2bbc5d5c9bdb2a69b8f83786a61564b4034291d1206000000000710171f252a2e313234343434343434343434343434343434343434343434343434343434343434343434343434342d2c2a26211b140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5b66727d8995a7b0babdb1a59a8e83776b5a51473c31261b100500000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000000000000000040b1116191c1d1f222323221f1e1c19140e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707080c0f1112131414151514141311110e0b07060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8077777777777777777778787a7c7e8184898e939b9da4aab5b9c0c7c9c1bab6aba19790857c706960554a43372f251c1207000000000000000000000000000000000000000000030d19242e38424d58636d78838f9aa5aeb8c3cac1b5aa9f968b7f74695f554a3f33281f150b00000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d545454545454545454544f54575b6169707c86919ca8b3bfcbccc0b5aa9f96887c7065594e42362b1f14080006121d2935404c57636f7a85919ca8b3bfcacabeb3a79c90847a6f635d544c453e393837353b40464a555f69717d88929ca7b2bdc9c7bdb2a69b8f83786a61564b4034291d1206000d1925303c47535f6a76818d99a4b0bbc7d2dfd8cfc4bab0a7a097918c84807d7b7a797b7d81868f949da4adb7c3cbccc1b7aca3978c8075695a51473c31261b10050000000000070e151b20232526292929292929292929292929292929292929292929292929292929292929292929292929292922211f1b17110b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c8796a0aab5beb3a79c9084796a61564b4034291d120600000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000000000000001060b0e101114161817161312110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060608080909090808070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746b6b6b6b6b6b6b6c6c696e7073757a7d82888f949aa1aaafb7bfc7cac5bab1a89f968f837a6f635c53483f352b21160b010000000000000000000000000000000000000000000a141f28343f49545d67737e8a959ea9b4c0c9c4b9afa69b9084796e63574c43392f241a0e04000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5149494949494949494945494b5259626b75818c98a4afbbc6cfc4b9afa795897e72665b4f44382c21150a000914202c37434e5a66717d8896a0aab5c0ccc2b7ada4968b7f746960554d443c332f2c2c2b30363b454f58636d77828e9aa5b1bcc8cabfb3a89d94867b6f64584c41352a1e1207000d1925303c47535f6a76818d99a4b0bbc7d2d6cfc8c3c0b8b0a8a19c95908c8886858586888c91979da4adb5bec7d0c8c0b3a89d93887c7065594e42372d23180d02000000000000050b1015181a1a1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161513100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b3bfb4a99e95867b6f63584c41352a1e120700000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000000000000000000000000030506080b0c0c0b08070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746860606060606060585f636467696e72777d838c909c9fa6afb6bfc8cac1b8afa69d938c81756c63584f453b30251b1107000000000000000000000000000000000000000000050f1a252f3a434c57636e7a84909ba7afb9c4c9bfb4a99e94897e72675c53493e33281e1409000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463d3d3d3d3d3d3d353a3e4149525b66727d8994a0abb7c3d3c9b9ada1968a7f73675c5045392e22160b000b17222e3945515c68737f8b96a7b0bac4cabfb3a89d94877b6f645950463c342b24212021262c353f48535c67737e8a95a5aeb8c2cdc2b7ada494887d71665a4e43372c201509000d1925303c47535f6a76818d99a4b0bbc7d2cfc6beb8b4b3b4b1aba59e9c98949791919694989ca0a7adb4bdc5cecac0b7aca39a8f83776c62584c4136271d1309000000000000000001060a0d0e0f11111111111111111111111111111111111111111111111111111111111111111111111111110a0a0805020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6878838f9aa6b2bdb8aea594887d71655a4e43372b20120700000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0f0f1111111111111006050300000206090b0b111111111111110707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5454545454544f555759585f63666d7179808991969fa6afb7c0cac9bfb6ada49c91877d71695f554a3f352b21160b000000000000000000000000000000000000000000000b152028333f4a55606974808b969faab5c0ccc2b8aea59a8f83776d63584d42382e23180d030000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3131313131312b303338424d5864707b87929eaab5c1ccc5b9aea2968b7f74685c51453a2e22170b000d18242f3b47525e6975818c98a3afbbcac9beb2a69b8f84786b61574940362c231b1511161c252f37434d5864707b87949ea9b4bfcbc7b8ada1968a7f73675c5045392d22160b000d1925303c47535f6a76818d99a4b0bbc7d2c8beb6aea9a7a9aeb6aea9a7a3a7a09c9c9fa7a4a8aab0b7bdc5cdcfc4bab0a79c93897e72665c53483e3328170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586a76818d99a4b0bbb8ada1958a7e73675c5044362c21170c01000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000000000000000000000000030607080b0d0e0e0d0a07060402000000000000000000000001040606090c0e0e0e0c08060503000000000000000000000000030507080b0d0e0e0d0a0706050200000000000000000000000000000000000000050b1115181a1b1d1d1d1d1d1d1b12110f0b070d111416171d1d1d1d1d1d1d1312110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514949494949454a4c4d4f55575d63696e747e8690969fa7b0bac4cfc7bdb6aba1978f83796e63584f453b30251a0f03000000000000000000000000000000000000000000040f1a25303b465058646f7b85919ca8b3bcc6c7beb3a79d93887d71655b52483d32271d13080000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e262626262620252935404c58636f7a86929da9b4c0cbc5b9aea2968b7f74685c51453a2e22170b000e1a25313c48545f6b76828e99a5b0bcc8c7bbafa4988d81756a5a51473830261b130b070c151e2935404b57616b7984909ba7b3becac5baaea3978b8074695d52463a2f23180c000d1925303c47535f6a76818d99a4b0bbc7cec3b8aea59e9c9ea5acb3b4b3afb0aba8a8aaafafb3b5bac0c8cdcac5bbb5aaa0978e83786e63574b42392f2419070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b3545515c68747f8b96a7b0babaafa3988c8075695950463b30251a0f04000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000000000000000050a0e11131317191a1a18161212100d08030000000000000002080c0f11121518191a19171411100e0b060100000000000000040a0e11121317191a1a19161212100d090300000000000000000000000000000000070f151b20232626292929292929271d1c1a1611171c202222292929292929281f1e1c18140e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463d3d3d363b3f4042454a4c53585f636e727d859097a0aab5bbc6d0c5bab1a89d938a7e73685f544a3e33281e1409000000000000000000000000000000000000000000010c17212c363f4b56616a75818c98a3acb6c1ccc1b6aca3998d81766b62574c40372c22170c0200000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2f2f2f2f2f2f2f2c3137414d58646f7b87929ea9b5c1ccc4b8ada1968a7e73675c5045392d22160b000f1a26313d4954606b77838e9aa5b1bdc8c6baaea3978c8074695d5246382f1f160b030005101c27323d48525b6c78838f9aa6b1bdc9c6baafa3988c8075695e52473b2f24180d000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a99e9590959ca3acb4bcbabab5b4b3b5b9bbbfc1c4caccc9c1bab6aba19c91867c70685e54493e32291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000711202b37434e5a65717d8896a0aab5bdb1a69a8e83776960554a3f33281d1106000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000000000000000050a0f14191c1e1f2224252524211e1d1b18130d080300000002070c12171a1d1d212425262523201d1c1916110b0400000000040a0e14191c1e1f2224252524221e1d1b18130d0803000000000000000000000000000710181f252a2f313234343434343432292825211b22272b2d2e343434343434342a2927231e181109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a31312c303334363b3f43484f555d646d717d86919ca2abb6bfc8cac1b8ada49b8f83796e63574b42382e23180d0200000000000000000000000000000000000000000007121c26313c47515a64707c87939ca7b2bec9c6bcb4a89c91867c70645950463c31251b110700000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b3b3b3b3b3b3b3b363c4048515a66717d8894a0abb7c2cfc4bab0a795897e72675b4f44382d21150a000f1b26323e4955606c78838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000020d18232e3848545f6b77828e99a5b1bcc8c7bbafa4988d81756a5e53473b3024190d000d1925303c47535f6a76818d99a4b0bbbfbfbeb3a79c90848e929ca4acb5b9bfc1bfbfc0c4c9cbcac9c6c1bdb8b1aba29b918b7f736c62574e453a2f22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a85919ca8b3bfb3a89c91857a6e63574c4035291d1107000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000000001080f15191f24272a2b2e303131302d292926221d17120d0600050c11161c222628292c2f3131302f2b292724201b140d050201080e14191e23272a2a2e303131302d2a2926231d17130d060000000000000000000000050f1820282f353a3c3d4040404040403e3433302b252c3136393a404040404040403635322e28211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e26212528292c3033383f454a545c636d737f8a929ba6afb9c3cec9bdb3a89d94897e72675b52483d32271c1005000000000000000000000000000000000000000000020c18232d37414c57626c77838e9aa5b1bdc8ccc1b6aba0978c80756a60564b3f352b21160b00000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146464646464646464647464a5058616a75808c97a3afbac6ccc0b5aaa096887c7065594e42362b1f1408000f1b26323e4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c51453a2e221409000000091425313d48545f6b77828e99a5b1bcc8c7bbafa4988d81756a5e53473c3024190d000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f828e939ca3aaafb4b9bcbebfc1c3c0bfbdbbb6b2ada8a19c918d81756f655c53473e352b2012090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606977838e9aa6b1bdb5aaa096887c71655a4e42352b20160b000000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a00000000000000030a11191f24292e3335363a3c3d3c3b383534312d27221c160f070e151b21262c313435383b3c3d3c3a3734332f2b251e16120b0911181e23282e323536393c3d3c3b393534322d27221d170f08010000000000000000010b151f2831383f4448494b4b4b4b4b4b4a403e3b352e353c4144454b4b4b4b4b4b4b41403d38312a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23161a1c1d2125282f363b444c545d656e76818d959fa9b4bec8cdc2b7ada49a8e82776b62574c4035291e1208000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca7b3bfcacfc5bab0a79c90857a6f63584f453b30251a0f03000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d525252525252525252525250555960686f7b85909ca8b3bfcacbbfb3a89c91857a6e63574c4034291d1206000f1a26313d4954606b77838e9aa5b1bdc8c6baaea3978c8074695d5246382e23180d030005101c27323d48525b6c78838f9aa6b1bdc9c6baafa3988c8075695e52473b2f24180d000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f7b838e929c9fa6a9afb1b2b3b5b9b4b3b1b0aca7a49d97918b81796e635e554b42362e251b110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596975808c97a7b0babab0a7968b7f7368584f453a30251a0e030000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000000030c131a22292e33383e414245474848474441403c37312c261f1711161e252b30363b3f4043464848474642403e3a352e26231b15131921282e32383d404145474848474441403c37312d2720181109010000000000000006111b252f3841494f5355575757575757554b4a453f373e454b4f51575757575757574d4c48423a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170f1112161a1f262c303c434c555e636f7b85909ca5aeb8c3cec7bdb2a79c93877b7064584d41362c22170c01000000000000000000000000000000000000000005111c28333e4a545f68737f8b959fa9b5c0cbd4cac1b5aa9f968b7f73685f554a3e33281f150a000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685e5e5e5e5e5e5e5e5e5e5e5e5960636a6f79828e969faab5c0cbc4bab0a79a8e83776960554a3f33281d1106000e1a25313c48545f6b76828e99a5b0bcc7c7bbafa4988d81756a5b52483d32261c120b070c121e2935404b57616b7984909ba7b3becac5baaea3978b8074695d52463a2f23180c000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f747a828b90969c9fa6a5a7a8aaafa9a7a6a4a39c9a938f8780786e685f544e453b32261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36434f5b66727d8997a0abb5bbb0a4998d8176685f54493e33281c11050000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000000030c131c242a32393e42484c4d5153545452504c4b47413c363028211920272f353b40464a4c4f52535453514e4b49453e36332b251d1b232a32383d42484c4d5153545453504c4b47413c373028211a1109000000000000000a15202a353f4951595e606363636363636157544f473f454e555a5c636363636363625957524a42382e23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c05070c0f151c212b333c454b56616a737f8b959ea9b4bfcbccc1b6aca3978b7f74685950463c31261b0f04000000000000000000000000000000000000000007121d2934404b57636e79848f9ba6afb9c3cedacec3b9afa69b9084796e63574c43392f24190e040000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074696969696969696969696969696a696f737a818d929ca6afb9c3ccc0b5aaa0968a7f73685850463b30251a0f04000d18242f3b47525e6975808c98a3afbac9c9beb2a69b8f84786b61574b40362c221b1412161c262f38414d5864707b87949ea9b4bfcbc5bab1a8968a7f73675c5044392d22160b000d1925303c47535f6a76818d919191919191919191918b7f746f797f858c9095979a9b9ca0a69f9c9a9896938e89837d746e685f584f453e352a22160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121e2935414c58636f7b86919ca8b4beb3a79c9084796e63574b4034291d13080000000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000000109131c242c343b42484c5257595c5e5f5f5e5b5856514a4640383129212830373f454a5055575b5e5f605f5d5a57544e47433c352e25232c333a42484c5257595c5e5f5f5e5b5856514b474039322a211911070000000000010d18232f3a444f5962696c6e6e6e6e6e6e6c635f584f4549555e65686e6e6e6e6e6e6e64625b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000001050c121b232c313c47515a636f7a84909ca7b3bdc6d0c6bcb1a69a8e83776a60564a3f34281d11060000000000000000000000000000000000000006121d28333e49535c66727e89949ea8b6bfc9d3ddd3c9bfb4a89e94897e72665c53493e33281e14090000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80757575757575757575757575757576777a7e848d929ba2abb6bfc9c3b9afa69c91867b6f64584d41362c21170c01000b17222e3945515c68737f8a96a7b0bac4cabfb3a89d94877b70645950463c312b251e2021262c363f48535c67737e8a95a5aeb8c2ccc1b6aba197887d71665a4e43372c201409000d1925303c47535f6a76818585858585858585858585857f74686e747b8085898c8e9091979195908f8d8a87837e79716c635e574f473f352d251a11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56616a77828e9aa5b1bcb4a99e95887c7165594e42372d22180d0200000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000008111a242c343d444b52575b6265686a6b6b6a6763615a555049413a3129303940484f5559606366696b6b6a6965635e57534c463e362e2c333c444b52575b6264686a6b6b6a6764615a565149423a322a21170f0500000000030f1a26313c48535e6972777a7a7a7a7a7a786e685f544a5059656f747a7a7a7a7a7a7a706b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000207131b222d37414a55606974808b97a4adb7c1cccbbfb4a89c91867a6f63584c4035291e1206000000000000000000000000000000000000030d161f2a36414d58636c77838e9aa4adb7c7cfd9e2d9cdc2b8aea59a8e83776c63584d41382e23180d0300000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c8bdb1a69a8e8280808080808080808080808080818183858a8f949ba2abb3bcc7c2bbb5aa9f968c80756b61564b4034261c120700000914202c37434e5a65717d8896a0aab5c0ccc2b7ada4968b7f746960554a443a352e2c2c2b30363b454f58636d77828e9aa5b1bcc8cbbfb4a89c91867b6f63584c4135291e1207000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f65636b6f757a7d808284858686858583817f7b77726e68635c544e473f372e251d140a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a68737f8b96a4adb7b8aea5978b7f74685a51473c31261b100400000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a000000050f18222a343d444d545b62656c707476777675726f6a636059524a41393138404951585f63696f727576777674716e68635d564e463e36333c444d545b62646b707376777675736f6a63605a524b423a31271f160c02000000040f1b26323d4955606c778385858585858583796e63584f56606a747f858585858585867b7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000209131d27313b46505964707c87939da8b3becaccc1b5aba097897d71665a4f43372c20150900000000000000000000000000000000000008131d27323d48525b65717d88939ca7b5bec7d7e0e2dcd1c7beb2a79c93887c71655b52483d32261d120800000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c9beb3a79c938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8d8e91969b9ea4abb2bbc3c3bab2aaa19c90857b6f645a51473d3227160c02000006121d2935404c57636f7a85919ca8b3bfc9c7bdb3a79c90847a6f635d5449453e363837353b40464a555f69717d88929ca7b2bdc9c9bdb2a69b8f83786a61564b4034291d1206000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f5a6164696f717577787a7a7a7a79787673706b67635f585349453e362e271e150c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d37424d5964707c87949da8b3bdb1a59a8e83776a61564b3f34291d130800000000000000000f1b26323d4955606c77838f9aa6b1bdb8aca095897e72675b4f44382d21150a0000000a141f29323b444d545e646c70777c7f818282817e7b746f69615b524a41373f48515a60686e737a7d80828281807d78716d665f564f463d3a444c545d646b70767c7f818282817e7b756f6a625b524a42382f261c1207000000000915202c38434f5a66727d8993919191948a7e72685f555a636f7a8590919191978c81756b62574c4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000030d17212c36404c57626b78838f9aa6b2bdc9cfc4bab0a7978b7f74685d51453a2e23170c0000000000000000000000000000000000010c17222c37404c57626b76818d99a3acb6c5ced7d8d6d8d7ccc1b6aca3998d81766b61574b40362c22170b01000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b6aca39c9a9898989898989898989898989898999a9ca0a7a8adb5bbc4bfb8b4aaa19a91897e726b61564a41372d23180500000006111d28343f4a55606977828e9aa6afb9c4cbbfb4a99e958c80746d645d544e4745434344454a50555f636e79838f9aa3acb6c1ccc2b7ada4978c8075695a51473c31261b10040008131e29333d4750575d5f6363636363636363636363635d5b56515659606366696b6d696e6f6e686c6a6764625b57544f47433a352e261e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a35404c57626c78848f9ba6b2bdb4a89c91867b6f63584c41372c22170c01000000000000000f1b26323d4955606c77838f9aa6b1b5b5aca095897e72675b4f44382d21150a0000030e19242e39424b545d646e727c82878b8d8e8e8c8a85807a706b615a51473f465059606a6f797f84898c8d8e8d8b88837d746f665f564d44414a545d646d727c82878b8d8e8e8c8a85807a706c625b52483f362c21170b010000000914202b37424d59646d77838e9aa3a49b8f83796e6358616a74808b959f9c9c91867b70645b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000008121c26323d48525b6975808c98a3afbac6d4cabbafa4988d81766a5e53473c30241207000000000000000000000000000000000004101b26313c46505964707b86919ca8b4bcc6d4d0cccbccd0d0c6bcb4a89c91867b70645950463c31251b1107000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bcb4aca7a6a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a6a8aab0b4b7bec0bab5aea9a19a918c80756e645a51473931271e1309000000040f1a26313b46505967737e8a969faab5c0cac3b8aea59a90897e726d635e5753504f4e4f4f555960636f75808c939da7b3bcc6cabfb3a89d94887c71655a4e42372d22180d0200040f19242d373f474d515357575757575757575757575751504c474b5055575a5d6058606363635f585e5c5957524b49453e372f2b251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6975808c97a4adb7b6aba097897e72675950463c31261b1004000000000000000f1b26323d4955606c77838f9aa6aaaaaaaaa095897e72675b4f44382d21150a000006111c28333e48525b646e727e868e92969899999896908b837b706b61584f454a5560696f7a828a909598999a9997938f8780746f665d544848525b636d727e858d92969899999896918c837c706b625950463b30251b110700000007121e29343f4a545d66717d89939ca79d948a7e72685f646f7b85909ca5a0968c81756b62574a42382e23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000020c19232e38444f5b67727e8995a1acb8cad4c8bdb1a69a8e83776c605449352b21160b000000000000000000000000000000000006111d28343f4b56606a75808c97a0abb6c1cdcac5c1bfc1c5caccc1b5aba0978c80756a60564a3f352b21160b000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d6cdc4bcb6b3b1afafafafafafafafafafafafafafb0b1b3b5bac0c2c0b7b0aaa59e9c908c81786e635d544a41372920170e04000000010c17212c36414c58636f7a85919ca7b0bac4c8beb6aaa19c90857d736e68635c5c5b5a5b585f63696f757f8b919aa3acb6c4cdc2b8aea59b8f84786c63584d4136271d13080000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413d40464a4c4f52545055575757544f53504d4c48423e3a352e26201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242e38424e5965717c88939da8b3bab0a7998d82766a60564b3f34281d1309000000000000000f1b26323d4955606c77838f9a9e9e9e9e9e9e95897e72675b4f44382d21150a000007131e2a35414c57626c727e8991969ca2a4a5a5a69f9c938f847b6f685f544a535c636e79828e929c9ea5a4a5a4a49d97918b80746e6459504b57616b717e8790969ba2a4a5a5a7a09c948f857c706960554a3e352b20160b000000040f1a25303a444d58636d77828e9aa3a49b8f84796e636b75808c969fa79c91867b70645b52483a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000a141f2b36424e5965707c8893a7b0bac4cfcabeb3a79c9084796d584f453b30251a0f03000000000000000000000000000000030f1a25303b454f58636f7a85909ca7b0bac5c9c1bab6b4b6bac1c9c4bab0a79c90857a6f63584f453b30251a0f030000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ddd4cdc6c1bebdbabababababababababababababbbbbdbfc0c4cac4bab0a7a09c95908980786e685f544d44393127191007000000000008121d29343f4b56606a75808c96a0aab5bec8c6bab5aa9f9690867f78716d696766666668696e727a818b9099a1aab4bcc6c6bfb4a99e948a7f73675c53493e3328170d03000000040d161f262d33383b3c4040404040404040404040403a393632363b3f40434648464a4c4c4b4945474541403d3833302b251e16110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f2a36414c58636c78838f9ba7b0bab3a89c91857a6f63584c41372d23180d020000000000000f1b26323d4955606c77838f9393939393939393897e72675b4f44382d21150a0005111c27323d48525b65707c86919c9fa7acb0b1b0afaaa49d948e82796e63574b57626c75818c939ca2a9aeb0b1b0ada8a19c90897e72696055515a64707b8590979fa6abafb1b0b0aaa49d958f83796e63584f453a30251a0e030000010b16202a343f49545d66717d88929ca79d948a7e73696f7b86919ca6a0968c81756b61574a42382a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000007121e2935404c58636f7a8697a0abb5c1cccbbfb3a89c918579695f554a3f33281c110500000000000000000000000000000005111c28333e4a555f68737f8b969faab8c1cac1b8b1aba8abb1b8c1cac0b4a99f958a7f73685f544a3e33281f150a0000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdbd4cecac7c6c2c2c2c2c2c2c2c2c2c2c3c5c6c6c7c8cbcccfccc1b5aaa097918c857e746e685f584f453d342920170800000000000004101b26313c47515a64707b86919ca5aeb8c0cac3b9afa69f97918a837d78757372717273767a7e848c9199a0a9b1bac4c9bfb6aca39b9084796e63574c43392f2419070000000000060e161d24292d2f303434343434343434343434342e2d2b262c313435383b363b3f4040403e3a35393635322e2825201b150d060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c68747f8b97a0abb6b5aa9f968a7e73675a51473c32261b10050000000000000f1b26323d4955606c7783878787878787878787877e72675b4f44382d21150a0007131e2a35404c57626b76828e969faaafb7bbbcbcb9b5ada59c938a7e73675b525765707c87919ca3acb4b8bcbcbbb8b1aba19b90847a6f635756616a76818d959fa7afb6bbbcbcbab5ada59d938b7f73685f54493e33281c110500000006101a252f3a434d58636d77828e9aa3a49b8f84796e75818c969fa79c91867b6f645b52483a31281911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000006121d29343f4b56606a7a85919ca8b4bfcbccc0b5aaa096867a6e63574c4034291d120600000000000000000000000000000007121d2934404c57636e7984909ba6afb9c8c5bab1a8a19ca1a8b1bac5c3b9afa69b8f84796e63574b43392f24190e0400000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbd2cbc4bfbcbbb6b6b6b6b6b6b6b6b6b6b7b9bdbec1c6cdd1d6cbbfb3a89c9186807a726d635f584f473e352c24191007000000000000010d17222d37404b57616b74808c949ea7b0bac4c9bfb6afa7a09c938e8884817e7d7d7e7f81858a90949ba1a9b1b9c2cac1b8aea59c92897e726960554a3f33291f150a000000000000060d14191e2224252929292929292929292929292322201c212628292c2f2c303334353433302b2d2a2927231e1a16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39434d58646f7b86919ca8b4b9afa7998e82776a61564b40342920150b00000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e12060008131f2a36424d5964707c87929ca7afb9c0c7c8c9c4bdb5aca39b8f83786c62575e6875818d97a1abb4bcc3c8c8c9c1bab4a99e948a7e73675b58636f7b86919ca6afb8bfc7c8c9c4bdb6ada49b9084796e63574b4034291d1106000000000b16202a343f49535c65717d88929ca79e948a7e737c86919ca79f968c80756b61574a41382a211809000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000004101b26313c4650596e7985909ca7b3bfcacfc4bab0a792867a6f63584c4135291e1207000000000000000000000000000006121d28333e49535c67727e89949ea8b6bfc9c1b6aba1979197a1abb6bec7bfb3a89d94897e72665c53493e33281e140900000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d4cbc2bab4b1afababababababababababacaeb1b3b6bcc2c7cec8bcb1a59a8e837a6f6a645d544f473e372e251c1308000000000000000008131d27323d48525b636f7a849097a0abb5bac3c7bfb7b0aaa39c9a94908c8a8988898a8d90959b9ea5aab2b9c1cac5bab1a89e958e82776e645850463b3022190f0500000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d17161412171a1d1d2023212528292929282520221f1e1c19140e0b0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2934404b56616b77828e99a5aeb8b4a89c91867b6f64584c433a2f251a0e04000000000007121e2935404b57616b70707070707070707070706f6a60564a3f34281d1106000b17222e3945515c68737f8a96a2abb7c0c9d0d3d3cec5bcb3a89d94877c706459636e7984909ba8b1bac4ced2d3d1cac2b8aea5998d82766b5f5b67727e8a97a0abb6bfc8cfd3d3cfc6bdb4a99e95887c7165594e42372b2014080000000006101a252f3a434d58636d77828e99a2a49b90847a818d97a0a69c91857b6f645a51473a3128191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000040f1b26313c4650596d7985909ca7b3bfcad3c9b4a99d92867b6f63584c4135291e120700000000000000000000000000030d171f2b36414d58636d77838e9aa5aeb8c7c1b6aca39c9185919ca4adb7c2c2b7ada49a8e82776c63584c41382d23180d03000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cec4bab2aaa5a49f9f9f9f9f9f9f9f9f9fa0a2a6a7acb3b7bdc5c9beb2a79c928e81796e635d53483f372e261e150c030000000000000000030d18232e38414a556069717d86919ca1aab2bac5c8c0bab5aca7a59e9b989695949596999c9fa6a9aeb5bbc2c9c1bab6aba19790857b70645d54483f362c2112090000000000000000000004080b0d0d1111111111111111111111110b0b09080c0f11121512171a1d1d1e1d1c1a16111312110e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a67727e89949ea9b4b5aba0978a7f73685c53493f34281e1309000000000005101c27323d48525b61646464646464646464646463605950463c31261b0f04000d1924303b47535e6a75818c98a4afbbc7d0d9e0ded6cdc2b7ada495897e72665b646f7b86959ea9b8c1cad4dde1dad2c7beb2a79b8f84786d615d6974808c97a7b0bac7cfd9e0ded7cec3b8aea5968a7e73675c5044392d22160a00000000000b15202a333e49535c65717d88929ca79e948c8187919ca79f968c80756b61564a41382921180900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000006111d28343f4a5560697a85919ca8b3bfcbccc1b5aaa097867a6e63574c4034291d12060000000000000000000000000008131d27323d48525b65717d88939ca7b5bec7beb3a79c938b7f8b949ea8b4c0c7bdb2a79c93887c71655a51473d32261c1208000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb4aaa19b989393939393939393939495979a9ca3a8adb5bdc4c1b6aca39c928c80756d63584f453b30251a0f040000000000000000000009141e28313c465059636d747f8b919ba2aab6bac1c8c4bcb6b3aea9a7a3a1a09fa0a1a4a7a9afb4b8bec5c7bfb8b1aba09c91877e726b61574d44382f261c1202000000000000000000000000000102060606060606060606060606000000000104060609070c0f11121211110e0b0707070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414c57636e7984909ba6afb9b0a79b8f83786d63584d41382d23180c0200000000020d18232e38414a525758595959595959595959595856504940362c22170c01000e1a25313c48545f6b76828d99a5b0bcc7d3e0e9e6dcd1c7b9ada1968a7f73685c65707c8793a5aeb8c9d1dae5ebe2d6cabfb3a89c9085796e625e6a75818d98a4afbbcad2dfe9e7dcd2c8b9aea2978b7f74685d51453a2e23170c000000000006101a242f39434d58636c76828e99a2a59a918c9197a1a69c91857b6f645a51473a312819100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000006121e2935404c57636f7a8697a0aab5c1cccbbfb3a89c91857a6960554a3f33281d1106000000000000000000000000010c17222d37404c57626b76828d99a3acb6c5c3b8aea59a8e837a848f9ba7b0bac4c1b6aca3988d81766b61574b40362c22170b010000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bcb1a59b918c88888888888888888888898b8e939b9da4acb4bdc6bcb3aba29a90887d71685f554a3e33281e140900000000000000000000040e17222c364049535c656f75808c919ba1abb0b8bec5c6c1beb8b4b2afadacabacadb0b3b4b9bfc2c7c4bdb6afa8a19c908a7f736d635b52483d34271f160c020000000000000000000000000000000000000000000000000000000000000000000000000001040606060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28333f4a555f69747f8b969faab5b3a89d94887d71665a51473d32261c1208000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261d120800000e1925303c48535f6a76828d99a4b0bcc9d3dee6e4dacfc4bab0a7968a7e73675c64707b8793a4adb7c1ccd8e2e8e0d6cabfb3a79c9085796d625e6975818c98a3afbbc8d2dde6e5dcd0c5b9ada2968b7f74685c51453a2e22170b0000000000000b151f29333e49535c65717c88929ca8a19a989ca1a89f968c80756b61564a4138292118090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000008131f2b36424d5965707c8793a7b0bac4cfcabeb3a79c9084796d5850463b30251a0f0400000000000000000000000004101b26313c46505964707c86919ca8b4bcc6c0b4a99e958a7e747f8b96a0aab5c0c6bcb3a89c91867b6f645950463c31251b11070000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c6bbafa4988c817c7c7c7c7c7c7c7c7c7c7d7f83888f949da3acb6bfc4bbb3aaa19b8f83796e63574c41382d23180d020000000000000000000008121c263038434c555e636e78818c919ca0a7aeb6bac1c5c7c2bfbebbb8b7b7b8b9bbbfc0c3c8c4bfb9b5ada69f97918b80746f655d544a41382c24170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b1b7ada4998d81766b61564b40362c21170c0200000000040e18212931383d404142424242424242424242403f3c3630281f160d0300000d18242f3b46525e6975808c98a6afb9c4ced6dbdad4ccc1b5aba097897d72665a636f7a86939da8b3bfc8d2d9dcd7cfc6bdb2a69b8f83786c615d6874808b97a5aeb8c3ced5dbdad4ccc1b6aca3958a7e72675b5044382d21160a000000000000061019242f39434c58636c76828d97a1aba5a3a8aba69c91857b6f645a51473a31281910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000000715212c38434f5b66727d8995a0acb7cad4c9bdb1a69a8f83776c605549362c21170c0100000000000000000000000006121d29343f4b56606a75808c97a0abb6c1c5bab1a89c90847a6f7b86919ca8b3bdc7c1b5aaa0978c80746960554a3e352b20160b0000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747171717171717171717274777d848f939da5aeb8c3c3bab3a89d948a7e72675a51473d32271c100500000000000000000000030c161f28333b4549545f686e79808b91979ea5abb0b6bac1c2c7c8c6c4c3c2c3c4c7c8c6c1bfb9b5afaaa49d9690877f746f665e554c443a31281c13060000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090a1111111111111111111111111111110c0b0a070300000000000000000000000000020506071011111111111111111111111111110e060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4b56616a75818c97a1abb6b3a89c91867b6f645950463b31261c1207000000000007101921282e323536363636363636363636363534312c261f180f060000000a15212d38444f5b67727e89969faab5bdc6cdd1cfcac5bab1a89c91867b6f6358606a78838f9aa5aeb8c3c9ced2cdc7bfb6aca3988c8075695e5a66717d88959ea9b4bcc5ccd1cfccc3bcb3a79c93877b6f64584d41362a1e1307000000000000000a151f29333e49535c65707c87919ca8b1afb4aa9f968c80756b61564a413829211709000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000006101b27323d47515a6974808c97a3aebac5d1c7bbb0a4998d81766a5f53473c30251207000000000000000000000000030f1a25303b454f58636f7a85909ca7b0bac5c1b6aba1978c80746a76818d99a4adb7c2c4bab0a79c90857a6f63584f453a30251a0e0300000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468656565656565656566686d717a838f959fa9b4c1cac2b7ada49a8e83776b61574b4035291e12070000000000000000000000060f17222b303a454f585f686e757f8790959ca0a7abb0b3b7bbbcbebfc0c4c0bfbebcbab6b3afaaa69f9c938f857e736f665f564e453c332921180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000060b101315151d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171715120e080200000000000000000004090d1012121c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a12110f0b07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c25313c47515a64707c86919ca8b1b5aaa0978b80746960554a3f362c21160b0100000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a292826221d160f070000000007121e2935414c58636f7a85909ca4adb5bdc2c7c4c1bab6aba1978e82766a60565968747f8b959fa9b4bac0c3c7c2beb7aea59c92887d71655a57636e7a84909ca3acb5bcc1c6c4c1bab3aaa19a8e83776b61574b4035291e120700000000000000050f19242f39434c57626c76818d97a1abb6afa69c90857b6f645a51473a3128191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000020c161d2934404b56616b77838e9aa5b1bdc8d0c5bab1a8978b8074695d51463a2f23170c00000000000000000000000005111c28333e4a555f68737f8b969faab8c1cabfb4a89c91867b7065717d88939da8b3bfc9c0b4a99f958a7f73685f54493e33281f150a00000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5959595959595a5b5c636a6f7b85909ca8b1bac5c7bdb2a79c93877b6f64584d41352a1e130700000000000000000000000007121b202b353e474f585f636f747d848c91979ca0a7a8adafb1b2b3b5b9b5b3b2b1afaca7a69f9c96908b837c726e655e564e463d352c23191007000000000000000000000000000000000000000000000000000000000000000000000000000000030a10161b1e20212929292929292929292929292929292322201d18120c0400000000000000070e13181b1d1e272929292929292929292929292929251d1c1a16110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18222d37404c57626b76828d97a1abb6b0a79b90847a6f63584f453b30251b1107000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1e1d1b17120d06000000000006121d29343f4b56606a74808b939da5acb3b7b8bab5b1aba29c91877c70655a5158636f7a85909ca0aab0b5b9b8b8b4aea69f958e82776d6358555f69737f8b939ca4acb3b7b8bab5b4aaa29b91887d71665a51473d32271c100500000000000000000a151f29333e48535c65707c87919ca7b0aa9f968c80756a61564a41372921170800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000108121c26303b454f58646f7b86919ca8b4bfcbccc1b6aba197897d72665b4f43382c21150a00000000000000000000000008121d2934404c57636e7984909ba6afb9c8c2b8aea5998e82766b636d78838f9ba6afb9c3c3b9afa69b8f83796e63574b42392f24190e04000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514e4e4e4e4e4e4f535a616b747f8b97a1abb6c1ccc1b6aca3958a7e72675b5044382d21160a0000000000000000000000000207111b252e373f474f545f656d717a80868d91979b9da4a4a5a7a8aaafaaa8a7a5a3a39d9a96908c857f79706c645d554e463e352d241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2025292c2c3434343434343434343434343434342f2e2b27221c150d0400000000000810171d2327292a33343434343434343434343434343431292825211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27323d48525b65707c87919ca7b0b1a99e958a7f73695f554a3f352b21160b0000000000000004090d1012131313131313131313131312110f0c080300000000000004101b26313c47515a636f7a838f959da3a8adadb0aaa8a19c918c80746c62584b56606a727e8a909ca0a7aaafadaea9a59e9690857c70645c534f58636e79828e949ca3a8adadb0aba8a19a928c81756d63584a41382e23180d020000000000000000050f19242f39424c57626c76818d97a0aba69c90857b6f645a514739312719100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000109111a222c363e4a545f68737f8a97a1abb6c1cccbbfb4a89c91867b6f63584c4135291e1207000000000000000000000006121d28333e49535c67727e89949ea9b6bfc9bfb4a89e94897d72665c67737f8a969faab5c0c8bfb3a89d94897d72665c53483e33271e1309000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514642424242434349515a646f7b86919ca8b4bfcbc6baaea3978c8075695d52463b2f23180c01000000000000000000000000010b151e262e373f454a565c636a6f757c81868b8f9495989a9b9ca0a69f9c9b999895938f8a85807b746e69625b544d453e352e251d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000a131c232a303437384040404040404040404040404040403a3936322c251d150b0300000006101920272d3234353f40404040404040404040404040403d3433302b251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19232e38424c57626c76818d97a0a6a6a6a59b9084796e63584f453b30251a0f0300000000000000000205070708080808080808080808060604010000000000000000010d17222d37404b56606a707c848f939b9da4a1a7a09c97918b81786e635c5349515a646e74808a91969c9fa6a1a59e9b9490857d716b62574c4a5560696f7b848e929a9da4a1a7a09c99918c82796e635d53493a31281e1409000000000000000000000a151f29333e48525b64707c86919ca79f968c80746a61564a4137292017080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000409121a222a313b465059636e79848f9ba8b1bac5d0c9bdb2a69a8f83786a61564b4034291d120600000000000000000000030d171f2b36414d58636d77838f9aa5aeb8c7c4bab0a79b9084796e6358636f7a85909ca8b3bcc6c2b7ada49a8e82776c62584c41372d23180c020000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3737373739414b56616a78848f9ba6b2bec9c7bcb0a4998d82766b5f53483c3125190e0200000000000000000000000000040d161e272e353b454c535a60636c70767c8084878a8c8e9091969196918f8e8c8987837f7b756f6b635f58524b443d352d251d150c0400000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c343a3f42444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4645413c352e251b13090100050e17202931373d40414a4b4b4b4b4b4b4b4b4b4b4b4b4b4b48403e3b352e271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28333e48525b64707c86919a9a9a9a9a9a948a7e73685f544a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000008131d27313c465059626b707b838a8f9395969596918d8780786e685f544b4349545e666f747f868d909695969594908b847c716d635b5248465058616b6f7b82898f9394959597918e8880796e695f554c433a2921180e0400000000000000000000050f19242e39424c57626c76818d97939390857b6f635a51473931271910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c04060a0e141a222a323b424a556069727e8a949ea8b8c1caccc1b7ada4978c8074695a51473c31261b10040000000000000000000008131d27323d48525b65717d88939da7b5bec7c0b5aaa0968b7f74685f56606a75818c98a3acb6c1c7bdb2a79c92887c70655a51473d32261c12080000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2b2b2b323d47515a6b77838e9aa5b1bdc8c8bcb1a59a8e82776b6054493d31261a0f030000000000000000000000000000060e161e252b303c434951565b62656b7074787c7e81838485868685858482807e7b77736f6a64615a554f48423a342c251d150d04000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343c444a4e4f57575757575757575757575757575751504c463e352c23191107020c151e27313941474b4c565757575757575757575757575757544b4a453f372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424c57626c75818d8f8f8f8f8f8f8f8f84796e63574b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000030d17222c374049525b626b6f797e8387898a8a8885827c746e685f584f453b444d565f666e737b818588898a8987847f7a706c635c534b423f48515a616a6f787e8387898a8a8986827d756e685f584f453c332a1910070000000000000000000000000a141f29323d48525b64707c868787878780746a61564a413729201708000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0f1114191e232b323a424b545d636f7a84909ba4adb7c9d1cabeb3a89d93877c7065594e42372d22180d02000000000000000000010d17222d37404c57626b76828d99a3acb6c5cbbfb3a89c91857b6f6458505965707c88939ca7b2bfc8c1b6aca3988d81766b61564b40362c22170b0100000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2f2f2f2e333e49545f6877838f9aa6b1bdc9c8bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000060e151b212b333940474b52575b6264686b7073757779797a7a7a79787775726f6b6864615a57514a453f38322a241c140c040000000000000000000000000000000000000000000000000000000000000000000000000000000005101b25303a444d54595b6363636363636363636363636363635d5b564f463c342a21170f07121c252f37414a5156586163636363636363636363636363635f57544f473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29323d48525b64707c838383838383838383837d71655a4e43372b20140900000000000000000000000000000000000000000000000000000000000000000000000008121d263038424a525a61686e73787b7d7e7e7d7a76706c635e574f473e353d464e565e656b70757a7d7e7e7e7c78746f69625c534c433a38414a515a61686e72787b7d7e7e7d7b77716c635f584f483f352b231a0900000000000000000000000000050f19242e38424c57626b707b7c7c7c7c7a6f635a5147393027191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2312171a1d1d24282e323b434b525b646d75808c949ea9b5bec7cec3b8aea59a8f83786c62574c4135271d13080000000000000000000004101b26313c47515a64707c86919ca8b4bcc6c1b7ada4988d81766a61564c57626c77838e9aa5aeb8c3c6bcb3a89c91867b6f645950463b31251b110600000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3a3a3a383d444b57636e7984909ca7b3becac8bcb1a59a8e82776b6054483d31261a0e0300000000000000000000000000000000050b111b232830373c42484c5257595b6264676a6b6d696e6f6e686d6b696764615a5856514b47413b362f27211a130b04000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29343f4a545d64666e6e6e6e6e6e6e6e6e6e6e6e6e6e6e69665f564d443a32281f16111a212b353f48515a61646d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b635f584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19242e38424c57626b7077777777777777777777716d63584d41362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000030d162028313a424a51585f63676b70727372716f6a65625c544e473e372e353e464e555b6264696e71727372706c68636059534b433c333139414951575e63676b6f727373716f6a65635c554f483f372f251b120900000000000000000000000000000a141e28323d48525b626b70707070706f6960554941372920170800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2424212528292e32383d454b535b626c727e89919aa5aeb8c5cecbbfb4a99e958a7f73685c53483e3328170d030000000000000000000006121d29343f4b56606a75808c97a0abb6c1cabeb3a89d93887d71655a5148535c67727e8a959ea9b4c1cac0b5aaa0968b80746960554a3e352b20160b00000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464646464646484c555e65717d88959fa9b4c0cbc7bcb0a4998d82766a5f53483c3025190e0200000000000000000000000000000000000107121820272d31393e42484c4d5257595c5e60585f6363635f585f5e5b5856514c4b47413d38302c261f171109030000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a746f665d544b423830261c18222a303b454f58616a6f797a7a7a7a7a7a7a7a7a7a7a7a7a7a776e685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323d48525b62646c6c6c6c6c6c6c6c6c6c65635c53493e33281d120600000000000000000000000000000000000000000000000000000000000000000000000000060f18212a313a41474f54575b626466676766636059575349453e362e262e353d454a5257585f636567676665625c57555048423b332b29313941474e54575a61646667676663615a58534a453f372f271e150b020000000000000000000000000000050f19232e38424b525b626464646464636059504639302718100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3030302c303334383d42484c555c626c707c85909ca1aab5bec7cdc2b8aea59c90847a6f63574c42392e24190700000000000000000000030f1a25303b454f58636f7a85909ca7b0bac5c3b9afa69a8f83786d63584a424c57636e7a84909ca8b1bac5c4bab0a79c90847a6f63574e453a2f24190e03000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5151515151515252575e656e76828e99a5aeb8c3cec6baaea3978c8074695d52463a2f23180c0100000000000000000000000000000000000002080f171d22292e33383d4042484c4d5052544f55575757544f54524f4d4b4741403c37322d28211c150e0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e85858585858585858585858585858580746d645b524940362c222028323b424a555f696f7b84858585858585858585858585858582796e63574b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18232e38424a525759606060606060606060605a58534c43392f241a0f040000000000000000000000000000000000000000000000000000000000000000000000000000071119212931373f454a4b5257595b5c5b5a5856504c48423a352e261e252d343a42484c4f55575a5b5c5b5957534c4a464038322a23202930363e45494b5157585a5c5b5a5856514d49433b352f271e170e050000000000000000000000000000000009141e28313a424a52575859595959575550484036292017080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b3b3b3b363b3f4042484c52575e656c707c8490959fa9b1bac5cec6beb4a99e948b7f746960554a3f32291f150a0000000000000000000005111c28333f4a555f69747f8b969faab8c1cac0b5a99f958a7f73675c53493f4a55606975808c97a1abb6c1cac0b4a99e958a7f73685e54493e33271f150a000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5d5d5d5d5d5d5d5b62646e737f8a929ca7b6bfc8cdc2b7ada4958a7e73675b5044392d21160a000000000000000000000000000000000000000000060d13171f24282e3235383d4042444749454a4c4c4b4a4548464441403d3834312d27231e16120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424e59646e74808b92919191919191919191919191877e726b625950463c312b263039424b545d636e79828e9491919191919191919191968f847a6f685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a42484c4d555555555555555555554e4d49433b33291f150b0000000000000000000000000000000000000000000000000000000000000000000000000000000009111921272e353b3e42484c4d4f50504f4c4b46403e392f2b251e161c242a31383d3f454a4c4e4f504f4e4c48423f3b362f28221a1820262e353a3e41474b4d4f50504f4c4b47403e39302b251e160e060000000000000000000000000000000000040e18212a313a42484c4d4d4d4d4d4c4a4640382f261810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51474747474748464a4c4e52575b62646e737c8490949ea6afb9c2cac8beb5aba29b90847a6f635950463b3122190f050000000000000000000008121d2934404c57636e7984909ba6afb9c8cabfb3a79c90857a6f63584c433b46505964707c86919ca8b4bec8c3b8aea59b8f83796e63574b42392e24190e040000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746969696969696969696a6b70767e86919ca2abb6c6cfcabfb3a89d94877b7064594d41362a1f13070000000000000000000000000000000000000000000003080f15191e2327292e323536393b353b3f4040403e3b353b383535322d2926231d18140e07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29343f4a545d636e78828e949e9c9c9c9c9c9c9c9ca19790857c706960554a453c332e374049525b646e75808c929ca59c9c9c9c9c9c9ca19c90857c706a61584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a31383d40414949494949494949494943413e39332b2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000810161e252b3033383d404143444443403f3c37332f29201b140d141921282e32363b3f404344454442413e3934312c261f171210161e252b2f33383d404143444443413f3c37332f29211b150e0600000000000000000000000000000000000000081119212a31383d404142424242403f3b362f281f1608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d525252525253535055575a5b62646b70767e8690959ea5aeb6bfc9cac0b8aea59c92897e726960554840362c2211080000000000000000000006121d28333e49535c67727e89949ea9b6bfc9c1b6aca3988c80756a60564a3f363f4c57626b77828e99a5aeb8c2c8bfb3a89d94897d72665b52483e33271d13090000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807474747474747474747475787c818a9196a0aab3bcc5cfc4b9afa79b8f83786b62574c4035291e1207000000000000000000000000000000000000000000000000050a0e14191c1e23272a2a2d302b303334353433302b2f2d2a2927231e1b18130d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b25303a4449545f686f7a848f969faaa8a8a8a8a8b1a89f958f837a6f635e554c433a353e47515a626c727e89919aa3aca8a8a8a8a8aca39a918a7e726c625a51473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e3235363d3d3d3d3d3d3d3d3d3d3736332f29221b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b2125282e323536383939373534312c26241f16110b040911181e23262c303334373839383635332e2826221c160f07050d141b2024272d323535383939373534312d27241f16110c0500000000000000000000000000000000000000000109111921282e323536363636363534312c261f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685e5e5e5e5e5e5e5f58606365686c70757c828a91969ea5aeb5bec7cfc4bab0a79e958d82766e64595046382f261c1201000000000000000000030d171f2b36424d58636d77838f9aa5aeb8c7c9beb2a79c92877c70655950463c323d48525b66727e89949ea9b4c0cac2b7ada4998e82776c62574c41372d23180c0200000000000b16222d3945505c67737f8a96a1adb9c4d0c8bcb1a59a8e82808080808080808080808183878d919ca0a7b0bac3ccccc0b5aa9f968b7f74685b52483d32271c1105000000000000000000000000000000000000000000000000000004090e1114191c1e1f222421252829292928252124211e1e1c1813100d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a303a454f58616a707c85909ca1aab3b4b4b4b8afa69d938d81766f655d534a413a454f58606a707c85909ca1aab3b4b4b4b7aea59c928c80756e645c534941372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181e2327292a323232323232323232322b2b28241f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161a1e2327292a2c2d2d2c292826221d19150f06010000080e14181c212528292b2d2d2c2b2a28241f1a17120c060000040b1116191e2327292a2c2d2d2c292926221d1a150f070200000000000000000000000000000000000000000000010911181e2327292a2a2a2a2a292826211c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746a6a6a6a6a6a6a6a6a6b696e7174777c81868e929c9fa6aeb6bec6cbc2bbb5aba09790847b6f645d54494036281f160c0200000000000000000008131d27323d48525b65717d88939da7b5bec7c3b8aea59a8e82776c62574940362e38424c57636e7984909ba7b0bac4c7bdb2a79c92877c70655a51473d32261c120700000000000b16222d3945505c67737f8a96a1adb9c4d0c9beb2a79c928e8b8b8b8b8b8b8b8b8b8c8d8f93989ba2aab0b7c0cacec3b8aea59c91857b6f64584c42382e23180e020000000000000000000000000000000000000000000000000000000003050a0e1113131612161a1c1d1e1d1c1a1611151312100d0905020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061016202b353e47515a626c727e8a919aa3acb5bec7bfb6ada49b918b7f746d635b52484249545f686f7a848f969faab1bac4c4bab0a79e948e82796e635e544b423930271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14181c1e1f26262626262626262626201f1d1a151009020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f14181c1e1f212221201e1d1b17120d0a05000000000004090c12161a1c1d202122211f1e1c19150f0c08020000000001060b0e14181c1e1e212221201e1d1b18130d0a050000000000000000000000000000000000000000000000000000080e14181c1e1e1f1f1f1f1d1d1a17120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807575757575757575757677787a7c7f83878c91969ca2aaafb7bec6cfc2bbb2aaa19c91867d716b61564d44383026170f06000000000000000000020d18222d37404c57626b76828d99a3acb7c5cbbfb4a99e95897e72675b5248383028333e4a555f6874808b97a0aab5c1ccc1b6aca3988d81756a61564b3f362c21170b01000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b6aca39c9a97979797979797979797989b9da4a6abb5bac0c8ccc3bbb4a99e958c80756b61564b4031281e14090000000000000000000000000000000000000000000000000000000000000000030507080a070b0f11121212110f0b070a0707050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e374049535c646e75808c929ca5aeb7c0c7bdb4aba29c91867d716b6159504b545d636e78828e949da6afb9c2c4bcb5aaa09690847b6f695f554d443b322920160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131b1b1b1b1b1b1b1b1b1b1414120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1112131516161512110f0c080300000000000000000002070c0f1112141516151413110e0a040100000000000000000003090d101213151616151212100d0803000000000000000000000000000000000000000000000000000000000004090d1012131313131312110f0c0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c9bdb1a69a8f8381818181818181818182828485888b8f93989ca0a7abb5b9c0c7c9c4bab2aaa19a908b7f736d635a51473c34281f16070000000000000000000004101b26313c47515a64707c86919ca8b4bdc6c4bab0a79b90847a6e63574c42382925303b454f58646f7b86919ca8b3bdc7c5bcb3a89c91867b6f645950463b30251b1106000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bcb3aca7a5a2a2a2a2a2a2a2a2a2a3a4a6a8adb1b5bbc4cacec3bbb3aaa19c90847a6f635a51473d3221180e040000000000000000000000000000000000000000000000000000000000000000000000000000000305060606050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e263039424b545e636e79828e949ea7b0bac4c5bbb5aba09790857b70696055525b646d74808b929ca4adb7bfc6bcb4aaa19c91867d716a61584f453d342a2218100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070f0f0f0f0f0f0f0f0f0f090806040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707090a0a09060604010000000000000000000000000001040506090a0b0a08070603000000000000000000000000000002050707090a0a09070604020000000000000000000000000000000000000000000000000000000000000000000205070708080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb3a89d938f8c8c8c8c8c8c8c8c8d8d8e8f9197969a9da3a8aab0b7bcc4c9c7c0b9b5a9a19b918c80756f655c534a41372c23170f060000000000000000000006121d29343f4b56616a75808c97a1abb6c1ccc1b5aba0978b8074695f554a3f3328212b353f4b56616b76828d99a4adb7c2ccc0b5aaa0968b80746960554a3e352b20160b000000000b16222d3945505c67737f8a96a1adb9c4d0d6ccc4bcb6b2b1aeaeaeaeaeaeaeaeaeaeafb2b3b7bdc0c5cfc9c4bbb3aba29a91897e726a61564a41372d23110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d162028323b444a555f686f7b849096a0aab5bac4c4bab0a79e958f83796e635e59626b727e87919ca2abb5bdc7beb6aca39b918a7f736c635a51483f352c241a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b7aca39d9a98989898989898989899999b9ca0a7a6a8acb3b5bac0c8cac5bdb7afaaa09a918c81786e635e554c433931271c130700000000000000000000030f1a25303b454f58636f7b85909ca8b1bac5cbbfb4a89c91867b6f64584f453b30251b25323d47515a66717d88949da8b3c0c9c4bab0a79c90847a6e63574e453a2f24190e030000000b16222d3945505c67737f8a96a1adb9c4d0ddd4ccc6c1bebcbababababababababababbbdbec1c7caccc7bfb9b5aba29b928c80756e645a51473931271e13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000003050606060604010000000000000000000000000000000000000000000000000000000000061018222a303b454f58616a717d86919ca1aab4bcc6c0b8aea59d938d81756e656069707c859097a1abb3bcc5c0b8aea59c938c81756e655c534a41372f251c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090a0a0a0a0a0a0a0a0a0908060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608080c0c0c0c0c0c0c0c0c0c0c090907040100000000000000000000000000000000000000000000000000000000000000000000010200000305060605030000020000000000000000000000000000000000000000000000000000000000000000000000000000010406060707070707070707070707070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bdb4aca8a6a4a4a4a4a4a4a4a4a4a4a5a7a8aab0b1b3b7bdc0c4cac8c1bab6ada79f9c908b81796e685e544e453c332920170b030000000000000000000005111c28333f4a555f69747f8b969faab8c1cac2b7ada4998d82766b6157483f362c2118232d38414b57636e79838f9ba6afb9c4c9c0b4a99e958a7e73685e54493e33271f140a0000000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdd0ccc9c8c5c5c5c5c5c5c5c5c5c6c7c9cacac9c4c0bbb7afaaa19b928d81796e635d544940372920170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020506070a0c070b0f11121212110f0c07090606040100000000000000000000000000000000000000000000000008111a212b353f48515a636c737f8a919ba3acb5bec8beb6aca39b918a7f736c636f7a838f959fa8b1bac3c4bab0a79e958e82796e635e554c433931271e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214151616161616161616161414120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131418181818181818181818181514120f0b0600000000000000000000000000000000000000000000000000000001040506080a0c0e070b0e111112110f0b070d0c090706050200000000000000000000000000000000000000000000000000000000000002080c0f111212121212121212121212121212110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d6cdc4bdb7b3b1afafafafafafafafafb0b1b2b3b5babdbec1c6ccc6c1bcb8b0aba49d96918a80756e685f574e453e352b23191007000000000000000000000006121d2934404c57636e7984909ba6afb9c9cabfb3a89d94897d71665a5147382f261c131e27333e49545e68737f8b969faab5c0ccc3b8aea59b8f83796e63574b42382e24190d0300000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c9c3c0bfbdb9b5b3aba69f9c918d82796e685f554d443930271910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090d101212151812161a1c1d1e1d1d1a17121512110f0c0802000000000000000000000000000000000000000000000107111b252f37414a535c656e75818c939ca5aeb7c0c6bdb4aba19c91867d716f76818d939da6afb8c1c4bdb5aba09790847b6f6960554e453b332920170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10161a1e2020212121212121212121201f1d1a15100902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f15191d1f1f242424242424242424242421201e1a16100a03000000000000000000000000000000000000000000000305070c0f11121416181911161a1c1d1d1c1a16121917151212100d0905030000000000000000000000000000000000000000000000000000060c12171a1d1d1e1e1e1e1e1e1e1e1e1e1e1e1d1d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ddd5cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbcbebfc1c4cacacac4c1bdb7b3aca7a09c938f867e746f635f584f473e352d251b1208000000000000000000000007121d28343e49535c67727e8a949ea9b7bfc9c4b9afa69b8f84796e63574b4138291f150e19242f3a454e57636f7b85919ca8b3bdc6c8beb3a89d93897d71665b52483e33271d130900000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9b5b3b1afaaa8a29b96908a81796e6960584f453c3428201708000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1013181b1d1e21232521252829292928252123201d1d1a17120c0a05000000000000000000000000000000000000000000020c151e273139434c555e636e79828e959ea7b0bac4c4bbb5aaa09690847b747f8b919ba4adb6bfc6bdb4aba29c91867d716b615850463d342b22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a2025292b2c2d2d2d2d2d2d2d2d2d2b2b28241f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f24282a2b2f2f2f2f2f2f2f2f2f2f2f2c2b2925201a130b030000000000000000000000000000000000000104090e1112161a1c1d1f212325262025282929282521262523211e1d1b1813110e0a030000000000000000000000000000000000000000000000070f161c22262829292929292929292929292929292825211c160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdd0cccac9c6c6c6c6c6c6c6c6c7c7c8c9cac8c9c4c0bfbab5b3aca8a39c97918c837c736e665f544f473f362e251d140a02000000000000000000000008141f2b36424d58636d78838f9aa5aeb8b4b4b4b5aa9f968b7f73685e54493e33271c0e0b16202b353e4b56616a75818d98a3acb7b4b4b4b7ada4998e82776c62574c41372d22180d02000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafa9a7a6a69f9c98928d857e756e69605950483f352c2318100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d13181b1d2226292a2c2f312b303334353433302c2f2c292826221c19150f09040000000000000000000000000000000000000000050e162029333b454a5560696f7b849097a0aab5bbc4c4bab0a79e948e827d86919ca2abb4bdc7bfb6ada49b918a7f736d635a51483f362d241a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b232a303437383838383838383838383736332f29221b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a22292f3336363b3b3b3b3b3b3b3b3b3b3b383734302a231b130a0000000000000000000000000000000002070c0f14191c1e212528292b2d2f30322b3033343433302b32302e2c2a2926231e1c19140e0b060100000000000000000000000000000000000000060f171f262c3134353535353535353535353535353433302c261f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1cac5c1bfbebcbbb9b5b3b0aaa8a39d9a938e86807a706c645e564a453f372e261e140c04000000000000000000000005111c27323d48525b66717d88939da8a8a8a8a8a8a8a89c91857b6f63574e453a2f24190e06111b25313c47515a65717c88939da8a8a8a8a8a8a8a79c92877c70645a51473c31261b1005000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea69f9c9a9896918d88817b736e635f5850483f372f251c1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e14181d2326292d313435383a3c353b3f4040403f3b363a383534312c26241f19140e080000000000000000000000000000000000000000061018222b303b465058616b717d86919ca2abb4bdc6c0b7aea59c928e869197a0abb2bbc5c1b8aea59d938d81766f655c534a41382f261c140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c333a3f424344444444444444444443413e39332b2218100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a32393e4142464646464646464646464643423f3a342c231a10060000000000000000000000000002070c12171a1e2327292c30333436393b3c3d353a3e40403f3b353d3c3a383534322d2a27241e1916110b040000000000000000000000000000000000020c161f282f363b3f40404040404040404040404040403f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5bab6b4b2b1afafaaa8a7a09c99938f89827c756f69625b554d463b352e271e160d0400000000000000000000000007131e2a35404c57626b76828d99a39c9c9c9c9c9c9ca3988d81756a6156473e352b20160b010b18222d37404d58636c77838f9aa69c9c9c9c9c9c9ca2988c81756a61564b4034291d1206000b16222d3945505c67737f8a9393939393939393939393939393939393939393939393939295908f8c8985817c76706b655e554f483f382f271e150b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171e23272d3234373c404144464849454a4c4c4c4a46484643403f3b36332f29231e181107020000000000000000000000000000000000000008121a212c363f48515a636d737f8a919ba4adb6bfc8beb5aca39c979197a0a7b0bac3c5bab0a79f958f837a6f635e554c433a31271f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202a333c44494d4f5050505050505050504e4d49433b332820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b42484c4e52525252525252525252524f4e4a443c342a20160b010000000000000000000000050c11161c2125282e3235363b3f4042444648494a45494b4c4a454a4947454341403c3735322e2724201b140d080300000000000000000000000000000008121c262f3840464a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab0aba8a7a5a4a69f9c9997918e88837e78706c636059524b453d302b251e160e050000000000000000000000000008131f2a36424d5964707c86919191919191919191919193887c71655a5147362e251b11060008131d27333e49535c67737e8a959191919191919191919191857b6f63584c41352a1e1207000b16222d3945505c67737f8787878787878787878787878787878787878787878787878787868583817e7a76706c64615b554a453f372f271f160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161c21282e32373c4041474b4c4f5253554f55575857555054524f4c4a46403e39322e282119110c050000000000000000000000000000000000000207121c262f38414a535c656f76818d939da5aeb8c1c6bcb3aca7a09ca0a7b0b8c0c5bdb6aba09790857c706960554e453c332921170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303a444c54595a5b5b5b5b5b5b5b5b5b5a58534c433930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39424b5358595d5d5d5d5d5d5d5d5d5d5d5b59544d443a30251a0f0400000000000000000002070e151b21262c3033383d4041454a4c4e50525354564f545757554f565453514f4c4b4742413d38332f2b251e16130d0600000000000000000000000000010c17222c364048505557585858585858585858585858575550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea09c9b9a989696908e8a86827d78726e68625c555049423b342d211b150e0600000000000000000000000000000d18242f3b47525e6975808585858585858585858585858583776c6358494037261e140b0100030d19242f39434c57636f7a85858585858585858585858585857f74685d51453a2e23170c0007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a797775726f6a65625c57524a453b352f271f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911171f262c30383d41474b4c5156585b5d5f61625f63636360585f5d5a5755504c49433d38312a211b150e06000000000000000000000000000000000000020c161f27313a434c555e636f7a838f959fa7b0bac5c4bcb8b0aba8abb0b8c0c7bdb4aba29c91877d716b625950463d352b23191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f49545d636667676767676767676765635c534940372d22180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e48535c6265696969696969696969696966645d544a3f34291e12070000000000000000050c12161e252b30363b3f42484c4d4f5557595b5d5f6061625f63635f6261605f5d5a5856514d4c48423e3a352e26221d170f07010000000000000000000000040f1a26313b465059606363636363636363636363636363605850463b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a93939393939393939393939393939393939393939392929791908e8c8a8885827e7b76716d67635e57534a464038322a241c110b050000000000000000000000000000000c18232f3a45515c6770757a7a7a7a7a7a7a7a7a7a7a7a7a7772695c5349393027160d040000000a151f28343f4a5560696f797a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392d22160b0006121d29343f4b56606a6f707070707070707070707070707070707070707070707070706f6f6a6c696663605958534b48413a302b251e170f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121921272f363b41484b5156585a616366696b6c6d696e6f6e696d6b696663605958534c48423a302b251e160e06000000000000000000000000000000000000050e172129333c454a556069707c859097a0abb6bbc5c8c1bab6b4b6bac1c8bfb6ada49b928b7f746d635b524840362d251b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d59636d71727272727272727272716d635a51473c31271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c707575757575757575757575726d64594e42372b20140900000000000000070f161c21272f353b3f464a4c525759585f636567696a6c6d6d686e6e696e6d6c6a686664615a5957524b49453e36312d2720181109020000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f6e6960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f87878787878787878787878787878787878787878787878686858482817f7c7a77736f6a66635d57544e47433c363028221a140701000000000000000000000000000000000a16212c37424d576067696e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594b43392820170500000000040f1b26313c46505960636d6e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090004101b26313c465059606364646464646464646464646464646464646464646464646464646360595e5b5856504c48423d383129211c150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a222a31383f464a52575a6164686a6f72747678797a7a7a7a79787774726f6965635c57524a453b352f271e160e05000000000000000000000000000000000000061019232b313b465059626b717d87919ca2abb4bdc7cac5c1bfc1c5cac3b9afa69d948d81786e635d544a42382f261d140a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66717e7e7e7e7e7e7e7e7e7e7d716a61564b41372d23180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c28333e48535c65707c80808080808080808080807e72665b4f43382c2115090000000000000810171f262c30373f454a5055575b626468696e70737576777879797a7a7a7978777674726f6a6964625b57544e47433c373028221a120b0200000000000000000006121d2935404c57636f7a7a7a7a7a7a7a7a7a7a7a7a7a796e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7a7a78777573716e686763615a58534b49453e36312c261f17110a03000000000000000000000000000000000008131e28333d464f575c5e63636363636363636363636363605e5951493b322918100600000000010c17222c36404950555762636363636363636363636363635d5b564e453c32271c110600010c17222d3740495056585959595959595959595959595959595959595959595959595958585650524f4c4a46403e39322e282119120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a222b323a424850555b61646a6f73787b7e8082838585868686858482807d7a75716c64625b554a453f372f271e150b0100000000000000000000000000000000000008121b222c364048525b636d747f8b929ba4adb7c2cdcfcccbcccfcbc0b5a99f958f837a6f685e544c443a31281f160c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515c68747f898989898989898989857a6f635a51473c31271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e171f2a35414c57626c76828c8c8c8c8c8c8c8c8c8c877c7065594e42362b1f1408000000000007101820272f363b43484f55596063676b7073777a7c7e808283848585858685858483817f7d7b7874706c66635e57534b464039322a231b120b0200000000000000000d1925303c47535f6a76818686868686868686868686867f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a6f70707070707070707070707070707070707070707070706f6f6e686b6a6865635f585856514d49433e3a352e26221c160f0701000000000000000000000000000000000000040e19232d363f464d51525757575757575757575757575755534f4941382b22190800000000000008121c26303840464a4c565757575757575757575757575751504c453e352c22180d03000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b464744403f3c36332f29231e1811070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b333b434a525860636b70767b7f8386898c8d8f9091979196918f8e8c8985817c76706b655e554f483f372e251b11070000000000000000000000000000000000000208121c262f38424a545d636e78818d949da8b3bfcad5d7d6d7cbc0b5aba29c90857c706a60574e453c332a21170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c58636f7a8590959595959595958b80746a61564b41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27323d48525b65707c889297979797979797978e82766c62574c41352a1e130700000000060f17202930383f464a53585f63696e72777b7f8285888a8c8d8e90909196979190908e8d8b898683807c77726e68635c565049423b332b231b120901000000000000000d1925303c47535f6a76818d929292929292929292928b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c465059606364646464646464646464646464646464646464646464646463635f585e5c5957554f4c4b47413f3a332f2b251e16120c0600000000000000000000000000000000000000000009131d262e363d4245474b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281a1209000000000000030c161f2830363c3f404b4b4b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c1208000000030d17202830373c3f404242424242424242424242424242424242424242424242424141403f3c37383534312c26241f18140e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b434c535b62696e747b81868b8f919797999b9c9ca09da09c9b999796908d88827c736e635f584f473f352b21170f06000000000000000000000000000000000000020c161f28313a4349545e686f7a838f9ba6b2bdc9d5e0e2d4c8bdb2a69c92897e726c625950473e352c2319110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a74808b969fa1a1a1a69c90857b6f645a51473d32261d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37404c57626b76818d99a2a3a3a3a3a39c93887d71655c53483e33281c1106000000030c161f283039414850555c63686e737a7e82878a8e91969597999a9b9c9ca0a09c9c9b9a999797918f8b87837e78716d636059524b433c332b23191107000000000000000d1925303c47535f6a76818d999d9d9d9d9d9d9d9d978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000010c17222d3740495056585959595959595959595959595959595959595959595958585757544f52504e4c4a4541403c37342f2724201b140d080300000000000000000000000000000000000000000000030c151e262d33373a3b404040404040404040404040403d3c39352f2820180a0100000000000000060f171f262c3134353f404040404040404040404040403a3936322c251d150c0200000000060f1820272d31343536363636363636363636363636363636363636363636363636353534312c2d292826221d19150f09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f27313a434c535c636b707980868d91969a9ca1a8a4a6a7a8aab0aaa8a7a5a69f9c98928d867f756e685f584f453b30281f160c02000000000000000000000000000000000000060f17212a2f3a454e57606a717d8994a0abb7c3cedadfd3c7bcb0a5998d82766d645b524940362e251b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059636f7b85909ca7b0acaa9f968c80756b61564b40372c22170b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a64707c86919ca8afafafada49a8e82776d63584b42392e24190e0300000008121c2630384149515960636d71797f848a8e9296999c9fa7a3a4a6a7a7a8aaaba8a8a7a6a4a8a19c9a97938e89837d756f6a625b534c433c332a21170f050000000000000d1925303c47535f6a76818d99a4a9a9a9a9a9a9a2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4c4b4945474542403e3b3534312d2725201916110b0400000000000000000000000000000000000000000000000000050e151d23282c2f2f3434343434343434343434343432312e2a251f181007000000000000000000070f161c2226282934343434343434343434343434342e2d2b27221c150d04000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29282622211e1d1b17120d0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38414a535c636c717c838c91969ca0a7a8abb1b0b2b3b3b5bab5b3b2b1afaaa8a29c96918a81796e685f544a44382f261c120800000000000000000000000000000000000007111b252f37414a545d636e79838f9aa6b1bdc9d4e0e2d6cbbfb4a89c91877d716a61574e453a2f2820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c37404b56616a75808c97a0aab5afa69c91857b6f645950463c31251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616b75818c97a0abb6bab3a89d93897d72665c53493b32291f150a000000010c17222c364049515a61696e757d838a90949a9ca3a5a8aaafafb0b1b2b3b3b5b5b4b3b2b1b0b1aba8a6a39c9a938f88817a706c635c534c433a31271f160c0200000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f4042424242424242424242424242424242424242424242414140403e3a3539373433302b2926221d1a150e0b0601000000000000000000000000000000000000000000000000000000050c13191e21232429292929292929292929292929262623201b150f070000000000000000000000060c12171b1d1d28292929292929292929292929292322201c18120c040000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1b171312110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c363f48525b636c717d858f939c9fa7aab0b4b6babcbdbfbfc1c4c0bfbebcb9b5b3aba69f9c918d81796e635d544840362c21170c0100000000000000000000000000000000061019212b353f48515a646d75808c939da7b3bec9d5e1dfd7ccc1b6aba09790847b6f685e5449433930271d13080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26313c47515a646f7b86919ca8b3b5aa9f968c80756a60564b3f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a646f7b85919ca7b0bab7ada49a8f83796e63574b43392922190f05000000040f1b26313c465059616a6f7980878f949b9ea5a7acb1b3b5b9babcbdbebfbfc0c1bfbfbebdbbbab6b4b2aca7a49d9a918d837c716d635d534b42382f261c120700000000000d1925303c47535f6a76818d99a4b0bbc0c0b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820272d313435363636363636363636363636363636363636363636363635353433302b2e2b292825211d1b18130d0b030000000000000000000000000000000000000000000000000000000000000003090e131618181d1d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b050000000000000000000000000003080c0f11121c1d1d1d1d1d1d1d1d1d1d1d1d1d171615110d08020000000000000000000003080c10121213131313131313131313131313131313131313131313131313131211100c080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58616b717d8590959da3aaafb5babfc1c1bfbdbab8b7b7b8babebfc2c0bbb7afaaa19b928c80756d645950463b31261a0f04000000000000000000000000000000040d162029303b454f58616b727e89909aa3acb6c1ccd6d6d3d4cfc5bab0a79e948e82786e635c534940372d221a1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18222d37414b56616b76818d99a4adb7afa69c90857a6f63584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000020c151d29343f4b56606a74808c969faab8c1b4a89e94897e72685e54493e33271c11080000000006111d28343f4a5560696f7b828c91979da4a9aeb2b6bcbfc0c4c3bfbebcbbbabababbbcbec0c3c5c1bfbcb6b2ada8a19b948f857d716d635b52483f362c21170e04000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2929282520221f1d1c1a1611100d0803000000000000000000000000000000000000000000000000000000000000000000000004080a0c0d111111111111111111111111110f0e0d0a0601000000000000000000000000000000000104060611111111111111111111111111110c0b09060300000000000000000000000000000104060708080808080808080808080808080808080808080808080808070606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f69707b8590959fa6acb5b9c0c3c0bab5b4b1aeadacabacaeb2b3b7bdc4c0b9b5aba29a91897e726960554a3f34281e140a0000000000000000000000000000010b151e263139414a555f686f7b85909ca1aab4bcc6cecbcac8c9cbcac1b8aea59c928b7f746c635a51473c312a22180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27323d47515a65717d88939da8b3b5a99f958a7f73685f544a3e33281f140a0000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313b465059636f7a85909ca7afb9b8aea59b8f84796e63574e453a2f24190e010000000006121d2935404c57636f7a848e939ca1a8adb4b8bec1c4c1bfbcb8b4b3b1afafaeaeafb0b3b4b8bfc0c4c6c1bdb7b3aba49d9690867d716b625950463b30281e1409000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1c1a16111412110f0b0704020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e79838e959ea6afb6bdc4bfb9b4b0aba8a5a3a1a0a0a1a2a6a8adb5bac0c4bbb2aaa19b90847a6f63574c42382e23190e030000000000000000000000000007111b252e37414a545d636e79828e959ea9b1bac4c8c3bfbebcbdc0c5c8beb5aba29c91867d716a60564b453b32281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414d58636d78838f9ba6afb9afa69b8f84796e63574b42382e24190b010000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959fa9b7c0b4a99e958a7f73685f55473e352b20160b000000000006111d28343f4a55606975808c939da6afb8bdc2c4c0bab5b4b1aea9a7a5a4a3a2a3a4a5a7a9aeb3b5bac0c7c6c1bbb5ada69f9690857c706960554a41382e23180d030000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b03050606060503000000000000000000000000000000000000000000000000000000000000000000000003080c1012121313131313131313131313131313131313131313131313121211110e0b0708060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060a0d0e0e0d0c0808060300000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b0907030000000000000000000000000000020507070d0d0d0d0d0d0d0a09080501000000000000000000000000000000000000000007121e2935414c58636f7b838d929aa1aab0b7bcb6afa9a7a09c9a9795949495979b9da4aab0b7c0c3bab4a99e948a7f73685b52483d32271c1105000000000000000000000000051018202b353e47515a636d74808b939ca5aeb8c2c6beb8b4b3b1b2b6bcc3c6bcb5aaa09790847a6f635e554b423830261d120801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e27333e49535c67737f8a969faab5b4a89e94897e72665b52483d33251b11070000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a84909ca6afb9b9afa69b90847a6f63584f45362e251b11060000000000040f1b26313c465059636e79838f969faab5bbbfb9b5b0aba8a5a59e9c9a9897979798999c9fa5a8aab0b7bbc5cac5bdb7afa69f958f83796e635b52483d32271d13080000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0f11121212110f0b07080605030000000000000000000000000000000000000000000000000000000000000001040607080808080808080808080808080808080808080808080707060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1011121518191a19171413110e0a050000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000004090d10121318181818181818161513100c070100000000000000000000000000000000000006121d2934404b56616a6f7a818c909ca0a7afb3aba69f9c97918e8c8a89898a8b8f949ca0a7b0bac4c2b8aea59b8f83786b62574c40352a1e13070000000000000000000000040d162029303a454f58616b717d87919ca3acb6bfc9beb6aea9a7a5a7acb3bcc5c4bab0a79e948d81766f655c534940362c221a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a252f39434c58636f7a85909ca8b3b7ada49a8e82776c62574c3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f68737f8a959ea9b6bfb4a99f958b7f74696055483f35261e140b010000000000010c17222c36404a556069707c85909ca2abb4b7afaaa7a09c999695908e8d8c8b8c8d8e9095989ca0a7abb6bac1c9c7bfb7afa69d938b7f746b61574b40372d22170d0100000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2311161a1c1d1e1d1c1a16111411100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d13171b1d1e2124252625231f1f1d19150f0a0500000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c040000000000000000080e14181c1e1e2424242424242421201e1b16110a03000000000000000000000000000000000004101b26313c47515a61696f78808a91979fa6aaa29c95908b8683807e7d7d7e8083899196a0aab5c0c8beb3a89d93877c7064594d42362a1f130800000000000000000000010b141e2630394149545f686f7b849097a1abb3bcc6c1b8aea59e9c999ca2acb5bec8c0b7aea59b928a7f736c625950463c312a22170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152028343f4a56606a75818d98a5aeb8b2a79c93877c7064584f453a30251a0e03000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba5aeb8b9afa79c90857a6f63595046372f25160d040000000000000008121c26303b465059626c737e8a919ba4adaba69f9c97918e8a87848381808080818284888c91969ba2abb1b8c1cac7bfb6ada49c91857b70645a51473c31261b100400000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2322212528292929282521221f1d1c1916110b09030000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0e0e1111111111111111111111110d0d0b080400000000000000000005090c0e0e1111111111111111111111110d0d0b080400000000000000000000000000000000000000000000000000000000000000060c12171d222628292d2f3131302e2b2a28241f19150f090100000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d040000000000000911181e2327292a2f2f2f2f2f2f2f2d2c2a26211a130c0300000000000000000000000000000000020d18222d374149515960686e747f8690959da19a928e857f7b77747372717274787e86919ca8b3bfcbc2b7ada4958a7e73675c5044392d22160a0000000000000000000006111b252e364149535c636e78828e959ea8b1bac4c5bab1a89e95908e929ca5aeb7c0c8beb5aba29c91867c706a60564a453b32281f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505966717d88959ea9b4b6aca3978c8074685f54493e33281d120800000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68727e8a949ea8b6beb5aa9f968c80746a6056484036271e15050000000000000000030c17212c363f48525b646e76818d949da7a29b96908c86827e7b7977757574747576797c80868d919ca1a8b1bac5d0c6bdb5aa9f968c80756a60564b3f34291d120800000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2a2e2b303334353433302b2e2b292724201b18130d0803000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101417191a1d1d1d1d1d1d1d1d1d1d1d1d191816130f09030000000000050b101417191a1d1d1d1d1d1d1d1d1d1d1d1d191816130f0a0400000000000000000000000000000000000000000000000000000000070f161c21272c313435383b3c3d3c3a3636332f29241f19120a030000000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c020000000008111921282e3235363b3b3b3b3b3b3b383735302b241c1309000000000000000000000000000000000008131d273039414950585f636e737d858f949a918c827b746f6a6967666667686e74808b97a3aebac5c7baaea3978c8075695d52463b2f23180c000000000000000000060f18202b353e47515a636d747f8b929ca5aeb8c1c6bfb6aba1979084828e949ea7b0bac4c5bbb5aaa0968f837a6f635e554b42382f261c120801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404b57636e7984909ba7b3bcb2a79b9084796e63574b40362c22170c01000000000000000000000000000000000000000000000000000000000000000000000009111d2934404b57636e79838f9ba5aeb8bab0a79c91857b6f64595046382f26160e0500000000000000000007121c262f38424b555e636f7a838f969f9c918d85807b7773706b6b6a6969696a686e71757b818b9197a1abb6bbc6cfc4b9afa69c90857a6f63584c41362c21170c01000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a353639353b3e4040403e3b35393634332f2b25221d17120d0600000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b04000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1f2325262929292929292929292929292424211e19130d05000000070e151a1f2325262929292929292929292929292524221e19140d0600000000000000000000000000000000000000000000000000000810171f262c31373c3f4044474848474542413e39332f29221a140c040000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c1208000000040e18212931383d4041474747474747474443403b342c2419110800000000000000000000000000000000030d172029303840474f545e656d717c848e928c80796f6b64615a5b5b5a5b5d66717d8994a0abb7c3c7bbb0a4988d81766a5e53473c3024190d0000000000000000030d1720282f3a454e57616a717d86919ca3acb5bec9bfb6aca39c91877e7a849097a0aab5bcc6c4bab0a79d948d81766e645b524840362c221911060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d28333e4a545f6875808c98a4adb7b4a99e94887d71665950463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000008121d28333e49535c66727d89939da8b5beb5aba0978c81756a6156494037281f160600000000000000000000020c161f27323a444a56606a707c8691969089817b75706b6764625b5e5d5d5d585f63656b70767f87919ca2abb6bec8c9c0b5aa9f968a7e73675950463b31261a0f04000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453d40414547454a4c4c4b4a45484542403e3a35312d27221c160f070200000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d0400000000000000000000000000000000000000000000000000000000000000000000000000070f171e252a2e3031343434343434343434343434302f2d29231d160e0500070f171e252a2e3031343434343434343434343434302f2d29241d160e0600000000000000000000000000000000000000000000000008101920282f363b40464b4c4f52535453514e4c48423e39322b241c140c040000000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d03000009141e28313a41484b4d52525252525252504e4a443d342a21180e0400000000000000000000000000000000071018202830373e4549555d636c707b828c81786e68615a56515055575b6269727e8a95a1acb8c4c7bcb0a4998d82766a5f53483c3125190e000000000000000008131d2730394049545e686f7b849097a0abb3bcc6c3b9afa69c938c8075717d86919ca2acb5bec8c0b7ada49b918a7e736c625950463b312a21170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5865717c88949ea8b4b8aea5988d81766a60564a3f34281d1107000000000000000000000000000000000000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4adb7bfb4a89c91867c70645a5147393027170f060000000000000000000000050f17212a313c465059626c737f8a90857e766f6b64615b595752535251524f54575b61646f747f8a919ba5aeb8c3cec3b9afa6998e82766960554a3f34281d1106000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5145484c4d50534f55575757544f53514e4b49453e3c37312c261f171207010000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02000000000000000000000000000000000000000000000000000000000000000000000000081720272e34393c3d4040404040404040404040403b3a38332d261e16060008171f272e34393c3d4040404040404040404040403c3b38332d261e16060000000000000000000000000000000000000000000000060f182029313840464a5056585b5e5f605f5d5958534c49433b342d241d140a020000000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c120700020d18232e38414a5257585e5e5e5e5e5e5e5b59544d443a31281e140900000000000000000000000000000000000810171f262e353a454c535b626a6f79807a6f685f58555759596063666c7079838f9aa6b1bdc9c7bbafa4988d81756a5e53473b3024190d0000000000000007111a222d374049535c636e78828e949ea7b0bac3c4bdb4a99f958e82796e6c747f8b929ca5aeb8c1c7bdb5aba29c90857c706960554a443a32271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35404b57636e79848f9ba7b2beb3a89c90857a6f63584c40352b20160b00000000000000000000000000000000000000000000000000000000000000000009141e28333e48535c65717d88939ca7b4bdb6aba2988d81766b62574a4137282016070000000000000000000000000007111a222c364049535c656f7681847c726e64615a57524d4c4847464646454a4b52575f656f76818d959ea9b4c0c9c9bfb3a89c91857a6f63574c4035291d1206000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d514b5257595c5f585f6363635f585f5c5957544e4b47413c363028221b110b04000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000000000000000000000000000000000000000000000710182730383e4447484b4b4b4b4b4b4b4b4b4b4b4b4746423d362f26170e0710182730383e4447484b4b4b4b4b4b4b4b4b4b4b4b4746433d372f26170e05000000000000000000000000000000000000000000030d17202831394148505559606366696b6b6a6865625c58534b453d352d241b12060000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090005101c27323d48525b61646969696969696967645d544a42382e23180f060000000000000000000000000000000000070f161e252b303c434b525a61696e756f6a6058585f636568696f72767c828e939da8b3becac6baaea3978c8074695d52463a2f23180c000000000000060f17222a313c465059636c737f8b929ca5aeb8c0c7bdb4aaa19c90857c7069636e78828e959ea7b0bac5c5bbb5aa9f968f837a6f635d544b42382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c27333e49545e6875808c98a7afb9b5aa9f96897e7266584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000030e19232e38414c57626c76828e99a3acb6bdb2a79c92877c70655b5248393127180f06000000000000000000000000000108121d263038424b555e636f7b7b706c645d57514b4a4c4d4f4f50504f4e4c4b484b565e636f7a84909ca7afb9c4ccc0b5aaa096887c71655a4e42372b201408000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d54575b6264686a6c686e6f6e686c6a6865635e5756514a464038332b201b150d060000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d03000000000000000000000000000000000000000000000000000000000000000000030d1720293840484e535457575757575757575757575753514d473f36271e150d1720293840484e525457575757575757575757575753514d473f37271f160c02000000000000000000000000000000000000000008131d273039414a515960636a6f727576777674706c65635c554d453d352b23160d040000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b0007121e2935404b57616b7075757575757575726e645b52483d322820170d030000000000000000000000000000000000060d151b202b333a424951596063696360616367686e7173767a7e82878e939ca3acb7c1ccc2b7ada4968a7e73675c5045392d22160b0000000000030d161f28323b424b56606a717d86919ca2abb5bec8bfb6ada49a91897e726b625e686f7b849097a0abb6bcc6c4b9afa69d938c81756e645b52483f362c211911060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e5766727d89969faab5b9afa6988d8175685f54493e33281c11050000000000000000000000000000000000000000000000000000000000000005111c27323d48525b65707c88929ca7b3bcb6aca3998e82766c62574a423829201707000000000000000000000000000000030d161f28323b454b56616a6f6f6b625b544c4d4f5557595a5b5c5c5b5a5856514f4b556069747f8b969faab5c0ccc4bab0a7968a7f73685c5045392e22170b000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7468585f63666b70737678797a7a7a79787673706e6863615a555049433b302b251e160d050000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c110600000000000000000000000000000000000000000000000000000000000000000009131d2731394851585e606363636363636363636363635e5c574f47372f251c131d2730394851585e606363636363636363636363635e5d575047382f261c120700000000000000000000000000000000000000010d17222d374049515a61696f747a7e818282817f7c77716c655e554e453c33261e150b0100000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c0007131e2a36414d5864707b808181818181817e726b62574c443930271d1308000000000000000000000000000000000000040b111b232a323941485055575c63656a6f73767a7c7f8285898e91979ca3acb4bdc6c9c1b4a89e94877c7064594d41362a1f1308000000000008121c263038424b555e636f7a848f96a0aab3bbc5c3b9afa69d938c80756e645b57616a717d87919ca3acb6bfc8bfb7ada49b91897e726b625850463b302921170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35404c57636f7a85919ca8b3beb3a79c9084796e63574b4034291d13080000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b76818d99a2abb6beb2a79c93887d71655b52483a312819100700000000000000000000000000000000060f18222a313c47515a616364615a52525759585f636466676767676564615a5a575459636f7a85919ca8b3bfcbcabbafa3988c81756a5e52473b3024180d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746863686e72777b7f8183858586858583817f7c79746f6a636059534c453a352e261e160d040000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b2014090000000000000000000000000000000000000000000000000000000000000000020d18232d37414a5861686b6e6e6e6e6e6e6e6e6e6e6e6e6a676057483f352b2118232d37414a5861686b6e6e6e6e6e6e6e6e6e6e6e6e6a676057483f362c21170c0100000000000000000000000000000000000004101b26313c47515a616b6f7a7f85898c8d8e8d8b88827d736e655e554c43372e251b110700000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c0006111d2934404b57636e79838c8c8c8c8c8c867c70645d544940372d22160e050000000000000000000000000000000000030d161f28303840484f555c63656d71767b7e8285888b8e9196999ca1a8acb3bcc4cac1b8aea59b8f84786b62574c40352a1e12070000000007111a222c364049535c656e76818d949ea7b0bac3c5bdb5aa9f968f83796e635d54515a636d74808b939ca5aeb8c3c7bdb4aaa19c90857c706960554a443a31271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606977828e99a5b1bcb4a99e95887c71655a4e42372d22170c01000000000000000000000000000000000000000000000000000000000006101b27323d47515a64707c86919ca8b4bcb7ada49a8e82776d63584b42392a21180800000000000000000000000000000000000007121a222d374149515658585754595b626468696e707172737372716f6a6a66635f58606977828e9aa5b1bcc8c8bcb0a5998e82776b5f54483d31251a0e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74686d71797e83878a8d8f90969196908f8d8b87847f7b746f69635c5549453e372e261e140b0100000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a6871777a7a7a7a7a7a7a7a7a7a7a7a757067584f453b30251b26313c47515a6871777a7a7a7a7a7a7a7a7a7a7a7a7670675850463b30251a0f0400000000000000000000000000000000000006121d29343f4b56606a6f7b828b90959899999997928e867f736e655c53473e352b20160b00000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c0005101c27333e49545e68727e8994989898968e82766e645950463c31271e150c020000000000000000000000000000000008121d263038404950585f636c71777d82868a8e909696999c9fa7a8abb1b8bcc4c9c4bab1a89e958a7f73685b52483d32271c1105000000060f17212a313c465059626c737f8a929ba4adb7c0c7bdb4aba29c90857c706960554d4a535d636e79828e959ea9b4bac4c5bbb5aa9f968f83796e635d544a41372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b46505968737f8a96a6afb9b8aea5978b8074695950463c31261b100400000000000000000000000000000000000000000000000000000000020c161d2934404b56616b75818c97a0abb6beb3a89d93897d72665c53493b32291911080000000000000000000000000000000000000108131d27303941474b4c53585d64666b7074777a7b7d7e7e7e7e7d7b7875726e68635f68747f8b96a2aeb9c5c9bdb2a69b8f83786c6155493e32271b10000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746e757d83898e9396999b9c9fa69f9c9b9996948f8b85807a716d655f544f473e362e251b110601000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828585858585858585858585858175695f554a3f33281d2934404b56616a778285858585858585858585858581766960554a3f33281d1207000000000000000000000000000000000007121d29343f49545d636f7a838e939c9fa6a5a5a4a39c97918a7f736d63584f453a30251a0e03000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c00030e19242f3a454e57636e79838f9ba5a69c92897e726a60564b43372f251b1107000000000000000000000000000000060f17222c364049505960696e747d82888e9197999c9fa6a5a8aaafb4b6bac1c9c7c0b9b5aba19790847a6f63574c42382e23190e030000020c161f28323a424a556069707c86919ca2abb5bec8c0b7ada49b918a7e726c62595046434a555f686f7b85909ca1aab4bdc7c3b9afa69d938c80756d645b52483f352b21161006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36424d5964707c87959fa9b4bdb2a69a8f83786a60564b3f34291d12060000000000000000000000000000000000000000000000000000000008121c26313c47515a646f7b85919ca7b0bab7ada49a8f83796e63574b433929221909000000000000000000000000000000000000000710192129313941484f555c62656d72777c7f82858789898a8a89888684817d79736e6966727e8995a0acb7c3cabeb3a79b9084796d61564a3f33271c10000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f747980888f939a9ca3a4a6a8aaafaaa8a6a4a49d9b96908b847d746f635f584f473e352b201a1106000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86919191919191919191919190857a6e63574c40352b212a35414c58646f7b86919191919191919191919190857a6e63574c40362c21160c01000000000000000000000000000000000814202b36424d58636d76828e949ca3a9afb0b1b0aca7a09c91867d71685f54493e33281c1105000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c00000b16202b353e4a545f68737e8a949ea9a29b90847a6f635c53483f352b21160e0400000000000000000000000000020c161f28313c46505960696f7980868e93999ca0a7a8aaafb0b3b5b9bfc1c5c6c1bcb7afaaa09c91877d716960554a3f32281e140a00000008121c262f38424b555e636f7a838f969faab2b4b4b4b9afa79d948d81766e645b52483f3b454f58616b727e89919aa3acb6b4b4b4b6aca39a91897e726b61584f453b302a20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d2934404b57636e7985909ca7b3bfb4a89c91867a6f63584c4035291e1207000000000000000000000000000000000000000000000000000000010c17212c363f4b56606a74808c969faab8c1b3a89d94897e72685e54493e33271c1108000000000000000000000000000000000000060f172129313a414951585f636c70777d82878b8e919694959695959494908c89847f79716d717d88949fabb7c2cabfb3a79c9085796d62564b3f33281c11000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7a828c909a9da4a7acb0b2b3b5b9b5b3b2b0ada8a69f9c948f877f756e685f574e453a2f2a22160e050000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000005101b26313c47515a67737f8a97a09c9c9c9c9c9c9c9c9f95897d7166584f453b3026313c47515a67737e8a97a09c9c9c9c9c9c9c9c9f95897d7266584f453b30251a0f04000000000000000000000000000000040f1a26313b46505966717d89929ca4acb5b9bcbcbbb7b0aaa0978f83796e63574b4034291d1106000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c000006111b25303b454f58636e7984909ba5a99e958c80756c63584f453b30281e14090000000000000000000000000008121c262f38404a56606a6f7a828b91979ca3a8abb0b3b5b9bcbfc0c4c8c2bfbcb6b2aca69f9c908b80746d635950463b3121180e040000010c17212c364048525b646e76818d949da7afa8a8a8a8a8aa9f968f837a6f635e554b4238353f48515a646d75808c939da6afa8a8a8a8a8aaa19c90857b70695f554a443a30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e6876828e99a5b0bcb6aba097897d71665a4f43352b21160b000000000000000000000000000000000000000000000000000000040f1a26313b465059636f7a85909ca7afb9b8aea59b8f84796e63574e453a2f24190e010000000000000000000000000000000000030d161f28313a414a515a61686e747c83898e93979a9ca0a7a1a1a1a0a59e9b9894908a837d74707c87939eaab6c1cbbfb3a89c9185796e62574b3f34281d11000d1925303c47535f6a76818d99a4b0bbc7c5baaea2978b80828e929aa1a8adb2b6bbbdbfc0c4c0bfbdbbb7b3afaaa49d97918b81786e685e5449443b32271e150c0200000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e9aa7b0a8a8a8a8a8a8afa6988c8175685f554a3e332934404b56616a77828e99a7b0a8a8a8a8a8a8afa6988d8176695f554a3f33281c120700000000000000000000000000000006111d28343f4a55606976828e99a2abb4bcc3c9c8c8c0bab0a79d93897d71665a4f43382c201509000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c0000010b16212b353f4a555f69737f8a959ea9a59c91877d71685f554a41382e23180f060000000000000000000000010c17212c364048545e636f7a828e929ca0a7acb4b5babfc0c3c9c7c2bfbeb8b4b3aca7a39c96918a80746f665d544840362c211108000000040f1a26313b465059626c737e8a919ba49c9c9c9c9c9c9ca29c91867c706960554d443a322f37414a545d636e79838f959f9c9c9c9c9c9c9c9c9f958e82796e635d54493f34291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e576874808b97a8b1babab0a7978b807469584f453b30251a0f03000000000000000000000000000000000000000000000000000006111d28343f4a556069747f8b959fa9b7c0b4a99e958a7f73685f54473e352b20160b00000000000000000000000000000000000008121c263038414a515a616a6f7980868e939a9ca3a5a8aab0acadadacaea9a7a59e9b948f8780757c87939eaab5c1cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cabfb3a79c90858e939ca3aab3b7bdc1c0bfc0c4c9c6c9c9c7c2bfb9b5ada7a09c918c81786e635e554b42372f251b110700000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86919ca8b4b4b4b4b4b4b4b3a79c9084796e63574c40352b35414c58636f7b86919ca8b4b4b4b4b4b4b4b3a79c90857a6e63574c40352b21160b00000000000000000000000000000006121d2935404c57636f7a85919ca8b3bbc5ced3d3d0cac0b8ada4988c8175695e52473b2f24180d000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000007111b25303b454f58636f7a84909ba6aba0978f83796e635b52483d32281f160d0300000000000000000000040f1a26313b465059646e76818d939ca3abb0b8bcc1c4cac4c1bfbcb7b3b2aea9a7a39c9a928e867f746f665f564c44382f261c120100000006111d28343f4a556069707c85909191919191919191919191928a7f736c625950463d342a27313a444a556069707c85909191919191919191919191938c80746d63594d42372b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35434f5a66717d8997a1abb6bcb1a59a8e8277695f554a3f33281c110500000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a84909ca6afb9b9afa69b90847a6e63584f45362e251b11060000000000000000000000000000000000081119222c364049515a616b6f7b828b91979ca3a7acb1b3b5bab8b8b8b8b8b4b2aea8a49d97918b817c87939eaab5c1cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cbc0b4a99f9590959ca3acb3babab7b9b5b3b5b9b7babebfc2c7c9c3bdb8b0aba19b918c80756e645b52483f352b21160d03000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000005101b26313c47515a67737e8a97a0abb5c1bfbfbfbfbfb4a99e95887d7166584f453b313c47515a67737e8a97a0abb5c1bfbfbfbfc0b4a99f95897d7266584f453b30251a0f03000000000000000000000000000008131f2b36424d5965707c87969faab5c0ccd5dde1dad1c8bdb1a69a8e83776c6054493d32261a0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000010b16212c363f4a556069747f8b959fa9a79d938b7f736b61574b443830261d12080000000000000000000006111d28343f4a556069727e8a919ba3acb5bac0c8c7c2c0bab5b3b1ada8a6a59e9b98928e89827c736e665f564e463c33281f160c0200000006121d2935404c57636f7a83858585858585858585858585858581766e655c534940362c242129303b465058626b727e8585858585858585858585858585877d71665a4f43382c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111e2935404c58636f7a86919ca8b4bfb3a89c90857a6e63574c4034291d12060000000000000000000000000000000000000000000000000005111c28333e4a555f68737f8a959ea9b6bfb4a99f958b7f74696055473f35261e140b0100000000000000000000000000000000040e182129313c465059616b6f7b838e929ca0a7acb2b6bcbfc0c4c9c4c4c7c2bfbeb8b4ada8a19c918c818d98a4b0bbc7cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cec3b9afa69f9c9fa6acb3b4b2afabafaaa8aaafabafb2b4b7bec3c8c8c1bab6aaa19a908a7e736c62584f453b30271d1308000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e99a7b0bac4cfcbcbcec3b8aea5988c8175685f544a3e34404b56616a77828e99a7b0bac4cfcbcbcec3b9afa6988d8175695f554a3f33281c110700000000000000000000000000000914202c37434e5a66717d8894a7afb9c4cfdce6eae1d5c9beb2a79b8f84786d61554a3e33271b10000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000007121c26313b465059636f7a85909ca6ada49c90857b70645d544940362c22160e0500000000000000000006121d2935404c57636f7a84909ca2abb3bcc4cac5beb8b4b0aaa8a5a49d9b9795908c88827d77706b655e564f463e352c23170f060000000006111d28343f4a5560696f787a7a7a7a7a7a7a7a7a7a7a7a7a7a7671675e554b423830261c19212c363f48525b646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a716d63594d42372b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a78848f9ba6b2beb5aa9f96877c7065594e42362b1f1408000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba5aeb8b9afa69c90857a6f63595046372e25160d04000000000000000000000000000000000009141e28313a414a5560696f7b838f949ca3abb0b8bcc1c6cbc8c3bfbebcbabababbbdbdb8b1aba19b918d919ba6b1bcc8cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d3c8bfb6afa9a7a9afb4aea9a7a3a0a69f9c9fa6a0a3a7a8adb4b8bec6cac5bbb2aaa19c91867c70685f554a40372d22170c020000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000007121e2a35414c58636f7b86919ca8b4bfcad4deddd2c8beb3a79c9084796e63574b4035414c58636f7b86919ca8b3bfcad4deddd3c8bfb3a79c90857a6e63574c40352b21160b00000000000000000000000000000914202b37434e5a65717d8894a5aeb8c2cdd9e3e7dfd5c9bdb2a69b8f83786c61554a3e32271b10000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000020c17212c36404a56606a74808b969faaaa9f968d82766d645950463c31271e150b0100000000000000040f1b26313c46505967737e8a959ea9b2bbc4cfc3bbb5aea9a7a09c9a96948f8c8884817c77726d64625b554d463e362e251b13070000000000040f1a26313b46505960636c6e6e6e6e6e6e6e6e6e6e6e6e6e6e6a6760574e453b32281f16121c262f38424a545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e66635d54493f34291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c4650596b76828d99a5b0bcb9afa695897e72675b4f44382d21120700000000000000000000000000000000000000000000000005101c27333e49545e68727e8a949ea8b6beb5aa9f968b80746a6056483f36271e15050000000000000000000000000000000000020d18232e38414a555e636f7a838f949da4acb5bac0c8cac4c1beb8b4b3b0afaeaeb0b1b4b6bab6aaa29b989ba2abb5c0cbcbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2cfc7bfb9b4b3b4aea9a59e9b9894929690969294979b9ea4a9aeb6bdc4cfc2bab5aa9f968f83796e635950463c31261c12070000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a97a0abb5c1ccdae4e2d6cbbfb4a99e95887d7165584f453c47515a67737e8a97a0aab5c1ccdae4e2d6cbc0b4a99f95897d7166584f453b30251a0f030000000000000000000000000007131f2a36414d5964707c87959ea9b4c0c9d3dadcd6d0c5bab1a8998e82776b6054483d31261a0e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000008121c26313c465059636f7b85909ca6afa69c92897e726a60564a43372e251b11070000000000000006111d28343f4b56606a77838f9aa5aeb8c3cbc6bbb3aba59e9b97918e8a8783807d7975716c66645d57524a453d362e251d150b020000000000010c17212c3640485055576163636363636363636363636363635f5d5750473d352a22170f0c161f27313a444d54595b6363636363636363636363636363625a59544c443a30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d3746525d6974808c97a3aebabaaea3978b8074695d5146362c21170c01000000000000000000000000000000000000000000000009111d2934404b57636e79838f9ba5aeb8bab0a79c91857b6f64595046382f26160e05000000000000000000000000000000000005101c27323d48525b656e76818d939da4adb4bcc4cac8c0bab5b3aea9a7a4a3a2a3a4a6a8abb1b4b2aba6a4a6abb2bbc5cfcbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d7cfc8c3bcb4ada59f9c94908c898786858687888c8f949c9ea5acb4bcc4cfc4b9afa79d938a7f736a60564b3f362c21160c0100000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e99a7b0bac4cfdae1e0d9cec3b8aea5988c8075685f54493f4b56616a76828e99a7b0bac4cfdae0e1d9cec3b9afa6988c8175685f554a3e33281c11070000000000000000000000000006111d2934404b57636e7884909ba7afb9c4cacfd1cdc6beb6aba1978b7f74685d51453a2e23170b000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000020c17222c36404b56616a74808c969faaaba29b90847a6f635c53473f352b21160e0400000000000006121e2935404c58636f7a86919ca8b4bec8c8beb5aba29c94908a86827f7b7874716e6865635c59544c48423a342d251d150d040000000000000008121c262f3840464a4c55575757575757575757575757575753524e4740372d241a1107050e17212a343d444a4e4f5757575757575757575757575757574f4d49443c332a20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813222d3944505b67737e8a95a1adb8bcb0a4998d82766a5850463b30251a0f040000000000000000000000000000000000000000000008121d28333e49535c66727d89939da8b5beb5aba0978c80756a6156494037271f160600000000000000000000000000000000000007121e2935404b57616b737f8a929ba4adb5bdc5cfc4bcb7b0aaa8a59e9b99989797989a9ca1a8a8aeb5b1b0b1b5bbc2cbd6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d8cfc6bcb4aca49d95908b84807d7b7a797a7b7d80848a90959da3acb3bcc6c9c0b7aca39c90857a6f63584f453b30251a0f0400000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b4bfcad4d8d5d5d5d2c8beb3a79b9084796e63574b414c58636f7b85919ca8b3bfcad4d5d5d5d8d2c8beb3a79c9084796e63574c40352b21160b0000000000000000000000000005101c27333e49545e6875818c969faab5bac1c4c7c2bdb6aea59c91867c7064594d42362a1f1308000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000007111b252e374048515a646f7b85919ca8b3a99e948c80756c62584f453b30271e13090000000000000915202c37434f5a66717d8997a0abb6c1cdc2b8aea59c928d847f7a7773706b6965635f585a58534c453d38312a241c1507010000000000000000020c161f282f363b3f40494b4b4b4b4b4b4b4b4b4b4b4b4b4b4846433e372f271c140a0100061119242c343a3f43444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332c231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c8894a6afb9beb2a69b8f84786960554a3f33281d1106000000000000000000000000000000000000000000040e181f2b36424d58636d77838e9aa4adb7bfb4a89c91867b70645a5147393027170f05000000000000000000000000000000000006111d28333e49535c64707b85909ca2abb4bdc5cac2bab3aca7a09c9895908d8c8b8c8d8f91979b9ea5abb0b8bfc0c5cbd3d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d3c8bfb6aca39d938f857f7a75716f6e696e6f7175797f848f939ca3acb5bec8c7bdb4a99e958b8074695f554a3f33281c120700000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a97a0abb5c1ccd1cdcac9cacdcbbfb4a99e94887d7165574e46505967737e8a96a0aab5c0cccdcac9cacdd1cbc0b4a99e95887d7166584f453b30251a0f03000000000000000000000000030e19242f3a454e5764707b86919ca1abb0b5b9b8b7b3ada59e948d81766c62574c41352a1e1307000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000b16202b353e47505960686e75818c98a3afaea59c91867c70685f544a41372d23180e0400000000000a16222d3944505c67737e8a95a7b0bac5cbbfb4a99e948d817a736f6a6864625b5a61636b65635c554a453f383129221a110b050000000000000000060f171f262c3134353e40404040404040404040404040403c3b38342e271f160c0400000009131c242a30353738404040404040404040404040404040383734302a231b130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86959fa9b5bfb4a89c91857a6e63574c4034291d120600000000000000000000000000000000000000000009141e28333e48535c65717d88939ca7b4bdb6aba2988d81766b62574a41372820160700000000000000000000000000000000000008131f2a36414c58636c76818d969faab2bbc4cac2bab1aaa39c97918c8884828180808183868a90949ca0a7aeb6bfc7d0d9d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2cec3b9afa69d938f837b736e6966646360636466686e737b838e929ca5aeb8c3cdc3b8aea59b90847a6e63574c40362c21160c01000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e99a7b0bac4cfc7c2bfbdbfc2c7c2b8aea5978c8075685e544b56606a76828e99a7b0bac4c7c2bfbdbfc2c7cec3b8aea5988c8175685f544a3e33281c1107000000000000000000000000000b16202b353e4b57616b737f8b919ca0a7aaafadada8a49d9590847b6f645b52483d33271c1105000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000030e1a25303a454f5860696f787f84909ba7b2b5aba0978f83796e635a51473d32281e140900000000000b16222e3945505c68737f8a96a2adb9cacabeb2a79b90847a6f6963605959575a616a6f77716d655e554f484139322b211b150e060000000000000000070f161c2126282932343434343434343434343434343430302d29241d160e0600000000030b131a2126292c2d3434343434343434343434343434342c2b2925201a130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56616a7985909ca7b3bfb5aba097877b7064594d41362a1f13070000000000000000000000000000000000000000030e19232e38414c57626c77828e99a3acb6bdb2a69c92877c70655b5248393127180f06000000000000000000000000000000000005101b27323d47515a65717c88919ba6afb9c3ccc3bab1aaa19a928e86817c797675747576777b7f848b91979ea5aeb7c0c9d3d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2cbc0b4a99f958f837a6f6b6360585857555758585f636a6f7a828e959ea9b4bcc6c8bfb4a99e95897e7266584f453b30251a0f04000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b3bfcac5bdb7b3b2b3b7bdc5beb2a79b9084796e63574c58636f7a85919ca8b3bfc5bdb7b3b2b3b7bdc5c8beb3a79c9084796e63574b40352b21160b0000000000000000000000000006111b25323d48525b656f75808b91979c9fa6a1a49d9b938f857c706a61564b42382e24190e03000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000005111c28333e49545f686f79818a90949ea9b4bab0a79d938a7f736b61564b41382d23180d02000000000b17222e3a45515c68747f8b96a2aeb9c5c6bbafa4988c81756960595655575d636a6f7a837d736e635f58514a433b302b251e160e050000000000000000060c12171a1d1d2729292929292929292929292929292524221e1a140d06000000000000030a11161b1e202129292929292929292929292929292920201e1a16100a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6c78848f9ba6b2bebab0a794887c71655a4e43372b201409000000000000000000000000000000000000000005111c27323d48525b65707c88929ca7b3bcb6aca3998e82766c62574a42382920170700000000000000000000000000000000000006121d2934404b56616b76818d99a2abb7bfc9c8bcb3aaa19a918c827c75706e686968696a6a6f73797f8690959ea6afb9c4cfd6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cdc2b7ada49c90857b706a615a55504d4c4a4c4d4f555a61696f7b84909ba3acb6c1ccc3b8aea5998d8176695f554a3f33281c1105000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a97a0aab5c1c7bdb4ada8a6a8adb4bdbfb4a99e94887c716559505967727e8a96a0aab5c0bcb4ada8a6a8adb4bdc7bfb4a99e95887d7166584f453b30251a0f03000000000000000000000000010b18232e38414a555e6770757f868d9196959695948f8a837c706c625a51473a32281f140a00000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000004101b26313c47515a636e78818d929b9ea5aeb8c0b8aca39c90857b6f645a51473d32271c1005000000000b16222d3945505c67737f8a96a1adb8c7c7bbb0a4988d81766b63615a6063666d717b838e867f756e69615a534b443b352e271e150b01000000000000000002080c0f11121b1d1d1d1d1d1d1d1d1d1d1d1d1d1d191917140f0a04000000000000000001070c101315151d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d374954606b77838e9aa5b1bdb8aca095897e72665b4f44382c21150a000000000000000000000000000000000000000207121e2935404c57626b76818d99a2abb6beb2a79c93887d71655b52483a312819100700000000000000000000000000000000000007131e2a35414d58646f7b86919ca8b4bbc7cac0b7aca39a918c8079706b65635e575d5d5a6164696e747d8590969faab5bcc5d0cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cabfb3a89d93897e726b625a514a4641403f4041454a5159616a727d89939ca7b3c0cac8beb3a89c9085796e63574c4034291d1206000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e99a7b0bac4c2b7ada49d9b9da4adb7bfb8aea5978c8074695c56606a76828d99a7b0babcb4aca49d9b9da4adb7c2c3b8aea5988c8175685f544a3e33281c11070000000000000000000000000009141e28313a454e5760676f747c8185888a8a8987847f79706b625b524a41372a21180f0500000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000006121d2934404b56616a737f8b929ba2a9aeb5bec8bcb5a99f958c81756b61574b4035291e1106000000000915202c38434f5a66727d8994a4adb7c2cabfb3a89c90857c736f6a6c696f72767d848f93918a81796f6a635c544a453f372e251b110700000000000000000000010406060f11111111111111111111111111110e0d0b0805000000000000000000000000010508090a1111111111111111111111111111110909070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081325303c48535f6a76818d99a4b0bbb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000006101b27323d47515a64707c86919ca8b4bcb7ada49a8e82776d63584b42392a211808000000000000000000000000000000000000040f1a25303b46505868737f8a97a0abb5c1cfc4bab0a79c928c80756e68625b57544e515251565860636d717d86919ca2acb6c0cbcbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7c5bab1a89b8f83796e635b5249413b36343334353b4149515a636d77838e9aa7b0bac4cbc0b5aa9f96887d7165594e42372b201408000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b3bfcabfb3a89d938f939da6afb9beb2a79b8f84786c6258636f7a85919ca8b3bfb6aca39d948f949da8b3bfc8beb3a79b9084796e63574b40352b20160b00000000000000000000000000040e182129353e474f575f656c70767a7d7e7e7d7c78736e69625b524b423931271a11080000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000007121e2935414c58636f7b85909ca2abb4b8bec6cec3b9afa69c91867b6f64584d41352b20160b0000000007131e2a35414d58646f7b87949da8b3bfc9c0b5aa9f9690847f7b7978787a7d828890949d9c918c827b716c645e544f473f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b46525e6975808c98a3afbabaaea3978b8074695d52463a2f23180c000000000000000000000000000000000000020c161d2934404b56616b75818c97a0abb6beb3a89d93897d72665c53493b322919110800000000000000000000000000000000000006111d28333f4a55606977828e9aa7b0bac4ccc1b5aaa0978e82796e635f58524b49454646474b50555d636c727e89929ca7b2bdc6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7c1b6aba1978a7e73685e544a4239302c2928292b3038414a545d66727e8996a0aab5c0ccc3b9afa6968a7f73685c5045392e22160b000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a97a0aab5c1c3b9afa69b8f838f969faab5bfb4a89e94887c70655967727e8a96a0aab5beb3a79d938f838f9ba6b2bdc7bfb4a99e95887d7165584f453a30251a0e0300000000000000000000000000071019252d363f474e565b6264696f71727372706c67635f58524a423b3229201709010000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000b17222e3945515c68737f8a959fa9b3bbc2c8ced3c9bfb5aba0978b7f7468574e453a2f24190e0300000007121e2935404b57616b78838f9ba6afb9c3c3b9afa69e95908b8684838486898e929b9ea5a19b938e847d726e635f584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515d68747f8b96a2aeb9bbafa4988d81756a5e53473b3024190d00000000000000000000000000000000000008121c26313c47515a646f7b85919ca7b0bab7ada49a8f83786d63594c43392a2218090000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b3bfcacbbfb3a89c91867c70685f554f48423e3a35373c3f464a535c646e77828e99a4adb7c1cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bfb4a89c91867b6f63574e453a3128211d1d1d21283139444c57636f7a85919ca8b3bfcbc9bbafa4988c81756a5e52473b3024190d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000006121d29343f4b56616a77828e99a7b0bac4c0b4a99f95897d85909ca8b3bfb7ada4978b807469606a76828d99a7b0babdb1a69a8f837f8b96a4adb7c2c3b8aea5988c8075685f54493e33281c1106000000000000000000000000000009141d262e363e454b52575960636667676664625b57554f48423a322a22181007000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000030e1a26313d48545f6b77828e99a6afb9c3cdd2d8d9cfc4bab0a79a8e8377685e54493e33271c100500000005101c27323d47515a68747f8b969faab5bcc5bfb6aea59e9c9791908f8f9197999ca2a9aeaaa39c9490867e756e685f544a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a1adb9bcb0a4998d82766a5f53483c3125190e0000000000000000000000000000000000010c17212c363f4b56606a74808c969faab8c1b3a89d94897e72675d544a3b33291a1108000000000000000000000000000000000000000814202b37424e5a65717c8896a0aab5c0ccc3b8aea5988c81756b62584f453f37332f2b2d32363b434c545d65707c88939da8b3becbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bdb2a69b8f83786a6156473e352a2118121111172029343f4a55606977838e9aa5b1bdc8c8bcb1a5998e82776b6054483d31261a0e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b3bfcabfb3a79c908579828d99a7b0babeb2a69b8f84786c636f7a85919ca8b3bfb7ada4968b7f7c87949da8b3bfc8beb3a79b9084796e63574b40352b20160b0000000000000000000000000000040c161e262d353a42484c5055575a5b5c5b5957524c4a453f37312a221a110800000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000005101c28333f4a56626d7984909ca7b3bec9d5dce1ded4cabfb3a89c9185796e63574b4034291d1106000000020d18232d38414c58646f7b85909ca3acb5bdc5beb6aea9a8a19c9b9a9b9ca0a7a7abb4b8b3aca59e96918a80796e63574b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3944505c67737e8a96a1adb8bcb0a5998e82766b5f54483d31251a0e0000000000000000000000000000000000040f1a26313b465059636f7a85909ca7afb9b8aea59b8f84796e63574b443a2922190901000000000000000000000000000000000000000a16222d3944505c67737e8a96a7b0bac4cbbfb4a99e95887c71655b52483f352f27242023262c303b444c58626c78838f9aa6b2bdc9bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bbafa4988d81756a5a5147362e251911070607101a26313b4650596975808c97a3afbac6c9beb2a69b8f84786c61554a3e32271b10000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000004101b26313c47515a67737e8a97a0aab5c1c4bab0a7988d81767e8a97a0abb5bfb3a89d94877c7067727e89969faab5bfb3a89d93877c78848f9ba7b2bec9bfb4a99e95887d7165574e453a2f24190e030000000000000000000000000000050e161d252a32383e40464a4c4e50504f4d4c48423f3b352f272119110a0100000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000006111d2834404b57626e7a85919ca8b4bfcbd6e2ece3d7ccc0b5aaa096867a6f63584c4035291e12070000000009141e2934404b56616a747f8b939ca4adb6bac1beb8b4b1aba8a7a6a7a8abb0b2b6bcc2bbb5ada59e948e82796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8a95a1acb8bcb1a59a8e82776b6054483d31261a0f000000000000000000000000000000000006111d28343f4a556069747f8b959fa9b7c0b4a99e958a7f73685f544a3e33281c120900000000000000000000000000000000000000000c18232f3a46525d6974808b97a3aebac9cabeb3a79c9084796e63574b42372f251e1916181c212b333e48535c6974808b97a3aebac5bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc6baaea3978c8074695d5246372f1e14090000010c17222c3645515d68747f8b97a2aeb9c5cabeb3a79b9084796d61564a3f33271c10000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000006121d29343f4b56616a76828e99a7b0bac4c1b5aba097897e727b86919ca8b4bfb7ada4978b80746a76828d99a7afb9bdb2a69b8f837875808c98a6afb9c4c2b8aea5988c8075685e54493e33271c1106000000000000000000000000000000050d141a22282e33363b3f404344444342413d3833302b251e171109010000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000005111d28343f4b56626e7985909ca8b3bfcad6e0e9e2d7cbc0b4a99f95867a6e63574c4035291d12060000000005101b26323c47515a636e79828e949da4abb0b8bdc1c1bab6b4b3b2b2b4b6bac1c1bdb7b3aba49d9490847b6f685f554a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a0acb8bdb1a69a8e83776c6054493d32261a0f00000000000000000000000000000000030f1a25303b454f58636f7a84909ca6afb9b9afa69b90847a6e63584f453b30251a0f0200000000000000000000000000000000000000000d1924303c47535e6a76818d98a4afbbc7c8bcb0a5998e8276685f54493e31271e150e0b0c121a242f39434f5b66727d8994a0acb7c3bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc5b9aea2968b7f74685c51453a2e22170b0000000812222d3945505c67737f8a96a1adb8c4cabfb3a79c9085796e62564b3f34281c11000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000007121e2935414c58636f7b85919ca8b3bfcabfb4a89c91867b6f77828e9aa5b1bcbdb2a69b8f83786f7a85919ca8b3bfb8aea5978b8074717d89969faab5c0c8beb2a79b9084796e63574b40352b20160b000000000000000000000000000000020911181f242a30343738353b3f403f3b353534322d27201b140d05000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000004101b27333e4a55616d78848f9ba6b2bdc7d0d8ddd9d1c8bfb3a79c9085796960554a3f33281d110600000000020d18232d37414a555f686f7b838f939ca0a7adb3b5babcbebebebdbebfbebcbab6b4ada8a29b948f847c706a61584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5a66727d8994a0acb7bdb2a69a8f83786c6055493e32261b0f0000000000000000000000000000000005111c28333e4a555f68737f8a959ea9b6bfb4a99f958b7f74696055473f352b21160b0000000000000000000000000000000000000000000e1925313c48535f6a76828d99a4b0bcc7c6bbafa4988d81756a584f453a3021160e0500020a15202b37424e5965717c88939fabb6c2bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc5b9aea2968b7f74685c51453a2e2213090000000b16222d3945505c67737f8a96a1adb8c4cabfb3a79c9085796e62564b3f34281c11000d1925303c47535f6a76818d99a4b0bbc7c5baaea2978b8074695d51463a2f23120800000000000000000000000000000000000000000000000004101b26313c47515a67737e8a96a0aab5c0c8bdb1a59a8e82776a737f8a96a3acb6bfb3a89d94877c727e89969faab5bfb4a89e94887c706e7a85909ca8b3bfcabfb4a99e94887c7165574e453a2f24190e0300000000000000000000000000020b131a21282e333a3f424347454a4c4a454541403c372f2b251e160f070000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000020d1924303b47535e6a75818d98a3acb7c0c8ced2cec9c1b8aea5998e82766b5950463b30251a0f04000000000009131d27303b454f58616a6f7b838c91979da4a8aab0b1b2b3b4b5b5b3b2b1b1aba8a49d9b928d837c706c625a51483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434f5a66717d8894a0abb7beb2a69b8f84786c61554a3e32271b10000000000000000000000000000000030e19242f3a454e57636e7984909ba5aeb8b9afa69c90857a6f63595046372e251b11070000000000000000000000000000000000000000000e1a25313d48545f6b76828e99a5b0bcc8c6baaea3978c8074695d5246352b20130800000007131f2a36414d5964707b87929eaab5c1bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc6baaea3978c8074695d5246372d22180b0100000817232e3a45515d68747f8b97a2aeb9c5cabeb3a79b9084796d61564a3f33271c10000d1925303c47535f6a76818d99a4b0bbc7c6baafa3988c8075695e5246362c22170c01000305060807060300000000000000000000000000000006121d29343f4b56606a76828e99a7b0bac4c2b7ada4968b7f74686f7b87939da7b3beb7ada4978b7f76828d99a6afb9beb2a79b9084786c6976828d99a5b0bcc6c2b8aea5978c8075685e54493e33271c1005000000000000000000000000010a131b232a32383d44494d4f534f5557554f514c4b47413a352e261f170f0500000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000915212c38434f5b66727d89939da6afb7bfc3c8c3c0b9b0a79e948a7e73675c5044362c21170c010000000000030d16212b353f48515a616b6f7a80878f93999ca0a7a5a6a7a8abaaa8a7a5a8a19c9a948f89817a706b625b524a41372f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a0abb7bdb2a69b8f83786c6155493e32271b0f00000000000000000000000000000005101c27333e49545e68727e8a949ea8b6beb5aa9f968b80746a6056483f36271e150b010000000000000000000000000000000000000000000e1a25313c48545f6b76828e99a5b0bcc7c6baafa3988c8075695e5246372d22180b01000006131f2b36424d5965707c87939faab6c1bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bbafa4988d81756a5a51473c31251b11070607101b26313c4650596975808c97a3afbac6c9beb2a69b8f84786c61554a3e32271b10000d1925303c47535f6a76818d99a4b0bbc7c7bbb0a4988d81766a5950463c31261b0f070b0f11121313110e0a050000000000000000000000000007121e2935414c58636f7b85919ca8b3bfcabfb4a89e94877c70656b77838f9aa6b1bdbdb2a69a8f837a85909ca8b3bfb8aea5978c80756967737e8a96a4adb7c1c8beb2a79b9084796e63574b4034291d150a00000000000000000000000006121a232b333a42484c54595a5e585f635f585c58565149453e362f271f160d04000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000006111d2934404b57636e78838f969fa7aeb4b8b8b9b5afaaa0979084796e63574c4034291d12070000000000000007111b252f37414a515a61696f757d83888d919797999b9c9ca09f9c9b999897918e89837e766f6a625b524b423931271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727d8995a0acb7bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000109111d2934404b57636e79838f9ba5aeb8bab0a79c91857b6f64595046382f26160e05000000000000000000000000000000000000000000000e1925303c47535f6a76818d99a4b0bbc7c7bbb0a4998d81766a5a51473c31251b110906070e161e2c37434e5a66717d8894a0abb7c2bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bdb2a69b8f83786a61564b3e352b2018121112182029343f4a55606977838e9aa5b1bdc8c8bcb1a5998e82776b6054483d31261a0e000d1925303c47535f6a76818d99a4b0bbc7c9bdb2a69a8f83786960554a3f34281e1511161a1c1d1f1e1c19140f08010000000000000000000004101b26313c46505967737e8a96a0aab5c0c9beb2a79b8f84786c6268747f8b96a4adb7beb3a89d938b7f8b969faab5bfb4a99e95887d7165646f7b87939da8b3becabfb4a99e94887c7165594e43392f24190e0300000000000000000000050e17222a333c434b52575d63666a6d696e696c6864615a544e473f382f261e140b010000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000005101c27333e49545e68717d8691979ea5a9aeadafa9a69f9c91877d71695f554a3f33281c110200000000000000020c151e273139414a515960636c71787d8186898b8e8f9091979691908e8c8986827e79726d636059524b423a322920160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5b67727e8995a1acb8bdb1a59a8e83776b6054493d31261a0f000000000000000000000000000008121d28333e49535c66727d89939da8b5beb5aba0978c80756a6156494037271f160600000000000000000000000000000000000000000000000d1824303b47525e6975818c98a3afbbc6c8bdb1a69a8f83776a61564b3f352b2119131111161e27303b46505867737e8a95a1adb8c4bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7bfb4a89c91867b6f63584f453a3029211d1d1d21283139414c57636f7a85919ca8b3bfcbc6bbafa4988c81756a5e52473b3024190d000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a89c91857a6f63574c42372e251e21212528292b2a28241f1811090100000000000000000006121d29343f4b56606a76828e99a7b0bac4c3b9afa6988c8075695b64707c87949da8b3bfb7ada49c9185919ca6afb9beb3a79c9084796e63616b78838f9aa6b2bdc8c2b8aea5978c8075695c53493e33281d1106000000000000000000020c151f27323b434c545b62646d717578797a7977746f6a635e5750483f362e251b11060000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000030e19242f3a454e57636c727e8690959c9ea5a1a69f9c96918a7f736d63584f453b30251a0f040000000000000000050e162029313a414950555c63656d71767b7d80828484858685858482807e7b77726e69645d565049423a322a21181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3944505b67737e8a95a1adb8bcb1a5998e82776b5f54483d31251a0e00000000000000000000000000040e181f2b36424d58636d77838e9aa4adb7bab1a89c91867b70645a5147393027170f0500000000000000000000000000000000000000000000000b17222e3a45515c68747f8b96a2aeb9c8cbbfb4a89c91867b6f63584f453b302a231e1d1d21262e373f4a55606976818d99a4b0bbc7bfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7c1b6aba1978a7e73685f54494239302c2928292b3038414a545d66727e8996a0aab5c0ccc3b9afa6968a7f73685c5045392e22160b000d1925303c47535f6a76818d99a4b0bbc7ccc1b5aba097897d72665b52473e352e2c2c2b3033343635332e29221a110800000000000000000007121e2935404c58636f7a85919ca8b3bfcac0b5aa9f96897d71665a626c78838f9ba6b2bdbdb5aaa0969196a0aab7bfb9afa6988c8175685f5a6974808b97a5aeb8c3c7beb2a79b8f84786c63584c41362a1f150a00000000000000000007121c262f38424b545d636c70777d8184858685837f7b746e68605950473e352b20160d0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000b16202b353e47535c646e727d858c909595969595908c867e736f655d54483f362c21160c010000000000000000000610182129313840464a53585c63666a6f72747778797a7a7a79787775726f6a66635f58544b464039322a211a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bcb0a5998d82766b5f53483c31251a0e0000000000000000000000000009141e28333e48535c65717d88939ca7b4bdb6aba1978d81766b62574a4137282016070000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a5aeb8c2ccc1b6aba0978a7e72685f544a423a322d2928292b30373f475059636e7a85909ca7b3bfcabfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7c5bab1a89b8f83796e635b5249413b36343334353b4149515a646d77838f9aa7b0bac4cbc0b5aa9f96887d7165594e42372b201408000d1925303c47535f6a76818d99a4b0bbc7cfc4bab0a7998d82766b62584f453e373838353b3e4042413e39322a22180f050000000000000004101b26313c46505967727e8a96a0aab5c0cabfb3a89c90857a6e63575b6974808b97a5aeb8c2bab0a7a09ca0a7b0bac0b4a99f95897d7166585a65717c88959ea9b4bfcabfb4a89e94887c7165594e43392f24190e0300000000000000010c16212c363f48535c636d717c82898d8f9195908e8b857f786e6960574e453a2f271d130800000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000006111b252e36434b545d646d717a808488898a898885817b726e655e554c44382f261c12070000000000000000000000081019212830363c43494d53585a616366686b6c686e6f6e686d6b696763615a57554f48443c373028211911090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945515c68737f8b96a2adb9bbb0a4998d81766a5f53473c3025190d000000000000000000000000030e19232e38414c58626c77828e99a3acb6bfb4a89c91867c70655b5248393127180f0600000000000000000000000000000000000000000000000007131f2a36414d5864707b87959ea9b4bfcbc5bab0a79b8f83796e635c534a433d37353434353b40474f58606a737f8a959fa9b4c0cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cac1b3a89d94897e726b625a524a4641403f4041454a5159616b727d89939da7b7c0cacabfb3a89c9085796e63574c4034291d1206000d1925303c47535f6a76818d99a4b0bbc7d4cabfb4a89c91867c70685f544f4745434344454a4c4d4c48423b32291f140a0000000000000006121d29343f4b56606a76828e99a7b0bac4c5bab1a8998d82766960555965717c88949ea9b4bfc0b7b0aaa8aab0b7c0bfb3a79c90857a6e635757636e7984909ca7b3becac2b7ada4978c8074695c53493e33281d110600000000000000040f1a25303b454f58626c717d858e93989b9c9f9c9a96908b81796e685e544940372c22170c01000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000010b141e26323b444d545d636a6f74797c7e7e7e7d7a756f6b645e554e453c33271f150c020000000000000000000000000810171f262c31393e43494d5156585a5d5f575e6363635f58605e5b5856514c4a453f37312c2720181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46525d6974808c97a3aebabaafa3988c8075695e52463b2f24180c00000000000000000000000005111c27323d48525b65707c88929ca7b3bcb6aca3998d82766c62574a4238292017070000000000000000000000000000000000000000000000000007121e2935404c57626b7984909ba7b3bec8cac1b3a89d938a7e736c625b534b4741403f4041454a50585f686f7a84909ca6afb9c3cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cdc2b7ada49c90857c706a615b55504d4c4a4c4d4f555a616a6f7b84909ca3acb6c8cdc2b8aea5998d8176695f554a3f33281c1105000d1925303c47535f6a76818d99a4b0bbc7d2ccc1b5aba0978e82786e635f5853504f4f504f55575957524b42392e24190e0300000000000007121e2935404c58636f7a85919ca8b3bfcac1b6aba1978a7e7367585057636e7984909ba7b2bec8c0bab5b3b5bac0c4b9afa6988d8176695f55545f6876818d98a7b0bac4c7beb2a79b8f84786c62584c41362a1f150a0000000000000005111c28333f4a555f69707c8590959ca3a7a8a9a7a69f9c928d81786e635950463c31261b1004000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000040d16222b343d444c535a6063686e70727372716e6964615a544d453e352c23170e050000000000000000000000000000070f161c22292f333a3e40474b4c4f51544e54575757554f54524f4c4b47413f3b352f27221d160f0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1924303b47535e6a75818d98a4afbbb9aea2968b7f74685c51453a2e23170b00000000000000000000000007121e2935404c57626b76818d99a2abb6beb2a79c92887d71655b52483a31281810070000000000000000000000000000000000000000000000000005101c27323d48525b6a75818d98a5aeb8c2ccc2b7ada49c90857c706b635c56514d4c4a4c4c4f545960686e79828e959ea9b6bfc8cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d1c7bdb4a99f958f837a706b6360585857555758585f636b6f7a828e959ea9b4bcc6cbbfb4a99e95897e7266584f453b30251a0f04000d1925303c47535f6a76818d99a4b0bbc7d2cfc4bab0a79c938c80746e68635c5c5b5b5b585f6365625b52483e33281c1106000000000004101b26313c46505967727e8a96a0aab5c0cbbfb4a89c91867b6f64584c545e6875808c98a5aeb8c3cac4c0bfc0c4cac0b5aa9f96897e7266584f4f5867727e8997a0abb5c1cabfb3a89d94887c7065594e42392e24190e0300000000000006121d2934404c57636e79838f969fa6acb2b3b4b3afaaa29b918a7f736a60564b3f34281d1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000005121a242c343c43495156585f636566676765635f5857514a443d352d251b130600000000000000000000000000000000060d12171f242a2f34373c3f4143464845494b4c4c4a4548474441403c3733302b251e17130d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25313d48545f6b77828e99a5b0bcb8aca1958a7e73675b5044392d21160a000000000000000000000006101b27323d47515a64707c86919ca8b4bcb7ada49a8e82776c63584b42392a2118080000000000000000000000000000000000000000000000000000020d18232e38434f5a66727d89959ea9b4bfc8c7bdb5aa9f9690847b716d64615a5957555758585f636a6f78808c929ca5aeb8c6cfcbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2cec3b9afa69d938f837b746e6966646360636466696e737b838e939ca5aeb8c4cec3b8aea59b9084796e63574c40362c21160c01000d1925303c47535f6a76818d99a4b0bbc7d2d4cac0b8aca39a908c8078716c696766666769686e706c62574c41352a1e1307000000000006111d28343f4b56606a76828d99a7b0bac4c9bdb1a69a8f83776b61564b4e5766717d88959fa9b4c0cbcfcccbcccfcabfb3a89c91857a6f63574c4c58636f7b86919ca8b4bfcbc2b7ada4978b8074695c53483e33281c1106000000000005101b26313c47515a67737f8a949da6afb6bcbfc0bfb9b5aba29c90847a6f63584c4035291e1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000010a131c242b333940474b4f5457595b5c5b5a57554f4b47413a342c251d140b02000000000000000000000000000000000003080f151a2025272d313435383a353a3e4040403e3b353b383534312d2825211c150e0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586c78838f9aa6b2bdb7aba094897d71665a4f43372c20150900000000000000000000020c161d2934404b56616b75818c97a0abb6beb3a89d93897d71665c53493b322919110800000000000000000000000000000000000000000000000000000009141d2934404c57636e7a84909ba6afb9c3cec3b9afa69e9490857d756f6b67646360636466686e737a828c919aa2abb6bec8d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d3c8bfb6aca39d948f857f7a75726f6e696e6f7175797f848f939ca3acb6bec8c7c0b4a99e958b7f74695f554a3f33261c120700000d1925303c47535f6a76818d99a4b0bbc7d2dad1c8bcb3aaa19a908c837d78757372727374767a7c7065594d42362b1f1308000000000006121e2935404c58636f7a85919ca8b3bfc9c2b8aea5978b8074685a51474c57636e7984909ca7b3bec9d3d7d6d7cfc4bab0a7998d82766960554a4b56606a77828e9aa5b1bcc7c7bdb2a69b8f84786c62574c41352a1f140a000000000006121d2934404b56616a77838f9aa4adb7bfc7cbcbc9c3bbb4a99e958a7e73675b5044392d21160a000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000000000030b131b232830373c3e45494b4e4f504f4e4c4a453f3d383129241c140c040000000000000000000000000000000000000000050a10151a1d222629292c2f2b2f3334353433302b2f2d2a2926221d1a16120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f697984909ba7b3beb8aea593877c7065594d42362b1f14080000000000000000000008121c26313c47515a646f7b86919ca7b0bab7ada49a8f83786d63594c43392a2218090000000000000000000000000000000000000000000000000000000005111c28333f4a555f69747f8b959fa9b4bdc7c9bfb6aea59e959086807b7672706f696e6f7174797e848e929aa1aab3bcc6cfd6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d9cfc7bdb4aca49d95908b84817d7b7a797a7b7d80848a90959da4acb3bcc6c9c0b7aca39c90847a6f63584f453b3025150c0200000d1925303c47535f6a76818d99a4b0bbc7d2d6cec8c2bab1aaa19a938f8883807f7d7d7e80828583786c6055493e32261b0f0000000004101b26313c46505967727e8a96a0aab5c0cbbfb4a99e95887c7065594e424a555f6876818d98a6afb9c4ced9e2d7ccc1b5aaa0978a7e726759504647515a68747f8b96a4adb7c2cabfb3a89d94877c7065594e42392e24190e030000000007121e2a35414c58636f7b86919ca8b4bdc7cfd6d7d3cec3b8aea5998d81766a5f53483c3025190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000030b121820272d31353a3e404244454443403f3b36322d282119130c040000000000000000000000000000000000000000000000060b0d13181b1d1e202320242729292928252124211e1d1b18130f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b4bfb4a99e95867b6f63584c4135291e1207000000000000000000010c17222c363f4b56606a74808c96a0aab8c1b3a89d94897e72675d54493b33291a110800000000000000000000000000000000000000000000000000000000040f1a25303b454f58636f7b85909ca4adb7c0c9c7beb5aea59e97918c85817e7b7a797a7b7d80848a90949ca2aab2bac3ccd6d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2d7cfc8c3bdb4ada69f9c94908c898786858687898c90949c9ea5adb4bcc4cfc4b9afa69d938a7f736a6056483f352b2116050000000d1925303c47535f6a76818d99a4b0bbc7d2cec6beb8b4b2b4aaa39d9a948f8c8a89898a8b8e8f83786c6055493e32261b0f0000000006111d28343f4b56606a76828d99a7b0bac4cabeb3a79b9084796e63574b40454f5866727d89969faab5c0cbd7e2d6cbbfb3a89c91867b6f63584c41424d5965707c87949ea8b4bfcac2b7ada4978b8074695b52483e33281c11060000000008141f2b37424e5965707c8897a1abb6c1ced7dfe2ddd2c8bdb1a69a8f83776c6055493e32261b0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000000010810171d22292f333636363b3f403f3b363635322e28221c160f07000000000000000000000000000000000000000000000000000003080d101212151116191c1d1d1d1c1a1611151212100d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36424d5964707c8797a0abb6beb3a79c9084796a61564b4034291d1206000000000000000000040f1a26313b465059636f7a85909ca7b0bab8aea59b8f84796e63574b443a292219090100000000000000000000000000000000000000000000000000000000010c16212c363f4b56616a737f8b939da7afb9c4cfc5beb6aea7a09c96908d8a8786858586888c8f949b9ea5abb3bac3c8cfd7d6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d2cfc7bfb9b4b3b4afa9a59e9b9894929690969294989b9ea5a9aeb6bdc4cfc2bab5aa9f968f83796e63595046372f251c12070000000d1925303c47535f6a76818d99a4b0bbc7d2c8beb5aea9a7a9aeaca7a49d9b979695959597998f83786c6055493e32261b0f0000000006121e2935404c58636f7a85919ca8b3bfc9c4b9afa7988c8175685e54493e404c57636f7a85909ca8b3bfcad4dbd0c5bab1a8998e82776a61564b3f414c57626c78848f9ba7b2bec9c7bdb2a69b8f83786c62574c41352a1f140a000000000915202c37434f5a66717d8894a8b1bac5d0dbe8ece1d5c9beb2a79b9084786d61564a3e33271c10000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000109111820272d31393e414246454a4c4a454642413d38312c261f1710080000000000000000000000000000000000000000000000000000000204060709060b0e10111212110f0b070a0706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5b66727d8995a7b0babcb1a59a8e82776b5a51473c31261b100400000000000000000006111d28343f4a556069747f8b959fa9b7c0b4a99e958a7f73685f544a3e33281c120900000000000000000000000000000000000000000000000000000000000007121c26313c47515a636e79838f969faab5bac2cfc6beb7b0aaa69f9c9995939690919794979b9da4a8aeb4b3b4b9bfc7cfd6cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7d3c8bfb6afa9a7a9afb4aea9a7a3a0a69f9c9fa6a0a3a7a8aeb4b8bec6cac5bab2aaa19c91867c70685f54494037271e150c020000000d1925303c47535f6a76818d99a4b0bbc7cdc2b8aea59e9b9ea5aeb3ada8a6a3a1a0a0a1a29a8f83786c6055493e32261b0f000000040f1b26313c46505967727e8a96a0aab5c0ccc0b5aa9f96897d7266574e453a3f4a55606976828d99a7b0bac4cfd8ccc1b6aba1978a7f73675a51473c3e48525b6975808c98a6afb9c4cabfb3a89d94877c7065594d42382e24190e0300000008141f2b37424e5965717d8893a4adb7c1ccd8e0e4ded4c9bdb2a69a8f83786c6055493e32261b0f000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000000008111a212930373c43494c4e524f5557554f524d4c48423c36302821191007000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515c68747f8b96a2aeb9bbafa3988c8175695e5247372d22180d020000000000000000030f1a25303b454f58636f7a84909ca6afb9b9afa69b90847a6e63584f453b30251a0f02000000000000000000000000000000000000000000000000000000000000020c18222d37414a555f69707c86919ca1aab1bac4c9c8c0bab5afaaa8a4a1a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3cbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cec3b9afa69f9c9fa6acb3b4b2afabafaaa8aaafabafb2b4b8bec3c8c8c1bab6aaa19a908a7e726c62584f45393027170e05000000000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a99e9490949ea6afb7b3b2aeadacacada69a8f83786c6055493e32261b0f00000006111d28343f4b56606a76828d99a7b0bac4cbbfb3a89c91857a6f63574c40353b46505967727e8a97a0aab5c1ccd6cbbfb4a89c91867b6f64584d413738434f5a66727d89969faab5c0cbc2b7ada4978b8074685b52483e33271c110600000007131e2a35414c58646f7b86939da8b3bec8d0d7dad4cec3b9afa6998d82766b5f53483c3125190e000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000071018212a323941474b5358595d585f635f585d5957524a464038312921170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586a75818d98a4afbbb9ada1968a7f73675c5045392e22130800000000000000000005111c28333e4a555f68737f8a959ea9b6bfb4a99f958b7f74696055473f352b21160b000000000000000000000000000000000000000000000000000000000000000008131d27303b454f58626c737e8a909aa1aab5b9c0c7cac4bfb9b5b3b0acafaaa8a8abb1aeb2b3b6afa69f9c9fa6afb9c3cecbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbc7cbc0b4a99f9590959ca3acb6babbb7b9b5b3b5b9b7babebfc2c7c9c3bdb8b0aba19a918c80756e645b52473f352820160600000000000d1925303c47535f6a76818d99a4b0bbc7cabeb2a79b908490959fa9b4bcbebab8b7b7b2a69a8f83786c6055493e32261b0f00000006121e2935404c58636f7a85919ca8b3bfc9c8bcb0a5998e82776960554a3f3436414c58636f7b86919ca8b3bfcbd4c8bdb1a69a8e83776b61564b403435404c57636f7a85909ca8b3bfcac7bdb2a69b8f83786c62574c41352a1e140a00000006121d2934404b56616b78838f9ba5aeb7c0c7cccdcac4bcb5a99f958a7f73675c5044392d22160b000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000000030d172029323a424951565c6265696c696e696c6964625b555049413a31281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305061011111111111111111111110c0b0a0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f6877838f9aa6b1bdb7ada494887d71665a4e43372c2014090000000000000000030e19242f3a454e57636e7984909ba5aeb8b9afa69c90857a6f63595046372e251b11070000000000000000000000000000000000000000000000000000000000000000030d16212c363f48525b646e74808c919aa1aaafb7bdc2c8c9c4c0bfbbb8b9b5b3b4b6bababdb6afa69f9590959fa9b4c0cbcbbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0bbbfbfbfb3a79c90858e939ca3abb1b8bdc1c0bfc0c4c9c6c9c9c7c2bfb9b5ada7a09c918c80786e635e544b42372e25180f0600000000000d1925303c47535f6a76818d99a4b0bbc7c5baaea3978c8085909ca3acb4bcc4c9c3bdb2a69a8f83786c6055493e32261b0f0000040f1b26313c46505967727e89969faab5c0ccc2b7ada4968a7f73675950463c31343f4b56616a77828e9aa5b1bcc6ccc1b7ada4968b7f73685a51473d32343f4a55606976828d99a5b0bcc7cabeb3a89d93877c7064594d42382e24190e03000005101b27323d47515a68747f8b949ea7b0b7bdc0c2c0bab5aba29c90857b6f63584c4135291e1207000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000009131d273039424b525a61636c707578797a797874706c636059514a413830261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f11121c1d1d1d1d1d1d1d1d1d1d1d181715120e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57636e7a85909ca8b3bfb3a89d94867b6f63584c41352a1e1207000000000000000005101c27333e49545e68727e8a949ea8b6beb5aa9f968b80746a6056483f36271e150b0100000000000000000000000000000000000000000000000000000000000000000007121c262f38424b555e636e78808c909c9fa7acb4b8bec1c6c8cac7c9c4c0bfbfc1bfb9b5ada69f969085909ca7b3bfbfbfbfb4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b80828e929ca1a8adb2b6bbbdbfc0c3c0bfbdbbb7b3afa9a49d97918b80786e685e544d443a32271e15070000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f7f8a929ca4acb5b9c0c3bdb2a69a8f83786c6055493e32261b0f000006111d28343f4a56606a76828d99a7afb9c4bfbeb3a89d93877b7064584d41362c313c47515a67737f8a96a3acb6c1bfbeb3a89d93877b7064594d41372d313b46505967737f8a96a4adb7c1bfc2b7ada4978b7f74685b52483d32271c11050000020d18232d37414c57636f7a849096a0a7adb3b5b8b4b0aba39c928b7f746a61564b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000020d18232d37414a525b626a6f767c808385868583807c756f69615a514940362c22170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1c1d2729292929292929292929292322201d18120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d5965707c87969faab5beb2a69b8f84786a61564b4034291d1206000000000000000109111d2934404b57636e79838f9ba5aeb8bab0a79c90857b6f64595046382f26160e0500000000000000000000000000000000000000000000000000000000000000000000020c151f27323b4549545e686e75808a91969da3a9aeb2b6bbbdbebfc1c0bfbebcb8b4afaaa49d9590857e8995a0acb4b4b4b4b4a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f7a828c91979da4a7acb0b2b3b5b9b5b3b2b0ada8a69f9c948f877f756e685f574e453d342a21160e050000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f79828e939ca3aaafb4b8bab2a69a8f83786c6055493e32261b0f000006121e2935404c58636f7a85919ca8b3b4b4b4b4b2a69b8f83786b62574c4035262d37414d58646f7b87939da7b3b4b4b4b2a69a8f83786b62574c4035272c36414d58646f7b87939da8b3b4b4b4b4b2a69a8f83786c62574c40352a1e140900000009131e28343f4a556069717d8691969da4a8aaaea8a7a09c928e82796e635a51473c31261b1004000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000005101b26313c47515a626c707b81888c8f9096908f8c86817a6f6b615950463c31291f140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c212528293334343434343434343434342f2e2b28221c150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505c67737e8a96a6afb9bbafa4988d81756a5a51473c31261b10050000000000000008121d28333e49535c66727d89939da8b5beb5aaa0978c80756a6156494037271f1606000000000000000000000000000000000000000000000000000000000000000000000000050e17222a2f3a454e575e6370747e868f939b9ea5a7acafb1b3b4b6b5b3b2b1aea9a69f9c938f857d7c87939ea8a8a8a8a8a8a89c91857a6e62574b4034281d11000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f747980878f939a9ca3a4a6a8aaafaaa8a6a4a49d9b95908b837d736f635f584f473e352c241a1106000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f747a838e929c9fa6a9aeaeafa69a8f83786c6055493e32261b0f00040f1b26313c46505967727e89969faaa8a8a8a8a8aea5978c8074695b52483d32272935404b57616b77838f9aa6a8a8a8a8ada4978b8074685b52483d32272935404b57616b78838f9aa6a8a8a8a8a8a8a89d93877c7064594d42382e23190e030000040f1a26313b465059636d727e868f94999c9fa59e9b97918c827a6f685f544941372d22180d02000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000006121d2934404b56616a707c848d91979b9c9f9c9a97918c837b6f6960554a42392e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252b3033343e40404040404040404040403a3937322c251d150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6a75818d98a4afbbb8aea5958a7e73675b5044372d22180d02000000000000040e181f2b36424d58636d77838e9aa4adb7bab1a89c91867b70645a5147383026170f050000000000000000000000000000000000000000000000000000000000000000000000000006111a202b353e474e545f666e737c838a90949a9ca3a4a6a7a8abaaa8a7a5a59e9c96908b837c717c87939c9c9c9c9c9c9c9c9c91857a6e62574b4034281d11000d1925303c47535f6a76818d919191919191919191918b7f746e757d83898e9396999b9c9fa69f9c9a9996948f8b857f7a716d655e544f473e362e251c130901000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f746f7b828b91969c9fa5a2a3a29a8f83786c6055493e32261b0f0006111d28343f4a56606a76828d999c9c9c9c9c9c9c9c9e95887d71655a4e43382e2327323d47515a68747f8b96a49c9c9c9c9c9d94877c7065594d42382e2327323d47515a6974808b97a59c9c9c9c9c9c9ca4978b7f74685b52483d32271c11050000010c17222c364048535c646e727d838a8e91969294908c8680796f6a60584f453930271d130800000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000006121d28333e49535c646f7b848f949ba2a6a8aaa8a7a09c938f837a6f635b52483e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f353b3f404a4b4b4b4b4b4b4b4b4b4b4b4645413c362e25170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a78838f9ba6b2bdb4a99e95877c7064594d42362a1f13090000000000000009141e28333e48535c65717d88939ca7b4bdb6aba1978d81766b61574a41372820160700000000000000000000000000000000000000000000000000000000000000000000000000000106111b252e363e4549565e646c70797f848a8e9395989a9c9ca0a09c9b999795908c85807a70707c879191919191919191919191857a6e62574b4034281d11000d1925303c47535f6a76818585858585858585858585857f74686d71797e83878a8d8f90969196908f8d8b87847f7b746f69635c5549453e372e261e140c0300000000000000000d1925303c47535f6a76818d919191919191919191918b7f746a6f797f858c909596979797968f83786c6055493e32261b0f0006121e2935404c58636f7a8591919191919191919191919084796e63574b4034291d232d38424d5964707c8794919191919191918f84786c62574c4135281e232e38434e5a65717d8895919191919191919191918f83786b62574c4035291e120700000008121c262f38434c545d646c71797e828586878684807c756e69605950473f352920170d0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000008131f2b36414d58636d76828d949ea4abb2b3b5b3b0aba39d938c81756c62574c41352a1e110700000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f373f454a4c56575757575757575757575752504c463e36281f160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86919ca8b4beb3a79c9084796e63574b4034291d1106000000000000030e19232e38414c58626c77828e99a3acb6bfb4a89c91867c70655b5248393027180f06000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e262e353a464d555b62686e737a7e83878a8d8e9091979691908e8c8884807b746f69707c858585858585858585858585867a6e62574b4034281d11000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f6563686e72777b7f8183858586858583817f7c79746f6a636059534c453a352e261e160d040000000000000000000d1925303c47535f6a76818585858585858585858585857f7468696e747b8084888a8b8c8b8a8883786c6055493e32261b0f000a15212d38444f5b67727e858585858585858585858585858176685f544a3e33281c1e2a35414c57626c78838585858585858585858074695b52483e3328181d2934404b57636e7985858585858585858585858585857c7064594d41362a1f1307000000020c161f28333b444d545c63696e7377797b7b7a7875706c635f58504940372e251810070000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000914202b37424e5a65717d88929ca4adb5bbbfc0bfbab5aca49c91867c7065594d42352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f484f55576163636363636363636363635d5b564f463830261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8997a1abb6bab0a7998d8176685e54493e33271c100500000000000005111c27323d48525b65707c88929ca7b3bcb6aca3998d82766c62574a4138292017070000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e252b2f3d444b52585f63696f73777b7e818384858686858482807d7a746f6b63626c777a7a7a7a7a7a7a7a7a7a7a7a7a766c61564a3f33281c11000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f585f63666b70737678797a7a7a79787673706e6863615a555049433b302b251e160d05000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655f636b7075797c7f8080807f7d7a6f63584c4135291e1207000915202c37434e59646e727a7a7a7a7a7a7a7a7a7a7a7a7a767067584f453b30251a1c27323d48525b6973787a7a7a7a7a7a7a7a7a7470665b4b42392e24191c28333e4a545f686e797a7a7a7a7a7a7a7a7a7a7a7a7a776b62574c4035291e120700000000060f17232b343d444c53585f6367686e6f706f696964625b554f48403930271e1508000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000030f1a25303b454f586a75818c98a2abb5bec5cacbcac4bdb6aba0978c807569584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f636d6e6e6e6e6e6e6e6e6e6e6e69665f564940362c22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333e48525b6a75818c98a8b1bab5aba0978a7e7267574e453a2f24190e0300000000000007121e2935404c57626b76818d99a2abb6beb2a79c92887d71655b52483a3128181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202d343b42474f54596063676b70737577797a7a7a79787774716e6964615a5b626d6e6e6e6e6e6e6e6e6e6e6e6e6e6c665d52483d31261b0f0008131e29333d4750575d5f6363636363636363636363635d5b564f54575b6264686a6c686e6f6e686c6a6865635e5756514a464038332b201b150d0600000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f555b6164686e717374757473716f6a60564b3f34291d12060008131e29353f4a545d64676e6e6e6e6e6e6e6e6e6e6e6e6e6a676057473f352b211619242e38424b5962696c6e6e6e6e6e6e6e6e6e69665f564c3b32291f151a25303b454f585f636d6e6e6e6e6e6e6e6e6e6e6e6e6e6d625b52483d32271c1105000000000007121b242c343b43484f5557575e6363646360595957524a453f38302820160e05000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000005111c28333f4a555f697884909ba7b2bbc5ced6d7d4cfc5bab0a79b8f8478685f54493e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f696e787a7a7a7a7a7a7a7a7a7a7a746f665950463c31251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c7884909ba7b2beb4a89c91867b6f63584c41352b20160b00000000000006101b27323d47515a64707c86919ca8b4bcb7aca39a8e82776c63584b4238292118080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111c242a32373f454a5055575b6164676a6c6d696f6e696d6b6966635f58565152575963636363636363636363636362615d554c43382e23180d00040f19242d373f474d515357575757575757575757575751504c45494b5257585c5f585f6363635f585f5c5957544e4b47413c363028221b110b0400000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564a5257585f636567686968686663605a51473c31261b10040005101b26303a444d54595b636363636363636363636363635e5c575047372e251b11141e28323a4952595f616363636363636363635d5b564f463c2a22190f16212b353f474f545762636363636363636363636363635957524b42382e23190e030000000000020a131c242b33373f454a4c4e545758585755504d4c48423b362f2720180f0600000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000006121d2934404c57636e7a85919ca8b4bfcbd6dee2ded4cabfb4a89c91857a6e63574b4034291d11060000000000000000000000000000000000000000000000000000000000000000000000000007121d2934404c57636e7984858585858585858585858580746960554a3e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87949ea8b4bcb1a59a8e82776a61564b4034251b11060000000000020c161d2934404b56616b75818c97a0abb6beb3a89d93897d71665c53493b32291911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106141a22272e353b40464a4c5257585b5e605960636360585f5d5a57554f4b47484c4d5757575757575757575757575756524c453c33291e140900000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413a3e42484c4d50534f54575757544f53514d4b49453e3c37312c261f1712070100000000000000000000000000040f19242d373f474d515357575757575757575757575751504c45484b4f5557595c5d5d5d5c5a5856514940372d22170d0100010c16212a343d444a4e4f5757575757575757575757575753514d473f37271e150b0f18212a3942494f545557575757575757575752504c463e362c1a1107111b252e373f454a4b56575757575757575757575757574d4c48423a31281e140900000000000000030b131b22272f353b3f4045494b4c4d4c4a4642403d38302c261f170f070000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000007121e2a35414c58646f7b8697a1abb6c1ccd8e3eee3d7ccc1b5aba097867a6f63584c4135291e120700000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c67727e899491919191919191919190857a6f63584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a68737f8b96a5aeb8b7aca3968b7f73685a51473c3126140b01000000000008121c26313c47515a646f7b86919ca7b0bab7ada49a8f83786d63584c43392a2218090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161e252b30363b3f41484b4d50535450555757555054524e4c4a453f3d3d40424b4b4b4b4b4b4b4b4b4b4b4b4b4a48433c342c23190f050000040d161f262d33383b3c4040404040404040404040403a39363033383d40414547454a4b4c4b4945484542403e3a35312d27221c160f07020000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c3d3f454a4c4e50515251504f4c4b47403930271d130800000007111a242c343a3f43444b4b4b4b4b4b4b4b4b4b4b4b4b4746433d372f26160e0508111a2931394045484a4b4b4b4b4b4b4b4b4b4645423c362e251c0a010b151e272e353b3e404b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312a21180e040000000000000000030a12171e252b3033353a3e404141403f3b3635322e28211c150e06000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000006121d2934404c57636e7a86959ea9b4bfcbd6dfe4ded6cbbfb4a89c91857a6e63574b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000030d161f2b36414d58636d77838f9aa59c9c9c9c9c9c9c9f958a7f73685f54493e33281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a77828e9aa5b1bcb3a89d93877c7064594d42372d2218080000000000010c17222c363f4b56606a74808c96a0aaaaaaaaa89d94897e72675d54493b33291a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060e151b21262c3134383d4041444749464a4c4c4a46484643403f3b3632323536404040404040404040404040403f3d38332c241c120900000000060e161d24292d2f303434343434343434343434342e2d2b25282e32353639353b3e4040403e3a35393634332f2b25221d17120c060000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a39363232353b3e4042454646464543413f3c37302820170d03000000010a131c242a30353738404040404040404040404040403c3b38332d261e160600010918212930353a3d3e4040404040404040403b3a37322c251e150c00050e161e252b3033343f404040404040404040404040403635322e28211911080000000000000000000002060e151c2125282b2f333435363534312c2a27241e16120c0500000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000005111c28333f4a555f697984909ba7b3bcc6cfd6d9d5cec5bdb2a79b8f8478685f544a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000008121d26323d48525b65717d88939da7a8a8a8a8a8a8aea59b8f83796e63574b42392f24190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86919ca8b4bab0a79a8f83786c62574c4035271d13080000000000040f1a26313b465059636f7a85909ca79e9e9e9ea59b8f83796e63574b443a29221909010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161c2126282e323536393b363b3f40403f3b363a373433302c26272a2a3434343434343434343434343433312e29231c140b020000000000060d14191e2224252929292929292929292929292322201a1e2327292a2e2b303334353433302b2e2b292724201b18130d080300000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27252b30333437393a3b3a39373534312d2720180f060000000000030b131a2126292c2d34343434343434343434343434302f2d29241d160e0600000810181f262b2f32323434343434343434342f2e2c28231c150d050000060e151b2125282933343434343434343434343434342a2927231e18110901000000000000000000000000050c12161a1c202427292a2a292826221e1c19140f07020000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000040f1a25303b454f586a76818d98a3acb6bec6cbcecbc5bdb5aba2988c817569584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000010c17222c37404c57626b76818d99a3acb6b4b4b4b4b4b3a89d94897d72665c53483e33281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b67737f8a97a0abb5b5aaa0978a7f73685b52483d32271c1105000000000006111d28343f4a556069747f8b9593939393939393958a7e73685f544a3e33281c12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12171a1e2327292a2d302c3134353433302c2f2c292825211c1c1e1f292929292929292929292929282826231e19120b0300000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d1716140e14181c1e1f22212528292929282520221f1d1c1916110b080300000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c1b212528292b2d2e2f2e2e2c292926221d170f0800000000000000030a11161b1e2021292929292929292929292929292424221e19140d0600000000080f161c202426272929292929292929292323201d18130c0500000000050b11161a1c1d28292929292929292929292929291f1e1c19140e0801000000000000000000000000000002070b0f1116191c1d1e1e1d1d1a1712110e0a0500000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000010c16212c36434f5a66717d89929ca5aeb6bcc0c3c0bbb5ada49b91887c7165594e42352b21160b0000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c46505964707b86919ca8b4bcc6bfbfbfc2b7ada49a8e82776c62584c41382d23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b77838e9aa7b0bab3a89c91867b6f64584c42382e24190e03000000000006121d2935404c57636f7a848787878787878787878784796e63584f453b30251a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f14181c1e1e2124222628292928252123201d1c1a16121113131d1d1d1d1d1d1d1d1d1d1d1d1d1c1b18140f09020000000000000000000004080b0d0d1111111111111111111111110b0b0903090d10121311161a1c1d1e1d1c1a16111311100e0b060100000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d1716140c11161a1c1d1f2223232322201e1d1b17130d0600000000000000000001070c101315151d1d1d1d1d1d1d1d1d1d1d1d1d191816130f0a04000000000000060c1115191b1b1d1d1d1d1d1d1d1d1d181715120e090300000000000001070b0f11121c1d1d1d1d1d1d1d1d1d1d1d1d1d1312110e09040000000000000000000000000000000000000003060b0e1011121312110f0c080503000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000000712202b36424d58636d77828e959ea5acb3b4b8b4b3aba49d948d81766c63584d4136251b1107000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56606a75808c97a0abb6c1cdcbcbd1c7bdb2a79c92887c70655a51473d32261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131e2a36414d5864707b87939ca7b8b8aea5998d82766a61564b4032281e140a00000000000006121d2935404c57636f797c7c7c7c7c7c7c7c7c7c7c7b6f696055473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1012131612171a1d1d1d1d1a17121412110f0c0705070811111111111111111111111111110f0d09050000000000000000000000000000000102060606060606060606060606000000000002050707070b0f11121211110e0b070806050300000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b0902070b0f1112141617181717151212100d0803000000000000000000000000010508090a111111111111111111111111110d0d0b080400000000000000000002060a0d0f101111111111111111110c0c0a07030000000000000000000000030506111111111111111111111111111107070503000000000000000000000000000000000000000000000000030506070706060401000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000007121d29343f49545d64707b8490959ca3a7a9aea9a7a29c948f837a6f635c53493e3328150b0100000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636f7a85909ca7b0bac5cfddd6d7ccc1b6aca3988d81766b61564b40362c22170b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121d28333e49535c68747f8b96a3acb6b4a99e95897e72665a51473c3121180f0500000000000006111d28343f4a5560696f70707070707070707070706f6b61585046372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a080c0f111212110f0c0709060504010000000006060606060606060606060606050402000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000102060606060606060606060606000000000000030506080b0c0c0c0b09070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cdc5b9aea2978b8074685d51463a2e23170c000000040f1a252f3a434b57616b717d848e93999c9fa59e9c98928d847c706a61564c43392f241905000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68737f8a959fa9b8c1cad4dfe5dad0c6bcb3a89c91867b6f645950463c31251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2b36414d58636d78838f9ba6b2bab0a79c90847a6e63574c41372d23120800000000000000040f1a26313b4650596063646464646464646464646464615a51483f36271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b09070300000000000000000000000000000000000003060708111111111111111111111111111111110e0605030000000000000000000b16222d3945505c67737f8a96a1adb9c1c1c1b9aea2978b8074685d51463a2e23170c000000000b16202a323d48525b636c717b82898d90959295908d88827b706b625a51473b33291f150a000000000000000000000000000000000000000000000000000000000000000000000007121d2934404b57636e79848f9ba6afb9c8d1dae0e0e0d7ccc0b5aaa0968b80746960554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25323d47515a65717d88939da8b3b5aaa0968b80746960554a3f30271d130600000000000000010c17212c36404850555759595959595959595959595856514a41382f26160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050606060606060606060606060100000000000000000000000000000000000000000000000000000000000000020507070a0c0e0e0f0e0d0c0a07060502000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000050a0e1113131c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1911100e0b06010000000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5aea2978b8074685d51463a2e23170c00000000061018232e38414a535c636b70777d818586878684817d766f6a625b524941372b22190f050000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c66727e89949ea8b6bfc9d9d7d5d4d5d7cfc4bab0a79c90857a6f63584f453a30251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b35404b56616a76818d99a4adb7b3a89c91867b6f645850463b30251a0f04000000000000000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4b47413931271f1606000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707111111111111111111111111110c0c0a07030000000000000000000000000000000000000000000000000205090d1012131618191a1a1a1917151312100d09040100000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c04000000000000000000000001080f14191c1e1f28292929292929292929292929292929251d1c1916110b0400000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaa2978b8074685d51463a2e23170c000000000009141e28313a434c535b61646d7276797a7b7a7976716d63615a524b423930271a120900000000000000000000000000000000000000000000000000000000000000000000030c161f2a36414d58636c77838e9aa4adb7c7cfd0ccc9c8c9ccd0cac0b4a99f958a7f73685f54493e33281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58646f7b86919ca8b3b6aca3988d81756b6156483f362c21170c010000000000000000020c161f282f363b3f40424242424242424242424241403d37312920170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090b080c0f11121212110f0b070b080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131c1d1d1d1d1d1d1d1d1d1d1d1d181715120e0903000000000000000000000000000000000000000003090d1014181c1e1e2123252526252523211e1e1b18130f0c080300000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d04000000000000000000010911181f24272a2b3434343434343434343434343434343430292724201b140d05000000000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e978b8074685d51463a2e23170c0000000000040e182129323b434a52575d64666a6a6f706f6a6a65635c565149423a322920170a020000000000000000000000000000000000000000000000000000000000000000000008121c26323d47515a65717c88939ca7b5bec7cdc6c1bebdbec1c6cec3b8aea59b8f83796e63574b42392f24190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a545f68747f8b96a0aab5b2a79c92887c70655a5147382f261c120700000000000000000000060f171f262c31343536363636363636363636363534322d272019100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0f1112141712171a1d1d1e1d1c1a1611171412110f0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181c1e1e282929292929292929292929292423211d19130c05000000000000000000000000000000000003080d13181b1e2327292a2d2f30313131302f2d2a2927231e1b17120d070200000000000000000000000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c02000000000000000008111a22292e3335363f4040404040404040404040404040403c34332f2b251e160d040000000b16222d3945505c67737f8a93939393939393939393938b8074685d51463a2e23170c000000000000071019222b323a41484b54595a596063646360595a58534b474139322a2118100700000000000000000000000000000000000000000000000000000000000000000000010c17222c36404b57616b76818d99a3acb6c5ccc4bcb6b3b1b3b6bcc4c8bfb3a89d94897d72665c53483e33271e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7984909ba7b0b6aca39a8e82776c62574a4137271f160c020000000000000000000000070f161c212628292a2a2a2a2a2a2a2a2a2a2a2a2927231e1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e11161a1c1d2022252126282929292825212422201d1c1a16110e0b060100000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a343434343434343434343434342f2e2c28231c150d05000000000000000000000000000000060d12171d2226292e323536383a3c3d3d3d3c3a383534322d2826221d16120c0500000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c120800000000000000061018222a32383e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b48403e3a352e261e140b0100000b16222d3945505c67737f878787878787878787878787878074685d51463a2e23170c0000000000000009121a222931383d444a4d4f505658585856504e4d49433c373029211911080000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059646f7b86919ca8b3bcc6c4bcb4aca7a6a7acb4bcc6c2b7ada49a8e82776c62574c41372d23180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68727e89949ea9b7b2a79c93897d71665c5348393127170e0500000000000000000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b1116191c212528292b2e302c313435353433302b302e2b292825211c1916110b0701000000000000000000000000000000000000000000000000000000000000000000000007101921282d3235353f4040404040404040404040403b3a37322d261e150a0100000000000000000000000002070f161d22272d3134383d404144464748494847464441403d3834312c26211c150e0601000000000000000000000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d030000000000050e162029323b42484c4d56575757575757575757575757575757534b49453e362e251b1106000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e120700000000000000010a121921282e323a3f4243464b4c4d4c4b4643423e39312d272018110901000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606974808c97a0aab5c1c6bcb3aca39c9a9ca3acb6c1c7bdb2a79c92887c70655a51473d32261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e78838f9aa5aeb1aca39a8e82776d63584b42392920170600000000000000000000000000000002080c0f111213131313131313131313131312100d0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161b2024272b30333437393c363b3f4040403e3b353c39373433302b2724201b16110b05000000000000000000000000000000000000000000000000000000000000000000040e17212931383d40414b4b4b4b4b4b4b4b4b4b4b4b4b4645423d362e261a12060000000000000000000000010613181f262c31373c4042484c4d50525354545453514f4d4b47413f3c37302c261f17120a03000000000000000000000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c120700000000020c151e273039424b525759626363636363636363636363636363635f57544e473e352b20160b000006121d29343f4b56606a6f707070707070707070707070706f6a61564b4034291d12060000000000000000010911181e232a303437373c3f4041403f3c3736332f2a221d171008010000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca7b0bac4c1b6aca39c938e939ca7b3bdc6c1b6aca3988d81766b61564b40362c22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f49535d66727d89939da6a6a6a69c92887d71665d54493b322919100700000000000000000000000000000000000104060608080808080808080808080706050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e151b21252b2f33353b3e4043454749464a4c4c4c4a4549474542403e3b35332f2b25211b150e07020000000000000000000000000000000000000000000000000000000000000009131e28313a41474b4d5657575757575757575757575752504c463f362b22160e05000000000000000000040b111b232830363c41474b4c5257585b5d5f5f605f5f5d5b5856514c4b46403b362f27221a140c040000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090000000007111b252f374149525b62656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6a635e574e453a2f24190e030004101b26313c46505960636464646464646464646464646463615a51473c31261b100400000000000000000000080e14182025292b2d313435363534312c2b28252018130d070000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f68737f8a959fa9b7c0cabeb2a79c928e838e9aa4adb7c1c6bcb3a89c91867b6f645950463b31251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d77838e9a9a9a9a9a9a9a8e82776d63584c443a2a221908000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12161e252b30353a3e40454a4c4e5153555055575857554f5453504e4c4a45403e3a35302b251e16120c050000000000000000000000000000000000000000000000000000000000020d18232d38414a515658626363636363636363636363635e5c564f463b32271e150c0200000000000000050d141b202b333840464a5156585b626467696a6b6b6b6a696764615a5856504a453f38322b241c150d040000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b00000008121b212b353f48515a626c70797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a766e685e54493e33271c100500010c17222d374049505658595959595959595959595959595856514941372d22180d020000000000000000000000040910161a1e20222629292a292826221f1d1a15100803000000000000000000000000000000000000000000000000000000000000000000000000000007111d2934404b57636e79838f9ba6afb9c8c3b8aea59a8e827d88939da8b3bfc9c0b5aaa0968b80746960554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a66717d888f8f8f8f8f8f8f8f887d71655c53493c332a1a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060607070707060504010000000000000000000000000000000000000000000000000000000000000000000000000000000001070f161c22272e353b3e45494b4f55575a5c5f6059606363635f58605e5c5a57554f4b49453e3b352e27211c150e060000000000000000000000000000000000000000000000000000000005101c27323d47515a61646e6e6e6e6e6e6e6e6e6e6e6e6e69665f564b43372f251b1107000000000000040d161e252b2f3c434950565a6163686b707274767777777674726f6b68636059554f48433b342d251d150c0400000000000000000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c0000071019222b303b454f58616a707c8585858585858585858585858585858581786e63574b4034291d1106000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d13080000000000000000000000000000060b0f1213171b1d1e1e1e1d1b1713120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48535c66727d89949da8b6bfc8bfb4a99e95897e78838f9aa6afb9c3c4bab0a79c90847a6f63574e453a2f24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3b46525d69758083838383838383838381756d63584c433a2c231a0a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060609070b0e1111121313131212110f0c070807060300000000000000000000000000000000000000000000000000000000000000000000020911171f262c31373f454a4e5457585f6365686a6c6d696f6f6e686d6c6a6865635f5857544e4a453f37302b251e170f0800000000000000000000000000000000000000000000000000000007121e2935404b56616b6f797a7a7a7a7a7a7a7a7a7a7a7a7570665c53483f352b21160e0400000000010b141e262e353a454c545960636a6f74787b7e808182828281807e7b77736f6a635f58534b453d352d251d140b03000000000000000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c00060f172129333b434a555f686f7a848f969191919191919191919191958f837a6f685e54493e33271c10050000030d17202830373c3f404242424242424242424242424241403c37302920170d03000000000000000000000000000000010407080c101212131211100c08070400000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f2a35414c57626c77828e9aa4adb7c6c5bab0a79b90847a737e8a959fa9b5c0cac0b4a99e958a7f73685e54493e33271f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45505b6670757777777777777777777570675c53493c332a1b130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c0f11121511161a1c1d1e1e1f1e1e1d1c1a16121313110e0a0603000000000000000000000000000000000000000000000000000000000000020a121a212830363c43474f54575e6366686e71737677797a7a7a7a7a79777673716e6866635e57544f47433b352f2720181008000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b8585858585858585858585858580756c63584f453b30281e14090000000006111b252e363e4549565d636a6f747b7f83878a8c8d8e8e8e8d8b8987837f7a746e69625c554d453e352d251c1309000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c020c161f28313a434c555e636e79828e949da69c9c9c9c9c9c9c9ca09790857c706960574e453a2f24190e03000000060f1820272d313435363636363636363636363636363534312d272018100700000000000000000000000000000000000000000104060707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26323d47515a65707c88929ca7b5bdc7c1b6aba0978b80746f7a85909ca7b3bcc6c3b8aea59b8f83796e63574b42392e24190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c37424c565f66696c6c6c6c6c6c6c6c6c6a6760574c43392b23190b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1012171a1d1d202220252829292a2a2a2a29282521221f1e1c1914110e0a05000000000000000000000000000000000000000000000000000000020b121b222a323840464a53585f63686e71767a7d7f81838485868685858483817f7c7a76716e68635f58534a453f373028201810070000000000000000000000000000000000000000000000000007121e2935404b56616b737f8a9391919191919191919191877d71685f554a42382e23181007000006121a202b353e474e545f656d717a80858b8f93959799999a99999795938f8a857f79706c645e564e453e352c231911080000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c08121c262f38414a535c646e75808c929ca4ada8a8a8a8a8a8aba29c91867d716b625950473e352b20160b0000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c36404b56616b75818d98a3acb6c5cbbfb4a89c91867b706975808c98a3acb6c1c8bfb3a89d94897d72665c53483e33271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c464f565b5d6060606060606060605e5c574f473b33291b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d13181b1d212528292c2e2b30333435353636353433302c2d2b2a27241f1c19140f0b06000000000000000000000000000000000000000000000000010a121b232b333a424950555c63686e72797d8185888b8d8f909197919791908e8d8a8885817d79736e68635c554f484039302920180f0600000000000000000000000000000000000000000000000005101c27323d47515a636e78828e96a09c9c9c9c9c9ca0978f83796e635b52483d322920170d03040d16222a2f3a454e575e636f747d848c90969b9da4a3a4a5a5a5a4a3a39d9a95908b837c736e655f564e453c342a21180e0400000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e231709131b212c364048515a636c737e8a919aa3acb5b4b4b4b4b5aca39b918a7f736d635b524940362e251b1106000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b465059646f7b86919ca8b3bcc6c2b7ada4998d82766b64707c87929ca7b2bec8c2b7ada49a8e82776c62574c41372d23180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18232c363e464c505255555555555555555553514d473f362b22190b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f151a1d2326292c303335373a353a3e404041414141403f3b36393635332e2a27241f1a151009040000000000000000000000000000000000000000000008121a232b333b434b525960636d71797e83888d909596999a9c9ca19da09c9b9a989695908d89837e79716d635f585149413930281f160d030000000000000000000000000000000000000000000000020d18232d384149545f68707c86919ca4ada8a8a8b0a79d938b7f746b62574c443930271d13080b151e26323b4249545e686e757f8790949c9fa6a8adaeb0b0b1b0b0aeaca8a69f9c948f867f746f655e554d443a31281e140900000000000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e2317111a232c313b465059616b717d86919ca1aab3bcc5c9c0b7aea59d938d81766f655d534a423830261e140b010000000000000003080c101212131313131313131313131313131212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606974808b96a0aab5c0cabfb3a89d94897d7166626c77828e9aa5aeb8c3c7bdb2a79c92877c70655a51473d32261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e363c4245464949494949494949494746423d362f261b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090f15191f24272d3134363b3f4043454745494b4c4d4d4d4c4c4a45474542413e3835332e29252018140e070000000000000000000000000000000000000000071018222b333c434c535b62696f757d838a8f94989c9fa6a4a6a7a8abb0aaa8a7a6a4a69f9c98948f8a837d756e69605a5149413830261d120800000000000000000000000000000000000000000000000009131e28303a454f58626c74808b949da8b3b4b4b8ada49c90857c70645e544941372d22170f111b252e37424b555e636e78808b91979ea5aaafb3b7babbbcbcbcbbbab7b3afa9a49d96918a7f746f655d544a42382e23181006000000000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e231718212a333c444a5560696f7b849096a0aab1bac3cfc4bab0a79e958f82796e635e554c433a31281f160d0400000000000000000000010406070808080808080808080808080807060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7a84909ca7b0bac4c4b9afa79b8f84796e635b67727e89959ea9b4c0cac1b6aca3988d81756b61564b40362c22170b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e252c32373a3b3d3d3d3d3d3d3d3d3d3b3a38332d261e160a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181f24292f33373c4041464a4c4f51534f5457585859585857554f52504d4c4842413e38332f29231e181007010000000000000000000000000000000000030d172029323b434c535c636c707a81888f939b9da4a7a9afb0b1b3b4b6bab5b3b2b1b0afa9a7a49d9b938f8780796f6a615a514940362c221910070000000000000000000000000000000000000000000000040e16202b353e47525b636e79838f9ba1aab6bebdb5aa9f968e82776e645a51473c31281f1616202b353e47535c656e75808c919ca0a7aeb5b9bfc0bfbbb9b8b9bbbfc0bfb9b4ada7a09c908b7f736e645b52483d322a20160b010000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23162028323a444c555f636f7a838f959ea7b0bac2cac4bcb5aaa09690847b6f6960554e453c332a21170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737e8a959ea9b7c0c9c0b5aa9f968b7f73685e57636e7984909ba7b0bac4c6bcb3a89c91867b6f645950463b31251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c23282c2e2f323232323232323232302f2c29231d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010610171d23292f33393e41474b4c5055575a5c5e585f636364646464635f585e5c5957524d4c48423e39322e282119110b050000000000000000000000000000000008131d273039434b535d636d717c838c919b9da4a8adb3b4b9bbbdbebfc1c4c1bfbebdbbb9b4b3ada8a49d97918c827a6f6a615950463c312920170e04000000000000000000000000000000000000000000000007111b252e37424a556069717d88919ba5aeb8c3b9afa69c928a7e726a61564b43382f261c1a25303a454f58626c737f8a909aa1abb0b8bebfb9b4b3b0adadaeb0b3b5b9bfbdb7b0aaa09c91877e726b62574c443a30251a0f050000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231e273039424b545d656f76818d939da5aeb7c0c9c5bcb3aaa19c91867d716b615950463d352b23191107000000000000000000000004080b0d0d1111111111111111111111110b0b09060300000000000000000206080a0b1111111111111111111111110e0e0c09050000000000000000000306070811111111111111111111111111110f0c0904000000000000000000000000000006111d2934404b57636e79838f9ba5aeb8c7cbbfb3a89c91857b6f6357555f6974808b97a0abb5c1ccc0b5aaa0968b80746960554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181d2123232626262626262626262423211e19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111920272d32393e43494d51565859606366686a6c686e6f6f70706f6e696c6a6764625b5957524d49433d383129211b150e060000000000000000000000000000050e17222d374149535c636d717d858f939ba1a8adb3b7bdc0c3c8c9cacbcacacbcbcac8c8c3c0bdb7b3ada8a19c928e837a6f6a60564a453931271e13090000000000000000000000000000000000000000000000010b151e26303b465059636d75818d959ea9b4bcbfb7aca29c90847b6f635d534840362c221c28333e49545f68707c86919ca1aab6bac1bab6afa9a7a4a2a1a2a4a8aaafb6bac0bab5aba19790857c70645d544a3f34291f150a0000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23252e374049525b636d747f8b919ba3acb5bec7c7beb5aca39a918a7f736c635a51483f362d251b120900000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1a191714100b040000000000050a0e1113141d1d1d1d1d1d1d1d1d1d1d1d1d1c1a17130e0802000000000000000000000005111c27333e48525b66717d89939da8b6bec8c1b7aca3988d81766a61564f58646f7b86919ca8b4bdc7c4bab0a79c90847a6f63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121517181b1b1b1b1b1b1b1b1b191816130f090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202931373d43494c53585a616468696e71747577797a7a7b7b7b7b7a79777573706c6965625b58534b48413a302b251e160e06000000000000000000000000020c151e27313c47515a626c717d8690959da4aab3b7bdc2c7cbcacac9c4c0bfbebfc1c5cacacccbc7c2bdb8b1aba39c938f837a6f635e554a41372d23180e040000000000000000000000000000000000000000000000040d16212c363f48535c636f7a84909ca2abb7bfbcb4a99e958d81766d635950463b312725303a454f58636e79838f969faab1bac0b8b0aba69f9c98969596999c9fa6aab6bac1bab1a89f958e82776d64594e43392f24190e0300000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e212b353f475059626c727e87919ca2abb4bdc6c9bfb7aea59c928c80756e655c534a41382f261d140b02000000000000000000060d14191e2224252929292929292929292929292322201c18120b040000040b11171c1f21222929292929292929292929292625231f1a150e07000001080f15191c1e1f292929292929292929292929282826221e18120b03000000000000000000020c161e2a35414c57626c77828e99a4adb7c6cabeb3a89d93887c71655a514b57616b76828d99a4adb7c2cac0b4a99e958a7e73685e54493e33271f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0c0c0f0f0f0f0f0f0f0f0f0d0c0b08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e252b2f3941474b53585c63656a6f73767a7d7f818385858687878786858483817f7c7875706c65635c57524a443b352e271e170e05000000000000000000000007121c252f373f4b56616a707d8590969fa6adb4bac2c7cdc7c2bfbebab9b5b3b3b4b6babbbfc0c4c9cdc9c1bab6aca49d938d81766e655a51473d32281e130900000000000000000000000000000000000000000000000007121c262f38434b56616a727e89929ca6afb9c3b8aea59b91887d716960554a42372e28333e49545f68737e8a939da7afb9c0b7afa7a09c95908d8b8a8b8d90969aa1abb1b8c1b8afa69c92897d72665c53493e33281d110600000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2b303b454f58606a707c859097a0abb2bbc4cec4b9afa69e948e82796e635e554c433a31271f160c04000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d04040c141b21262a2d2d34343434343434343434343431302e2a241e170f07010a11191f24282a2b3434343434343434343434343433312d28221b130b02000000000000000007121c26313c47515a65707c87929ca7b4bdc7c3b9afa69a8f83786c63584947515a66717d89949da8b3c0c9c3b8aea59b8f83796e63574b42392e24190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e353a434a51565c62656c71767b7f8285888b8d8f9095929293929791908e8c8a8784807c77716d64615b544a453f372f271e150c02000000000000000000000b16212b353f48545d636f7b8490969fa6afb6bdc5cdc8c3beb8b4b2aeafaaa8a7a8abb0afb3b5b9c0c7cfcac5bcb4aca39b918a7f736b61564b41382d23180d020000000000000000000000000000000000000000000000020c161f27313c47515a646e76828e969faab5bdbeb6aba29b8f837a6f635c53473f352b34404b57636e79838f9ba3acb7c0b9afa79f97918b85817f7e7f81858c919ca1a8b1babfb6aba29a8e83776c62584c41362a1f120800000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e323b434a545f686f7a838f959fa7b0bac2cbc3bcb5aa9f9690847b6f695f554d453b332921170f05000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b0b141c242b313538394040404040404040404040403d3c39342e271f170e08111a22292e3335364040404040404040404040403f3f3c38322b231b120800000000000000010c17212c36404b56616a75818c98a2acb6c5cbc0b4a99f958a7e73675c5349414b57636e79848f9ba6afb9c4c8bfb3a89d94897d72665b52483e33271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040608090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a08070603000000000000000000000000000000020406070c0c0c0c0c0c0c0c0c0c0c0b0a080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e262e363e4549535a61646c70777d81858a8e909696989a9c9fa69e9e9ea19c9b9a989694908c87827d76706b645e544f473f372f251c1207010000000000000000030f1a25303b454f58646e76828d949ea6afb7bfc6cdc6bfb9b4aea9a7a2a69f9c9c9ca0a7a4a8aaafb7bbc5cad0c4bdb4aba29c90857b6f645a51473d32271c1005000000000000000000000000000000000000000000000000050f17222d374049545d64707b85909ca3acb8c0bbb3a89d948c80746c62584f453b3037434e5a66717d88949da8b4bcc0b5aa9f969187807a76737374767b808a9197a1abb6bdbcb3a79c93887c7065594e42362c22170c01000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a3139434c545e636e79828e949da6afb8c1cac5bcb3aaa19c90857c706a61584f453d342b22191007000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4847443e3830271e150f19222a32393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4a47423c342b22180e04000000000000040f1a25303b465058646f7b85919ca8b3bcc5cabfb3a79c90857a6f63574c433e49545e68737f8b969faab5c0ccc2b7ada4998e82776c62574c41372d23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12141416161616161616161616161616161616161616161413110e0a05000000000000000000000003080d1012121818181818181818181818161614110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e262e363e474e545c636a6f757c82888d9196999c9fa6a4a6a7a9afa9aab1aba8a7a6a4a59e9b97928e88827b726e635f584f483f352b211a1206000000000000000005111c28333f4a555f69727e89929ca5aeb6bfc7cdc5bdb6afa9a59e9b9794969090919795989c9fa6abb6bac1c8cdc4bbb4a99f958c81756b61564b4035291f140a0000000000000000000000000000000000000000000000000008131d273039444b57616b737f8b939da7b0bac2b7ada49c91867c70685f544a41383d47515a6a75818c98a4adb7c0b6aba29c91867e746f6a6867686a6f757e87919ca4adb7c1b6aca3978c8075695950463c31261b0f04000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a38414a535c646e75808c929ca4adb6bfc8c7bdb4aba29a90897e726c625a51483f352d241b120800000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c221817212b353d454b4f5057575757575757575757575754524e4840382e241a151f29323b42484c4e5757575757575757575757575755524c443c32281e130900000000000006111d28333f4a556069747f8b969faab5c0ccc1b6aca3988c80756960554a3f3a454e57636f7b85919ca8b3bdc6c7bdb2a79c92877c70655a51473d32261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2021212121212121212121212121212121212121211f1e1c19150f08010000000000000000070d13181b1d1e242424242424242424242422211f1c17110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e363e474e575e636d717b81878e92989ca0a7a8aaafafb1b3b4b9b5b5bab6b4b3b1afaea8a7a39c9a928d857e756e685f584f453b302b22160d040000000000000006121d2934404c57636e79848f9ba2abb5bec7cdc5bdb4ada69f9c94908b888685848586898c91969ba1abb0b8c1cacec3b9afa69c91867b6f64584d42392e24190e03000000000000000000000000000000000000000000000000030d172028323d48525b636e79838f97a0abb5bebdb5aaa0978f83796e635b52483d404b56616b7884909ba7b2bdbdb2a79c928a7e726d6360595c5a61636e747f8b939da8b3bfbcb2a69a8f83786a60564a3f34281d1106000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146363f48515a636c727e8a909aa2abb4bdc7c9bfb6ada49c928c80746e645c534a41372f251c140a020000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1c26313b454e555a5c6363636363636363636363635f5d5851483e342a1f19242e39424b53575963636363636363636363636362615c554c42382d22170c00000000000008121d2934404c57636e7a84909ba7afb9c4c9bdb2a79c92877c70645950463c353e4b56616a75818d98a3acb7c1cbc1b6aca3988d81756b61564b40362c21170b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12192025282b2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2a28241f19110a010000000000000810171d222629292f2f2f2f2f2f2f2f2f2f2f2d2d2a26211b140c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019202b353e474e575e686e747d848d91979ca3a8aab0b3b5b9bbbdbfc0c3c8cac5c1bfbebdbbb8b4b2aca7a29c96908a80796e695f554a453b32261e150b01000000000005101b27323d47515a67727e89949da8b3bbc6cec7bdb4ada49d95908a84807d7a79797a7b7e81858d919ca0a7b0bac5cfc8bfb5aaa0968b8074695b52483e33281c110600000000000000000000000000000000000000000000000000061018232e38414a545f68707c86919ca4adb7c2bab0a79d938a7f736b61574b44414c58646f7b86949ea8b4bfb9afa6998e82776e645d56505051565e636e79838f9ba6b2bdbfb4a89c91867a6f63584c4035291e1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b465058616b717d86919ca1aab3bcc5cac1b8afa69d948e82786e635d544b423930271e150c0300000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b201f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e231c28333e48535c62656e6e6e6e6e6e6e6e6e6e6e6e6e6c655c52473c31261a0f000000000007121d29343f49535d67737e8a959ea9b7c0c9c2b8aea59a8e82776c6257494036313c47515a65717c88939da8b3bfc8c5bcb3a89c91867b6f645950463b31251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f33363738383838383838383838383838383838383838383635332e29221a1108000000000007101820272d3134353b3b3b3b3b3b3b3b3b3b3b393835312b241c14090000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1720292f3a454e575e686e787f8790959ca1a8acb3b5babfc0c4c9c8cacbcccbcacacbcbcac8c7c2bfbcb6b2aba69f9c918c81796e635f564b43372e251b1107000000000006121e2934404b56616b77838e9aa4adb7c3c8c9bfb6ada49d938f857f7974716f69686e6f72757b818a9197a0abb6bcc5cfc4bab0a79b8f84786c62574c41352a1e1307000000000000000000000000000000000000000000000000000009141e28303b454f58626c75808c949ea8b4bbc0b7aca39c90857b70645d5449434e5a65717d8894a5aeb8c0b5aa9f96887d71665e544a4644474b545f68737e8a96a7b0bac1b6aba197887c7065594e42362b1f1408000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146434a5560696f7b8490969faab1bac3d0c5bab1a89f958f837a6f685f544d443b322920170e050000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7771685d52473c30251e2a35414c57626c777a7a7a7a7a7a7a7a7a7a7a7a79756c61554a3f33281c1100000000030d171f2b36424d58636d78838f9aa5aeb8c7cbbfb4a99e95897e72665b524838302d37414d58636c77838f9aa6afb9c3ccc0b5aaa0968b80746960554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e4243444444444444444444444444444444444444444442413e39322a22190f05000000030d17202930373c404146464646464646464646464544403b352d241911080000000000000000000000000000000000000000000000000000000000000000000000000000000009131d2731394149545e686e78808b91979ea5abb1b8bcc0c4c9cbcdcac9cac5c1bfbfbebfc1c4cacacbcac6c1bbb6afaaa19a918d81766f655c53473e352b20160b000000000007131e2a35414d58646f7b86919ca8b4bdbdbdbdb9afa69d938f837b736e686563605f6364666b6f757f87919ca2acb6c0cbcac0b3a89d94877c7065594d42362b1f13080000000000000000000000000000000000000000000000000000040e16212b353f47535c636f7a848f9ba2abb6bfbcb5aa9f968e82766e645a5147505b67727e8995a1acb8bfb3a89c90857a6e63574c443c373c454f5864707b8797a0abb5c1bab1a894897d72665b4f43382c211509000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464c555e636e79828e949ea7afb9c2cac4bdb6aba19790857c706a60584f453d342a22181006000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23222d3945505c67737f85858585858585858585858582776b5f54483d31261f2b36424e5965707c85858585858585858585858586796e62574b3f34281d110000000008131d27323d48525b66717d88939da8b5bec8c4bab0a79b9084796e63574c42382927333e49535c67737e8a959fa9b4c0cbc4bab0a79c90847a6f63574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b152029333c43494d4e50505050505050505050505050505050505050504d4c48423b32291f150a00000008131d27303941474b4c5252525252525252525252504f4b453d352a21180e040000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a545d636e78808c919ca0a7aeb6bac1c9cccfccc7c2bfbebabab6b4b3b3b4b5babbbfc0c3c9ccc7bfb9b5aaa29b918b7f746c63584f453a30251a0e03000000000a16222d3944505c67737e8a97a1abb1b1b1b1b1b1aa9f968f837a6f6b635f5857555457585a61646e747f8b929ca7b2bcc6cdc2b7ada4968a7f73675c5045392d22160b00000000000000000000000000000000000000000000000000000007111b252e37424a556069717d89919ba5aeb8c3b9afa69c92897e726a60564b505c67737e8a96a1adb8beb2a69b8f8478695f554a3f312d35404b57636e7a85919ca8b4bfb8aca195897e72675b5044382d21160a000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514b545d656f75818d939ca5aeb7c0c9c6bdb4aba29c91877e726c625950473e352c241a120800000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23222d3945505c67737f8a919191919191919191918e82776b5f54483d31261f2b36424e5965707c87919191919191919191919185796e62574b3f34281d11000000020d18222d37404c57626b76828e99a4adb7c6ccc1b5aba0978b8074695f554a3f3328242f39434c57636f7a85909ca7b3bcc6c9c0b4a99e958a7e73685e54493e33271f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524b42392e24190e0300020d18222d3741495156585d5d5d5d5d5d5d5d5d5d5d5c5a554e453a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a636d74808b919aa1abb0b8bec5cad1cac5c1bdb7b3b2aeb1aba8a7a7a8abb0afb3b5b9bfc7cbc9c3bab2aba29c91867d71685f54493e33281f150a000000010d1924303b47525e6a75818c98a8a6a6a6a6a6a6a6a79c90857c706a615a544f4c4a4a4b4c51565e636e78828e99a3acb6c1ccc7bbafa4988d81766a5e53473c30241208000000000000000000000000000000000000000000000000000000010b151e27313c465059636d76818d959ea9b4bcbfb6aba29b90847a6f635c53505c67737f8a96a1adb9bdb2a69b8f83786c5b52483e332a34404b56616a7985919ca8b3bfb8aca1958a7e72675b5044382d21160a000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51525b636d737f8a919ba3acb5bec7c8bfb6ada49b928b7f746d645b524940372e251c130a0100000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23222d3945505c67737f8a969c9c9c9c9c9c9c9c998e82776b5f54483d31261f2b36424e5965707c87939c9c9c9c9c9c9c9c9c9185796e62574b3f34281d1100000004101b26313c47515a64707c86919ca8b4bdc6cbbfb4a89c91867b6f64584f453b30251f28343f4a55606975808c98a3acb6c1ccc3b8aea59b8f83796e63574b42392e24190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c6365676767676767676767676767676767676767676765625b52483e33281c11060004101b26313c47515a6163696969696969696969696967655e554a42382e23180e040000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a717d87919ca1aab6bac1c8d0d0c9c1bab6b4ada8a7a3a8a19c9c9c9ca0a7a4a8aaafb6bbc2cacec3bbb5aba0978f83796e63574b43392f24190e030000030e19242f3a454e576c77838f9a9a9a9a9a9a9a9a9a9a968b80746b6259514a45403f3e4041474b545e68707c88929ca7b2bec9c8bdb1a69a8e83776c605449362c21170c01000000000000000000000000000000000000000000000000000000050e16222c364049545d646f7b85909ca3acb7c0bbb4a99e958c81756d6358505b67737e8a95a1acb8beb3a79c9084796c62574c423a353a424c58636f7b86969faab5c0b7aca095897d72665b4f44382c21150a000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5059626b717d86919ca1abb4bcc6cac0b8aea59d938d81786e635d544b423930261e150b030000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23222d3945505c67737f8a96a1a8a8a8a8a8a8a5998e82776b5f54483d31261f2b36424e5965707c87939fa8a8a8a8a8a8a89c9185796e62574b3f34281d1100000006121d2934404b56616a75818c97a1abb6c1cdc2b7ada4998d82766b6156483f352b211b26313c46505964707c87929ca7b2bec8c8beb3a89d94897d72665b52483e33271d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d717272727272727272727272727272727272727272706c62574c41352a1e13070006121d2934404b56616a6f7575757575757575757575736e655b52483d32271d13090000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b849097a1abb1b8bfc7cecac5bdb8b1aba8a49d9b979497919090919795989c9fa6abb2b9c1cacfc4bab0a79d938a7e72675c53493e33281d1106000005101c27333e49545e6879848e8e8e8e8e8e8e8e8e8e8e8e867a6f635b5249413b35343334373d454e57626c77828e9aa5b1bcc8cabeb3a79c9084796d5950463b31261a0f040000000000000000000000000000000000000000000000000000000008121c263038434b56616a737e8a929ca6afb9c3b8aea59c91877d716960555a66727d8994a6afb9c0b4a99f95877c70655b524a4341444b545d66727d8995a7afb9c2b8aea594887c71655a4e43372b201409000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d58606a707c859097a0abb2bbc4cfc4bab0a79e958f837a6f685e544d443a322820160d04000000000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb4b4b4b4b1a5998e82776b5f54483d31261f2b36424e5965707c87939faab4b4b4b4b3a89c9185796e62574b3f34281d110000030f1a25303b454f58636f7b85909ca8b1bac5cabfb3a89d94887d71665a5147372f251c17222c36404c57626c77828e9aa5aeb8c2cdc2b7ada4998e82776c62574c41372d23180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7c7065594d42362b1f14080007121e2935414c58636f7b80808080808080808080807f736b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b828d919ca1a8afb7bec5c1bab6aca8a19c99948f8c89878585858587898d90969ba2a9b1b9c3cccac0b8ada49b8f83786c63584d41362a1f1207000006111d2934404b57636e788283838383838383838383838380756a60564b4239302b2828292d353e47535c68747f8b96a2aeb9c5cbbfb4a89c91857a6960554a3f34281d110600000000000000000000000000000000000000000000030506080b0d0f0c161f28313c47515a646e77828e969faab5bdbeb6aba1978f83796e635b5964707c87959fa9b4c0b8aea5988c80756c625a534d4d4d545b636d76828e99a5b0bcbfb4a99e94867b6f64584c41352a1e1307000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5f686f7a838f959fa7b0bac2cbc4bcb5aba09790857c706960574e453c332a21180f0600000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9bfbfbcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6bfbfbfb3a89c9185796e62574b3f34281d11000005111c28333f4a555f69747f8b969faab8c1cac4b9afa69b8f83796e63574b4138291e15121c26323d48525b66727e89949ea9b4c0cac7bdb2a79c92877c70655a51473d32261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b768189898989898989898989898989898989898989898074695d51463a2f23170c0006121d2934404b56616a77838c8c8c8c8c8c8c8c8c8c867c70645a51473d32271d130800000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a6f79818b91979fa6aeb5bcb8b1aba39d97918d8884807d7b7a79797a7b7d81858d9199a0a9b3bbc5d1c8bdb3a89d93887c7165594e42352b21160b000005101c27333e49545e686e777777777777777777777777777570665a51473a3228211d1c1d252e36434e5a65717d88949fabb7c2ccc1b6aba197867a6f63574c4035291d12060000000000000000000000000000000000000001070b0f11121417191a1b1c17232d37414a555e64707c86919ca4adb8c1bab1a89d948b80746c6257636e7a85909ca7b3bfbfb3a89c91867c706b635c5958595d636c717d89929ca6b2bdbeb3a79b9084796b61564b4034291d1206000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d636e78818d939da6afb8c0cac6bcb4aba19c91867d716b625950473e352c231a11070000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000006121d2934404c57636e7984909ba6afb9b4b4b4b5aa9f968b7f73685e54493e33271c0e0c19242e38424c57636e7984909ba7b0bab4b4b4b6aca3988d81756a61564b40362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d9595959595959595959595959595959595958b8074695d51463a2f23170c0004101b26313c47515a66727d899397979797979797978c81756a61564b40372d22170c02000000000000000000000000000000000000000000000000000000000000000000000005101b26313c47515a61696e767f8790969ea5acb4afa8a19c938f87827d7874726f6e686d6b6f72757b818b9099a2abb5c0cbccc2b7ada4978c807469584f453b30251a0f0300030e19242f3a454e575e636b6c6c6c6c6c6c6c6c6c6c6c6c69665f564940372a21181111141e2a36424d5964707c87939eaab6c1d0c5bab19d92867a6f63584c4135291e1207000000000000000000000000000000000004090b11161a1c1d2022242627272726273039444c57626b747f8b939da7b0bac1b8ada49c91867c70685e5f6876828e99a6afb9c0b5aaa0968f847b716d67656465676d727c85909ca2abb6c0b8aea5988d81766a5a51473d32271b1005000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468646e74808b929ca4adb6bfc8c7beb5aca39b918a7f736d635b524940362e251b1309010000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110006121d28333e49535c67727e89949ea9a8a8a8a8a8a8a89c90857b6f63574e453a2f24190e0a141e28333e4a555f6874808b97a0aba8a8a8a8a8a8a89c91867b6f645950463b31261a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1978b8074695d51463a2f23170c00020d18222d37414b57636e79838f9aa4a3a3a3a3a79c91857b6f645950463c31261c12080000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a515860636f747e8590949ca3aba69f97918b837d76716d696664635f5a6164666a6f767f8b929ca6b2bfc9d1c7bdb1a69a8f8377695f554a3f33281c110500000b16202b353e474e5457606060606060606060606060605e5c564f463930271d130907131e2a35414c58646f7b86929ea9b5c0ccc1b6aba197867a6f63574c4035291d120600000000000000000000000000000003080e14181b212528292b2e303232333232302e323d48525b636e79838f97a0abb6bebdb5aaa0968e82786e635a67737e8a969faab5bfbab0a79e948f847d7672706f7073777d8590959fa9b3bbbfb4a99e95897e72665b4f43372d23180d02000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686c727e89909aa2abb4bdc6c9c0b7aea59c938d81756f655d534a423830261e140b02000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110008141f2b36414d58636d77838f9aa59c9c9c9c9c9c9ca3988d81756a6156473e352b20160b030f1a25303b454f58646f7b86919c9c9c9c9c9c9c9c9ca0968b80746960554a3f34281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5acacacacacacacacacacacacacaca2978b8074695d51463a2f23170c000008131d27333e49545e68727e89949da8afafafaa9f968c80746a60564b40362c21170c02000000000000000000000000000000000000000000000000000000000000000000000009131d273039414850555f656d727c848e939ba29f9691878079716c65635c5b5857545157585a61646f76828d99a6afb9c3cecbbfb4a89c91857a6e63574c4034291d1206000006111b252e363e45494b5454545454545454515658585f635f58514941372d22181211151f2a36424d5964707c87939eaab6c1cbbfb4a89c91857a6e63574b4034291d11060000000000000000000000000000070d13181e23252b303334373a3c3d3e3e3e3d3c3a3738424a555f69717d87919ca5aeb8c2bab0a79c938a7f736b61636f7a85909ca6afb9c0b7ada49e949088827e7c7b7c7e828990959fa5aeb8c2b8aea59c90847a6e63574c4034291d130900000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807472727c85909ca1aab3bbc5cfc4bab0a79e958e82796e635e554c433a31281f16100800000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000914202b37434e5a65717d88939191919191919191919193887c71655a5147362e251b1106000b16212b353f4b56616b76828d919191919191919191919190847a6f63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0b8b8b8b8b8b8b8b6b6b6b6b6aea2978b8074695d51463a2f23170c0000030e19242f3a454e57636e79848f9ba5aeb8b9afa79c90857a6f635950463b31251b11070000000000000000000000000000000000000000000000000000000000000000000000030d17202930383f464a565d646c707b828d91999691867e746e68635c58534f4d4b49474b4d51565f65717c88969faab5c0cbccc1b5aba097877b7064594d42362a1f13080000010b141e262e353a3e4049454a4b4e5257595a616367686e68615a51473c3129211d1d1e252f37434e5a66717d88949fabb7c2cabeb3a79c908479685e54493e33271c1005000000000000000000000000020810171d22282e32353b3e40424547494a4a4a49474643403f454f58636c75808c949ea9b4bbc0b7aca39c90857b6f64606a75808c959fa9b4bbbeb5ada59e9b928d898786878a8e929c9fa6aeb6bfbcb4a99e948b7f746960554a3f33281d110400000b16222d3945505c67737f8a96a1adb9c4d0c7bbb0a4988d817d7d7d8490969faab1bac3ccccc0b5aaa09690847b6f6960554c48423a352e2620181007000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000e1925313c48535f6b76818585858585858585858585858583776c6358494037261e140b010007111b25323d47515a66717d85858585858585858585858585857e73675c5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcc3c2bab4b0afababababababa2978b8074695d51463a2f23170c0000000b16202b353e4a545f68737f8a959ea9b4bfb4a99f958b7f746960554a3f352b21160b01000000000000000000000000000000000000000000000000000000000000000000000007101820272f363b454d545c626b6f79818b9091867e726d635f58534d494341403e3d4041474d58636c7985909ca8b3bfcacfc4bab0a794887d71665a4e43372c201409000000040d161e252b2f3e46474f54575a5b6264686a6f7376796f6a61564b4239302c2928292e353f48535c68747f8b97a2aeb9c5c9bdb2a69a8f83786c574e453a2f24190e0300000000000000000000000106131820272d31383d3f454a4b4e5153545556555553514e4c4a4648535c636f7a84909ba2abb6bfbcb4a99f958d81766d64636f7b85909ca2abb4bdbeb5aea9a29c999593929395999ca2a9afb6bfbcb3aaa19b90847a6f635850463b30251a0f0400000b16222d3945505c67737f8a96a1adb9c4d0c8bcb1a69b918d89898990949ea6afb9c1cad6cbbfb3a89c91857c716b65635c575249453e36302820180f070000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000d1924303b47525d6871767a7a7a7a7a7a7a7a7a7a7a7a7a7772695c5349393027160d040000020c18232d38414d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43382c21150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcc4bab1aaa5a39f9f9f9f9f9f9f978b8074695d51463a2f23170c00000006111b25303b454f58636e7a84909ba6afb9b9afa69b90847a6f63584f453b30251b11060000000000000000000000000000000000000000000000000000000000000000000000000810171f262c303c444b535a61696f788089897e726d645d544f47433e393534333235373e49535c6d78848f9ba7b2bec9d4cab7aca095897d72665b4f43382c21150900000000050d1d27323c464e56585f6365696c7073777b7e82847b6f635b5249423b36343435373e454f58636d77838e9aa6b1bdc8c7bcb0a4998d82766a5f5348352b20160b0000000000000000000000040b111b232930373c42484c4f54575a5c5e60616161605f5d5a5755504c4a56606a727e89929ba6afb9c3b9afa69b92897e726a616a737f8a919ba3acb4bcbeb8b4aba6a5a19e9e9fa1a5a7acb4b9bfbbb3aca29a91897e72696055483f362c21170c0100000b16222d3945505c67737f8a96a1adb9c4d0cac0b5aba29b989494949b9ea5aeb7bfc9d2d5cabeb3a79b90847f7b76716c65625b544e474039302820170f0600000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000b17222d38434e5860686b6e6e6e6e6e6e6e6e6e6e6e6e6e6c6962594b4339282017050000000009131e28343f49535d63666e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbfb4aaa19a9794949494949494948b8074695d51463a2f23170c000000010b16212b353f4a556069747f8b959fa9b4bfb4a99e958a7f73685f554a3e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000000060e161c212c343b424a515960686e747e80756e645d544a453f37332f2a29282f333b424c57626c7985909ca7b3bfcacfc3b8aca095897e72665b4f44382d21150a000000000915202b36414c565f66686e7174787c7f83868a8d8b80746c625a524a4541403f4042474f555f68717d88939ca7b2bec9c4bab0a7978b7f74685d51453a2e23110600000000000000000000050d141b202c333941474b5257585f6365686a6c6c6d6c6c6a686663605957525059646d76818d959fa9b4bcbfb6aba29b90847a6f63656e76818d939da4acb3bac2bbb5b2b0acaaa9aaacb1b2b6bcc0bab5aba39c928c80756d64595046382f261c12070000000b16222d3945505c67737f8a96a1adb9c4d0cfc5bbb2aba6a4a0a0a0a7a8aeb5bec7d0d9d6cbbfb4a99e94908a86827d76706c635e575149403830281f160c02000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110009141f29343e4750585d5f63636363636363636363636363605e5951493b322918100600000000040e1a252f3a434c53585a63636363636363636363636363635c5a554d453b31261b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbbb0a59a908c8888888888888888888074695d51463a2f23170c0000000007111b25303b465059636f7a85909ca6afb9b8aea59b8f84796e63574e453a2f24190e0300000000000000000000000000000000000000000000000000000000000000000000000000050c121c232a3239414850575e636e727570665d544c443b352e27272c3033393e444b535c65707c87959fa9b4c0cbcec2b7aba094887d71665a4f43372c201509000000000b17222e3944505b666f74797d8083878b8e91979991867c706a625b554f4d4c4b4c4d52585f636e79828e9aa3acb6c1ccc0b5aaa096897d71665a4f43382c201509000000000000000000040d161e252b2f3c444951565b6264686e71747677787878777674716e6965625b57545d646f7b85909ca3acb7c0bbb4a99e948c80756c63636f7a838f939ca3aab3b7bdc0bdbcb8b6b5b6b8bcbdc1bcb8b0aba29c938e82796e635d54494036271f160c020000000b16222d3945505c67737f8a96a1adb9c4d0d5cbc2bbb5b1b0acacacb2b4b8bec5ced7e0d8cdc2b8aea59e9b96918d88827c746e68615a514940382f261c1208000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d1100050f1a242e3740474e52535757575757575757575757575755534f4941382b2219080000000000000b15202a333c43494d4e5757575757575757575757575757504f4b453d342b21170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbaafa3978c807d7c7c7c7c7c7c7c7d7b6f64584d41362a1e130700000000010b17212c363f4b56606a74808b969faab5beb4a89e94897e72685e54493e33271f150b00000000000000000000000000000000000000000000000000000000000000000000000000000207131a2229313840474e545d646769665f564d443c302b2b2f33363b3f43494d545b636c75808c98a6afb9c3cecec3b8aea593887c7065594e42362b1f1408000000000c17232e3a46515d68748084888c8f94969a9ca0a0968f837b706b635f5858575658595b62686e75808c939ca7b3bcc6cbbfb3a89c91857a6f63574c4035291e12060000000000000000010b141e262e353a464c545a61636b7075797c7f818384848483817f7d7a75706c64615a56616b737f8a939ca7b0bac2b8aea59c91877d7169606a6f7b838e939aa1a8adb2b6bbbdbfc0c3c0bfbdbab6b4aca7a09c928d827a6f695f554d44383026170e05000000000b16222d3945505c67737f8a96a1adb9c4d0dbd3cbc5c0bcbbb7b7b7bebfc2c7ced2d2d2d3d2c8beb5aea9a7a09c99928d867f786f6a6159504840362c21170f050000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d1100000a141e272f373e4347484b4b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281a120900000000000006101a232b333a3f42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f7371717171717171716f6b61574b4035291e1207000000000007121c26313c465059646f7b85919ca7b0bab7ada49b8f83796e63574b43392f241a0f050000000000000000000000000000000000000000000000000000000000000000000000000000030a121920282f363e454954595b5e5c564f463d342f33353a3e40464a4c53585e646c717d86919ca8b3bfc8d3cbc0b4a99f95877b7064584d41362a1e1307000000010d1824303b47525e6a75818c95979b9da4a5a8aba79d948f837c736e69666463606364676c7078808c919aa3acb6c4cec3b9afa6998e82776960554a3f34281d1106000000000000000006111b252e363e4549565d646a6f757b8084888b8d8e8f908f8f8d8b8885817c766f6b655e5a636e78828e96a0aab5bdbeb6aba0978f83796e63616a6f7a828c919b9da4a7acb0b2b3b5b9b5b3b2b0aba8a39c97918b81796f6960584f453c34281f160600000000000b16222d3945505c67737f8a96a1adb9c4d0dbdbd5cfcac8c7c3c3c3c6c6c6c6c6c6c6c7c7c9cbc6beb8b4b0aaa8a29b97918b827a6f6a605950463b31291f150a0000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000040d161f272e34383b3c404040404040404040404040403d3c39352f2820180a010000000000000009121b232a2f3436374040404040404040404040404040393835312b241c140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73686565656565656564615a51473d32271c10050000000000020c17222c37404b56616a75808c97a0abb5beb3a89d93897d72665c53493e33291f150a000000000000000000000000000000000000000000000000000000000000000000000000000000010810171f262e353a444a4e4f52504c463f3235393e3e45494b5055575c63656e727c849097a0aab5c1cfd6cabeb3a79c9084796e63574b4034291d1106000000000b16222d3945505c67737e8a96a5a6a8adb1b4b6ada49d938f857f7975726f6e6a6f7073767c828c909aa1aab3bcc6cbc0b4a99f958a7e73675950463c31261b0f040000000000000005111a202b353e474e545f666d727b81868c909596989a9b9b9b9a999795908c86817b736e635f5e68707c86919ca4adb8c1bab0a79d938b7f746b62616a6f7980888f939a9ca3a4a6a8aaafaaa8a6a7a09c9a938e867f786f69605950483f362c23170f0600000000000b16222d3945505c67737f8a96a1adb9c4d0ddd5cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbcbdbfc1c5c2c0bab5b3aba7a09c928e827a6f6960554a43392f24190f0500000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d11000000060f161e24292d30313434343434343434343434343432312e2a251f1810070000000000000000020b121a2025292b2c34343434343434343434343434342d2c2a26211b140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5a5a5a5a5a5a5857514a41382e23180d0200000000000008131d27323c47515a64707b86919ca8b4bbb7ada49a8e82776d63584d42392e24190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b2f3a3f43444645423d383d4042484c4e5457596063676c71777e8590959ea7b0bac4cfcfc5bab0a7998d8276685e54493e33271c10050000000008141f2b37424e5965717c8897a0aab3b7bdbfbdb5ada49d95908b84807d7b7a7a7a7c7e82868e929aa1aab1bac4cec3b9afa69c90857a6f63574c40362c22170c01000000000000040d16212a2f3a454e575e636f747e848c91979b9ea5a4a6a6a7a6a6a4a69f9c97918d857e756e6860626c74808b949da8b1bac1b8ada49c91867c70645e61696e757d83898e9396999a9c9fa69f9c9a9897918e89827c746e686059504940382f261b13070000000000000b16222d3945505c67737f8a96a1adb9c4d0d6cdc4bdb7b3b1afafafafafafafafafafafb0b2b4b6bac1c2c4c0bbb7b0aaa29c938e827a6f635c53493e33291f150a00000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d1100000000060d141a1f22242529292929292929292929292929262623201b150f0700000000000000000000020910151a1d1f20292929292929292929292929292922211f1b17110b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c504e4e4e4e4e4d4b47413a31281e140900000000000000030d18232d37414c57626b76818d98a2abb6bdb2a79c93887d71655c53483e33281e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b202a303437383b353a3e41474b4d5357575e6365696e72777d828a90969ea5aeb7c0cad4ccc1b6aba0978b7f7368574e453a2f24190e030000000006121d2935404c57636e7a85919ca8b3bfc7cbc5bdb4ada69f9c95908c8987868586878a8d91979ca2aab1bac2cac5beb4a99f958b80746960554a3f34261c1208000000000000010b141e26323a4249545e686e75808790959ca0a7a9aeb0b1b2b2b2b1b0afa9a8a19c96908a81796e6960636e79838f97a1abb6bebdb5aa9f968e82776e645a60636d71797e83878a8d8f90969196908f8d8a86827d77706c635f585048403830271f150b030000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bdb4aca8a6a4a4a4a4a4a4a4a4a4a4a4a5a6a8abb1b4b8bec5c8c0bab5aba39c928c80746c63584c42392e24190e03000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000040a0f141719191d1d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b0500000000000000000000000000060b0f1214151d1d1d1d1d1d1d1d1d1d1d1d1d1d161514100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c50454242424241403d38312921180e04000000000000000009131d27323d48525b65707c87929ca6b2bcb6aca3998e82766c62574c42382e23190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11162026292f33363e45494b5157585c6265686e71757a7e82888e929c9fa6aeb6bec8d0cfc6beb4a89c91867b7064584d41352b20160b000000000006111d28333f4a55606978838f9aa6b2bdc9d4cdc5bdb6afa9a59e9c9794929791979395999ca0a7acb3bac2cac7beb5aca39c90857a6f635950463b3126160d0300000000000006111b252e36424b555e636e78808b91979ea5aab0b4b8bbbdbdbebebdbbb9b4b1aba69f9c918d81796e686069717d87919ca5aeb8c2b9afa79c928a7e736a61565c63686e72777b7f8183858586858583817e7b77726d65625c544f47403830281f170e05000000000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b7aca39d9a9898989898989898989898999b9ca1a8a9aeb5bbc3cac4bcb4aca39c91867c71655c53483e33281c1106000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000005090b0d0e111111111111111111111111110f0e0d0a0601000000000000000000000000000000000407080911111111111111111111111111110a0a08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045393737373635322e2821191007000000000000000000030d18232e38424c57626c76828e99a3acb6bcb2a79c92877c70655b52483d32271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000010810171e252b30393e44474e54575a6164686c7074797d8185898e929a9ca3aaafb6bec6cfd1c9beb6aba2998d81766b61574b4035251b11060000000000040f1a25303b4650596a75818c98a4afbbcad4d5cdc7bfb9b4aea9a7a3a0a7a09ca0a7a1a5a8abb0b8bcc3cac7bfb6aea59c928a7f736a60564840362c221706000000000000000b16202b353e47525b646e75808c919ca1a8aeb5bac0bfbebab8b7b7b9bdbec1bab6afaaa19b928d81796e63636d75818c959ea9b4bbc0b7aca39c90857b6f645d54585f63676b70737678797a7a7a797876736f6b66635d585349453e372f281f170f0600000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb3a89d938f8c8c8c8c8c8c8c8c8c8c8d8d8f91979b9ea5abb2bbc3cfc4bcb5aba0978e82776c62574c41352a1e1409000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e2b2b2a2927231e181009000000000000000000000009141e28333e48525b65717d88939ca7b2bdb6aba2998d81766b62574c41372d23180d0300000000000000000000000000000000000000000000000000000000000000000000000000000109111921272f353b42484c54575e63666b6f74787c8084888c90959a9ca3a7acb5b9bfc7cfd3cac1b8aea59b91887d71655b52483d3227140b010000000000010c17212c3645505c67737f8a96a7b0bac4cfdad7cfc8c3beb8b4b3afacb0aba8abb0adb0b4b6bac1c8ccc5bdb6afa69e948e82786e635a5147382f261c1208000000000000030e19242f3a454e57626c737e8a909aa1abb1b8bebeb8b4b2aeacabacaeb2b3b7bdbfb9b5aaa29b928c80746d63636f7a84909ba2abb6bfbcb4a99f958d81766d63595054575b6264676a6c686e6f6e686c6a6764615a59544c48423a352e261f170f070000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c9bdb1a69a8f8381818181818181818181818283868a90949ba2abb2bbc7cfc4bab0a79c93877c7065594e42382d23180d020000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22201e1e1c18140e07000000000000000000000000040e19242e39424d58636d77828e9aa4adb7bcb4a89c91867c70645a51473d32271d1308000000000000000000000000000000000000000000000000000000000000000000000000000109111a212931373f454a53575d64686e71767b7f83888c9094989c9fa6a7acb2b6bcc3c9cfd0c9c4bab1a89e958d81766d63584a41382e231804000000000000000712202b37424e5965717c8897a0abb5c1ccd7d6cec7c2bfbebfbebab7bab5b4b5bab8bcbfc1c5cac6c1bbb5ada69f9590847b6f685e54494037281f160c0200000000000005101c27333e49545e68707c86919ca1aab6bac0bab5aea8a7a3a09fa0a2a6a8adb4b9bfbbb3aba29a90897d7269606a727e89929ca6afb9c3b8aea59b91897d716960554a4b5257595c5f585f6363635f585e5c5856514d4a443e39302b251e160f07000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80757575757575757575757676787b7f848d919ba2abb6bfc8cac0b8aca3988c8175695a51473d32271c10050000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23222d3945505c67737f8a96a1adb9c4c8bcb1a5998e82776b5f54483d31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22161312100d090400000000000000000000000000000a141f29333e49535c66727d89939da8b3bdb5aba0978c81756b61564b40372d22170c0200000000000000000000000000000000000000000000000000000000000000000000000008111a212a323a41484f555c62656d72787d82868b8f93979b9ea5a7a9afb2b6bcc1c6ced3cfc7bfb9b5aba19790847b6f645c53493a31281e14090000000000000006121d2935404c57636f7a85919ca8b4bfcbd6cec5beb8b4b2b4b6bac1c3c1bfc1c4cac7c8c9c4c0bcb6b3aba49d9590857c706a61574e45393027170f060000000000000006111d2934404b57636e78828e969faab1bac0b7b0aaa59e9b97959495979a9da4a9afb6bebbb2aaa19b90847a6f63646e76828d969faab5bcbfb6aba29b8f847a6f635c5348484c4d50534f55575757544f53504d4b47413f3a332f29201b150d0600000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746a6a6a6a6a6a6a6a6a6a6b6a6f737a818d929ba6afb9c3cec8bcb2a79b9084786b61574b4035291e12070000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5baaea3978c8074695d52463a2f23222d3945505c67737f8a96a1adb9c4c8bdb1a59a8e83776b605449372c221f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b07050200000000000000000000000000000000050f1a242f39434b57636e79838f9aa4adb7bab0a79c91857b6f645950463c31261c12080000000000000000000000000000000000000000000000000000000000000000000000071018212a323a424a51585f636c70777e83898e91979b9da4a7a8aeb3b4b9bfc1c6ccd0d0c9c4bdb7afaaa09c91877e726a61564c43392921180e040000000000000006111d28343f4a55606978838f9aa6b2bdc9d2c7beb5aea8a7a8abb0b5b9bbbdbebebebdbdbbb9b5b3aca7a29b948f857d716c625a51473e35282017070000000000000006111c28333e48535c66727e89929ca6afb9c0b7afa7a09c94908c8988898b8f939c9fa6aeb5bebab4a89e948b80746960646f7b85909ca3acb7c0bbb4a89e948c80756c62584f4540414547454a4c4c4b4a45474441403d3834302a241f16110b040000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685e5e5e5e5e5e5e5e5e5a61636a6f79818d959fa9b4c0cbcbbfb4a99e94877b6f64584d41352a1e13070000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c6baafa3988c8175695e5247352b21222d3945505c67737f8a96a1adb9c4c9bdb2a69b8f84786c5950463c31261f2b36424e5965707c87939faab6c1cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000b151f27333e49545e68727e89949da8b3beb5aa9f968c80746a60564b40362c21170c02000000000000000000000000000000000000000000000000000000000000000000030d172029323a424b525a61696e747c82898f93999ca0a7a8adb2b4b8bec0c3c8ccd0cfccc7c0b9b5ada69f9c908a7f736d645a51473b33291911080000000000000000040f1a26313b4650596a75818d98a4afbbcacdc2b8aea59e9b9ca0a7aaafb0b1b2b3b2b2b1afafaaa8a39d9a918d837c716c635c534a41362e25180f060000000000000007131e2a35414c57626c77838f9aa3acb7c0b9afa79f97918b84807e7d7d7f838990959ea5aeb7c0b8aea59c90857a6f63616b737f8a939ca7b0bac2b7ada49c91867c70685f554a423839353b3e4040403e3b35393535322d28252019150f0701000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d525252525252525351565960686f7b85909ca7b3bfcacdc2b8aea595897e72665b4f44382c21150a0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c7bbb0a4988d81766a584f453b3025222e3a45515c68737f8b96a2adb9c5cabeb3a79c9084796a60564b3f3428202b37424e5a65717c88949fabb6c2cbbfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000030e19242f3a454e57636e79848f9ba5aeb8b9afa79c90857a6f635950463b31251b110700000000000000000000000000000000000000000000000000000000000000000009131d273039424b525b626b6f7980868e929a9da3a8abb0b3b7bdbfc2c7cbced1cdc9c4c0bbb7afaaa49d9690897f736e655d544a41372b231909000000000000000000010c17212c3645505c67737f8a96a7b0bac5cabfb4a89e949091979c9fa6a4a6a6a7a7a6a5a4a69f9c98938f88817a706c635c534b433931261e1408000000000000000008141f2b36424e5965707c87939da7b3bcc0b5aa9f9691867f797472717274787e8590959ea7b0babeb4a99f958a7e72675a636e78838e97a0aab5bdbeb5aba0978f83796e635b52483d322b303334353433302b2d2a2927231e1a16100a050000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5147474747474747474b5058616a75818c98a4afbbc6d2c7b9ada2968b7f73685c5145392e22170b0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c9bdb1a69a8f8377685f554a3e3328232e3a46515d6874808b97a2aebac5cbbfb4a89c91867a6f63584c403529202c37434e5a66717d8894a0abb7c2cabfb3a89c9185796e62574b3f34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000b16202b353e4a545f68737f8a959ea9b4bfb5a99f958b7f746960554a3f352b21160b0100000000000000000000000000000000000000000000000000000000000000060f17222d374149525b626c707b828b91979ca3a8acb4b6bac1c2c7cacdd2cecbc7c2c0b9b5b3aba79f9c948f857e736f655e554d443930271b1209000000000000000000000812202b37424e5a65717c8897a0abb6c1cabeb2a79b9084858d909697999a9b9b9b9b9a989696908d88837d766f6a625b534c433b322920160d0400000000000000030f1a25303b454f586974808b97a3acb6c1b6aca39c91867d736e69666566686e727c849097a0aab5c1b8aea5998e8276695f5f68707c86919ca4adb7c2bab0a79d938b7f736b62574c4439302728292929282521221e1e1c18130e0b0600000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b3b3b3b3b373c4047515a67727e8995a1acb8c3cfc5baaea3978b8074695d51463a2f23170c0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cbbfb3a89c91857a6e63574c40352b212f3b46525e6975808c98a3afbac6ccc1b6aba197887d71655a4e43382e242c38444f5b66727e8995a0acb8c3cabfb3a79c9085796e62564b3f34281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000006111b25303b454f58636e7a84909ba6afb9b9afa69c90847a6f63584f453b30251b1106000000000000000000000000000000000000000000000000000000000000030c161f28313c47515a626c707c848e939ca0a7acb3b7bdc1c5cacdd1cfccc8c3c0bdb7b3afaaa8a29b96918b837c726e655e554e453c342920170a020000000000000000000006121d2935404c57636f7a86919ca8b4bfc7bbafa4988d817c8185898b8d8f8f90908f8e8d8b8885817d77716d63615a524b433b332b22181005000000000000000005111c28333e4a555f6877838e9aa6b1bcbeb2a79c938a7e736d635f585a5b5d646c717d86919ca8b3bebfb3a89c90857a6e6358626c74808c949da8b3bbc0b8aca39c90857b70645d544941372d221d1e1d1c1a16111312100d0904000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a303030302d3137434e5a65717d88949fabb7c2cec6baafa3988c8175695e52473b2f24180d0100000000000000000000000d1925303c47535f6a76818d99a4b0bbc7ccc0b5aa9f96887c7065584f453b3029323d48525b6b76828e99a5b0bcc8d0c5bab1a8968b7f74685b52483d33292f3a454e5768747f8b97a2aeb9c5cabeb3a79c9084796d62564a3f33281c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000010b16212b353f4a556069747f8b959fa9b4bfb4a99e958a7f73685f554a3e352b20160b00000000000000000000000000000000000000000000000000000000000008121c263038404b56616a707c8490949ca3aab0b7bcc1c6cccfd1cdcac5c1bfb9b4b3ada8a79f9c98928d86807a706c645d554e453d342c23181007000000000000000000000006111d28343f4a55606978838f9ba6b2bdc9bdb2a69b8f8378767a7d7f81838484848483817f7d7a76716d66635d565149423a332b221a120800000000000000000006121d2934404c57636e7a85919ca8b3bfbdb1a69a8e82776e645d554f4e4f545b636c75808c98a5aeb8c0b5aa9f96887c7065595b636f7a838f9ba1abb6bebdb5aa9f968e82776e645a51473c31281f1612110f0b07070705020000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a303030302d3137434e5a65717d88949fabb7c2cec6bbafa3988c81756a5e52473b3024180d0100000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cfc4b9afa7978c8074685f554a41393435404c57626b7884909ba7b2bec9d4cabdb1a69a8f83776c62574c443b34343e49545e6876818d98a4b0bbc7c9beb2a79b8f84786d61554a3e33271b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000007111b25303b465059636f7a85909ca6afb9b8aea59b8f84796e63574e453a2f24190e0300000000000000000000000000000000000000000000000000000000010c17222c364049555e636f7b8490959ea5acb5bac0c8ccd1d0ccc7c2c1bab6b4afa9a7a49d9b96918d87817b746f69625b544d453e352d241b1308000000000000000000000000040f1b26313c4650596a75818d98a4afbbcabfb4a89c91867a6f6e7274767778797878777574716e6966635d58544b474039322a221a120a0100000000000000000007131f2a36414d5964707b8796a0aab5c0b9afa695897e72675e554a4543444b535c64707c87949ea8b4bfb9afa695897e72665b556069717d88919ba5aeb8c3b9afa69c92897e726a61564b43382f261c1208030000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463b3b3b3b3b373c4047515a67727e8995a1acb8c3cfc6baafa3978c8075695d52463b2f23180c0100000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d3c9beb2a79b9084796e635a514943404046505964707c87949ea8b4bfcad5c9beb3a79d93877c70645d544b44403f444b57636e7984909ba7b3becac8bdb1a59a8e83776b6054493d32261a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000010b17212c363f4b56606a74808b969faab5beb4a89e948a7e72685e54493e33271f150b00000000000000000000000000000000000000000000000000000000040f1b26313c465059646e77828e949ea5aeb5bcc4cad0d1ccc6c1beb7b4b0aba8a69f9c98948f8b85817c76706b636059524b443d352d251c140b03000000000000000000000000010c17222c3645505c68737f8a96a7b0bac5c1b6aba097887d716566686a6c6c6d6d6c6b6a686563605958544d49433c373028221a120a02000000000000000000000914202b37434e5a65717d8894a7b0bac0b5aa9f96867b6f63584c453b363a434c57626b7884909ba7b2beb9ada2968a7f73685c5059636d75818d959ea9b4bcbfb7aba29c90847b6f635c534840362c21160d040000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5147474747474747474b5058616a75818c98a4afbbc6d0c5b9aea2968b7f74685c51453a2e23170b0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cabfb4a89e948a7f736b615a534d4b4b4e556069747f8b96a5aeb8c2cdd7ccc1b6aca3998d81766d635c544d4c4b4c545d65717d88959ea9b4bfcbc7bbb0a4998d81766a5f53473c3025190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7b0bab7ada49b8f83796e63574b43392f251a0f0500000000000000000000000000000000000000000000000000000006111d28343f4a556069737e8a929ca5aeb6bec5cfd4d0c6c1bcb6b2ada8a7a09c9995908c88847f7b75706c64625b555049423b342c251d140c0300000000000000000000000000000812202b37434e5a65717d8897a0abb6c1c5bab0a7968a7f73685c5d5f6061616161605e5d5a5755504d49433f3a312d27201b17120d06000000000000000000000915202c38434f5a66717d8994a0abb7bfb3a89c9185796a61564b40312c323d48525b6b77838e9aa5b1bdb9aea2978b7f74685d51535d636f7b84909ca2acb7bfbcb4a99e958d81756d635950463b31261e150b0100000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d525252525252525351565960686f7b85909ca7b3bfcacec3b8aea595897e72675b4f44382d21150a0000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cdc2b8aea59c90857b6f6a635c585757575e636f7a84909ba7b3bec7d1dbd0c6bcb1a69b91897d726c645e585756585d646d76828d99a5aeb8c3cdc5baaea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000020c17222c37404b56616a75808c97a0abb5beb3a89d93897d72665c53493e33291f150a00000000000000000000000000000000000000000000000000000006121d2935404c57636f7a84909ba2acb5bec6ced1cac5bdb7b3aca7a49e9b97918e8985817d79746f6a65625c57524a464038322a241c140c0400000000000000000000000000000006121e2935404c57636f7a86919ca8b4bfcabbb0a4988d81766a59505355555656555453514e4c4a463f3f3a342f3030292826221c160f070000000000000000000915202c38434f5a66717d8994a0abb7bfb3a89c9185796a61564b40342b323d48525b6b77838e9aa5b1bdb9aea2978b7f74685d514b56616a727e8a929ca6afb9c3b8aea59b91887d716960554a42372e251b110700000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685e5e5e5e5e5e5e5e5e5a61636a6f79818d959fa9b5c0cbcbc0b4a99f95877c7065594d42362b1f13080000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d1c7beb4a99f958f837b716c6664636363686e75808c949ea9b4bfced7d2cdcbc0b5aba29c90857d726e6764636063666d727e89929ca6b5bec8ccc2b7ada495897e72665b4f44382c21150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000008131d27323c47515a64707b86919ca8b4bbb7ada49a8e83776d63584d42392f24190e040000000000000000000000000000000000000000000000000005111c27323d48525b68737f8a959ea9b3bcc5ced1c9c1bab6ada8a39c9a948f8b86827e7a75716e6863615a57534c48423c363028221a130b040000000000000000000000000000000006111d28343f4a55606978838f9ba6b2bdc9beb2a69b8f84786a60564b494a4a4a4a49474543403f3b363b3b3b3b3b3b3534312c261f170f0600000000000000000914202b37434e5a65717d8894a7b0bac0b5aa9f96867b6f63584c443b353a424c57626b7884909ba7b2beb9ada2968a7f73685c5147515a646e77828e969faab5bdbeb6aba19b8f837a6f635b52473e352b20160e04000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746a6a6a6a6a6a6a6a6a6a6b6a6f737a818d929ba6afb9c3cecabeb3a79c9084796e63574b4034291d11060000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d7cec3b9afa69d938f837d76726f6e6e6f72787f8b909aa5aeb8c2cdcec8c2bfbebbb4a99f9590857e7773706e6a6f71767d85909ca2abb5c6cecabeb3a89d93867b6f64584c41352a1e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d98a2abb6bdb2a79c93887d71655c53483e33281e14090000000000000000000000000000000000000000000000000007131e2a35404c57626c78838f9ba5aeb8c3ccd4cac1b8b1aba49d9a938e89847f7b76726f6965635e5756514c48423d38312c261f171109030000000000000000000000000000000000040f1b26313c4650596a76818d98a4b0bbcabfb4a89c91867a6f63584c47474747474747474747474747474747474747403f3c3630281f160d030000000000000008131f2a36424d5964707b8797a0abb5c1b9afa695897e72675e554a4542444b535c64707c87949ea8b4bfb9afa695897e72675b4f4449545e64707c85909ca3acb8c0bbb3a89d948b80746c62584f453a30281e1409000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80757575757575757575757676787b7f848d919ba2abb6bfc9cdc2b8aea5998d8176685e54493e33271c10050000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2ddd3c8bfb6ada49d948f86817e7b7a7a7b7e828b9099a1aab5bec8cec6beb8b4b3b0b2afa69f95908a827e7b7a797a7d818990969faab3bbc5d0c5bab1a89b8f83786a61564b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000009131d27323d48525b65707c87929ca6b2bcb6aca3998e82766c62574c42382e23190e0400000000000000000000000000000000000000000000000008131f2a36424d5964707c87939da8b5bec8d4d0c5bab1a8a19c938f89827e79746f6b6763605957544e4b47413e39322e28221c160f0701000000000000000000000000000000000000010c17222c3645515c68737f8a96a8b1bac5c1b6aba197887d71655a52525252525252525252525252525252525252524c4a46403830261c12080000000000000006121d2934404c57636e7a85919ca8b4bfbdb1a59a8e82776e645c554f4e4f545b636c75808c98a5aeb8c0b5aa9f96887c7065594e42444c57626b747f8b939da7b0bac2b7ada49c91867c70685f544941382d23180f060000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c9bdb1a69a8f8381818181818181818181818284868a90949ba2abb2bbc7cfc8c0b4a89e94897d7266574e453a2f24190e030000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2d6cfc8c3bdb4ada49d97918d8987858586898e9299a0a9b1bac6cec8beb5aea9a7a5a7abafa69f9c938e8a87858586888d919c9fa6afb9c3ccccc1b6aba1978b7f74685a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000030d18232e38424c57626c76828e99a3acb6bcb2a79c92887c70655b52483d32271e13090000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a4adb7c6ced8ccc1b6aba197918b837d77726e6864615a5755504b49453e3c37383734302a231c140d0400000000000000000000000000000000000000000812202b37434e5a65717d8897a1abb6c1c5bab1a8968b7f73685e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5755504940362c22170c0100000000000005111c28333f4a555f6977838f9aa6b1bdbeb2a79c938a7e726d635f585a5a5d646b717d86919ca8b3bebfb3a89c91857a6e63574c403d48525b636e79838f97a0abb5bebdb5aaa0978e82786e635a51473d322820170d0300000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabeb3a89d938f8c8c8c8c8c8c8c8c8c8c8d8d8f91979b9ea5abb2bbc3cbcac0b8ada49b9084796e63574c40352b20160b000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cfc6beb8b4b3b4ada7a09c999597919196959a9ca3a9b0b9c2cacdc2b8aea59e9b999ca2abafa9a39c9a969791919694989ba2aaafb7bfc9cfc5bab0a79c91867c7064594d41372d23180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000009141e28333e48525b65717d88939ca7b2bdb6aba2998d81766b62574c41372d23180d0300000000000000000000000000000000000000000000010d1924303b47535e6a75818d98a4afbbc7d2ccc1b6aca39c91877f79716d66635f5856514c4a46403e3a3a3e4044423f3a342c251d140c040000000000000000000000000000000000000006121e2935404c58636f7a86919ca8b4bfcabbb0a4998d81766a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a63605950463c31261b0f04000000000000040f1a25303b454f586975808c97a4adb7c1b6aca39c91867d736e69666566686e727c849096a0aab5c0b9afa6998e8277695f554a3f38424a555f68707c86919ca5aeb8c2bab0a79c938a7f736b61574b443930271d130800000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b7aca39d9a9898989898989898989898999b9ca1a8a9aeb5bbc3cbcfc4bab0a79d938a7f73685f554a3e33251b1106000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2c8beb6aea9a7a9aeb0aba8a4a7a09c9ca0a7a5a7acb3b9c1c9cdc5bdb4a99e95908e929ca6afb4aca7a5a8a19c9c9fa6a4a6abb5b9bfc7cfc7bfb6aba0978d82766b62574c4035271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4adb7bcb4a89c91867c70645a51473d32271d130800000000000000000000000000000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8d4c9bdb2a79c928a7f746e68635d57544f4b47413f3b36373e45494b4f4e4a443c352d251d140c0400000000000000000000000000000000000006111d28343f4a56606a78848f9ba6b2bec9beb2a79b8f8478757575757575757575757575757575757575757575756f6960554a3f34281d1106000000000000010c16212c36424e5965717c88939da8b3bdbcb5aa9f9691867f797472717174777e8590949ea7b0bac0b5aa9f968a7e7367584f453b303b454f58626c75808c949ea8b4bbc0b7aca39c90857b6f645d544940372d22170e05000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c6bdb4aca8a6a4a4a4a4a4a4a4a4a4a4a4a5a6a8abb1b4b8bec5cbcec2bbb5aba0978f83796e63584f453b3025140b01000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cec3b8aea59e9c9ea5acb6b4b0b0aba8a8aab0b1b2b6bcc4c9cfc5bdb4aba29b9084828e969faab5b6b2b1b1aba8a8aaafb0b1b5bbc4c9cec7bfb6ada49c91867c70655b52483d3227170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000a141f29333e49535c66727d89939da8b3bdb6aba0978c81756b61564b40372d22170c0200000000000000000000000000000000000000000004101b27323e4a55616c78848f9ba6b2bec9d4c8bcb1a59a8e82776e635f58544b4a453f3d383431363e474f54575b59544d453e352d251c140c030000000000000000000000000000000000040f1b26313c4650596a76818d98a4b0bbcabfb3a89d948c81818181818181818181818181818181818181818181817a6f63574c4035291e12060000000000000007121f2a36414d58636c78838f9ba3acb7c0b9afa79f96918a84807d7c7d7f838990959ea5aeb7c0b8aea59c90857a6f63584c41362c353f48535c636f7a84909ba2abb6bfbcb5aa9f968d82766e645950463c31271f150c020000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d6cdc4bdb7b3b1afafafafafafafafafafafb0b2b4b6bac1c2c7cfc8c3bab2aaa19c91867d71685f55483f352b21160400000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a99e9590959ca3acb4bcbab5b4b3b5babdbec1c6cecac4bcb4ada49b92897e7b85909ca1aab5b9bdbab6b4b3b5b9bbbcbfc5ceccc6beb7afa69d948c81756c62584a42382e23190700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000050f1a242f39434d59636d78838f9aa4adb7bab0a79c91857b6f645a51473c31261c120800000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacfc3b8aca195897e72675e554f48433e3b35322d31373f474f585f6366645d564e453e352d241c140c0300000000000000000000000000000000010c17222c3645515c68737f8b96a8b1bac5c2b7ada49b918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c867b6f63584c4135291e12070000000000000006111d28333e49535c67727e8a939da7b0bac0b7afa7a09c948f8b8988898b8f939c9ea5aeb5bebcb4a99e958c80746a60564b3f34262f37434a556069727d89919ba5aeb8c3b9afa69b92897e726a60564b43382f261c12070000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ddd5cdc6c1bebdbbbbbbbbbbbbbbbbbbbbbbbcbebfc1c5cacdcac4bfb8b4aaa29b918b7f746d63584f45372f251b110700000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfbeb3a79c90848e929ca4acb5bac0bfbfc0c4c9cbcac9c4c0bab5aca49d938d8176737f8a909aa1aaafb6bbc0bfbfc0c4c9cbcac9c4c0bbb5aea69f968f837a6f635c53493a31281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000b151f29343f4a545d67727e89949da8b3beb5aa9f968c80746a60564b40362c22170c02000000000000000000000000000000000000000004101c27333e4a56616d7884909ba7b2bec9cdc1b6aa9f93877c7065594d453f3733303134373c42484f575f686e726e655f564e453d352d241c130b03000000000000000000000000000000000812202c37434e5a65717d8897a1abb6c1c7bdb5aaa19b98989898989898989898989898989898989898989892867b6f63584c4135291e120700000000000000030e19242f39434b57636e79838f97a0aab5bbc0b7b0aaa49d9b97949494969a9da3a9aeb6bebcb3aaa19c90847a6f635a51473c312627313c465059636d76818d959fa9b4bcbfb6aba29b90847a6f635c53483f362c21160d0400000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cdcdcdcdd0cccac9c6c6c6c6c6c6c6c6c6c6c7c7c9cbcbc9c8c3c0bab5aea9a19a918d81786e635c53483f35271e150c0200000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f828e939ca3abb0b5babdbfc0c1bfbebdb9b5b0aaa39c948f837a6f6e75808c909c9fa6abb3b5babdbfc0c1bfbebdb9b5b3aba59e9690857c706a60564b43392a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000050f1a25303a444b57636e79848f9ba5aeb8b9afa79c90857a6f635950463b31251b1107000000000000000000000000000000000000000004101b27323e4955616c78838f9ba6b2bdc9cdc1b5aa9e93877b7064594d46403f3b373c4041474b52585f686e787d746f655e554e453d342c241c130b0300000000000000000000000000000006121e2935404c58636f7a86919ca8b4bfcbc5bbb2aaa5a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49d92867b6f63584c4135291e120700000000000000000a151f28333e4a545f68717d86919ca1aab2bac0bab5ada8a7a3a09fa0a2a6a7acb4b8bfbbb3aca39b91897e726a61564940372d22222c364049545d646f7b85909ca3acb7c0bbb4a99e958c81756d63584f453b30261e140b01000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1cac4c1bfbebcb8b4b0aba59f9c908c81796e685e544c43372f25160e050000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f7b838e939ca0a7abb0b2b3b5b5b4b3b1afaaa7a09c938e837b6f69636e78808a90969ca2a8aab0b2b3b5b6b4b3b1afaaa8a29b9490857d716c625950463b32291911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000b162028333e4a545f68737f8a959ea9b4bfb5a99f958b7f746960554a3f352b21160b0100000000000000000000000000000000000000030f1a26313d4954606b77838e9aa5b1bcc8cec3b7aba094897d72665e56504c4a4649474b4c51565b62696e7880897f746f655e554d453d342c231b130b02000000000000000000000000000006111d28343f4b56606a78848f9ba6b2bec9cbc2bbb5b1afafafafafafafafafafafafafafafafafafafa99d92867b6f63584c4135291e12070000000000000000030f1a25303b454f58636c737f8b919ba2aab5b9bfbdb7b3b2aeacababadb1b3b6bcc0bab5aba39c928c81756e645a51473930271d1c263038444b56616a737e8a929ca7afb9c2b8aea59c91877d71695f554a42362e251b1106000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5bab5b3b2b0aea9a7a09c95908980786e685f574e453b33271e1506000000000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f747b828c91979ca0a7a6a8aaaba8a7a5a69f9c96918b827b6f6b615e686e747f858d92999ca0a7a6a8aaaba8a7a6a79f9c99918d847d716d635c534940372b221909000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6afb9b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000000000010d1924303b47535e6a75818d98a4afbbc8d2c7bcb0a4998d81766e636059575550545156585a61636b7079818c908b7f736e655e554d443c342c231b130a020000000000000000000000000004101b26313c4650596a76818d99a4b0bbc7d3cbc4bfbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb5a99d92867b6f63584c4135291e12070000000000000000000b16212b353f47535c656f75818c919aa1a9afb6bac1bfbebab7b6b7b9bdbec0bcb7b0aaa29b928e82796e635d54494037282017161f28323c47515a636e78828e969faab5bdbeb6aba1978f83796e635b52473e352b20160e040000000000000000000000000000000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab0aaa8a7a5a59e9b97918c857e756e685f584f473e352b22160e05000000000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f746f7980868d9197999b9c9fa09c9c9a9896908c8680796f6a615a575e636e737b82888d9196989b9c9fa19c9c9a9896918d88817a706c635c534b423930271a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959fa9b4bfb4a99e958a7f73685f554a3e352b20160b00000000000000000000000000000000000000000b17222e3945515c68737f8b96a5aeb8c3cec8bdb1a69b928a7f756f6a65636058605a6164666a6f747c828d91998f8a7f736e645e544d443c342c231b120900000000000000000000000000010c17222c3745515c68737f8b96a2adb9c7d1cdcecac7c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c0b5a99d92867b6f63584c4135291e120700000000000000000007111b252e37434b555e636e79818c919c9fa6abb1b4b8bbbdbebebebdbcb9b5b3aba7a09c928d827a6f6960554d44393027180f0f17232d374149545e68707c86919ca4adb8b5bab1a89d938b80746c62574e453a2f271e13090000000000000000000000000000000000000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea7a09c9b999795908c86817b726d635e574f473f362e251b120600000000000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74696e757c81868a8d8f91969791908e8c8985817b746e68615a514e545e656b70767c81858a8d8f90969791908e8c8985817c766f6a625c534c433b322820160a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000007111b25303b465059636f7a85909ca6afb9b8aea59b9084796e63574e453a2f24190e030000000000000000000000000000000000000008141f2b37424e5965717c88959ea9b4c0cbcbc0b5aba29c9187807a74716e696c6b6c6a6f72767b80868f939ba09c91877f736e645d544d443c332b23191006000000000000000000000000000813202c37434e5a66717d8894a4adb7c2c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0b5a99d92867b6f63584c4135291e1207000000000000000000010b151e27323b454a545f686e78808990959ca1a8a9aeb0b1b2b3b2b2b0afaaa8a29c96918b81796f6a605850463d342820170809131d272f3a454e57626b747f8b939da8b1aaaaaaada49c91867c70685e544941372d23180d0200000000000000000000000000000000000b16222d3945505c67737f8a939393939393939393939393939393939393939393939393939297918f8e8b8884807b756f6a645d544e473f372e261e140a0200000000000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f65636c70767b7e8183858686858483817e7a75706b635f58514a4549555b61646c70767b7e8183858686858483817e7b76706c63615a534b433c332a22180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000010b17212c363f4b56606a74808b969faab5beb4a89e948a7e72685e54493e332720150b0000000000000000000000000000000000000006121d2934404c57636e7984909ca7b3bbc7d0c5bbb6aba197918c85807c7a78777778797b7e81858c91969da3aba19791877e726e645d544c443c332a20150b0000000000000000000000000007121e2935414c58636f7b86949da8b3b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a99d92867b6f63584c4135291e120700000000000000000000050e16222b303b454f585f686e757e858d91979c9fa5a4a6a7a7a7a6a5a69f9c98928e867f786e69605950483f362c24181006030d16202b353e47525b636e79838f97a19e9e9e9e9e9ea0968e82786e635a51473d32271b100500000000000000000000000000000000000b16222d3945505c67737f878787878787878787878787878787878787878787878787878787868584827f7d7975706b63615a5449453e362e271e160d040000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f5b62656b6f737678797a7a7a797775726f6964615b554f48413a454a52575c62656a6f737578797a7a7a797775726f6a65625c565149433b332b231a12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7b0bab8aea59b8f83796e63574b43392f251a0f0500000000000000000000000000000000000005111c28333e4a555f6875818c98a2abb7c0c9d0c5bab1a8a19c95908c8885848383838486898d91969c9fa6acb1a8a09791867e726d645d544c43392f251a0f0400000000000000000000000006121d29343f4b56606a78848f9ba7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99d92867b6f63584c4135291e1207000000000000000000000006121a212b353f474f585f636e727b81868c909597999a9b9b9b9a999796908d88827c736e686059504940382f261c1308000006111b252e36424a555f69717d8791939393939393939393928a7f736b61564b4034291d1206000000000000000000000000000000000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7b7a787674716e6864615b565149443a352e261e160e050000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b5652575a6164676a6c696e6f696d6b696663605957524a453f372f3a41484b53585a6163676a6c696e6f6e686c696763605a57534b474039322b231b120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75808c97a0abb5beb3a89d93897d72665c53493e33291f150a000000000000000000000000000000000000030f1a25303b454f5865707c88929ca7afb9c4cfcac1b8b1aba59f9c9797918f8f8e8f909595989c9fa6aaafb7b8b0a7a09791867e726d635c53493e33281d120700000000000000000000000004101b26313c47515a6a76818d999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d92867b6f63584c4135291e120700000000000000000000000107111b252e373f474f545d646b6f767c8184888b8d8f8f90908f8d8b8985817c76706b635e575048403830271f160b030000010b141e26303b454f58636c7580878787878787878787878787857b6f64584c41352a1e1307000000000000000000000000000000000006121d29343f4b56606a6f7070707070707070707070707070707070707070707070707070706f6e686b6865635f5857524b4741392f2b251e160e060000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c484c5156585c5f585f63636059605e5b5755504b48413b352f2931383d43494c5156585b5e585f6363635e575e5b5856514c48423c373028221a120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000008131d27323c47515a64707b86919ca8b4bbb7ada49a8e83776d63584d42392f24190e040000000000000000000000000000000000000b16212b353f4c57626c76828d969faab5bbc4ccc9c1bab6aea9a7a7a09c9b9a9a9a9c9ea5a4a8aaafb5b9c0c1b8b0a7a09791867e716d63584d42362b1f1408000000000000000000000000010d17222d3745515c68747f8b93939393939393939393939393939393939393939393939393939393939392867b6f63584c4135291e1207000000000000000000000000010b151e272e373e4549545a61646c70757a7d7f81838484848382807d7a76716c64625b544e473f3830281f170e0500000000040d16212c363f48535c636e797c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e1207000000000000000000000000000000000004101b26313c465059606364646464646464646464646464646464646464646464646464646463635f585d5a57544f4b48413c373029201b140d05000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413e41474b4d50534f555757555054524f4c4a46403d38302b2521282e32393e40474b4c50534f55575757544e524f4c4b47403e39312d272018120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d98a2abb6bdb2a79c93887d71655c53483e33281e140900000000000000000000000000000000000007111b25333e48535c64707c86919ca2abb3bcc3cdcac5bfb8b4b3b0aaa8a6a6a5a6a7a9aeb0b3b5b9c0c4c9c8c0b8b0a7a09691857d71655a4e43372c201409000000000000000000000000000813202c37434e5a66717d8787878787878787878787878787878787878787878787878787878787878787867b6f63584c4135291e120700000000000000000000000000050e161e262e353a444a51565b6264696e71747677787978787674726f6965635c575249453e362f271f180f0600000000000007121c262f38434a5560696e707070707070707070707070706f6a60564b3f34291d12060000000000000000000000000000000000010c17222d3740495056585959595959595959595959595959595959595959595959595959585857544f514e4b49453e3d38312d272018110b040000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a393633383d40414447454a4c4c4a46494744403f3c36322e28211b181e23292f33373c3f414447454a4c4c4b49454744413f3c37332f29221d171008010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c87929ca6b2bcb6aca3998e82776c62584c42382e23190e040000000000000000000000000000000000020c19242f39424c57626c747f8b929ba3acb3bac2c7cec8c3c0bebab5b3b2b1b1b2b3b4b8bbbfc0c4c9cbc7bfb9b5aba49d9490847c7064594d41362a1f13070000000000000000000000000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e63574b4034291d12060000000000000000000000000000060e161e252b303941474b5257585f6366686a6c6d6d6d6c6b696663605958534c48423a352e261f170f0700000000000000020c151f27303b46505960636464646464646464646464646463605950463c31261b100400000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b4a454543403e3a35322e28221d1710060100000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b282d32343539353b3f40403f3c363b383534312c26231e16110e14181f24272d31343539363b3f4040403e3a35383534312d27241f18130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000030d18232e38424c57626c76828e99a3acb6bcb2a79c92887c70655b52483d32271e13090000000000000000000000000000000000000a151f29323d48525b636e78818d939ca2aab3b7bdc3c8cccbcac4c1bfbebdbdbdbebfc3c8cacccbc5c0bbb6afaaa29b938f847c706b62574c4035291e12070000000000000000000000000005111c28333f4a555f696e7070707070707070707070707070707070707070707070707070707070707070706e685f544a3e33281c1105000000000000000000000000000000060d151b202931373d42484c4f55575a5d5f60616161605f5d5a5755504d49433d382f2b251e160f07000000000000000000050e17212c363f48505557595959595959595959595959595856504940372d22170c01000000000000000000000000000000000000030d17202830373c3f4042424242424242424242424242424242424242424242424242424141403e3b35373433302b25231e18130d0700000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201e2327292a2d2b3033343534312c2f2c292826221c18140e0704090f15191d222629292d2c3033343534332f2b2d292926221d19150f08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000009141e28333e48525b65717d88939ca7b2bdb6aba2998d81766b62574c41372d23180d030000000000000000000000000000000000050f19242e384249545e686f7a828e929aa1a8adb4b8bec1c6c9cbcccbc9c8c8c9cacbcbc9c7c2bfbcb6b2aba69f9c928d837c706b625b52483d32271c110500000000000000000000000000040f1a25303b454f585f63646464646464646464646464646464646464646464646464646464646464646464635f584f453b30251a0f0300000000000000000000000000000000040b111920272d32383d3f454a4c4e5153555556565553514f4c4a46403e39322e28201b140d05000000000000000000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d13080000000000000000000000000000000000000000060f1820272d313435363636363636363636363636363636363636363636363636363636353433302b2b292825201b18140e0803000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d17161413181b1e1e22212528292928262224211d1d1b17120c0904000000050a0d13181b1d1e21212528292929272420211e1d1b17130d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4adb7bcb4a89c91867c70645a51473d32271d13080000000000000000000000000000000000000a141e282f3a454e5760696f7a828c909b9da4a9aeb2b6bbbdbfc0c4cac3c3cac4c0bfbdbcb8b4b2aba7a29c96908a817a706b625b524a42382e23190e0300000000000000000000000000010c16212c363f484f555759595959595959595959595959595959595959595959595959595959595959595957544f473f352b21160b000000000000000000000000000000000000010710171e23282e32363b3f40434648494a4a4a49484643403f3c36332f29231e16110b04000000000000000000000000020c161f272f363b3f4042424242424242424242424242403f3c37302820170d03000000000000000000000000000000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2929282521201d1c1a16110b09040000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b09090d10121312161a1c1d1d1d1b17121512110f0c08030000000000000003080d10121212161a1c1d1d1d1c1916111212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000a141f29333e49535c66727d89939da8b3bdb6aba0978c81756b61564b40372d22170c020000000000000000000000000000000000050f16202b353e47505960696f7980888f949c9ea5a7acafb2b3b5bab7b7b7b7bab5b3b2b0aea9a7a29c99928d857f786f6a625b524b423a31281e140900000000000000000000000000000007121c262f383f454a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b4a453f372e251b11070000000000000000000000000000000000000000070e13181e24262c303334373a3c3d3e3f3e3e3c3a383534312c26241f19140e06010000000000000000000000000000050f171f262c303335363636363636363636363636363534312d2720180f060000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1d1c1a161111110e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000001020606060606060606060606060000000002050607070b0f111212110f0c080a06060401000000000000000000000002040607070c0f11121211100e0b06070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000050f1a242f39434d59636d78838f9aa4adb7bab0a79c91867b6f645a51473c31261c120800000000000000000000000000000000000006111b252e364049505960686e747d838b90959a9ca3a4a6a8aab0ababababb0aaa8a6a4a59e9b97928e88827b736e686059524a423a312a21180e04000000000000000000000000000000020c151f272f363b3f40424242424242424242424242424242424242424242424242424242424242424242403e3b352e271e150b0100000000000000000000000000000000000000000004090f14191c212528292c2e303233333332312f2c292826221c19150f0a040000000000000000000000000000000000070f161c212528292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f070000000000000000000000000000000000000000000000000003080c1012121313131313131313131313131313131313131313131313131313131212110f0b07060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060604010000000000000000000000000000000000000000000001040506060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000b151f29343f4a545d67727e89949da8b3beb5aaa0968c80746a60564b40362c22170c020000000000000000000000000000000000010b141e263038404950585f636d717a7f848a8e9395989a9ca0a79fa0a09fa7a09c9b999694908b87827c76706b635e575049423a312a211911080000000000000000000000000000000000050e171f262c3033343636363636363636363636363636363636363636363636363636363636363636363433302b251e160e05000000000000000000000000000000000000000000000000050a0c12161a1c1d20232526272827272523201e1d1b17120d0a050000000000000000000000000000000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d060000000000000000000000000000000000000000000000000000000001040607080808080808080808080808080808080808080808080808080807070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000050f1a25303a444b57636e79848f9ba5aeb8bab0a79c90857a6f635950463b31251c1207000000000000000000000000000000000000040d161f28303840484f555d63696f747a7e83868a8d8f919693949494949396918f8d8a8784807c77716c64615b544e474038312a2119110900000000000000000000000000000000000000060e151c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211b150e0600000000000000000000000000000000000000000000000000000002070c0f11121417191b1b1c1c1b19181512110f0c0803000000000000000000000000000000000000000000000002070c0f1112131313131313131313131313131212100c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090a0c0c0c0c0c0b0a0907060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000b162028333e4a545f68737f8a959ea9b4bfb5aa9f968b7f746960554a3f352b21160b01000000000000000000000000000000000000050f171f2830373f454a54596063696f73777b7e81838586888889898888878583827f7c7974706c65635c575249453e36302821191109010000000000000000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110b0500000000000000000000000000000000000000000000000000000000000001040506090c0e0f1010100f0e0c0906060401000000000000000000000000000000000000000000000000000000010406060808080808080808080808080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b090703000000000000000000000000000000000000000003080b0e101111111111111111111111111111110f0d09050000000000000000000000000000000000000000000000000000000000000000000306080d101212141617181818171716141212100d080304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6afb9b9afa69c90847a6f63584f453b30251b110600000000000000000000000000000000000000070f171f272f353b43485055596063676b6f7375787a7b7c7d7d7d7d7c7b7a787673706e6864625b58534b48413a352e261f181109010000000000000000000000000000000000000000000002070c0f111213131313131313131313131313131313131313131313131313131313131313131312110f0b07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000000000070d1216191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b18140f09020000000000000000000000000000000000000000000000000000000000050a0e1113171b1d1e202223232423232221201e1d1b18130d0e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959fa9b4bfb4a99e958a7f73695f554a3e352b20160b0000000000000000000000000000000000000000070f161e252b303840464a5055575a6164676a686e6f707171727170706e686a6865635e5757524d49433d382f2b251e160f07000000000000000000000000000000000000000000000000000001040506080808080808080808080808080808080808080808080808080808080808080808060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f11111111111111111111111106060401000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c040000000000000000000000000000010911171d21252728292929292929292929292929282826231e19120b030000000000000000000000000000000000000000000000000000060b0f14191c1e222629292c2d2e2f2f2f2f2e2d2b292926221d1d19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000007111b25303b465059636f7a85909ca6afb9b8aea59b9084796e63574e453a2f24190e030000000000000000000000000000000000000000060e151b21282f363b40464a4c5156585b585f636465656666656564635f585c5957544e4c48423e39322e28201b140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1015181a1b1d1d1d1d1d1d1d1d1d1d1d1c12110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d040000000000000000000000000009121a21272c3032333434343434343434343434343433312e29231c140b020000000000000000000000000000000000000000000000040910151a1f24282a2d31343537393a3a3b3b3a3a38373534312d2728231d150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000010b17212c363f4b56606a74808b969faab5beb4a89e948a7e72685e54493e332720150b000000000000000000000000000000000000000000050c11171f262c31363c3f41474b4d504f545758595a5a5a5a595857544f504d4b49453e3d38332f29231e16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090c0e0e0e0c090605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b202325262929292929292929292929281e1d1b17120d0600000000000000000000000000000000000000000000000000000000000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c02000000000000000000000007111a222a31373b3e3f404040404040404040404040403f3d38332c241c120900000000000000000000000000000000000000000000070e13182025292e3335373c3f414344464646464645444341403c3737332d261e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059646f7b85919ca7b0bab8aea59b8f83796e63574b43392f251a0f0500000000000000000000000000000000000000000002070f161c21262c3134373d40414445494b4c4e4e4f4f4e4e4d4b4a454542403e3a35322e28241f18140e060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f11121518191a19181412110f0b0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f252a2e3132343434343434343434343434292826221d160f0700000000000000000000000000000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c120800000000000000000000030d17212a333a4146494a4b4b4b4b4b4b4b4b4b4b4b4b4b4a48433c342c23190f0500000000000000000000000000000000000000020810171d232a2f34393e4142474b4c4e50515252525151504e4c4b4741423d362e261d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75808c97a0abb5beb3a89d93897d72665c53493e33291f150a0000000000000000000000000000000000000000000000060c12171c2226282d323435353a3e404142434343434241403e3b353634332f2b25241e19150f090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060c12171a1d1d202425262523201d1c1a16110b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a1820282f35393c3d40404040404040404040403f3534312c261f180f0600000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d0300000000000000000008121d27313a434b5155565757575757575757575757575756524c453c33291e1409000000000000000000000000000000000000020a121920272d323a3f42484c4d5156585a5b5d5d5e5d5d5c5b5a585651514d463f362d23190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26323c47515a64707b86919ca8b4bbb7ada49a8e83776d63584d43392f24190e04000000000000000000000000000000000000000000000002080c12171b1e2327292a2b30333435363737383736363433302b2b292724201b19140f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161c212528292c2f3031302f2b292825211b150e070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a2830383f4448494b4b4b4b4b4b4b4b4b4b4b4b403f3c3630281f160d0300000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c12070000000000000000000b16212c37414b535b606263636363636363636363636362615d554c43382e23180d0000000000000000000000000000000000020b131b222931373d43494d5257595a60636567686969696968676563615a5c574f463d33281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232d37414c57626b76818d98a2abb6bdb3a79c93887d71655c53493e33281e140a0000000000000000000000000000000000000000000000000003080c0f13181b1d1e202528292a2b2b2c2c2b2b2a292825211f1d1c1916110b0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b20262c303335383b3c3d3c3a373433302b251e16110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a3841484f53545757575757575757575757564c4a46403830261d120800000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090000000000000000030e1925303b46515b646b6d6e6e6e6e6e6e6e6e6e6e6e6e6e6c665d52483d31261b0f00000000000000000000000000000000010a131b232b333941474b53585b6265696a6f717374747575747372716f6a69665f574d42372c21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323d48525b65707c87929ca6b2bcb6aca3998e82776c62584c42382e23190e0400000000000000000000000000000000000000000000000000000104090d101211161a1c1d1e1f202020201f1e1d1c1a161111100e0b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161e252b2f363b3f4043464848484643403e3b352e27201b150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f29323b4851595e606363636363636363636363625856504940362c22170c0100000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b000000000000000004101b27323e4955606b74797a7a7a7a7a7a7a7a7a7a7a7a7a766c61564a3f33281c110000000000000000000000000000000007121a232c333b434a51565c63666c7074787b7d7e7f808080807f7e7d7b787570665c51453a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e38424c57626c76828e99a3acb6bcb2a79c92887c70655b52483d32281e13090000000000000000000000000000000000000000000000000000000000020506070b0e1111131414151514141312110f0b070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262e353a3f464a4c4f52535453524e4b4a453f37302b251e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39424b5962696c6e6e6e6e6e6e6e6e6e6e6e6e63605950463c31261b0f0400000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c000000000000000005111c28333f4a56626d7985858585858585858585858585867a6e62574b4034281d11000000000000000000000000000000060f18222b333c444c535a61646d71777c808386888a8b8c8c8c8b8b8a8886848075695e52473b2f24180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333e48525b65717d88939ca7b2bdb6aca2998d81766b62574c41382d23180d030000000000000000000000000000000000000000000000000000000000000000000305060708090909090807060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f2830363e45495055575a5d5f605f5d5a57544f47443a352e261e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e48535c6972777a7a7a7a7a7a7a7a7a7a7a796f6a60564a3f34281f150b00000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909191919191919191919191857a6e62574b4034281d110000000000000000000000000000030d162028323b444c545c636a6f767d82878c8f9394959797989797969594949084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19242e39424d58636d77828e9aa4adb7bcb4a89c91867c70645a51473d32271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27303840474e5459606366696a6b6a6965635f585449453e372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c77828585858585858585858585857a6f63584c43392f251a0e04000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909c9c9c9c9c9c9c9c9c9c91857a6e62574b4034281d11000000000000000000000000000008131d273039434c545d636d717b81888e92979b9da4a1a2a3a3a3a3a2a1a59c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f29333e49535c66727d89939da8b3bdb6aba0978c81756b61564b40372d22180c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060707070707060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f37404950575e63696e727576777674716e68645d544f473e352b20180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c46505965707c8893919191919191919191968a7f73675c53493e33271d1309000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7a8a8a8a8a8a8a89c91857a6e62574b4034281d1100000000000000000000000000010c17222c374049535c636d727d848d929a9ca3a6a8adadaeaeafaeaeadaca79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242f39434d59636d78838f9aa4adb7bab0a79c91867b6f645a51473c31261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608070c0f1112121313131212110f0c070806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f48505960686e737a7d80828282807d79726d635f584f453a302820170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a75818c98a39c9c9c9c9c9c9ca69b8f83786d63584d41372d23180b010000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3b4b4b4b4b4a89c91857a6e62574b4034281d110000000000000000000000000004101b26313c465059636c727e8690959ba2a7acb2b3b7b8b9babababab9b3a79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29343f4a545d67727e89949da8b3beb5aaa0968c80756a61564b40362c22170c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0f11121412171a1d1d1e1e1f1e1e1d1d1a17121412110f0b070300000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5860696f787f84898c8d8e8d8c88837d756e685f5449453930271d13080000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7a85909ca8a8a8a8a8a8a8a8a89d93887d71655a51473d32251b11070000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3bebfbfbfb4a89c91857a6e62574b4034281d110000000000000000000000000006111d28343f4b56606a717d8691969ea5abb2b6bcbec1c7c5c6c6c4c3beb3a79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e22160b0a08060200000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a25303a444b57636e79848f9ba5aeb8bab0a79c90857b6f635950463b31251c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e11161a1c1d1f2221252829292a2a2a2a29282521221f1d1c1a16110e0b06010000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f686f7a818a909497999a9997938f8980786e635e554940372d22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8a969faab5b4b4b4b4b4b7ada4998d81766a61564b3f352b21160b0000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000005101c27323d47515a636f7a8490969fa7aeb5bbc1c6cac7c1bebdbab8b7b7b3a79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e221b161614110c07010000000000000000000000000000000000000000000000000000000000000000000000000000000b162028333e4a545f68737f8a959ea9b4b5b5aa9f968b7f746960554a3f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080b11161a1c212528292b2e2c30333435363636353533302c2e2b292825211c1916110b07020000000000000000000000000000000000000000000000000000000000000005111c27323d48525b636e79828d929b9ea5a4a5a4a49d9b908c80756e655950463c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79838f9ba6afb9c4bfbfbfc7bdb3a89c91867b6f64584f453b30251a0f0300000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000007121e2935404b57616b75808c949ea7afb7bec6ccc7c2bdb7b3b2afacababaca79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045392e262622211f1c17110b040000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58636e7a84909ba6afaaaaafa69c90847a6f63584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171b2025282b3033343739363b3f404141414141403f3b3639373433302b2724201b17120c0500000000000000000000000000000000000000000000000000000000000007121e2935404c57626b75808c929ba2a9aeb0b1b0ada8a19a918a7f736a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a66717d88949da8b7bfc9d3cbcbccc0b5aaa0968b7f74685f544a3e33281e140a00000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000007131e2a35414d58646f7b86919ca5aeb7c0c7cec5beb7b4ada8a6a3a1a09fa0a19c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5045393232322d2d2a26211b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f4a556069747f8b959f9e9e9e9e9e9e958a7f73695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090f161c21252b3033353b3e40424547464a4c4c4d4d4d4c4c4a46474542403e3b35332f2b25211c160e09030000000000000000000000000000000000000000000000000000000007131f2a36414d5964707c86919ca3abb4b8bcbcbbb7b3aaa19c90857a6f63584c4035291e120700000000000000000000000000000000000000000000000000000000000000000000000000000006121e2934404b56616b76818d99a4adb7c7d0d9d6dacfc4bab0a79b9084796e63574b42382e23190c02000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000000000000000000005111c27323d48525b6974808b96a0aab5bec7cec6beb5ada8a49d9b979594949495979084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c50453d3d3d3d393835312b241c140b010000000000000000000000000000000000000000000000000000000000000000000000000007111b25303b465059636f7a859093939393939393939084796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13171f262c31353a3e40454a4b4e5053505557585859585857555053504e4b4a45403e3a35302c261f17130d070000000000000000000000000000000000000000000000000000040f1a25303b454f586975808c96a0aab3bbc2c8c8c7c2bab4a99e958b7f73685c5145362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f58646f7b86919ca8b3bdc7d6e0e9ded4cac0b4a99e94897e72665b52483d32261c1208000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000000000000000000007131e2a35404c57626b78848f9ba7b0bac5cec8beb5ada49e9b938f8c8a8988898a8b8e84796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c5049494949494543403b342d241b110700000000000000000000000000000000000000000000000000000000000000000000000000010b17212c363f4b56606a748087878787878787878787877e72675b5044392d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020810171e23282f363b3e45494b4f5457595c5e58606363646464636360595e5c5957544f4b49453e3b362f27221d1710080200000000000000000000000000000000000000000000000005111c28333f4a555f6978848f9ba7b0bac3cdd2d3d1cdc3b8aea59a8e82776b5850463b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f6874808b97a0aab5c1ccd7e3ede3dacdc2b8aea5998e82776b62574c40362c22170c010000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000000000000000000008131f2a36424d5964707c87949da8b7c0cacdc2b8aea59e948f8883807e7d7d7d7e7f8284786d61564a3e33271c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f73685c555555555555504f4b453d342b21170c020000000000000000000000000000000000000000000000000000000000000000000000000007121c26313c465059636f7a7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131921282d323840464a4f5457585f6365676a6c696e6f6f70706f6e696c6a6765635f5857544e4a463f38312d272018120a03000000000000000000000000000000000000000000000006121d2934404c57636e7a86949da8b7c0cad4dcdfdbd2c8bfb3a79c9085796960554a3f33281d11060000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba7b0bac4cfdae5f0e7dcd2c7beb4a89c91867c70645950463b31261a0f040000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000a16212d3844505b67727e8a95a4adb7c8d0cbbfb4a99e948f847d787572717172727477796e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f7368606060606060605c5a554e453b31261c110600000000000000000000000000000000000000000000000000000000000000000000000000020c17222c37404a5560696f70707070707070707070706f6b61564b4034291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b232931383d44485055585f6366686e70737677797a7b7b7b7b7b7a79777673706e6866635e57555048443c373029231b130b040000000000000000000000000000000000000000000007131e2a35414d58646f7b8792a4adb7c4cfdae5ebe2d6cbc0b4a99f95867a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b66727e89949ea9b7c0cad4dee9edece1d8ccc1b6aba1978c80756960554a3f34281f150a0000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000c18232f3a46525d6974808b97a3aebac7cdc3b8aea59b90847b716d69676665666768686e685f554a3e33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f736c6c6c6c6c6c6c6c67655e554b40352a1f1408000000000000000000000000000000000000000000000000000000000000000000000000000008121d26313b4650596063646464646464646464646464615a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d141c242c333a41474b54596063686e7175797c7f818384868687878786868483817f7c7975716e68636058544b474139332b241c140c0400000000000000000000000000000000000000000007121e2a35414c58636f7b8696a0aab5c0ccd7e1e8e0d6cbbfb4a89c91857a6e63574b4034291d110600000000000000000000000000000000000000000000000000000000000000000000000007131e2a35404c57626c77828e9aa5aeb8c8d0dae4e3e2e3e5dbd0c5bab1a89c90857a6f63574c43392f24190d0300000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000020d1925303c47535f6a76818d98a4b0bbc7cbbfb4a99e95897e726a635c5b5a5a5a5b585f635f584f453b30251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcb9ada2968a7f777777777777777777736e655a4f43382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000030d17222c36404850555759595959595959595959595856514a41372d23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141d252d343c444a51565d64696f73797d8184888a8d8e9095929293929295908e8d8a8884817d79736e69645d565149433c342c241d140c03000000000000000000000000000000000000000006111d2934404b57636e7a85919ca8b3bec9d1d9dcd8cfc7beb2a79b908479685f54493e33281c11050000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b46505964707c87929ca7b5bec8d8dedad7d6d7daded4cac1b4a99f958a7e73675c53493e33271d130800000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030e1a25313d48545f6b76828e99a5b0bcc8cabeb3a79b9084796e635a53504f4e4f504f5557554f483f352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbeb2a79b90848383838383838383837e73675c5045392d22160b00000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4b47413931271e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c252d353d454c545a61646e727a7f83898c909596989a9b9ea59e9e9ea59e9c9a989695908c88837e79726d63615a534c443d352d241c130b020000000000000000000000000000000000000005111c28333e49545f6877828e9aa5aeb8c1c9ced2cdc7bfb6aca3988d81766a584f453a30251a0e03000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a55606975808c97a3acb6c6ced8d4cfcccbcccfd4dacec3b9afa69a8f83776c63584d41372d22180b01000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77828e9aa5b1bcc8c7bcb0a4998d8276685f554a4443434344454a4c4a453f372f251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbfb4a89e94908f8f8f8f8f8f8f8f8b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f363b3f40424242424242424242424241403d37312920170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131b242d353e454d555d636b6f777e848a8f94989c9ea5a4a6a7a9aea9aaa9aea9a7a6a4a59e9c98938f8a837e766f6a635c544d453d352c241b130800000000000000000000000000000000000000030e1a25303a454f5868737f8a949ea8b1b9bfc3c8c3beb7afa69d93897e72665b4f43352b20160b00000000000000000000000000000000000000000000000000000000000000000000000005121d2935404c57636f7a85909ca7b3bcc6d6d1cac4c1bfc1c4cad1d2c8bfb3a79d93887c71655a51473c31251b1107000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c090909090909090909111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c5baaea2978b807468584f4539383738353b3e403e3b352f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcc2b8aea59e9b9a9a9a9a9a9a9a978b8074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c31343536363636363636363636363534322d2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232c343d454e565e656d727b828990949b9da4a7a9aeafb1b3b4b8b5b5b5b8b4b3b1b0aea9a7a49d9b948f89827b716d645d554e453d342b23191005000000000000000000000000000000000000000b16202b35404c57636f7a849097a1aaafb4b9b8b8b4aea79f968f83786e63574b4034291d1107000000000000000000000000000000000000000000000000000000000000000000000004111d28333e49535c67737e8a959fa9b4c0cbd1c8c0bab5b4b5bac0c8d0ccc1b7aca3988d81756a61564b3e352b20160b000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231714141414141414141414141c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b9ada2968a7f73685c5045352e2b2c2b30333433302b251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcc7beb5aea8a7a6a6a6a6a6a6a2978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c222628292a2a2a2a2a2a2a2a2a2a2a2a2927231e171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172129333c454d565f656e737e858e929b9ea5a8adb3b4b8bbbdbebfc3c8c1c8c3bfbebdbbb8b4b3ada8a49d9b928d847d726e655e554d443c332920160d0400000000000000000000000000000000000007111d28343f4a556069727e87919c9fa6a9afadaea9a59e9690857c70685e54493e33271c100100000000000000000000000000000000000000000000000000000000000000000000010b141f2a36414d58636c77838f9aa6afb9c3cecac0b8b0aba8abb0b8c0c8d0c6bdb3a89c91857b6f63584f453a30251a0e030000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e232020202020202020202020202028333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d2220212528292825211b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0bcbdbdbdb8b4b2b1b1b1b1b1aea2978b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313a444c555e656f747f8790959ca3a9aeb3b7bdbfc3c8c8cacbced2cdd2cecbcac8c8c3bfbdb7b3ada8a29c9490867e736f655e544c433931261e140b010000000000000000000000000000000000040f1a26313b465059646d737f8990969c9fa6a1a59e9b9590867e726c62574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000006111b25313c47515a65717c88939da7b6bfc8cfc4bab0a7a09ca0a7b0b7c0caccc0b5aa9f968b7f73685f54493e33281e14090000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d2211161a1c1d1c1a16110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5b0b1b1b1b1b1b1b1b1b1b1b1b1aea2978b8074695d51463a2f23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c0f111213131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232d38414a545d656e747f8a91979ea5acb4b8bec2c7cbcecccbc9c6c4c3c3c3c4c5c8cbcccecbc7c2bdb7b3aba59e9691877f736e645d544a41362e251b11060000000000000000000000000000000000010c17222c364048545d656f737e858c909595969595908b847d726d645b52473e352b20160b00000000000000000000000000000000000000000000000000000000000000000000000b16202b35404b56616a75818d98a3acb7c6cfccc1b5aba0979197a0a7b0bac4cfc4b9afa69b8f84796e63574b41382e23180c0200000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a37373737373737373737373737373737373f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160b0f1112110f0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d99a5a6a6a6a6a6a6a6a6a6a6a6a6a6a6a2978b8074695d51463a2f23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060808080808080808080808070605020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323d47515a636d737f8a909ca0a7aeb6bcc2c7cdcdcac5c1bfbdbab9b8b7b8b9babdbfc1c4cacdcdc7c2bbb5aea7a09791877e726d635a51473e352b20160c03000000000000000000000000000000000008121c262f38444d555e656e727b818588898a898884807a716c645d544b42362e251b110600000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7b85919ca8b3bdc6cec3b9afa69c91859196a0aab5c0ccc9c0b3a89d94897d71665b52483d32261c120700000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146434343434343434343434343434343434343434a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160a03050605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978b8074695d51463a2f23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38404b56616b727e87919ca0abb0b8bec6cdcfc8c2c1bab6b4b1aeadacacacadaeb1b3b5bac0c2c7cfcdc6beb7b0a8a19791867d716b61574e453a2f261c12080000000000000000000000000000000000020c161f28333c454e555d646b6f75797c7e7e7e7c79746f6a635c544d443b32261e140b010000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8b969faab5c0cdcbc0b4a99f958b7f86919ca8b3bdc7cdc2b7ada4998d82766b61574b3f362c21170c01000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313c48545f6b76828d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8b8074695d51463a2f23170c000000000000000000000000000000000004070a0c0d1111111111111111111111110d0c0a07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060606050300000000000000000000000000000000000000000000000000000000000000000000010c17212c364048545d646f7b859097a0abb6bac1c8cfcac4beb8b4b0aba8a6a3a2a1a0a1a2a3a5a8aab0b3b7bdc4c9cec8c0b8b1a8a09790847b6f685e544940362c22170c020000000000000000000000000000000000060f17232c353e454d545a6164686e71727372706e68636059534c443c332a22160d04000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79848f9ba6afb9c4cfcabfb3a79c90857a818d99a4adb7c2cdc7bdb4a89c91867b70645850463b30251a0f04000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3b46525d69758083838383838383838383838383838383838383837e73675c5045392d22160b00000000000000000000000000000003090e121617181d1d1d1d1d1d1d1d1d1d1d1d181716120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070b0f1112121211100e0b060a07070502000000000000000000000000000000000000000000000000000000040f1a26313b465059646e77828e959ea7b0bac5cacfc8c0bab5aea9a7a09c9a979695949596979a9ca0a7a8adb5b9c0c7cec9c1b8b0a79e958e82786e635950463c31251b110700000000000000000000000000000000000007121c252f373f454a5156585f636567676665635e5756504a463f382f261c1207000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a66717d89949da8b7c0c9ccc1b6aca3978c80757d88949da8b3c0caccc1b6aba0978b80746960554a3f33281f150a000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468656565656565656565656565656565656565656565656565656d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45505c6670757777777777777777777777777777777777777777736e655a4f43382d21160a0000000000000000000000000000050c13191d2123242929292929292929292929292423211d19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e1111141611161a1c1d1e1d1d1c191611161312100d09050300000000000000000000000000000000000000000000000006111d28343f4a556069727e89929ca5aeb8c1cacfc6bfb8b0aba59e9b97918f8c8a8a89898a8b8e91979b9da4aaafb7bec6cec9c0b7aea59c92897e726960554a3f352b21160b0000000000000000000000000000000000000b16212b353f484f55575b5b5b5b5b5b5c5b5b5b5b5b5b575550483f362c21170b040000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b76828d99a4adb7c7d0c9bdb2a79c92877c7079848f9ba7b0bac4cfc5bab0a79c90847a6e63574c42392e24190d030000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747171717171717171717171717171717171717171717171717171717984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000406080f1a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d22160c0c0c0b0b090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c37424c565f66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67655e554b40352a1f140800000000000000000000000000050d151d23282c2e2f3434343434343434343434342f2e2c28231d150d0500000000000000000000000000000000000000000000000000000000000000000000000000030b0b11161a1c1d1f22242125282929292927242023211f1e1c1814110e0a04000000000000000000000000000000000000000000030e19242f3a454e57636f7a84909ba3acb6bec8d0c7bfb6afa7a09c94908a8683807f7e7d7e7f8083868a8f949c9fa6aeb5bec6cfc8beb6aca39b90847a6f63584f453b30251a0f0300000000000000000000000000000000030f1a25303b454f585f636666666666666666666666666663605850463b30251b150d060000000000000000000000000000000000000000000000000000000000000000040f1a25303b454f58646f7b86919ca8b4bdc7cec3b8aea59a8e82776c747f8b96a0aab5c0cccac1b4a99e95897e72675c53483e33271d13080000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bbafa4988d817d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d85909ca7b3bfcacbbfb4a89c91857a6e62574b4034281d11000000000000060b0f1214141a26313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d2217171717171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323d464f565c5d60606060606060606060606060606060606060605c5a554e453b31261c1106000000000000000000000000030c151e262d33373a3b4040404040404040404040403b3a37332d261e150c0300000000000000000000000000000000000000000000000000000000000000000002070b0f151a1b202528292b2d302b303334353534332f2b2f2d2a2927231e1c19140e0b050000000000000000000000000000000000000005101c27333e49545e68737f8a949ea8b3bcc6cfc9c0b7afa69f97918b847f7b7774737272727374777a7e838a91969ea5aeb6bfc9cfc6bcb4a99e948b7f73685f554a3e33281c12080000000000000000000000000000000005111c28333f4a555f696e727272727272727272727272726e6960554a3f332b251e1610070200000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6974808b97a0abb6c1cecbbfb4a99e95897e72666f7b86919ca8b3bdc7cec3b8aea59a8e83776c62574c40372c22170c0100000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c7bcb1a69b918d888888888888888888888888888888888888888888888888888888888890959fa9b4c0cbcbbfb4a89c91857a6e62574b4034281d1100000000020910151a1d1f202326313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392d23232323232222201c18120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18232d363e464c50525555555555555555555555555555555555555555504f4b453d342b21170c0200000000000000000000000009131d262e363d4245464b4b4b4b4b4b4b4b4b4b4b4b4645423d362e261d13090000000000000000000000000000000000000000000000000000000000000000050c11161a1f25252b30333437393b353b3e404040403e3a353b383635322e2a27231e1a150f0904000000000000000000000000000000000006111d2934404b57636e79838f9ba5aeb8c3cccfc4b9afa79f9590867f7a736f6a696867666768696a6f73797f8690949ea5aeb8c1cacdc2b8aea59b9084796e63574c40362c21170c0100000000000000000000000000000006121d2934404c57636e797e7e7e7e7e7e7e7e7e7e7e7e7e796e63574c443a352e262119120c05000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a84909ba7b0bac5cfc5bab0a79b9084796e636a76818d99a4adb7c2cdc8beb2a79c93877c70655950463c31261b100400000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb5aba19b9894949494949494949494949494949494949494949494949494949494949c9fa6afb9c3cecbbfb4a89c91857a6e62574b4034281d11000000020a12191f24282b2b2f2f313d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044392f2f2f2f2f2f2e2d2b27221c140d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c262e363d42454649494949494949494949494949494949494949494543403b342d241b1107000000000000000000000000040e19232d363f464c515257575757575757575757575752514c463f362d23190e04000000000000000000000000000000000000000000000000000000000003080e151b2125282f33353a3e4042454749454a4c4c4c4b494548464441403d3835322e28241f18140e07000000000000000000000000000000030f1a25303b454f5866717d88949da8b5bec7d4ccc0b5aa9f9690857d746e6963615a5c5b5a5b5c596063686e737d8490959fa8b1bac5d0c7beb4a89e94897e72665950463b31261a0f0400000000000000000000000000000007121e2935404c58636f7a868989898989898989898989877c70655d5449453e373129211c160f0700000000000000000000000000000000000000000000000000000006111c27333e48525b67727e89959ea9b8c1caccc1b6aba0978b8074695f66717d88949da8b3c0c9ccc1b6aca3988c81756a60564b3f342820150b00000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cfc4bbb2aba6a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb6bfc8d3cbbfb4a89c91857a6e62574b4034281d1100000009121b22292f3336373a3a3a3d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b50443a3a3a3a3a3a3a3a3936312c251d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e262d32373a3b3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d393835312b241c140b0100000000000000000000000007121d28333d464f565c5e6363636363636363636363635e5c564f463d33281d120700000000000000000000000000000000000000000000000000000000070d13161e252b3033393e3e45494b4e5053544f5557585757544e5452504d4c4842403d38332f29231e181007010000000000000000000000000005111c28333e4a545f6875818c98a4adb7c5cecbc0b6aba29c91867d716d636059565150504f4f505056585f636c717c859097a1abb6c0cacdc2b8aea5998d81766960554a3f34281d110600000000000000000000000000000006121e2935404c58636f7a8697959595959595959595958c80756d635d544f47413a302c261f171008020000000000000000000000000000000000000000000000000007131e2a35414c57626c77828e9aa5aeb8c8d1cbbfb4a89c91867b706458636e79838f9ba7b0bac4cfc6bcb3a89c90857a6f63584c433a2f251a0e04000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d4cbc2bbb5b1afabababababababababababababababababababababababababababababb3b4b9bfc7cfd6cbbfb4a89c91857a6e62574b4034281d110000061019222b33393e4143464646464954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5046464646464646464544413c352d251c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c23282c2e2f32323232323232323232323232323232323232322d2d2a26211b140c04000000000000000000000000000a16212c37424c565f66696e6e6e6e6e6e6e6e6e6e6e6e69665f564c42372c21160a0000000000000000000000000000000000000000000000000000010810171d22272f353b3e43494d4f5457595c5e60585f636363635e575f5d5b5857524d4c48423e39322d282119110b0400000000000000000000000006121d2934404b57636e7984909ca7b3bdc7d5c8bdb2a69c928a7e736c635d55504b474544434445464b4f555c636b727d87919ca7b0bac4cfc7beb3a89c90857a6f63574c4035291d120600000000000000000000000000000006111d2934404b57636e7a85919ca0a0a0a0a0a0a0a09c91867e716d635f58514a443b362f272119120a020000000000000000000000000000000000000000000000040f1b26313c46505965707c87929ca7b5bec8cdc2b8aea5998e82766b61575e68737f8b96a0aab5c0cccbc0b5aa9f968a7f73685c53493e34271e1309000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbd3cbc4bfbcbbb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7bfc0c3c8cfd7d6cbbfb4a89c91857a6e62574b4034281d1100000b151f29333b43494d4e515151515154606b77838e9aa5b1bdc8c4b8ada1958a7e73675b515151515151515151514f4b453e352c22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181d212323262626262626262626262626262626262626262622211f1c17110b0400000000000000000000000000000c17232e3a45515c6670757a7a7a7a7a7a7a7a7a7a7a7a7570665c51453a2e23170c00000000000000000000000000000000000000000000000000030a121820272d31373f454a4c5358585f6365676a6b6d686e6f6f6e686c6b696764625b5957524d49433d383129201b150d06000000000000000000000008141f2b36424e5965707c88959ea9b4bfcbccc1b6aca3998e82766e655c544a463f3c37383838373c3f454a535b636d75808c97a0aab5c1cccbc0b5aa9f96897d71665a4f43372c20120700000000000000000000000000000005101c27333e49545e6878848f9ba7acacacacacacaba09790857d746e68615a544a463f383129221a120a020000000000000000000000000000000000000000000006111d28343f4a56606a75808c98a3acb6c6cecabfb4a89e94897d72665b5257636f7b85919ca8b3bdc7cec3b9afa69b8f83786d63584d41372d23180c020000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbdbd4cfcac7c7c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2cacbced3d9dfd6cbbfb4a89c91857a6e62574b4034281d1100040f1a242f39434c53585a5d5d5d5d5d5d606b77838e9aa5b1bdc8c4b8ada1958a7e73675d5d5d5d5d5d5d5d5d5d5c5b554e453c31271c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121517181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b161614110c07010000000000000000000000000000010d18242f3b46525e6975808585858585858585858585858075695e52463b2f24180d010000000000000000000000000000000000000000000000030b131a222930373c44484f55575c6365686e7073757778797a7a7a7a7978777572706b6964625b58534b47413a302b251e160e06000000000000000000000b16222d3945505c67737f8a96a5aeb8c3cec9beb2a79c93887d71655e554b433b36312d2d2c2d2c31353b434a545d64707b86919ca8b3bfcbcec4b9afa6978b8074685d5146352b21160b000000000000000000000000000000030e19242f3a454e576a76818d98a5aeb8b7b7b7bab0a79f9690877f786f6b645d555048413a332b221b120a0200000000000000000000000000000000000000000006121e2935404c58636f7a85909ca7b3bcc6cfc4bab0a79b9084796e63574b56616a76818d99a4adb7c2cdc9bfb3a89d93887d71665a51473d32251b11070000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbe1dad4d0cccbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcccfd4dae1e2d6cbbfb4a89c91857a6e62574b4034281d110006121d28333e49535c6365696969696969696b77838e9aa5b1bdc8c4b8ada1958a7e73696969696969696969696968655f554b41362b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0c0c0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0b0a08060200000000000000000000000000000000010d18242f3b46525e6975808c919191919191919191918c8075695e52463b2f24180d0100000000000000000000000000000000000000000000030c141c232b323941474b54585f63676d7175797c7f8183848585868685858482807e7b7874706b65635c57514a443a352e261e160e050000000000000000020d1924303c47535e6a75818d98a4afbbc8d2c8bdb1a59a8e82776c63584d453b302c262221202122252b303a444c57626b76818d98a4b0bbc7d1c9bcb0a5998e82766b584f453b30251a0f030000000000000000000000000000000b16202b35444f5b66727e89959ea9b4bcc6cac0b8afa69f97918b827b726e636059514a433b332b221a1208000000000000000000000000000000000000000004121d28333e49535c67737f8a959fa9b5c0ccccc1b5aaa0978b7f74685f544a515a66717d88949da8b3c0c9cdc2b7ada4998d81766b61564b3f352b21160b0000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0e1d9d1cac5c1bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc1c4cad1d8dfd6cbbfb4a89c91857a6e62574b4034281d110008141f2b36414d58636d71747474747474747477838e9aa5b1bdc8c4b8ada1958a7e747474747474747474747474746f655b4f44392d22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b46525e6975808c989c9c9c9c9c9c9c9c988c8075695e52463b2f24180d01000000000000000000000000000000000000000000020b141c242c343b434951565d63686e73787d8184888a8d8e909196919196908f8e8c8a8783807c77716d64615a5449453e372e271e150b0100000000000000040f1a26313b4650596c77838f9aa6b1bdc8cfc4b9afa7968b7f74685c53493d342b211c18131512171b212a323d48525b67727e8995a4adb7c2cdcabeb2a79b908478695f554a3f33281c110500000000000000000000000000000006111d2934404c57636e7984909ba3acb6bfc7c8bfb6afa7a09c928e857e756e69615a534c433b332b22191006000000000000000000000000000000000000010b151f2b36414d58636d78838f9aa6afb9c3cecbbfb3a89c91867b6f64584f454b57636e79838f9ba7afb9c4cfc7bdb3a89c91867b6f64584f453b30251a0f0300000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dad1c9c1bab6b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b5bac0c8cfd6d6cbbfb4a89c91857a6e62574b4034281d11000914202b37434e5a65717d80808080808080808084909ba7b2becac7bcb0a5998d818080808080808080808080807f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0907050100000000000000000000000000000000010d18242f3b46525e6975808c98a3a8a8a8a8a8a8a3988c8075695e52463b2f24180d0100000000000000000000000000000000000000000109131b242c343c444c535a61636d72797e83888c909596989a9b9ca09da69f9c9b999795948f8c87827d766f6b645d544f473f372e251b11070100000000000006111d28343f4a5560697984909ca7b3becaccc0b5aa9f96887c7165594e43392b241a120c0809080c1119232e38424c58646f7b86949da8b3bfcacbbfb4a89c91857a6e63574c4034291d120600000000000000000000000000000005111c28333f4a555f69737f8a939ca6afb7bfc7c7bfb8b0aba39c95908980796f6b635c534c433b332921160d04000000000000000000000000000000000007111b25313c47515a65717d88939da8b6bfc9cdc2b7ada4998d81766b6156473f49545e68737f8b969faab5c0ccccc1b5aaa0978b8074685f554a3e33281e140a00000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d4cac1b8b1aba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abb0b8bec6cfd6cbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b8b8b8b8b8b8b8b8b90949ea8b4bfcac8bdb2a69c928d8b8b8b8b8b8b8b8b8b8b8b8b85796d62564a3f33281c1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1012131616161616161616161616161616161616161616151513100b06000000000000000000000000000000010d18242f3b46525e6975808c98a3afb4b4b4b4afa3988c8075695e52463b2f24180d01000000000000000000000000000000000000000006111a232c343d444d545c636a6f767d838a8f93989b9ea5a4a5a7a8aab0afaaa8a6a5a3a49d9b97928e88827b726e635f584f473f352b211a110500000000000006121d2935404c57636f7a86959ea9b4bfcbcbbfb3a89c91857a6e63574c4034291d1207020000000209141e2934404b56616b78848f9ba7b2bec9ccc1b6aba097877b7064584d41362a1e1307000000000000000000000000000000040f1a25303b454f58636e79828e959fa6afb6bec6c8c1bab6aca59f9c918c837b716c635c534c433a31261e150b01000000000000000000000000000000000b16202b35404b56616a76818d98a4adb7c7cfcabfb3a89d94887d71665a51473a454e57636f7b85919ca8b3bdc7cfc4bab0a79b9084796e63574c42382e24190c03000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d0c5bab1a8a19c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ca0a7aeb6bec8d2cbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96979797979797979b9ea5aeb8c2cdcbc0b5aba29c9997979797979797979797979084796d62564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181c1e1e212121212121212121212121212121212121212121201e1b16100a0300000000000000000000000000010d18242f3b46525e6975808c98a3afbabfbfbaafa3988c8075695e52463b2f24180d0100000000000000000000000000000000000000050e16212a333c444d555d646c717b81898f949b9da4a7a9aeafb1b2b3b5bab9b5b3b2b1afada8a6a39c99928d857e756e685f584f453b302a22160d04000000000007131e2a35414c58646f7b8692a5aeb8c3cecabeb2a79b908478685f554a3e33281c1105000000000005101b27323d47515a6b77838e9aa5b1bdc8cfc5bab0a793887c7065594e42362b1f1408000000000000000000000000000000010c16212c363f4a545f68707b8590969fa6aeb5bcc4cac5bcb6aea9a19a938f847d716d635c534a41372e251b1107000000000000000000000000000000030e1a25303a454f58646f7b85919ca8b3bdc6cfc4b9afa69b8f83796e63574b41373e4b56616a76818d98a4adb7c2cdcac0b4a99e94897e72665b52483d32261c1208000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0ccc1b6aba197919191919191919191919191919191919191919191919191919191919191979ea5aeb8c3cecbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2a2a2a2a2a2a2a7a8aeb5bec7d2cfc5bbb3aba6a5a2a2a2a2a2a2a2a2a2a29c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171e2327292a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2925201a130b03000000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000000000000020c151e27323a444c555e646e727d848d919b9da4a8adb3b4b8bbbdbebfc0c4c3c0bfbdbcbab7b3b2aca7a29b95908980786e685f544a453b32261e140b010000000007131f2a36414d5964707b87929eaab5c8d2c9bdb2a69a8f83786c584f453b30251a0f030000000000020d18232d3748535f6b76828d99a5b0bcc7d4cab6ab9f94887c71655a4e43372b2014090000000000000000000000000000000007121c26303b454f58616b717d8690969ea5acb5bac0c8c6bfb8b4aaa39d9590857d716c635a51473e352b20160d03000000000000000000000000000005111c28333e49545f68747f8b96a0aab5c0cdccc0b5aa9f968b7f73685e54493e313c47515a65717d88949da8b3c0c9cdc2b8aea59a8e82776c62574c40362c22170c010000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbbfb4a89c9187858585858585858585858585858585858585858585858585858585858688959ea9b4bfcbcbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2aeaeaeaeaeaeb2b4b8bec5ced7d5ccc3bbb5b2b0aeaeaeaeaeaeaeaeaea79c9084796d62564a3f33281c1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921282d3235353838383838383838383838383838383838383838383734302a231c130a000000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000000000007111b252f37424b545d646e737e8690949ba2a8adb3b7bdbfc3c8c8cacbcbcacacbcac9c8c7c2bfbcb6b2aba69f9c908c81796e635e554b42362e251b11060000000008131f2b36424d5965707c87939eaab6c1cdc8bcb1a59a8e82776b605448352b21160b00000000000000091324303b47535e6a75818d98a4afbbc7cec2b7aba094897d71665a4f43372c20150900000000000000000000000000000000020c16212b353f47525b636d717d8590959ca3abb0b8bdc5c8c3bab4aca59e9690857d716b61584f453a30261d1208000000000000000000000000000006111d2934404b57636e79848f9ba7b0bac4cfcabfb3a89c91857b6f63574e453a2f37414d58636d78838f9ba7afb9c4cfc8beb2a79c92877c70645950463c31261b0f040000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a84909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2aeb9bababababebfc2c7ced6dedcd3ccc5c0bdbcbabababababababab3a79c9084796d62564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212931383d4041444444444444444444444444444444444444444444423f3a342c231a10060000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d010000000000000000000000000000000000000b16212b353f48525b636d737e8791969ea5abb3b7bdc2c7cbc9c8cac4c1bfbebfc0c3c9c8c9cbcac5c0bbb6afa9a19a918c80756f655b52473e352b20160b0000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261107000000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000000000002050607090909090907111b252e37414a535c636d717d848e929ca0a7adb6bac1c8c4bdb5aea69f9690847b6f685f544940362c22170c0100000000000000000000000005101c27323d48525b66727d89949ea8b7c0c9ccc1b7ada4988d81756a6156473e352b333e49535c68737f8a969faab5c0ccccc1b6aca3988c80756960554a3f34281f150a0000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2aeb9bfbfbfbfc8c9ccd0d6dde4e1d9d2ccc8c5c4bfbfbfbfbfbfbfbeb3a79c9084796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28313a41474b4d50505050505050505050505050505050505050504f4e4a443c342a20160b0100000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d010000000000000000000000000000000000030f1a25303b454f58626c727e869197a0a7aeb5bbc2c7cbc6c1bebdb9bab5b3b3b3b5b9b8bcbdc0c5cccbc7bfb9b5aaa29b918a7f736c62574e453a2f24190e0300000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000000000003090d10121215151515151515151e27313a434c545d636c717b828b91979da4abb0b8bec5c6beb6afa69e958e82786e635950463c31261b0f0400000000000000000000000007121e2935404c57626b76828e99a4adb7c7d0cabeb3a89d93887d71655a5147362e252f39434c58636f7b85919ca8b3bdc7d0c6bcb3a79c90857a6f63574c43392f241a0d0300000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468626262626262626262626262626262626262626262626262626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2aeb4b4b4b4b4bdbec1c6ccd4ddd9d1c9c2bdb9b8b4b4b4b4b4b4b4b4b3a79c9084796d62564a3f33281c1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d38414a5156585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b59544d443a30251b100500000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000000000005111c28333e4a555f68707c859097a0a7b0b7bec5cdc5c0bcb6b2b1adb0aaa8a7a8aaafadb1b2b6bcc1c6ccc9c3bab2aaa19c91867c70685e54493e33271f140a00000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000000000070d13181b1d1e2020202020202020202129333b434c545c636b6f7980868f939ca0a7aeb5bdc4c7bfb6aea59c938a7f736a60564a3f34281e14090000000000000000000000040f1a25303b46505864707b86919ca8b4bec7cec3b9afa69a8f83786c6358494137261e2934404b56616a76818d98a4adb7c2cdcbc0b4a99f958a7e73675c53493e33271d130900000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5757575757575757575757575757575757575757575757626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b96a2a8a8a8a8a8a8b1b2b6bcc4ccd6d2c9c0b8b2aeada8a8a8a8a8a8a8a8a8a79c9084796d62564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a6164676767676767676767676767676767676767676766645d544a3f34291e130700000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d010000000000000000000000000000000004101b26313c47515a636e79838f969fa7b0b8c0c7c9c4bbb5b2aca7a5a2a7a09c9c9c9fa6a1a5a7acb2b6bcc4cacec2bab5aaa0968e83786e63574b42382e24190e03000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000810171d2326292a2c2c2c2c2c2c2c2c2c2c2c2c333c434b535a61686e747d838c91979ea5acb4bdc4c7beb5aca39c90857a6f63584c42382e23180d020000000000000000000006111d28333f4a55606974808c97a1abb6c1cecbc0b5aa9f968a7f73675c53493930271b26313c47515a65717d88939da8b3c0c9cec3b9afa69a8f83786c63584d41372d23180b01000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d514b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b969c9c9c9c9c9c9ca5a7acb3bcc6d0ccc2b8b0a8a3a19c9c9c9c9c9c9c9c9c9c9c9084796d62564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b56616b6f7272727272727272727272727272727272727272726e64594e42372c20150900000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d010000000000000000000000000000000006121d29343f4b56606a747f8b939da6afb8c0c8c7c0b9b5aba6a39c9a969497919090969396999ca3a7acb3bac2cacfc4bab0a79c93897e72665b52483e33271c1106000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000007101820272d31343537373737373737373737373737363b434a51585f636c7179808790949da3acb4bdc7c6bcb4a99f958a7f73675b52483d32271c10050000000000000000000006121d2934404c57636e7a84909ca8b1bac5d0cabfb3a89c90857a6f63584c4339292018222d37414d58636d78838f9ba6afb9c4cfc8bfb3a89d93887d71655a51473c31251b1107000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146404040404040404040404040404040404040404a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8b91919191919191919a9ca3acb6c1ccc8bdb2a89f989591919191919191919191919084796d62564a3f33281c110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e72665b4f44382c21150a00000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000000030f1a25303b454f58636f7a85909ca3acb6bfc8c7bfb7afaaa29c99928e8b888685848586878a8e929a9ca3aab1bac2cbc9c0b7aca39a8e83776c62574c41352a1e1307000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000030d17202930373c404143434343434343434343434343413e3a41474f545c63696e747d848f939da4adb7c0c9c3b8aea59b8f83786b62574c4035291e120700000000000000000006111c28333e48535c67727e8a959ea9b8c1caccc1b6aca3988c81756a60564a3f34281d131d27333e49535c68737f8a969faab5c0ccccc1b7ada4988d81766a61564b3e352b20160b000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a34343434343434343434343434343434343f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b17222e3a45515c68747f8585858585858585858e939ca7b2bec9c5b9aea3988f8a85858585858585858585858584796d62564a3f33281c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d898989898989898989898989898989898989898984796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000005111c28333e4a555f6874808b959fa9b4bdc7c9bfb7afa69f9c928d87827f7c7a7a79797a7c7e82878e939aa1aab2bbc6cec7bcb3a79c93877c7064594d42362b1f1309000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000009131d27303941474b4c4f4f4f4f4f4f4f4f4f4f4f4f4e4d49433b3f454a535960636d717b838f939da7afb9c4c8bfb3a89d93877b7064584d41362a1e130700000000000000000007131f2a35414c57626c77838e9aa5aeb8c9d1c9beb2a79c93877c70655950463c31261b0f1a242f39434c58636f7b85919ca8b3bdc7d1c6bdb3a89c91857b6f64584f453a30251a0e030000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e282828282828282828282828282828333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000b16222d39444f5b656f747a7a7a7a7a7a7a7a7a828e9aa5b1bdc8c4b8ada1958a7f7a7a7a7a7a7a7a7a7a7a7a7a79746b6055493e32271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d899595959595959595959595959595959595959084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000006121d2934404c57636e7984909ba6afb9c4cec4b9afa69f969189827c7773716f6a6d696e7073777c828c909aa1abb5bec8ccc1b6aca3978b7f74685d5145382d23180d020008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900020d18232d37414a5156585a5a5a5a5a5a5a5a5a5a5a5a5a58534c43393b434850555c636a6f7a838f969faab5c0ccc2b7ada4968a7e73675c5044392d22160b000000000000000004101b26313c46505965707c88939ca7b6bec8cec3b8aea59a8e83776c62574940362c22170c151f29343f4b56616a76818d98a4adb7c1ccccc0b5aaa0968b7f74685f54493e33281e14090000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231d1d1d1d1d1d1d1d1d1d1d1d1d28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000914202b36414b555e65686e6e6e6e6e6e6e6e77838e9aa5b1bdc8c4b8ada1958a7e736e6e6e6e6e6e6e6e6e6e6e6d6b645b51463b3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d010000000000000000000000000000000915212c38434f5a66727d89949ea9b6bfc8cbc0b5aa9f9690867e76706c68656360595f6365676c7078808c919ba5aeb8c3cdc6bcb1a59a8e82776b5a51473d32271b10050008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090005101b26313c47515a616466666666666666666666666665635c53493e33383f464a535a616a707c86919ca8b3bfcbc7bbafa3988c8175695e52473b2f24180d000000000000000006111d28343f4b56606a75818c98a3acb6c6cfcbc0b4a99f958a7e72675c53483830261d1208101b26313c47515a65717d88939da8b3bfc9cfc4bab0a79b8f84796e63574b42382e23180c0200000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231711111111111111111111111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d110006111c27313c454e555b5c636363636363636b77838e9aa5b1bdc8c4b8ada1958a7e73676363636363636363636362605b534b41372c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acacacacacacacacacacacacacaca79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000005101b27323d47515a6a75818c98a5aeb8c6ccc1b6aca39c90867d726e65625b5a5856505557595b62686e75818d959ea9b4bfcbcabfb3a89c9085796b61564b4034291e12060008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090006121d2934404b56616a6f717171717171717171717171716d63584d3f362f363b434a5159626b75818c98a4afbbc6c8bcb1a59a8e82776b6054483d31261a0e000000000000000006121e2935404c58636f7a85909ca8b3bcc6d6cabeb3a79c90857a6e63574c4239291f160d030d18222d37404d58636d78838f9ba6afb9c4cec9c0b4a89e94897d72665b52483d32261c120700000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c060606060606060606111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100020d18222c353e454b4f51575757575757606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5757575757575757575655514b433a31271d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb6b6b6b6b6b8b8b8b8b8b8b8b3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000006121d2934404b56616b78848f9ba7b2bec8c0beb2a79c928a7f736d645d57524e4c4a464a4c4d52585f636f7a84909ba7b3becacbc0b5aa9f96877b6f64584d41352a1e13070008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090007121e2a35414c58646f7b7d7d7d7d7d7d7d7d7d7d7d7d7d7165584f453b302c30394149525b66727e8995a0acb8c3c9beb2a79b8f84786d61554a3e33271b100000000000000005121d28343e49535c68737f8a969faab5c0cccbc1b6aca3978c80756960554a3f33281d0f060008131d27333e49535c68737f8a969faab5c0cbcdc2b7ada4998e82766b62574c3f362c21170c01000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000008121c252d353c4144454b4b4b4b4b54606b77838e9aa5b1bdc8c4b8ada1958a7e73675b504b4b4b4b4b4b4b4b4a4946413a332a21170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0ababababababadaeb2b9c0c3beb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000007131e2a35414d58646f7b86949ea8b4b5b5b5b8aea59a8e82786e635d544c4842403f3c3f4042474f56606a74808b97a2aebac9cec4b9afa693887c7165594e42372b2014080008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000915202c37434f5a66717d8989898989898989898989898479695f554a3f3329293139424e5965717c88939fabb6c2cabeb3a79c9084796d62564a3f33281c10000000000000010b151f2b36424d58636d78838f9ba6afb9c3cec9bdb2a79c92877c70645950463b30251a0f0000030d1a242f39434c58636f7a85909ca8b3bdc7d1c7beb4a89c91867b70645950463b30251a0f04000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d110000020b141d252c3136393a404040404954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044404040404040403f3e3b37312a221a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d89959f9f9f9f9f9f9fa1a3a8b0b9c2beb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000915202c37434f5a66717d8894a4ada9a9a9a9a9a99e95897d72685e544c443e383534313334373e46505965707c8893a6afb9c3cec9b7aba094887d71665a4e43372c2014090008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000814202b37424e5a65717d889494949494949494949491857a6e63574c4239332f3136424e5965717c88939fabb6c2cabfb3a89c9185796e62574b3f34281d1100000000000007111b25323d47515a66717d88939da8b6bfc9cdc2b8aea5998e82776b6257483f362c21170c0100000b151f29343f4b56606a75818d98a4adb7c1ccccc1b6aba1978c80746960554a3f33281f150a000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000040d141c22272b2d2e3434343d4954606b77838e9aa5b1bdc8c4b8ada1958a7e73675b5044393434343434343332302c27211a12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8994949494949494949699a0a8b2bdbeb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000b16222e3945505c68737f8a969d9d9d9d9d9d9d9d9c90847a6e63574e453c332e29282628292e37404c57636f7a86959fa9b5c0cbc3b7aba094897d72665a4f43382c2015090008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090007131f2a36414d5864707c8796a0a0a0a0a0a0a0a0a097887d71665b524a433e3a3b3f46505966727d8995a0acb7c3cabfb3a89c9085796e62564b3f34281c110000000000000b16212b35404b56616b76818d99a4adb7c7cfcbbfb4a99e95897e72665b5248382f261c120700000004101b26313c47515a65717c88939da8b3bfc9d0c5bab1a89c90847a6e63574c43392f24190d030000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000040b12181c2022222929313d4954606b77838e9aa5b1bdc3c3b8ada1958a7e73675b5044392d2929292929282725211d171109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e8888888888888888888a8f99a3aebabeb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000c17232f3a46515d6974808b929292929292929292928d8276695f55473e352b241e1d1b1c1e28343f4a5560697985909ca7b3bfcac5bab1a894887c71655a4e43372b2014090008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090006121d2934404b57636e7985919ca8abababababb0a7988c81756c625a534b4945464a5056606a75808c98a3afbac6cabeb3a79b9084796d61564a3f33271c100000000000030f1a25303b454f58646f7b86919ca8b3bdc7cfc5bab0a79b9084796e63574c4238291f160c02000000010d17222d37404d58636c78838f9aa6afb9c4cecac1b4a99e958a7e72675c53493e33271d13080000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000000002080d111416171d26313d4954606b77838e9aa5b1b8b8b8b8ada1958a7e73675b5044392d221d1d1d1d1c1b1916120d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7a7d7c7c7c7c7c7c7c7c7f8a96a1adb8beb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0100000000000000000000000000000d1824303b47525e697580868686868686868686868686807469584f45362e252222222222252b34404c57636e7a85919ca8b4bfcbc1b6aba197877c7065594d42362b1f13080008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090005111c28333e4a545f6877838f9aa6b1b7b7b7b7b4a89c91877c706b635c57544e50555860636f7a84909ca7b3becac8bdb1a69a8e83776c6054493d32261a0f000000000005111c28333e4a545f68747f8b97a0aab5c1cdccc1b6aba0978b8074695f554a3f33281c0f05000000000008131d27333e49535c67737f8a969faab5c0cbcec3b8aea59a8e83776c62584c40372d22170b0100000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d11000000000000000206090b0f1a26313d4954606b77838e9aa5acacacacacaca1958a7e73675b5044392d221611111111100e0b080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56616a6f7171717171717171717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000006121e2935404c57636f7a7b7b7b7b7b7b7b7b7b7b7b7b796e63574c40352e2e2e2e2e2e2c31353b454f5864707b8797a1abb6c1cbbfb4a89c91867a6f63584c4035291e12060008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900030f1a25303b454f586974808c97a4adb7c2c3c1b6aba0978f847b716c65635e57596063696e75818d959ea9b4bfcbc5bab1a8988d81756a5e53473b3024190d000000000006121d2934404b57636e7984909ba7b0bac4cfcbbfb4a89c91867b6f64584f453b30251a0f000000000000030d1a242f39434c58636f7a85909ca8b3bdc6d1c8bfb3a79c93887c70655a51473c31251b110600000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e9aa0a0a0a0a0a0a0a0958a7e73675b5044392d22160a060605040300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a61636565656565656565717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000010d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d01000000000000000000000000000006111d28343f4a5560696f6f6f6f6f6f6f6f6f6f6f6f6f6e6960554a3f3839393939393a373c3f454a545f68737f8a96a8b1bac5c9bdb2a69b8f83786a60564b3f34281d11060008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000b16212b35434e5a65717d88949ea8b4bfc8c5bab0a79e948f847d76716e686a6b696f7279808c919ba5aeb8c3ccc1b6aba1978a7e73675b5044392d21160a0000000005111c27323d48525b66727e89949ea9b7c0cacdc2b7ada4998d82766b6157483f352b21160b000000000000000a151f29343f4b56606a75818d98a4adb7c1ccccc1b6aca3988c81756a60564b3e352b20160b00000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77838e959595959595959595958a7e73675b5044392d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222d3740495156585a5a5a5a5a5a5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000205070d18242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24180d0c0c0c060604010000000000000000040f1b26313c46505960636363636363636363636363636360595046434445454545454546464b4f545d636e79838f9aa6b1bdcac2b8aea5988c81756a5950463c31261b0f040008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000007111d2934404b57636e79848f9ba5aeb8c3cac1b8ada49e948f86817c79777676777a7e838c919aa1abb6bec8cbbfb4a89c91867b6f64584d41352a1e13070000000007121e2a35404c57626b77828e99a5aeb8c8d0cabfb4a89e94897d72665a5147372f251c12070000000000000004101b26313c46505965717c88939da8b3bfc9d0c6bcb3a89c90857a6f63574e453a2f24190e03000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000030f1a26313d4954606b77828989898989898989898989897e73675b5044392d22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27303940474b4c4e4e4e4e4e4e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000004090e11121318242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f24181717171712110f0c0803000000000000010c17222c364049505557585858585858585858585858575550484a4e50505050505051525056585f636d737f8a939da7b3bec7c0b4a99e94887d71665a4e43372c22170c010008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000005101c27333e49545e68747f8b959ea9b4bcc6c8beb5ada49e97918d88848281828385898f939aa1aab2bbc6ccc1b7ada49a8e82776b61574b4035291e1207000000040f1a26313b46505964707c86919ca8b4bec7cfc4bab0a79b8f84796e63574b4138291e150c0200000000000000010c17222d37404d58636c78838f9aa6afb9c4cecbc0b5aa9f968a7f73685e54493e33271e1409000000000b16222d3945505c67737f8a96a1adb9c4cdc5b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3becacbbfb4a89c91857a6e62574b4034281d1100000000000000000000000914202c37434e5a66717d7e7e7e7e7e7e7e7e7e7e7e7e7c7064584d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f4142424242424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000080e14181c1e1f23242f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f2423232323231e1d1b17120d0600000000000008121c26303840464a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a464d54595b5c5c5c5c5c5c5d596063686e737e86919ca3acb7c1c0b7ada49b9084796e63574b4034291d1208000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000030e19242f3a454e57636f7a84909ca3acb6bec7c5beb5ada7a09c9895908e8d8d8e91969b9da4aab2bac2cbc4bcb3a89d93897e72665a51473d32271c100500000006111d28343f4a55606975808c97a1abb6c1ceccc0b5aaa0968b7f74685f54493e33281c0e0500000000000000000008131d27333e49535c67737f8a969faab5c0cbcec4b9afa69b8f83796e63574b41382d23180c020000000b16222d3945505c67737f8a96a1adb9c1c1c1b9aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3bec1c1bfb4a89c91857a6e62574b4034281d11000000000000000000000008141f2b36424d58636d71727272727272727272727272706b62574c4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820272d31343537373737424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000911181e2327292a2f2f2f3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b2f2f2f2f2f2f2f292826221d160f070000000000030d161f2830363c3f40414141414141414141414141403f4a545d6467686868686868696a6a6f73797f8691969faab4bdc4b9afa69d938a7e73685f54493e33281c1103000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000000b16202b353e4a556069737f8a939ca5aeb7c0c8c5beb8b0aba8a59e9c9a99999a9ca0a7a8adb4bac2cbc5bcb4aaa19a8f83786e63574b41382d23180d0200000006121d2935404c57636f7a85909ca8b1bac5d0cbbfb3a89c91867b6f64584f453a30251a0e00000000000000000000030d19242f39434c58636f7a85909ca8b3bdc6d1c9bfb3a89d94887d71665a51473d32251c12070000000b16222d3945505c67737f8a96a1adb5b5b5b5b5aea2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7b3b5b5b5b5b4a89c91857a6e62574b4034281d11000000000000000000000007121d28343f49535c636667676767676767676767676764625b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d222629292b2b2b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000008111921282e3235363a3a3a3b46525e6975808c98a3afbac6c6baafa3988c8075695e52463b3a3a3a3a3a3a3a3534312c2620180f060000000000060f171f262c31343535353535353535353535353535434e59646e727373737373747475787a7f838b91969fa7afb9c0bab5aa9f968f83796e63584f453a30251a0e03000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000006111b25313c465059636e78828e959ea7b0b8c0c7c8c0bab5b4aea9a7a5a4a5a6a8aab0b3b7bdc5cbc5bdb5aca39a91887d71685e54493e31281e140900000006111d28333e49535c67737e8a959fa9b8c1cac1c2b7ada4998d81766a6156473e352b20160b00000000000000000000000a151f28343f4b56606a75818c98a3acb7c1c1c1c2b7ada4998d82766b61574b3f352b21160b0000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaa2978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909ca7aaaaaaaaaaaaa89c91857a6e62574b4034281d110000000000000000000000040f1a252f3a434c53585a5b5b5b5b5b5b5b5b5b5b5b5b5857524a42382e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181b1d1e20202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000040e18212a31383d40414646464646525e6975808c98a3afbac6c6baafa3988c8075695e52464646464646464646403f3c37302820160d030000000000070f161c2226282929292929292929292929292d3844505b67727e7f7f7f7f7f7f808183868a8f939c9fa7afb7beb7b0aaa09c91867c70685f54473e352b20160b00000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000010b17222c364049545f686f7b859096a0a7afb7bec6cac4c1beb8b4b3b1b0b0b1b3b5bac0c2c7ccc4bcb5ada49d938c80756d63574e453a2f21180e0400000008131f2a36414c58636c77838f9aa5aeb8b5b5b5b5b3a89d94887d71655a5147372e251b1107000000000000000000000004101b26313c46505965717c88939da8b3b5b5b5b5b5b4a89c91867b6f64584f453b30251a0f0300000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e978b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909c9e9e9e9e9e9e9e9e9c91857a6e62574b4034281d110000000000000000000000000b15202a333c43494d4e4f4f4f4f4f4f4f4f4f4f4f4f4d4c48423a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d10121214202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000009141e28313a42484c4d5151515151525e6975808c98a3afbac6c6baafa3988c8075695e525151515151515151514c4b46403830261d1208000000000000060d12171b1d1e1e1e1e1e1e1e1e1e1e1e27323e4955616c78838a8a8a8a8a8b8c8d8f91979a9da4aaafb7bab5ada7a09c908a7f736c62584f45372e251b110700000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000000008121c26303a454f58616b717d8691979fa7aeb5bcc2c7ccc8c3bfbebcbbbcbdbfc0c4c9ccc6c1bab4aca49d948f82796e635c53473e352b20100700000004101b26313c47515a65717c88939da7aaaaaaaaaaaaafa69b8f83786d63584a4137261e150b010000000000000000000000010c17222c37404d58636c78838f9aa6afaaaaaaaaaaaaaba0978b8074695f554a3f33281c110500000b16222d3945505c67737f8a93939393939393939393938b8074685d51463a2e23170c000000000000000005111c28333f4a56626d7984909393939393939393939391857a6e62574b4034281d11000000000000000000000000061019232b333a3f424344444444444444444444444441403d38312a21180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204060914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000020e18232e38424a5257595d5d5d5d5d5d5e6975808c98a3afbac6c6baafa3988c8075695e5d5d5d5d5d5d5d5d5d5d5856504940372c22170c0100000000000003080c0f11121212121212121212121b27323e4955616c78838f969696969697989a9ca0a7a8adb5b9b7b0aaa49e97918a7f746e645c53473f35261e150b0100000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000000030d16202b353e47515a636d727e8791969ea5abb4b7bec1c6cacbcac8c7c7c8cbcbcac5c1bdb7b3aaa39d948f847b6f6960554c43362e251b110000000006121d29343f4b56616a75818d98a39e9e9e9e9e9e9e9e9f968a7f73685c5349393127160d040000000000000000000000000008131d27333e49535c67737f8a969f9e9e9e9e9e9e9e9ea79b9084796e63574c4034291d120600000b16222d3945505c67737f878787878787878787878787878074685d51463a2e23170c000000000000000005111c28333f4a56626d7985878787878787878787878787867a6e62574b4034281d110000000000000000000000000009121b232a2f3436373838383838383838383838383635322e282119110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100005111c27323d48525b6264696969696969696975808c98a3afbac6c6baafa3988c807569696969696969696969696963605950463c31261b0f0400000000000000000104060607070707070707070f1b27323e4955616c78838f9ba2a2a2a2a3a4a6a8abb0b3b7bdbab0a7a09c948f867f746f655e554b42372e25160d040000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000007111b252e37414a535d646e727e8690959ca2a8adb3b7bcbebfc3c8c3c3c7c2bfbebab6b4aca7a19a938f847c706b615850463c33261e140b0100000007121e2935414c58636f7b8591939393939393939393939390857a6f63584c4339292017060000000000000000000000000000030d19242f39434c58636f7a8590939393939393939393939395897e72675b4f44382d21150a000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c4135291e120700000000000000000007131f2a36414d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7b7064594d42362a1f130800000000000000000000000000020b12192025282b2c2d2d2d2d2d2d2d2d2d2d2d2d2a2927231e1811090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100007121e2935404c57626b70747474747474747475808c98a3afbac6c6baafa3988c80757474747474747474747474746f6a60564b3f34281d110600000000000000000000000000000000000000040f1b27323e4955616c78838f9ba6adadaeaeafb2b4b5bac0c1c0b5aaa096918b847d736f655e554d453b32271e1506000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000000000010b151e26313a434c545d646e727d848e929b9ea4a7acb0b3b4b8b7b7b7b6b8b4b2b1aba8a39d9a918c837b706b625a51483f362b23160d04000000000b17222e3945515c68737f878787878787878787878787878781756a60564b3f34291d10070000000000000000000000000000000a151f28343f4b56606a7580878787878787878787878787878782776b6054493d31261a0f030006121d29343f4b56606a6f707070707070707070707070706f6a61564b4034291d120600000000000000000007121e2935404c57626b70707070707070707070707070706b62574c40352a1e13070000000000000000000000000000020910151a1d1f202121212121212121212121211f1e1c18140e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100007131f2a36414d5964707c808080808080808080828f9aa6b1bdc8c8bdb1a69a8f82808080808080808080808080807a6f63584c4035291e120600000000000000000000000000000000000000040f1b27323e4955616c78838f9ba6b2b9b9babbbdbfc1c4cacbbfb3a89c91857f79716c655e554e453d342a22160e05000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000000040d162129333c444d545d646d717b82898f949a9da3a5a7a9aeababababaea9a7a8a19c9a938f8880796f6a625b524a41382f261b1205000000000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f635a51473c31261b1000000000000000000000000000000000040f1b26313c465059636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7064594d42362a1f1308000004101b26313c46505960636464646464646464646464646463615a51473c31261b100400000000000000000005111c27323d48525b626464646464646464646464646464625b52483d32271c110500000000000000000000000000000000060b0f1214141515151515151515151515151312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d888b8b8b8b8b8b8b8b8f939da7b3bec9c9beb3a79d938f8b8b8b8b8b8b8b8b8b8b8b8b877b6f64584d41352a1e130700000000000000000000000000000000000000040f1b27323e4955616c78838f9ba6b2b7b8b9bbbebfc2c7ccccc0b5aaa0968c81796f6960584f453b302d241a120600000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000000000000061019232b343c444d545c636a6f767e848a8f9396999c9ea59fa0a09fa59e9b9997918e89837d756e69615a524a423931271f160a02000000000006121e2934404b56616b6f70707070707070707070707070706f6a60564940372d22170d01000000000000000000000000000000010c17222c37404b56606a6f7070707070707070707070707070706b62574c40352a1e13070000010c17222d374049505658595959595959595959595959595856514941372d22180d02000000000000000000030e19232e38424a5257595959595959595959595959595957524b42382e23190e03000000000000000000000000000000000000040708090a0a0a0a0a0a0a0a0a0a0a0a07070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894979797979797979a9da3acb6c1ccccc1b6aca39d9a979797979797979797979792877b6f64584d41352a1e130700000000000000000002050607090909090909090f1b27323e4955616c78838f9ba6acacacadb0b2b4b8bec1c6c4bab0a79b918c82796f685f544a43382f261c120800000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000000000009121b232c343c444c535a61646e72797e83878b8d909593949494949394908d8a86827d79716d636058514a423a312920170e0500000000000005101b27323d47515a6164646464646464646464646464646463605950463930271d1308000000000000000000000000000000000008121d26313c4650596063646464646464646464646464646464625b52483d32271c110500000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d1308000000000000000000000009141e28313a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0a2a2a2a2a2a2a6a7acb4bcc6d0d0c6bcb4aca7a6a2a2a2a2a2a2a2a2a2a29e92877b6f64584d41352a1e13070000000000000004090d10121214141414141414141b27323e4955616c78838f9ba0a0a0a1a2a4a7a8aeb2b6bcc4c0b7aaa19b928e82796e635d544840362c22170c02000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c2015090000000000000000020b131c232c343b434a51565d64696e72777c7f8284868888898988878684817f7b77726e68635c5550484139312a2119100600000000000000020d18232d38414a51565859595959595959595959595959595856504940372820170d030000000000000000000000000000000000030d17222c37404950565859595959595959595959595959595957524b42382e23190e03000000030d17202830373c3f404242424242424242424242424241403c37302920170d030000000000000000000000040e18212a31383d404142424242424242424242424242403d38322a21180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0abaeaeaeaeaeb1b3b6bcc4cdd6d6cdc4bcb6b3b1aeaeaeaeaeaeaeaeaea99e92877b6f64584d41352a1e1307000000000000070e13181b1d1e20202020202020202027323e4955616c78838f959595959596989b9ea5a7acb3bac1bab2aaa39c928c80746d635950463b31261c1208000000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c201509000000000000000000030b131c232b333941474b54585f63676b707476797a7c7d7d7d7d7c7a7876736f6b66635f58534a463f3831292119110800000000000000000009131e28313a41474b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b4640393027180f060000000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a32281e140a0000000000060f1820272d313435363636363636363636363636363534312d27201810070000000000000000000000000008111921282e3235363636363636363636363636363635322e282119110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0abb7bababababdbec1c6cdd4ddddd4cdc6c1bebdbabababababababab5a99e92877b6f64584d41352a1e130700000000000810171d2327292a2b2b2b2b2b2b2b2b2b2b323e4955616c788389898989898a8b8d90949a9ca3a9b1bac2bab3aba29a90887d716960554a40362c21170c010000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cec3b7aca094897d72665a4f43382c20150900000000000000000000030b131b222931373c44484f55575b6264686b6a6f7071727171706f696a6764615a57544f47433b362f272018110900000000000000000000040e17212931383d40414242424242424242424242424242403f3c3730282016080000000000000000000000000000000000000000030d16202830373c3f40424242424242424242424242424242403d38322a21180e04000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d1710080000000000000000000000000000000911181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27231e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0abb7bfbfbfbfc6c7caced4dbe3e3dbd4cecac7c6bfbfbfbfbfbfbfbfb5a99e92877b6f64584d41352a1e13070000000007101920272d323435373737373737373737373737434e5a66717d7d7d7d7d7d7e7f8184888e939aa0a9b1bac3bcb3aaa19b8f847a6f635950463b31261a0f040000000008141f2b36424e5965707c87939faab6c1cdc8bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc6cdc3b7aca094897d72665a4f43382c2015090000000000000000000000030a121820272d32373f454a4c5257595c5960636565666665646360595c5856514b49453e37302c261f17100800000000000000000000000007101921282d32343536363636363636363636363636363534312c2720180f06000000000000000000000000000000000000000000060f1820272c31343536363636363636363636363636363635322e28211911080000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d070000000000000000000000000000000000080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0abb4b4b4b4b4babcbfc4cad2dbdbd2cac4bfbcbab4b4b4b4b4b4b4b4b4a99e92877b6f64584d41352a1e1307000000040e17202931373d4041434343434343434343434343424d58636d717272727272737376797d828b909aa1aab5bdc3bab3a89d948b7f736960554a3f34281d11060000000008141f2b36424e5965707c87939faab6c1c1c1bcb1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afbbc1c1c1b7aca094897d72665a4f43382c201509000000000000000000000000020810171d23272f353b3f42484c4d51505658595a5a5a5a59575550504d4b47413e3a352e26211c160e0600000000000000000000000000000810171e2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221d160f070000000000000000000000000000000000000000000000070f161d222628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27231e1811090100000000000000000003080c101212131313131313131313131313131212100d08030000000000000000000000000000000000000004090e1112131313131313131313131313131313110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8894a0a8a8a8a8a8a8afb0b4bac2cad4d4cac2bab4b0afa8a8a8a8a8a8a8a8a8a89e92877b6f64584d41352a1e130700000009131d27313941474b4c4e4e4e4e4e4e4e4e4e4e4e4e4e4d535c636666666666666768686e7178808b909aa4adb7c2c2b7ada49b90847a6f63574c4035291d14090000000008141f2b36424e5965707c87939faab5b5b5b5b5b1a5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4afb5b5b5b5b5aca094897d72665a4f43382c2015090000000000000000000000000000070d13171e252b3033383d404145464b4c4e4e4f4f4e4d4c4a464541403d3833302b251e16120c0500000000000000000000000000000000070e13181b1e1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d0600000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e080100000000000000000000000001040607080808080808080808080808080706040200000000000000000000000000000000000000000000000305070708080808080808080808080808070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d88949c9c9c9c9c9c9ca3a5aab1bac4cecec4bab1aaa5a39c9c9c9c9c9c9c9c9c9c9c92877b6f64584d41352a1e13070000020d18232d37414a5156585a5a5a5a5a5a5a5a5a5a5a5a59585353585a5b5b5b5b5b5b575e63686e75808c949da8b3bfc7bdb4a99e95897e72665b4f44382e23180d0200000008141f2b36424e5965707c87939faaaaaaaaaaaaaaa5998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c98a4aaaaaaaaaaaaaaa094897d72665a4f43382c20150900000000000000000000000000000003090e151c2125282e323536373c3f40424343434342403f3c363535322d2825201b150d070200000000000000000000000000000000000004090d10121313131313131313131313131313131211100c080300000000000000000000000000000000000000000000000000000003080c10111213131313131313131313131313131313110e0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d889191919191919191989aa1aab4bfcacabfb4aaa19a98919191919191919191919191877b6f64584d41352a1e1307000005101b27323d47515a616465656565656565656565656565635c534d4e4f4f4f4f4f504e54585f636e79838f9ba7b2bec9c3b8aea5998d81766a5b52483d32271c100500000008141f2b36424e5965707c87939e9e9e9e9e9e9e9e9e998e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c989e9e9e9e9e9e9e9e9e94897d72665a4f43382c2015090000000000000000000000000000000000050c12161a1e23272a2a2d3134353637383737363534312c2a2927231e1a16110b04000000000000000000000000000000000000000000000205060708080808080808080808080808080606040100000000000000000000000000000000000000000000000000000000000000010406060808080808080808080808080808080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000914202c37434e5a66717d8585858585858585858c919aa5b0bcc7c7bcb0a59a918c858585858585858585858585857b6f64584d41352a1e1307000006121d2934404b56616a6f717171717171717171717171716c63584d4343434343444445494f556069737f8a96a6afb9c3c8beb3a79c9085796b61574b4035291e120700000008141f2b36424e5965707c8793939393939393939393938e82776b5f54483d31261a0e030000000000010d1824303b47525e6a75818c9393939393939393939393897d72665a4f43382c20150900000000000000000000000000000000000002070b0f14191c1e1f222629292b2b2c2c2b2b292826221e1e1c18130e0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100008141f2b36424d58636d717a7a7a7a7a7a7a7a7a808c98a3afbac6c6baafa3988c807a7a7a7a7a7a7a7a7a7a7a7a7a776b61564b4035291e1207000007121e2a35414c58646f7b7d7d7d7d7d7d7d7d7d7d7d7d7d7165584f453a38383838353a3e465058646f7b87969faab5c0cbc0b4a99f95877b7064584d41362a1e130700000008141f2b36424e5965707c8787878787878787878787878782776b5f54483d31261a0e030000000000010d1824303b47525e6a7581878787878787878787878787877e72665a4f43382c201509000000000000000000000000000000000000000000030a0e111213171b1d1e1f202020201f1d1d1b171212100d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0e1010111111111111111111111111111106040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100007121d29343f49535d63666e6e6e6e6e6e6e6e75808c98a3afbac6c6baafa3988c80756e6e6e6e6e6e6e6e6e6e6e6e6d615a51473d32271c100500000a16212d3844505b67727e8888888888888888888888888479685f54493e332c2c2c2b2f363f4b57616b7985909ca8b3bfcac3b9afa694897d71665a4f43372c20150900000006121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e13070000000000000007121e2a35414c58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291d12060000000000000000000000000000000000000000000000030507080c10121214141515141312110f0c080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d110f0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000040f1a252f3a434c53585a636363636363636975808c98a3afbac6c6baafa3988c80756963636363636363636363636256514a41382d23180d0200000915212c38434f5b66727d899494949494949494949491857a6e63574b41372e28252327323d47515a6d78848f9ba7b2bec9c8b8aca095897e72665b4f44382d21150a00000006111d28333f4a5560696e707070707070707070707070706f6b61574b4035291e12070000000000000006121d2934404b56616a6f707070707070707070707070706f6960554a3f34281d1106000000000000000000000000000000000000000000000000000000010406070809090909080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910171c2124272729292929292929292929292929291d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000b15202a333c43494d4e5757575757575e6975808c98a3afbac6c6baafa3988c8075695e575757575757575757574d4b47413a31281e13090000000914202b37434e5a65717c8894a69f9f9f9f9f9f9fa097887c71655a51473f3733302d32373f4b56616a7984909ca7b3becac4b8ada1958a7e73675b5044392d22160a000000040f1a25303b46505860636464646464646464646464646464615a51473d32271c10050000000000000005101b27323d47515a61646464646464646464646464646463605950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111920262c30323334343434343434343434343434342825211c160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000006101a232b333a3f42434b4b4b4b4b525e6975808c98a3afbac6c6baafa3988c8075695e524b4b4b4b4b4b4b4b4b41403d38312921170e0400000007131e2a35414d58646f7b87959fa9abababababb0a7978b80746a61584f47413e3b383d41475059636f7b86919ca8b4bfcbc3b8aca195897e72675b5044382d21160a000000010c17212c363f48505557595959595959595959595959595857514a41382d23180d0200000000000000020d18232d37414a515658595959595959595959595959595755504940362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080a0b111111111111111111111111110c0b09070300000000000000000000000000000000000000000000000000000000000000000004080b0d0d11111111111111111111111111090907040000000000000000000000000000000000000000000000000000000000000000000000071019222930363b3e3f404040404040404040404040404033302c261f170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000009121b232a2f3436374040404046525e6975808c98a3afbac6c7bbafa4988d81756a5e534738404040404040403535322d28211910070000000006111d2934404b57636e7985909ca7b3b7b7b7b7b3a89c90857b6f685f58514c4a4547474b51586069737e8a97a1abb6c1ccc4bab0a794897d72665a4f43382c2115090000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e140900000000000000000009131d27313941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111416161d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d1d1514120f0b060000000000000000000000000000000000000000000000000000000000000000020d172029323a4045494a4b4b4b4b4b4b4b4b4b4b4b4b4b4b3f3b362f271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000020b121a2025292b2c3434343b46525e6975808c97a3afbac6c7bcb0a5998d82766b5b52483d353738353a3e40403e3a352e261e150b0100000005101c27333e49545e6877828e99a5b0bcc6c2c0b5aa9f968d81796e68615a57554f5351575a61686f7a84909ba8b1bac5ccc1b5aba097877c7065594d42362b1f130800000000020c161f272f363b3f404242424242424242424242424241403d38312921180e04000000000000000000040e17202931373d404142424242424242424242424242403f3c3630281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11171c1f2122292929292929292929292929292322201c18120c04000000000000000000000000000000000000000000000000000000060d14191e2224242929292929292929292929292920201d1a16100a0200000000000000000000000000000000000000000000000000000000000007121c26303a424a50545657575757575757575757575757574a463f382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000020910151a1d1f2029292f3a46525d6974808b97a3aebac5c9beb2a79b8f84786b61574b454343434445494b4b49453e372e251b1107000000030e19242f3a454e5768747f8b96a3acb6c1ccc3b9afa69b928c80796f6b65635f585f5a61646a6f79818d949ea8b8c1cacbbfb4a89c91857a6f63574c4035291d12060000000000050e171f262c303334363636363636363636363636363535322d2821191007000000000000000000000007101920272d323435363636363636363636363636363534312c261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b21262a2d2d343434343434343434343434342e2e2b27221c150d0400000000000000000000000000000000000000000000000000060e161d23292d2f30343434343434343434343434342c2b2925201a130b0200000000000000000000000000000000000000000000000000000000000b16212c36404a535a5f6163636363636363636363636363625550483f362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000060b0f1214141d222e3a45515c68747f8b96a2aeb9c9cabfb4a89e94877b70645c554f4f4e4f504f545757544f473e352b20160b000000000b16202b35414d5964707c87939ca7b2bdc9c9bfb6aba29b918c827b75716e686b6a6b6b6f747b828d929ba5aeb8c9d1c8bdb1a69a8f83776960554a3f34281d1106000000000000060e161c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181008000000000000000000000000000810171d2327292a2a2a2a2a2a2a2a2a2a2a2a2a2a292826221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c242b31353839404040404040404040404040403a3936322c251d150c020000000000000000000000000000000000000000000000040d161e262d33383b3c404040404040404040404040403737342f2a231b130a00000000000000000000000000000000000000000000000000000000020e1924303b45505a636a6d6e6e6e6e6e6e6e6e6e6e6e6e6e6d605950463b30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000407080a15212d38444f5b67727e8995a6afb9c4cdc2b7ada4978c80746c635f585a5a5a5b585f63635f584f453a30251a0e0300000006111e2935404c57626b77838e9aa4adb8c1cac7bbb2aaa19b928e86817c7a77767677787b80858e929ba2abb5bec7ccc1b6aca3978b8074695950463b31261a0f0400000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e07000000000000000000000000000000070e13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1b17120c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d353b4044454b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c120800000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a332c231a100600000000000000000000000000000000000000000000000000000004101b27323e49545f6a74787a7a7a7a7a7a7a7a7a7a7a7a7a776960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000008141f2b36424e5965707c88969faab5c0ccc7beb3a89c91867d736e69676665666768686e6e685f54493e33281c110500000005111c27323d48525b66727e89939da8b1bac5d0c3bab2aaa39c96918c88858382818284878b90959ca2abb2bbc5cec7bfb2a79c93877c7065594d42362c22170c01000000000000000002070c0f1112131313131313131313131313131312100d0904000000000000000000000000000000000004090d1012121313131313131313131313131312110f0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212b353d454b4f505757575757575757575757575751504c463e352c22180d03000000000000000000000000000000000000000000040f19232d373f474d5153575757575757575757575757574f4d49433c332a20160b00000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884858585858585858585858585857a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000006121d2934404c57636e7a85919ca8b3bfc8ccc0b5aaa09690857e79757372717272737679786e63574b4034291d1106000000030e19232e38424b57636e78838f97a1abb6bcc5cbc2bab3aca7a09c9896908e8e8d8e8f94979c9ea5abb3bbc3cbc9bfb6aba29a8e83776c62574c4135261c120800000000000000000000000104060608080808080808080808080808070705020000000000000000000000000000000000000000000205060708080808080808080808080808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313b454e555a5c636363636363636363636363635d5b564e463c32271c120700000000000000000000000000000000000000000008131e29333d4750575c5e636363636363636363636363635a58544c433a2f251a0f04000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909191919191919191919191867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000005111c28333f4a555f6977828e99a6afb9c3cec4bab0a79f96908a84817e7d7d7d7e7f82857b6f64584d41352a1e13070000000009141e27333e49545e68717d87919ca3acb4bdc5cfc4bcb7b0aaa8a69f9c9a9999999b9da4a7a9aeb6bcc3cbcec3b9afa69c92897d72665b52483e3328160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e6e66635d54493f34291d1207000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909b9c9c9c9c9c9c9c9c9c91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000030f1a25303b454f5867737e8a959fa9b4bec9cac0b7afa69f9c94908c8a8988898a8b8d877b6f64584d41352a1e130700000000030e19242f3a454e57636d75808c939ca4adb4bcc5cac7c0bab5b3afaaa8a6a5a4a5a7a8adb3b4b8bfc6cccac4bab5aa9f968e82776d63594b42392e241906000000000000000000000000030507080d0d0d0d0d0d0d0a090705010000000000000000000000000000000000000000000000000000000406080911111111111111111111111111111111111111111111111111111111111111111111111111111111080706030000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b0000000000000000000000000000000000000000010d18242f3b46515c6770767a7a7a7a7a7a7a7a7a7a7a7a7a716d63584d42372b201409000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7a8a8a8a8a8a8a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000b16212b35404c58636f7a85909ca5aeb8c1cac8bfb6afaaa59e9b9896949494959692877b6f64584d41352a1e130700000000000b16202b353e47535c636e79828e949da4acb6bac1c8c9c4c0bfb9b5b3b1b0b0b1b2b3b7bdc0c3c8cec8c0bab5a9a09c90857c70645d544a3b32291f140a00000000000000000000050a0e11131318181818181818151513100c06000000000000000000000000000000000000000000000000050b0f1213141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f858585858585858585858585858074685d51463a2e23170c0000000000000000000000000000000000000000020d1924303c47535e6a7681858585858585858585858585857d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2b4b4b4b4b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000007121d28343f4b56606a74808b949ea8b1bac4cac7bfb9b5aea9a7a4a1a09fa0a19e92877b6f64584d41352a1e1307000000000006111b252e36434a555f696f7b838f939ca2abb0b8bdc2c8ccc9c3c0bfbdbcbbbcbebfc2c7cbcdc8c3bdb8b0aba09990897e726b62574c443a2a22180f05000000000000000001080f14191c1e1f2424242424242421201e1b16100a03000000000000000000000000000000000000000002090f151a1d1f20292929292929292929292929292929292929292929292929292929292929292929292929292929291f1e1c19140f080100000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a91919191919191919191918b8074685d51463a2e23170c0000000000000000000000000000000000000000020d1924303c47535e6a76818d9191919191919191919191897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2bebfbfbfb4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000040f1b26313c465059636f7a849097a1abb5bac0c8c9c3beb8b4b3afadacababa99e92877b6f64584d41352a1e13070000000000010b141e26303b454f58616a6f7b838e929ca0a7adb4b8bec1c6c9cbcac8c7c7c8c9cacbc9c7c2bfb9b4ada7a09c908b7f746e645b52483c332a1a11080000000000000000010911181e24272a2a2f2f2f2f2f2f2f2c2c2925201a130b03000000000000000000000000000000000000020a12191f24282b2b343434343434343434343434343434343434343434343434343434343434343434343434343434342b2a27241f18110901000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c0000000000000000000000000000000000000000020d1924303c47535e6a76818d989c9c9c9c9c9c9c9c9c94897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000010c17222c37404a56606a717d87919ca1abb0b8bdc2c8c8c2bfbebbb8b7b7b5a99e92877b6f64584d41352a1e1307000000000000040d16212c363f48515a616a6f7a828b91979da4a9aeb2b6bbbebfc1c5cac3cac5c1bfbebcb7b3afa9a49d97918a80746f655d544a42382c231a0901000000000000000008111a21282e3235363b3b3b3b3b3b3b383734302a231c130800000000000000000000000000000000000009121b22292f333637404040404040404040404040404040404040404040404040404040404040404040404040404040403635332e29221a1108000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c0000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4a8a8a8a8a8a8a8a094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000008121d26313c465059636d747f8b909ca0a7adb4b8bec0c3c8c5c6c4c3c1b5a99e92877b6f64584d41352a1e13070000000000000007121c262f384149515a616a6f7980878f939b9ea5a7acb0b2b4b6bab7b7b7bab6b4b2b0ada8a69f9c948f867f746f665f564d443a31281b130a0000000000000000050f18212a32383d40424747474747474744423f3a342c2319100700000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413e38322a22180f050000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb4b4b4b4b4aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000020d1924303c47535e6a76818d98a4b0b4b4b4b4b4aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000000030d17222c364049545d656f74808a91979da4a9aeb3b4b9b9babababab9b5a99e92877b6f64584d41352a1e130700000000000000020c151f273039414a515a61686e747d838a90959a9ca3a4a7a8abb1abacabb1aba8a7a4a49d9b95908b837d736e665f564e453c342a21180b0200000000000000000a141e28323a42484c4d525252525252524f4e4a443c342921170e040000000000000000000000000000000b151f29333b43494d4e575757575757575757575757575757575757575757575757575757575757575757575757575757574d4c48423b32291f140a0000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9bfbfbfb9aea2978b8074685d51463a2e23170c0000000000000002050607060502000000000000020d1924303c47535e6a76818d98a4b0bbbfbfbfb7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000008121d263038444c565f666f747f868f949b9ea5a7a9afadaeafafaeaeadae9e92877b6f64584d41352a1e13070000000000000000050e1720293139414951585f636c71797f848a8e9396989b9ca1a8a0a0a0a8a19c9b9996948f8a857f7a716c655e564f463e352c231911080000000000000000030e19242e38424b5257595e5e5e5e5e5e5e5b59544d443a31281e13090000000000000000000000000000040f1a242f39434c53585a636363636363636363636363636363636363636363636363636363636363636363636363636363635957524b42382e24190e0300000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cbc5b9aea2978b8074685d51463a2e23170c000000000004090d10121212100d090400000000020d1924303c47535e6a76818d98a4b0bbc7cbc3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000030d161f28333c454e565f666f737d838a9094999c9fa6a2a3a3a3a3a2a1a59e92877b6f64584d41352a1e13070000000000000000000610182029313940474f545c63686e737a7e83878a8d8f9197949494949497918f8d8b87837f7a746f69635c554e463e352d251c130900000000000000000005111c27323d48525b62646969696969696966645d544a41382d23170f060000000000000000000000000006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e65625b52483e33271c110600000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00000000070e13181b1d1e1d1b18130e07000000020d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000000060f18232c353e464f565e656c71797f84898d90959596979797979695949590877b6f64584d41352a1e130700000000000000000000081019202830373f454a53585f63696e72777b7f818486878888898888878684827f7c78736f6a636059534c453d352e251d150b0300000000000000000007131e2a35404c57626c7075757575757575726e645a51473d32281f160c0300000000000000000000000008131f2b36414d58636d717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c62574c41352a1e130700000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0000010810171d2327292a2927231d1710080000020d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000000007131b252d363e464e555c63696e73797e818587898b8b8c8c8b8b8a888784817a6f63584c4035291e1206000000000000000000000008101820272e353b43484f55586063676b6f7376787a7b7c7d7d7d7c7b7a787673706c6863605a555048433b342d251d150d040000000000000000000008131f2a36424d5964707c808181818181817e726b61564b443830261c12080000000000000000000000000914202b37424e5a65717d858585858585858585858585858585858585858585858585858585858585858585858585858585857c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c00010a121920272d32343534322d272019110900020d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000000000000020b151d252e363d454c53585f63696e7276797c7e7f808080807f7e7d7b79766f6a60564b3f34281d11060000000000000000000000000810161e252b30373f454a5055575a6164676a696e707171727171706e696a6864625b5856514a464038332b241c150d04000000000000000000000006121d2934404c57636e7a848c8c8c8c8c8c857b6f645d544940362c22160d0400000000000000000000000914202b37424e5a65717c889191919191919191919191919191919191919191919191919191919191919191919191919191877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0007121a222931373d4041403d37312921191106000d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000040d151d252d353b43484f55585f6366686e707273747575747473716f6b6a63605950463c31261b0f0400000000000000000000000000060e151b21272f353b3f464a4c5157585c586063646566666665646360585c5957524c4b47403b362f28221a140c0400000000000000000000000005111c28333e4a555f68737e8a94989898958d81766d635950463c31261e150b01000000000000000000000914202b37424e5a65717c88949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c060f18222b323941474b4c4b474139312921160e050d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000050d151d242b33383f454a4f5557585f636466686969696968676664615a5856504940372c22170c010000000000000000000000000000050b11161e252b30363b3f41474b4d50505557595a5a5a5a5a59575550514d4c48423f3c37312c261f17120a0400000000000000000000000000030f1a25303b454f58636e7a84909ba5a69b92897d726960554a42372e251b1107000000000000000000000914202b37424e5a65717c88949fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23170c0d162028323b434a51565856514a413a31271e150c0d1924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000000000000000000050c141a22272f363b3f454a4c4f5457595b5c5d5d5d5d5c5b5a5856514c4b46403830261d12080000000000000000000000000000000001070e151b21262c3033383d404145464a4c4d4e4f4f4e4e4d4c4a464542413d3834312d27211c160f07020000000000000000000000000000000b16212b353f4a556069737f8a959ea9a29b8f847a6f635b52473e352b20160e040000000000000000000914202b37424e5a65717c88949fabb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231708121d263038434b535a6164615a524a41372f251b11071924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000040a12171f262c30353b3f4045494b4d4f515152525151504f4d4b47413f3c37302820160d03000000000000000000000000000000000000050c11161c2125282d323535363b3f4041424343434241403f3b363635322e2926221d17120c06000000000000000000000000000000000007111b25303b465058636f7a84909ca6a89e948c80746c62584f453a30271d13090000000000000000000914202b37424e5a65717c88949fabb6bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb6aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23171119222c374049535c636a6f6a615b52483f352b2118101924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000000000000000000000002060e151c21252b3033353a3e404244454646464645444341403d3834312c2620180f06000000000000000000000000000000000000000002070c12171a1e2327292a2c303334363737383737363433302c2a2a27241e1b17130d0802000000000000000000000000000000000000020c17212c363f4a556069747f8b959fa9a49c91867c70685f544941372d23170f0600000000000000000914202b37424e5a65717c88949fabb6b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231717212a313c465059636c717b706b61584f453b302920171924303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000000000050c12161c2125282b3033343638393a3b3b3a3a39373535322d2826221d160f07000000000000000000000000000000000000000000000002070c0f14181c1e1e212528292a2b2c2c2c2b2a292825211f1e1c1914100d080300000000000000000000000000000000000000000007121c26313b465059636f7a85909ca6aaa0978e82796e635a51473d32281f160c02000000000000000914202b37424e5a65717c88949fabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23151f27323a424b56606a717d847b70685f554a433930271d1324303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000000000000000000000000000000000000000002070c12161a1c202528292b2c2e2f2f2f2f2e2d2c2a2927231e1b17120d0600000000000000000000000000000000000000000000000000000104090d101212171a1d1d1f20202020201f1d1d1a171213110e0a04010000000000000000000000000000000000000000000000020c17222c36404b56606a74808b969faaa79c938a7f736a61564b43382f261c1208000000000000000914202b37424e5a65717c88949fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e231c262f38424b555e636f7a838e82796e635c534941372d221a24303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000000000000000000002070b0f11161a1c1d1f2122232423232221201e1e1c18130f0c0803000000000000000000000000000000000000000000000000000000000000020507070c0f11121314151514141312110f0c0707050300000000000000000000000000000000000000000000000000000008121c26313c465059636f7b85909ca7aca39c90857b6f645d544840362c21160d040000000000000914202b37424e5a65717c889495959595959595959595959595959595959595959595959595959595959595959595959593877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e23212c363f48525b646e76818d938b80746d635a51473c312a2224303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000000000000000000000000003070b0e1111131517171818181716151312100d09040100000000000000000000000000000000000000000000000000000000000000000000000001040606080909090908070606040100000000000000000000000000000000000000000000000000000000000000020c17222c37404b56616a75808c96a0aaa99f958d81766d635950463b31261e140b0100000000000914202b37424e5a65717d888989898989898989898989898989898989898989898989898989898989898989898989898989877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2029303b454f58626b727e8a919c91877d716a61564b453b32281f303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000000000000000000000000000000000000000000000000000030506080a0b0c0c0c0c0b0a0907070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d27313c47515a646f7b86919ca7afa69b91887d716960554a42362e251b1106000000000007121e2935414c58636f7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6f63584c4035291e120600000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e263139414a555f69707c85909ca09790847b6f635e554b42383026303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000005101c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18222d37414b56616b75818c97a0ababa29b8f837a6f635b52473e352b20160d030000000006121d2934404b56616a6f727272727272727272727272727272727272727272727272727272727272727272727272727272726f6a60564b3f34281d110600000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2e2e37414a545d636e79838f969fa79e948d81766f655c534940362c303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000000000000030b1c27333f4a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000000000020507071011111111110d0d0b060708101111110f0605030000000000000000000000000000000000000000000305060707070707070707070707070707070707070707070707070707070707070707070707070707070707060604010000000000000000000000000000000000000000000000000000000000000000000007111b252f374049515a64707c86919ca8b4a89d948b80746c62574e453a2f271d13080000000004101b26313c47515a61636666666666666666666666666666666666666666666666666666666666666666666666666666666663605950463c31261b0f0400000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a2b353e47515a636d75808c939da6aea59c928a7f736c625950463c31303c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000000009131e2731394a56616d7884909ba7b2becacbc0b4a89d91867a6e63574c4035291f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000000000004090d1012131c1c1c1c1c1c1918161113131c1c1c1c1b11100e0b060100000000000000000000000000000001060b0e1011121212121212121212121212121212121212121212121212121212121212121212121212121212121212110f0c080200000000000000000000000000000000000000000000000000000000000000000b16212b353f48505960686e76818d98a4b0ada49c91867c70685e544941372d22180d03000000020d18222d3741495156585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5856504940372c22170c0100000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a303a454f58616b727e89909aa3acb5aba29c91867c706960554a443a313c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000000000000000000000060f18232d374149545e687884909ba7b2becacbc0b4a89d91867a6e63574c43382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406080914202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000000000080e14181c1e1e2828282828282424211c1e1f27282828261d1c1916110b0400000000000000000000000000040b1116191c1d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1d1a17120c06000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5860696f787f84909ca7b3b5aaa0968e82786e635a51473c31271d13080000000008131d27303941474b4c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c4b46403830261d12080000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463a394049545f686f7b84909ca1aab4bbb5aa9f968f837a6f635d544a42373c47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000000000030d162028323d47515a636e7984909ba7b3becaccc0b5a99d92867b6f635c53483f362c21160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214141b202b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000000000911181e2327292a333333333333302f2d282a2b3333333332292724201b140d050000000000000000000000050d141b202427292929292929292929292929292929292929292929292929292929292929292929292929292929292929292826221c160f07000000000000000000000000000000000000000000000000000000000005111c28333e4a555f686f7a828a90959ea9b4bab0a79c928a7e736a61564b41372d22180d020000000a151f29323b42484c4e555555555555555555555555555555555555555555555555555555555555555555555555555555554d4c48423a31281e14090000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146374049535c636e78828e959ea9b1bac4b9afa79d948c81756e645b52483f3547535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000000000000000000008121d263038404b56616b737e8a959ea9b4bfcbd2c6bbafa3988c81756d635850463b30261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2026262b37424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000000008111921282e3235363f3f3f3f3f3f3c3b383335363e3f3f3f3d34332f2b251e160d04000000000000000000040d161e252b2f333435353535353535353535353535353535353535353535353535353535353535353535353535353535353534312c261f170f0600000000000000000000000000000000000000000000000000000005101c27323d47515a636e79828e929c9ea5aeb8c0b7aca39c90857b6f635a51473c31261b10040000030e19242f39424b535859616161616161616161616161616161616161616161616161616161616161616161616161616161615957524b42382e23190e0300000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51463c465059636c747f8b929ca5aeb8c2c9c0b7ada49b91897e726b62584f453b47535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000000050e17222c374049545d646f7b85909ca5aeb8c3ced6cbbfb4a89c91877d716960554a42372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f25282b2b32323237424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c100000040e18212931383d40414a4a4a4a4a4a4746433e41424a4a4a4a49403e3a352e261e140b0100000000000000010b141e262e353a3e404141414141414141414141414141414141414141414141414141414141414141414141414141414141403f3b362f281f160c02000000000000000000000000000000000000000000000000000007121e2935404b56616b74808b929ca2a9aeb6bec8bcb4a99e958c80756a61564b4034291d1206000006111d28333e48535c62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64625b52483d32271c110500000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5146424b56606a717d86919ca3acb6bec8d0c7bdb4aaa19c90857c70695f554a4347535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000000000000000020c151f27313c465059646d76818d959fa9b5bec8d2d8ccc1b6aba1978f83796e635b52473e352b20160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f3336373d3d3d3d424e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c10000009141e28313a41484b4d56565656565653514d484c4d56565656554b49453e362e251b11060000000000000006111b252e363e45494b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a4640382f261c1208000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b85919ca3acb4b8bec6cec3b8aea59c91857b6f63584c4135291e1207000008131f2a36414c58626c7078787878787878787878787878787878787878787878787878787878787878787878787878787878706b62574c4035291e120700000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51464b555e636f7a848f97a0aab3bcc6cfd8cdc5bbb4a99f958e82796e635d534947535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000000007121c262f383f4b56606a727e89929ba6afb9c6cfd8dbd0c5bab1a89d948b80746c62584f453a30281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e424349494949494e5a65717c88949fabb6beb3a79b9084796d61564a3f33281c1000020d18232e38414a5257586262626262625e5c57525759616262626057544e473e352b20160b000000000000000b16202b353e474e545758585858585858585858585858585858585858585858585858585858585858585858585858585858585755504840362c22170c01000000000000000000000000000000000000000000000000000c17232e3a45515d68747f8b969faab3bcc3c8cfd2c8bfb5aa9f968a7f73685c5045352b21160b000008141f2b36424e5965707c838484848484848484848484848484848484848484848484848484848484848484848484848484837c7064594d41362a1f130700000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5148525b656e76818d949ea7b0bac3ccd6ded5cec3b9afa69c938b80746d635a5147535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000000040d16212c363f48535c636f7a84909ba2abb6bfc8d6dfdfd4cac1b8ada49c91867c70685f544941382e2318100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333b43494d4e5555555555555a65717c88949fabb6beb3a79b9084796d61564a3f33281c100005101c27323d48525b61646d6d6d6d6d6d6a67605b62656d6d6d6d6c635e574e453a2f24190e030000000000030e19242f3a454e575e63636363636363636363636363636363636363636363636363636363636363636363636363636363636363605950463b31261a0f04000000000000000000000000000000000000000000000000040f1a26313b4650596c77838e9aa6afb9c3ced2d8d8cfc4b9afa7998e82776b584f453b30251a0f03000914202b37424e5a65717c888f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d515059626c737f8a919ba4adb7c0cad4d7d6d7d3c8bfb6aca39c91877d716a61574e535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000000000010b141e26303b454f58636c75808c949ea9b2bbc6cfd8e1e0dad1c9bdb5aaa0968e82786e635a51473d322820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a6060606060606065717c88949fabb6beb3a79b9084796d61564a3f33281c100007121e2935404b57616b70797979797979767067626c7078797979776e685e54493e33271f150b000000000005101c27333e49545e686e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6960554a3f34281d110600000000000000000000000000000000000000000000000006111d28343f4a5560697985909ca8b3bfc9d6dde2ded3c9beb3a79c908479695f554a3f33281c1105000914202b37424e5a65717c88949b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d51556069707c85909ca2abb5bec8d0cecbcacbcecfc7bcb6aba19790847b6f685e54535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000000006111b252e363e4a555f69717d87919ca5aeb8c3cbd7d6d5d5d5d9cfc4bab0a79c938a7f736b61574b443930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656c6c6c6c6c6c6c6c717c88949fabb6beb3a79b9084796d61564a3f33281c100007131e2a36414d5864707b84848484848481766b6a707c8484848482786e63574b43392f241a0f050000000006111d2934404b57636e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6f63574c4035291d120600000000000000000000000000000000000000000000000006121d2935404c57636f7a86969faab5c0cbd7e2ece2d6cbc0b4a99f95867a6e63574c4034291d1206000914202b37424e5a65717c88949fa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d545d636e79838f969faab2bbc5cec9c3c0bfc0c3c9d0c5bab1a89e958e82786e635c535e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000000000000b16202b353e47525b636e79838f97a1abb5bec7d2cdcacac9cacdd1cac0b7aca39c90857b6f645d544940372d22170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d717777777777777777777d88949fabb6beb3a79b9084796d61564a3f33281c100007121e2935404b57616b76828d90909090867c706f7b848f909090897d72665c53493e33281f140a0000000007121e2935404c58636f7a86868686868686868686868686868686868686868686868686868686868686868686868686868686868074685d51463a2e23170c00000000000000000000000000000000000000000000000006121d2934404b57636e7a85919ca8b4bfcbd6e1e9e1d6cbbfb3a89c91857a6e63574b4034291d1106000914202b37424e5a65717c88949fabb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685d5a646d75808c939da6afb9c3cbc7bfb9b5b3b5b9bfc7cac1b8aea59c928a7f736c62595e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000000000070f19242f3a454e57626c74808b939da8b1bac5cec7c2bfbebdbfc2c7cdc8bcb5aa9f968d82766e645a51473c31281f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d838383838383838383838f9ba6b2bdbeb3a79b9084796d61564a3f33281c100005101c27323d48525b65717d88929c9c978c807579828e949c9c9a8e82776d63584d42382e24190e0400000007121e2935404c58636f7a869292929292929292929292929292929292929292929292929292929292929292929292929292928b8074685d51463a2e23170c00000000000000000000000000000000000000000000000005111c28333e4a545f687984909ba7b3bdc8d0d9ddd9d0c8beb2a79b908478685e54493e33271c1005000914202b37424e5a65717c88949fabb6bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb6aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746858616b727e89919aa4adb7bfc9c5bdb6afa9a7a9afb6bec6c9beb5aba29c91867c7069605e6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000000060f18232c333e49545e68707c86919ca4adb8c1cac5beb8b4b2b2b3b7bdc5cec3b9afa69c92897e726a61564b43382f261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d898f8f8f8f8f8f8f8f8f949da8b3bfbeb3a79b9084796d61564a3f33281c1000020d18232e38414d58636c77828e9aa49c90857b818d939ca4a79c93887d71655b52483d33281e130900000007121e2935404c58636f7a86929d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000030f1a25303b454f586a76828d99a4adb7c0c8ced2cec9c0b7ada4998d81766a574e453a2f24190e03000914202b37424e5a65717c88949fabb6babababababababababababababababababababababababababababababab6aa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074685f686f7b85909ca1aab4bdc7c7bdb4ada69f9c9fa6aeb5bec9c6bbb5aaa0968f837a6f635d6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000000000030d172028323d47515a636e78828e96a0aab4bdc9c7beb5aea8a7a6a8adb4bdc7c9bfb6aba29b90847a6f635c534840362c21160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d89959a9a9a9a9a9a9a9b9da4adb7c2beb3a79b9084796d61564a3f33281c10000009141e28333e49535c66727d89939d9f968f838d919ba3a6a7a3998d82766c62574c41382d23180d03000007121e2935404c58636f7a86929da9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a2978b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000b16212b35444f5b67727e89949da7b0b8bfc3c8c3bfb8b0a79d93897e72675b4f44352b20160b00000914202b37424e5a65717c88949fabafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaa9e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807468636e79828e959ea9b1bac4c9c0b7ada49d9590959ea5aeb8c1cac4bab0a79d948d81756e646a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000000008131d273039404b56616b737f8a939ca7b0bac5cdc2b8aea59e9b9b9da4adb7c2cdc7bbb4a99e958d81756d635950463b31271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a6a6a6a6a6a6a6a8adb4bdc7beb3a79b9084796d61564a3f33281c100000040e19242f39434b57636e79838f9ba59d938f939b9b999a9da39c91867c70645a51473d32271d1308000007121e2935404c58636f7a86929da9b4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000007111d2934404b57636e79838f96a0a7afb4b8b8b9b4afa8a0968f83796e63574b4034291d110600000914202b37424e5a65717c88949fa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39e93877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b8074686d74808b929ca5aeb8c2cfc4b9afa69d938f8590959ea8b1bac5c9c0b7ada49b91897e726b6a76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000000050e17222d374049545d646f7b85909ca3acb7c0c9c7bfb4a89e94908f949da8b3bbc6cec3b8aea59b91887d716960554a42372e251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb1b1b1b1b1b2b3b7bdbdbdbdb3a79b9084796d61564a3f33281c100000000a151f27333e49545e68727e8a949ea49d9b9d9b918d8f939da1978d81756b61564b40372d22170c010007121e2935404c58636f7a86929da9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea2978b8074685d51463a2e23170c0000000000000000000000000000000000000000000000000005111c28333e4a545f68717d8691979fa6a9aeadafa9a69f9791867d71685f544a3e33281c110100000914202b37424e5a65717c889498989898989898989898989898989898989898989898989898989898989898989898989893877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746a717d86919ca3acb6bfc8c5beb5aa9f968f837b849097a1abb6bcc7c7bdb4aba19c90857c706976818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000000020c161f27313c465059646e76818d959fa9b3bcc7c9bfb7aba29b9084838f9ba1abb6bfc8c8beb5aaa19b8f837a6f635c53473f352b21160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0acb1b1b1b1b1b1b1b1b1b1b1b1b1a79b9084796d61564a3f33281c10000000030e19242f3a454e57636e7984909ba6a8a59d938d81838f9aa49c91867b6f645950463c31261b10040007121e2935404c58636f7a86929da8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a2978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000030f1a25303b454f58636d737e8790959c9ea5a1a69f9c9690877f736d63584f453b30251a0f0300000914202b37424e5a65717d888c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877c7065594d42362b1f130800000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80746f7a849097a0abb3bcc6c8beb5aba29c91867c717d87919ca3acb6bfc9c5bbb5a99f958f83796e76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000000007121c262f383f4b56606a727e89929ba6afb9c4cec4b9afa69b92897e7d88919ba5aeb8c3cec6bbb3a89d948c80746c62584f453b30281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d8995a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b9084796d61564a3f33281c10000000000b16202b353e4a555f69737f8b959fa79e958f837a7e89949da0968c80746a60564b3f34291d12060007121e2935404c58636f7a86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978b8074685d51463a2e23170c00000000000000000000000000000000000000000000000000000b16212b353f47535c646e737e858c909595969595908c857e736e655c53473f352b21160b00000007131f2a36414d5864707c808080808080808080808080808080808080808080808080808080808080808080808080808080807b6f64584c41352a1e130700000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807476818d949ea7b0bac4cac0b8aea59b928a7f736d74808c939da6afb9c3cec3b9afa69d938c807476818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000000040d16212c363f48535c636f7a84909ba2abb6bfc8c9c1b5aa9f968d827675818d959ea9b4bcc8cdc2b7ada49c91867c70685f544a42382e231810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727d89959a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9084796d61564a3f33281c100000000006111b25303b454f58636f7a859097979690847b6f79848f97979790857a6f63584c4035291e12070007121e2935404c58636f7a869191919191919191919191919191919191919191919191919191919191919191919191919191918b8074685d51463a2e23170c000000000000000000000000000000000000000000000000000007111b252e37434c555e646d727b808488898a898885807b726d655e554c43372e251b110700000007121e2935404c57626b70757575757575757575757575757575757575757575757575757575757575757575757575757575756f6b61564b4034291d120600000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b80747f8a929ba5aeb8c0cac4bab0a79e948d81766e636e79838f959fa9b5bbc5c9bfb6aca39c91877d76818d98a4b0bbc7cec3b7aba094897d71665a4f43372c20150900000000000000000000000000010b151e26303b465058636d75818c949ea9b2bbc7cac1b8ada49c90857b706f7b85909ca3acb7c0cac7bdb5aaa0978f83796e635b52483d322920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38434f5b66727e898f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84796d61564a3f33281c1000000000010b16212b353f4a56606a74808b8b8b8b867d716b737f8a8b8b8b8b8b7f74685c51453a2e22170b0007121e2935404c58636f7a85858585858585858585858585858585858585858585858585858585858585858585858585858585858074685d51463a2e23170c0000000000000000000000000000000000000000000000000000010b151e27333b444d555d646a6f75797c7e7e7e7c79756f6a645d554d453b33271e150b0100000005101c27323d48525b62646969696969696969696969696969696969696969696969696969696969696969696969696969696964615a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c5b9aea2978b807c86919ca2abb5bec8c6bfb5aba09790847a6f635f69707c85909ca1abb4bdc7c7bcb6aba19790847b818d98a4b0bbc7cec3b7aba094897d71665a4f43372c2015090000000000000000000000000007111b252e373e4a556069717d87919ca5aeb8c3d0c5bab1a89d938b7f746b6a737e8a929ca7b0bac4cfc4bab0a79d938b7f736b62574c443930271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d838383838383838383838383838383838383838382766b5f54483d31251a0e000000000007121c25313c465059646f7b808080807d716c636f7a7f80808080807f73675c5045392d22160b0006121d29343f4b56606a777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a746f665b5044392e22170b000000000000000000000000000000000000000000000000000000050e16222b343d444c545a6163686e71727372716e6864615a544d453d342b22160e0500000000020d18232e38424a5257585e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5856514a41372d23180d0200000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c6baaea3978c80838f969faab2bbc5c8bfb6aca39c91867d716a6158626b727e89919ba4adb7c0c9c5bab1a89e958e82818d98a4b0bbc7cec3b7aba094897d71665a4f43372c201509000000000000000000000000000b16202b353e47525b636e79838f97a1abb5bec8ccc1b6aba1978f83796e63636e78828e96a0aab5bdc7cac0b7aca39c90857c70645e544941372d22170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d58636d7177777777777777777777777777777777777777777671685d52473c3025190e0000000000020c17222c36404b56616a6f74747474716d6360696f747474747474736e655a4f43382d21160a0004101b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e68665f564c41362b2015090000000000000000000000000000000000000000000000000000000006121b242d343c44495156585f636566676765635f5856514a443c342d241b120600000000000009141e28313a42484c4d525252525252525252525252525252525252525252525252525252525252525252525252525252524c4b47413931271e13090000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cabfb3a89c90858f939da6afb9c3cec3b8aea59c928b80746d635a525b646e75818d949da7b0bac4cac1b8aea59c928e85909ca8b3bfcacec3b7aba094897d71665a4f43372c201509000000000000000000000000080f1a25303a454f58626c74808b949da8b1bac6cec3b8aea59c91877d71695f5e68707c86919ca4adb7c2cdc8bdb5aa9f968e82776e645a51473c31281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6861584e43392e22170c00000000000008121d26323c47515a61646868686866635d59606368686868686867655e554b40352a1f140800010c17222d37404950566263636363636363636363636363636363636363636363636363636363636363636363636363636363635d5b564e463c32271c120700000000000000000000000000000000000000000000000000000000020a141c242c333941474b4f5457595b5c5b5a57554f4b474139342c241c140a02000000000000040e18212a31383d40414646464646464646464646464646464646464646464646464646464646464646464646464646464641403d37312920170e040000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cbc0b5aa9f9690969da4adb7c0c9c4bdb4a99e958e82796e635c534a545d636f7a838f96a0aab5bbc6c9beb5aca29c9690969faab5c0cbcec3b7aba094897d71665a4f43372c2015090000000000000000000000060f18242c333e49545f68707c86919ca4adb8c1cac8c0b4a99e958c81756c635857626c74808b949da8b3bbc6cec4b9afa69c928a7e726a61564b443830261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f39434c53585a60606060606060606060606060606060606060605f5d5850483e342a1f1409000000000000030d18232d37414a5156585d5d5d5d5a58545055575d5d5d5d5d5d5c5a554e453b31261c1106000008131d27303940464b57575757575757575757575757575757575757575757575757575757575757575757575757575757575751504c463e352c22180d030000000000000000000000000000000000000000000000000000000000030c141b232930373c3f454a4b4e4f504f4e4c4a453f3d373129231b140c03000000000000000008111921282e3235363b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3534322d2720191007000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0cec3b9afa69f9c9fa6adb4bdc7c7bdb4aaa19c90857b6f685f544c444a556069707c86919ca2abb5bec8c6bcb3aca69f9c9fa6afb9c3cecec3b7aba094897d71665a4f43372c20150900000000000000000000030d172028323d47515a636e78828e96a0aab4bdc9cac0b7aca39c90847a6f635c53525b636f7a838f9ba2abb6bfc8c9bfb7aca29c90847b6f635d544940362c22170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333b43494d4e555555555555555555555555555555555555555554524e4840372e241a10050000000000000009131d27313941474b4c515151514f4d49464a4c515151515151504f4b453d342b21170c020000030d17202830373c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4644413c352e251c120800000000000000000000000000000000000000000000000000000000000000030b131820272d31353b3e404244454442403e3b35322d272019130b03000000000000000000000911181e2327292a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2a2927231e17100800000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d3c9bfb6afaaa8aaafb6bdc5c9bfb7ada49a91897e726b61584f453c465059626c737f8a929ca5aeb8c1cac3bcb6afaaa8aaafb6bfc9d3cec3b7aba094897d71665a4f43372c2015090000000000000000000008131d273039404b57616b737f8a939ca7b0bac5cfc4bab0a79c928a7e726a61564c4a556069717d89919ba6afb9c3cec7bcb4a99e958d81766d635950463c31271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b33393e424349494949494949494949494949494949494949494847433e3730271e140a0000000000000000030d17202931373c40414646464643423f3b3f404646464646464543403b342d241b110700000000060f1820272d31344040404040404040404040404040404040404040404040404040404040404040404040404040404040403a3936322c251d150c020000000000000000000000000000000000000000000000000000000000000000020810171d22252b30333437383938373433302b25231d17100803000000000000000000000000080e14181c1e1f242424242424242424242424242424242424242424242424242424242424242424242424242424241e1d1b18130e070000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0d9cfc7bfb9b5b3b5b9bfc7cec4b9afa69d938c80756d645a51473f364049535c636e78828e959ea7b0bac5cfc7bfb9b5b3b5b9bfc7cfd9cec3b7aba094897d71665a4f43372c201509000000000000000000050f17222d374049545d646f7b85909ca3acb7c0caccc0b5aaa0968e82776e645a5147465059636d76818d959fa9b4bcc8cec3b8aea59b91897d716960554a43372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292f3336373d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c39342e271f170e0400000000000000000007101820272d3234353a3a3a3a3737343134353a3a3a3a3a3a393835312b241c140b010000000000070f171d2226293434343434343434343434343434343434343434343434343434343434343434343434343434343434342e2e2b27221c150d040000000000000000000000000000000000000000000000000000000000000000000000070d13181b212528292b2d2d2d2b292825211b18130e0700000000000000000000000000000004090d101213181818181818181818181818181818181818181818181818181818181818181818181818181818181312100d0904000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0e0d7cfc9c3c0bfc0c3c9cec5beb5aa9f968f83796e635d544a413730384249545e686f7b849097a0abb6bcc7cfc9c3c0bfc0c3c9cfd7e0cec3b7aba094897d71665a4f43372c2015090000000000000000020c161f27313c47515a646e76828d969faab3bcc8cdc2b7ada49c91867c70645e5549404048545d646f7b85909ca3acb8c0cac8beb6aba29b8f847a6f635c53483f352b21160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f25282b2b323232323232323232323232323232323232323231302e2a241e170f0600000000000000000000000810171d2326292a2e2e2e2e2c2b292628292e2e2e2e2e2e2d2d2a26211b140c0400000000000000060d13171b1d1e29292929292929292929292929292929292929292929292929292929292929292929292929292929292322201c18120c040000000000000000000000000000000000000000000000000000000000000000000000000003090b11161a1c1d1f212221201d1c1a16110c0904000000000000000000000000000000000000020507070d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d070605020000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbe0d9d3cecbcacbced0c8beb5aba29c90857c706960554d443a31282f3a454e57616a717d87919ca3acb6bfc8d3cecbcacbced3d9e0dacec3b7aba094897d71665a4f43372c201509000000000000000007121c262f383f4b56606a727e89929ca6afb9c4cdc7bfb3a89d948b80746c62574d443938434b56616b737f8a939ca7b0bac4cfc6bbb4a89e948c80756c63584f453b30261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020910151a1d1f2026262626262626262626262626262626262626262525221f1a140e0600000000000000000000000000070d13181b1d1e2323232320201d1a1d1d23232323232322211f1c17110b0400000000000000000003080c1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171715120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f1112141516151412110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbe9e3ddd9d7d6d7d4cac0b7ada49b918a7e736c625950463c3429202b353e47515a636d74808b939ca6afb9c3ced5d7d6d7d9dde3e9dacec3b7aba094897d71665a4f43372c20150900000000000000050e16212c363f48535c636f7a84909ba2abb6bfc9c9bfb6aba29b8f847a6f635b52483d34323d47515a636e79828e97a0abb5bec7cdc2b7ada49c91877d71695f554a42362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1214141b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a191714100a0400000000000000000000000000000003090d101212171717171514120f1112171717171717161614110c07010000000000000000000000000104060711111111111111111111111111111111111111111111111111111111111111111111111111111111110c0b090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080a0b0a0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110b0a080502000000000000000b16222d3945505c67737f8a96a1adb9c4d0dbe7ede8e4e2dfd6cfc4bab0a79e948d81766e655b52483f362c231b252e364149535d636e79828e959fa9b4bbc5cdd8e0e2e4e8ede5dacec3b7aba094897d71665a4f43372c201509000000000000010b151e27303b465059636d75818c959ea9b3bbc7cec3b9afa69b91897d716960554b42382c2d374149545f68707c86919ca5aeb8c2cdc7beb6aba0978f83796e635b52473e352b20160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040608090f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0e0c090500000000000000000000000000000000000000020506070c0c0c0c0909070406060c0c0c0c0c0c0b0a0806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1012121d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161514110c070100000000000b16222d3945505c67737f8a96a1adb9c4d0dbe7f7f3ece2d8cfc6beb5aaa0978f847a6f635e554b42382f261b141e263039434a555f68707b85909ca1aab4bdc7d0d9e3edf3f7e5dacec3b7aba094897d71665a4f43372c20150900000000000007111b252e373f4a556069717d88919ba5aeb8c3ccc8c1b5a99f958d81766d635950463a322827303a454f58626c75808c949ea8b4bbc7cfc5bab0a79d938b7f746b62574e453a2f271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b0906030000000000000000000000000000000000000000000000000000000000000000000003050607070707070605030000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e2929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292922211f1b17110b03000000000b16222d3945505c67737f8a96a1adb9c4d0dbe7f8ede5ddd2c8beb6aca39c91867d716a60564d453a32271f160d162029303b454f58626b727e89919ba4adb7c0c9d3dee6eff9e5dacec3b7aba094897d71665a4f43372c2015090000000000000b16212b353f47525b636e79838f9ba1aab5bec8cac1b8aca39c90857b6f645d544840362a21202b353e47535c636f7a84909ba2abb6bfc9cac1b8ada49c91867c70685e544941372d23180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010508090a0b0b0b0b08070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060606050300000000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000030506060b0e1011121313131212110f0b070706050200000000000000000000000000000000000000000000000000070f171d22262934343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434342d2c2a26211b140c030000000b16222d3945505c67737f8a96a1adb9c4d0dbe7f0e8ddd5cec3b8aea59c928b7f746c635950463d342a21170f051018212b353f48525b646e75818c939da7afb9c4cfd6dee9f2e5dacec3b7aba094897d71665a4f43372c201509000000000008101a25303b454f58626c74808b949da8b2bbc6cfc5bab0a79d938a7f736b61564c44382f261a1b252e37424a556069727e89929ba6afb9c3cec8bdb5aa9f968e82786e635a51473d322820160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131515171717171413110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090b070c0f11121212110f0b070a080705030000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b04000000000000000000000000000000000000000000000001070b0e11111116191c1d1e1e1f1e1e1d1c1a16121212100d090401000000000000000000000000000000000000000000060f1820272d31344040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040393835312b241c140b0100000b16222d3945505c67737f8a96a1adb9c4d0dbe7e9e0d7cdc4bdb4a99e958e82786e635c534940372d241a11070007111b252f37424a545d636f7a838f969faab5bbc5ced9e1eae5dacec3b7aba094897d71665a4f43372c20150900000000071018242c333e4a545f68707c86919ca4adb7c2cbccc1b6aba0978f83796e635a51473c33281f16151e26313c465059646d76818d969faab5bdc8cfc4b9afa69c928a7e736a61564b443830261d120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161b1e2021222222221f1e1c19150f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c0f1112141712171a1d1d1e1d1c1a1611161312110e0a050300000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d040000000000000000000000000000000000000000050a0b11161a1c1d2020242729292a2a2a2a29282521211e1d1b18130f0c0803000000000000000000000000000000000000030d17202830373c3f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b110700000b16222d3945505c67737f8a96a1adb9c4d0dbede3d9cfc7bdb4aaa19c90847b6f685f544c433930271c14090100020c151e27313a444a556069707c86919ca2abb5bec8d1dae4eedacec3b7aba094897d71665a4f43372c201509000000030d172029323d48525b636e79838e97a0aab5bdc7cdc2b8aea59c91867d71685f544a41382c23170f0d16222c364049545d646f7b85909ca4adb8c1cac9c0b7aca39c90857b6f645d544940372c22170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a2026292c2d2e2e2e2e2b2a28241f19110a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0e12171a1d1d20222521252829292928252124211f1e1c1914110e090400000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b020000000000000000000000000000000000050a0f14191b202528292b2b2f333435363636353433302b2d2a2926231d1b17120d08030000000000000000000000000000000008131d27303940464b5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757504f4b453d342b21170c02000b16222d3945505c67737f8a96a1adb9c4d0dbe6ddd3c9bfb6aca39a90897d726b61584f453b332820160c03000000050e16212a313c465059626c737f8a929ba5aeb8c1cad4dfe7dacec3b7aba094897d71665a4f43372c20150900000008131d273039414b57616b737f8a939ca7b0bac5c1c7c0b4a99e958c80756c63584f453a31281b130708121c263038444b57616b737f8b939da7b0bac5c1c7bcb4a99f958d81766d645950463c31271f150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242a30343738393939393635332e29221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b11161a1c212528292b2e302c303334353433302b302d2a2a27231e1c19140e0a0500000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000002080f14191f24252b30333437353a3e404141414141403f3b35383534322d2826221d17130d060000000000000000000000000000010c17222d374049505662636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635c5a554e453b31261b1105000b16222d3945505c67737f8a96a1adb9c4d0dbded5cec3b9afa69d938c80756d635a51473e352b22180f060000000000061119222c364049525b656f76818d949ea7b0bac5cfd7dfdacec3b7aba094897d71665a4f43372c2015090000020d18222d374149545d64707b85909ca3acb7b5b5b5b5b7aca29b90847a6f635c53473f352921170b02030d161f28323d47515a636e79838f97a0abb6b5b5b5b5b9afa69b91897e726a60564b43382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c343a3f43444545454542413e39322a22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161b2025282c303334373a3c363b3f4040403e3b353b393635322e2927231e19150f08030000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d0300000000000000000000000000060c12171f24292e33353a3e40424545494b4c4d4d4d4c4c4a45474441403c3734312c26221d160f080300000000000000000000000004101b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b40352a1f1408000b16222d3945505c67737f8a96a1adb9c4d0e1d8cec5bdb5aa9f968f83796e635d544a41372e251a12070000000000000008121c263038424b555e636f7a849097a0abb6bcc6cfd8d8cec3b7aba094897d71665a4f43372c201509000004101b26313c47515a646e76828e969faaaaaaaaaaaaaaafa79c92897e726a60564b43372e251910070000060f17232e38414a555f68717d86919ca5aeaaaaaaaaaaaaaba29b90847a6f635c53483f362c21160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202a343d444a4e4f515151514e4c48423b32291f150a0000000000000000000000000000000000000000000000000000000000000000000000000002070e151c21252b3033363b3f4043454749464a4c4c4b4a4548474441403d3835322e28241f17130d060000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1106000000000000000000000001070f161c22292e33383e3e45494b4e514e5457585859585857554f52504c4b47413f3c37312c272018120d06000000000000000000000006121d29343f4b56606a777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43382c21150a000b16222d3945505c67737f8a96a1adb9c4cdcdd0c8bdb5aba29c90857c70695f554c443931261e150a0200000000000000030c161f28323b454b56616a717d87919ca3acb6bfc8d2cdcdc3b7aba094897d71665a4f43372c201509000006121d2934404b56616a727e89929ca69e9e9e9e9e9e9e9e9f968e82776e645950463b32271e15080000000009141e28303b454f58636c75808c959e9e9e9e9e9e9e9e9e9e9e948c80756c63584f453b30251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303a444d54595b5c5c5c5c5957534b42392e24190e030000000000000000000000000000000000000000000000000000000000000000000000050c11171e252b30353a3e40464a4c4e5153555055575857544f5452504d4c4842403d38332f29221d170f070200000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000000000000020911171f262c31393e42484c4f54575a5d575e636364646464635f585e5b5856514c4b46403c373028221d160f070000000000000000000007121e2935404c58636f7a858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857f73675c5044392d22160b000b16222d3945505c67737f8a96a1adb9c1c1c1cac0b7ada49b918a7e726b62584f453c332920160d04000000000000000000060f17222a313c47515a636d74808b939ca6afb9c3c1c1c1c1b7aba094897d71665a4f43372c201509000007121e2935414c58636f7b849093939393939393939393939391867c70645d544940372b22160e0500000000040e16212b353f48535c636f7a849093939393939393939393939391877d71695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29343f4a545d64676868686865625c53483e33281c110600000000000000000000000000000000000000000000000000000000000000000000060e151b21272f353b3e45494b5055575a5c5f6058606363635f58605e5b5957524d4c48423e39312d272018120a04000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b000000000000000000020a121921282f363b42484c5257585f6365686b686e6f6f70706f6e696b696764615a5856504b464039312c261f18100800000000000000000007121e2935404c58636f7a8691919191919191919191919191919191919191919191919191919191919191919191919191919191919191918a7e73675c5044392d22160b000b16222d3945505c67737f8a96a1adb5b5b5b5b5bab0a79d948d81766e645b52483f362c23191006000000000000000000000007111a222d374149535c636e79828e959fa9b4b5b5b5b5b5b5aba094897d71665a4f43372c20150900020d1924303b47535e6a75818787878787878787878787878787877f746b62574d443930271a120600000000000007111b252f37434b56606a727e878787878787878787878787878787837a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e59646e7273737373706c62574c41352a1e13080401000000000000000000000000000000000000000000000000000000000000000810161e252b30373f454a4f545758606365686a6c6d696e6f6e686d6b6a6764625b5957524c48423c373028221b140c040000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b0000000000000000020a121b222a323840464a52575b6265686e717476787a7b7b7b7b7b7a797775726f6a67636059565049443c36302820181008000000000000000007121e2935404c58636f7a86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaaaa0968f837a6f635e544b42382f261b13080000000000000000000000000108131d273039434a545f68707b85909ca1aaaaaaaaaaaaaaaaa094897d71665a4f43372c201509000008131f2a36424d5964707c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796e635b52483d342820160a01000000000000020c151e27313c465059646e727c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796f63574c4035291d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0b11212d38444f5b67727e7f7f7f7f7c7065594e42362b1f17120f0c07020000000000000000000000000000000000000000000000000000000008101820272f353b43484f55585f6366696e71747677797a7a7a7a7978777573706b6864625b57534b464039332b241d150d0500000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b000000000000000009121b232b333a424850555b62656c7075797c7f8284858687878786858483807e7b77736f6a636059544a4640383129201810060000000000000007121e2935404c58636f7a86929da8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a1968a7e73675c5044392d22160b000b16222d3945505c67737f8a969e9e9e9e9e9e9e9ea29c91867d716a60564d443a32271f150b0200000000000000000000000000030d172029303b454f58616b727e89919aa49e9e9e9e9e9e9e9e94897d71665a4f43372c201509000007131e2a35404c57626b707070707070707070707070707070706e695f554b42382c24180f060000000000000000050e16222c374049545d646b707070707070707070707070707070706f6960554a3f34281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f15191b20313d4954606b77828b8b8b8a7f73675c5045392d26211c1a16120c070200000000000000000000000000000000000000000000000000081019212930373f454a53585f63686e72767a7d7f81838485868685858482817e7c7874706b65625c565049433b352d251d150d05000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b00000000000000061119232b333b434b525960636c70767c8084888b8d8f91969293929791908e8c8986837f7a746f6a645d5650494139312820160e0500000000000006121e2935404c58636f7a8692a6afb9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ada1968a7e73675c5044392d22160b000b16222d3945505c67737f8a93939393939393939393928b7f736c635950463d342a21170e05000000000000000000000000000000071018212b353f47525b646e75808c9393939393939393939393897d71665a4f43372c201509000005111c27323d48525b6264646464646464646464646464646464635f584f453a31281c13070000000000000000000008131d273039444d545b626464646464646464646464646464646463605950463b31261a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a10161a1f24252b2f3d4954606b77838e96968a7f73675c50453934312c2825211c17120c0500000000000000000000000000000000000000000000000710192129313941484f555c63696e73797d8185888b8d8f909197919691908e8c8a8784807c76706c636059534c453d352e251d150c040000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b000000000000040d16212a333b434c535b62696f747c82878c909597999b9c9fa79e9ea19c9b9a9897918e8a85807a726e636059514a413930271e150b01000000000006121d2934404b57636e7a85969faab5c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8ada1968a7e73675c5044392d22160b000b16222d3945505c67737f87878787878787878787878782786e635c534940362c24191106000000000000000000000000000000000007111b252e37414a545d636f7a838787878787878787878787877d71665a4f43372c2015090000030e19232e38424b52575959595959595959595959595959595957554f483f352a21180b0300000000000000000000030d162028343d444b5257595959595959595959595959595959595755504840362c21170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14192025292f33353a3e4954606b77838e9a968a7f73675c5045403f3b3633302c26211c160f06010000000000000000000000000000000000000000060f172029313a414a51585f636d71797e83898d909696999a9c9ca0a79f9c9b9a9895948f8b86817c756f6a635c554e463e362e251c140a0200000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b0000000000010b151e26313a434c535c636b707a80868d92989c9ea5a4a6a8aaafaab1aba8a7a5a8a19c9a95908b847e766f6a615a514940372e251b1107000000000005111c28333e4a545f687985909ca8b3bfcacbcbcbcbcbcbcbcbd3cecbcacacacacacacacacacacacacacacacacacacacacacac4b8ada1968a7e73675c5044392d22160b0007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7a6f685e544b433830261c1309010000000000000000000000000000000000010b151e27313a444a5560696f7a7c7c7c7c7c7c7c7c7c7c7c7c7a6f63574c4035291d12060000000a141e28323a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a453f372f25191108000000000000000000000000060f18242c343a42484c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a4640382f261c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010711181e232a3034393e3e45494b54606b77838e9a968a7f73675c514e4c4a46403f3b36302c261f17110b04000000000000000000000000000000000000020c161f283139414a515a61686e757d838a8f94989c9fa6a4a6a7a8abafaaa8a7a5a3a49d9b97918d87807a716d655e564f463e362d241b120700000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b000000000007111b252e37424a535c636d717c838c91979ba2a7a9aeb0b2b3b5b9b5bab6b4b3b1b1aba8a69f9c959089817a6f6a615a51473f352b21160e0400000000030f1a25303b454f586d78848f9ba7b2bec9d5d6d6d6d6e0d7d0c9c4c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb8ada1968a7e73675c5044392d22160b0006121d29343f4b56606a6f7070707070707070707070706f6960574e453b32281f160c0300000000000000000000000000000000000000050e162129313b465059606a6f7070707070707070707070706f6960554a3f34281d1106000000040e18212a32383d4042424242424242424242424242424242403f3b352f271e1509010000000000000000000000000007131c242a32383d4042424242424242424242424242424242403f3b362f281f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111921282e323a3f43494c4e545759606b77838e9a968a7f73675e5c5a5755504c4a453f3b362f27201b140d05000000000000000000000000000000000008121c262f38414a515a616a6f7980878f939b9da4a8aaafb0b1b3b4b5b9b5b3b2b1afada8a7a09c97918c847d736f665f564f463d342b23180f06000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000b16202b353e47525b636d717d858f939ca0a7abb3b4b8bcbebfc0c4c9c5c1bfbebdbab6b4afa9a59e9b918d837b6f6a61584f453b30281e130900000000000b16212b3548545f6b76828e99a5b0bccad4dfe9e2e3d9d0c7bfb9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3ada1968a7e73675c5044392d22160b0004101b26313c465059606364646464646464646464646463605950473e352b22180f06000000000000000000000000000000000000000000061019212c364048515a606364646464646464646464646463605950463c31261b0f040000000008111921282e3235363636363636363636363636363636363433302b251e170e050000000000000000000000000000030b131921282e3235363636363636363636363636363636363534312c261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b202a32383d444a4d5358575e6365676b77838e9a968a7f736c6a686563605957554f4a463f382f2b251e160e06000000000000000000000000000000071019222c364048515a616b6f7b828c91979da4a8adb3b5b9bbbdbebfc1c4c0bfbebcbbb7b3b0aba8a19c9490867f746f665f564e453c332820160d030000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000030e1a25303a454f58626b717d8590959da4abb0b8bbbfc3c8c9cbcbcac9c9cbcbcacac5c1bfb9b4aea9a29b938f837a6f685f544a41382d23180d03000000000711232f3b46525d6974808c97a7b0bac5cfdae5e8ded3c9bfb7afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a1968a7e73675c5044392d22160b00010c17222d3740495056585959595959595959595959595755504940362e251a1207000000000000000000000000000000000000000000000008121c262f3840495156585959595959595959595959595755504940362c22170c0100000000010911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292825211c150e0600000000000000000000000000000000030911181e23272a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292826211c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161e252b303a42484c54595c6365686e70737577828e9a968a7f78777574716f6967635f58555048433a352e261e160e0500000000000000000000000000040e172129313b465059616b6f7b838e929ca1a8adb3b7bdc0c4c9c9cacbcbcacbcbcac8c7c2c1bab6b1aba59e97918a80746f665e554c433930271d13080000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000005111c28333e49545f68707c8590969fa6adb5bac0c8cbcccac5c1bfbebdbebfc0c4c9ccccc8c3beb8b4aba39d948e82796e635a51473d32261c1208000000000a15212c38444f5b66727e8997a0abb6c1ccd7e3e5d9cec4b9afa69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7e73675c5044392d22160b000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261e140a010000000000000000000000000000000000000000000000020c161f28303940474b4c4d4d4d4d4d4d4d4d4d4d4d4d4c4a46403830261c120800000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16120c0500000000000000000000000000000000000001080e14191c1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1d1a17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e262e353a454b52575d63666c7175797c7e818286909c9c90858483817f7d7a76726e696360595349453e362f271e160d0400000000000000000000000009131e28313a414a5560696f7b838f949ca3abb1b8bdc2c7cbc9c9c9c4c0bfbebfc1c5cacacbcac5c1bab6aea7a09c908b80746e655c534940372c22170f0500000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000040f1a26313b465059636e78828e959ea6afb6bdc4cacec6c1c1bab6b4b2b2b2b3b5b9bfc1c4cacec8c3bbb4aca49c928b7f746b61564b40362c22170c0100000007121e2935414c58636f7b86919ca8b4bfc9d3dee2d7cbc0b5aa9f969090909090909090909090909090909090909090909090909090908a7e73675c5044392d22160b0000030d17202830373c3f40424242424242424242424242403f3c3630281f160d0400000000000000000000000000000000000000000000000000060f17202830373c3f41424242424242424242424242403f3c3630281f160c030000000000000000040a0e11131313131313131313131313131313131312110f0b0702000000000000000000000000000000000000000000040a0e11131313131313131313131313131313131312110f0c080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e262e373e4549555b62646d72777c8184878a8c8e90969f9f96908f8e8d8b8885827e79736e69635d544e473f372f261e140b0100000000000000000000020d18232d38414a555e636f7a838f949da4acb6bac1c9ccc6c1bebdb9bab5b3b3b4b6babbbebfc2c8cac5beb7b0aaa09a908a7f736d635950463c31291f150a00000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000006111d28343f4a556069737f8a939ca5aeb7bfc7cfc9c4bcb6b2b0aba8a7a6a7a8aaafb3b5bac0c8cecdc4bdb4aca39c91867b6f645950463c31261b0f0400000006121d29343f4b56616a77838e9aa6afb9c4cfd8e2d6cabfb3a89c90858585858585858585858585858585858585858585858585858585857e73675b5044392d21160a000000060f1820272d3134353636363636363636363636363534312c261f170f05000000000000000000000000000000000000000000000000000000070f1820272d3134353636363636363636363636363534312c261f170f060000000000000000000000030507080808080808080808080808080808080605030000000000000000000000000000000000000000000000000000030507080808080808080808080808080808080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373e474f545e646b70777d83888c909496989a9c9fa6a69f9c9b9a989696918d89847f7a716d635e574f483f362e251b11060000000000000000000005101b27323d47515a646e76818d939da4adb4bcc5cac7c2bcb6b3b1aeb0aaa8a7a8abb0afb3b4b8bec3c9c8c0bab5a9a19c91867d716a60564b43392f24190f05000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000006121d2935404c57636f7a84909ca3acb6bfc7cfc7bfb9b5aca7a7a09c9b9b9b9c9fa7a8aab0b7bdc5cecdc5bcb5aa9f968c80756960554a3f34281d110600000004101b26313c47515a68737f8a969faab5bfc8d2ddd0c4b9ada1968a7f797979797979797979797979797979797979797979797979797979736e645a4e43382c21150a00000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a292826221c160f070000000000000000000000000000000000000000000000000000000000080f171d222629292a2a2a2a2a2a2a2a2a2a2a2a292826221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019202b353e474f585f636e737c82898f93989b9ea5a4a5a8aaafafaaa8a7a5a4a79f9c9995908b847d746e685f584f473e352b20160f0500000000000000000006121e2934404b56616b727e8a919ba3acb5bdc5d0c5bdb7b3aca7a6a2a7a09c9c9ca0a7a3a7a9aeb5b9bfc7cac4bab5aba09790847a6f635c53493e33291f150a000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000005101c27323d48525b67737f8a959ea9b4bcc6cfc8bfb7afaaa39c9a9791908f8f9196989ca0a7adb5bdc6cecfc4b9afa79c90857a6f63574c4035291e1308000000020d18222d37414c58646f7b85919ca6afb9c3ced5d6cabeb3a79c90857b6f696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67645e554b40352a1f13080000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17120d0600000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1d1d1b17120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e182129303a454f585f686e757e868e929a9da3a7a9aeafb1b3b5b9b9b5b3b2b1afafaaa8a59e9b948f8780786e685f574e453a2f291f150a000000000000000006111c28333e48525b646f7b85909ca2abb4bcc5cac2bbb4ada8a39d9a9793969190919794989b9ea5aaafb6bec5cfc4bab0a79e948d81756c62584c43392f24190c030000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000007121e2935404c57626b77838f9aa5aeb8c4cdcac1b8afa69f9c928e898684838485888d91979da4adb5bec8d2c9c0b5aa9f968a7e72675b5044372d22180d0200000008131d2934404b56616a75808c959fa9b4bbc5cdd6cbc0b4a99f958f827a6f6a615a6262626262626262626262626262626262626262625b5a554d453b31261b100500000000000003080c10121213131313131313131313131312110f0c080300000000000000000000000000000000000000000000000000000000000000000003080d10121213131313131313131313131312110f0c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a4149545f686e78808a91969ca3a7acb3b4b8bbbcbfc0c4c4c0bfbebdbbb9b5b3aea9a49e97918b81796e685e544942392e241910060000000000000007131e2a35414c57626c75818d959fa9b2bbc4cac2bab2aba49d9b938f8b888685848586898c90959c9fa6aeb5bdc5cac0b8aea59c91877c70655c53493e33261c12080000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000007131f2a36414d5864707b87939da7b6bec8cfc5bab0a79f96908a827e7a7978787a7d81868f949da5aeb8c2cdcec4b9afa6998d81766a5a51473c31261b100400000005101b26313c47515a646f7b85909ca2abb4bdc6cfcec3b8aea59d938e827a6f6a635c544e565656565656565656565656565656565656504e4b453d342b21170c0100000000000000000104060708080808080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000104060708080808080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38414a545e636e78818c919c9fa6acb3b6bcbfc2c8c8cacbcecdcac9c9c8c9c4c0beb8b4ada8a19c918d81786e635b52483e332a20150b00000000000005101b26313c47515a65707c86919ca6afb9c3cbc4bab1aaa29b938f89837f7c7a79797a7b7d81848b90969ea5adb4bdc8c8beb6aba1978e82776c62584c40362c22170c0100000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000a16222d3944505b67737e8a95a3acb6c6c6c6c1b6aba09790867e77726f6a6c696e71757c848f959ea9b4bec8d2c9beb2a79b9084786a61564b4034291d1206000000020d18232d37414b56616a727e8a919ba4adb6bfc8d1c8bfb6aca39c928e837b716c635e57514a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a646e75808c919aa1aaafb7bcc1c6cbc8c8c2c8c9c7c2bfbebec0c3c8ccc8c2beb8b1aba29b918b7f736c62574c433a2f251a0d03000000000006121d2934404b56616a75818d97a0abb6bfc8c7bcb3aaa19a918d837d7774706f6a686e6f72757a7f8590949da4adb7c0cac5bab1a89c92887c70655950463c31261b0f0400000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00010d1924303b47525e6a75818c98a4afbababababab4a89c91877e736e666360595f63656c707b84909ba5aeb8c2cdcbbfb4a99e94867b6f63584c4135291e12070000000009131d27323c47515a646e76818d939da6afb8c1c9cfc6bcb4aca39c938f847d736e68615a554b4741393f3f3f3f3f3f3f3f3f3f3f3f393835312b241c140b01000000000000000000000000000000000000000000000000000000000000000000030608081111111111111111111111111111111108070503000000000000000000000000000000000000000000000000000000030608081111111111111111111111111111111108070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b727e8a909aa2aab5b9c0c7ccc5c0bdbcb7bdbebdb7b3b2b3b4b8bfc0c5cdc9c1bab6aba19c91867c70655c53493f34271d1308000000000007121e2a35414c58636f7b85919ca7b0bac7c9bfb6aca39a918c8179726d686563605f636466696f747c848f949da7b0bac4cac1b8aca3988d81756960554a3f34281d110600000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00030e19242f3a454e576c77838e9aa6afafafafafafada4988c81756d645e58565055575c626b727e89959ea9b4bfcbcdc2b8aea593887c7165594e42372b1f140800000000030d18232d37414a545e636f7a838f959fa7b0b8c0c8cdc4bcb3aca39d9490867f786f6b645e56514a443c36303434343434343434342d2c2a26211b140c030000000000000000000000000000000000000000000000000000000000000000050a0e1213141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1313110e0a050000000000000000000000000000000000000000000000050a0e1213141d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c28333e48525b646f7b85909ca1aab2bac4c9c8c3bcb6b2b0abb1b2b5ada8a7a7a9aeb2b5bbc4c9cac5bbb5aaa0968e82776d63584d40372d22170d0100000004101b26313c47515a68737f8a969faab8c1cac3b9afa69c938c80786e69635d5958565457585960636b707b838f96a0aab5bfc8c9bcb3a89c91857a6f63574c4035291d130800000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0005101c27333e49545e687984909ba3a3a3a3a3a3a3a39d94877c70645d554c4b464a4c535b636e7984909ba7b3becad2c7b7aca095897d72665b4f43382c211509000000000009131d273139444a56606a707c859097a0a8b0b8bfc7ccc4bcb4aca59e96918b827b736e64615a544a464038322a2328282828282821211f1b17110b030000000000000000000000000000000000000000000000000000000000000002090f15191d1f20282929292929292929292929292929281f1e1c19140f08010000000000000000000000000000000000000002090f15191d1f20282929292929292929292929292929281f1e1c19140f080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414c57626c76818d959fa9b1bac2cfc6bfb8b4aba7a5a0a5a7aca49d9b9c9fa5a6abb5b9c0c7cfc4bab0a79c92887d71665a51473c31261b100400000006121d29343f4b56616a77828e9aa7afb9c8cbc0b5aa9f968e82796e685f58544e4c4b4a4b4c50555b626b707c86919ca6afb9c3ccc0b5aa9f96897e72665b4f44372d22180d02000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0006111d2934404b57636e798591989898989898989898988f84786b62574d443f3c3f4349545f6876818d98a4b0bbc7cfc3b8aca195897e72675b4f44382d21160a0000000000030d172029313c465059626b717d879197a0a7afb6bec5d0c4bdb5aea7a09c928e857e766f6b645d555049423a342c201b151c1c1c161513100c070100000000000000000000000000000000000000000000000000000000000000020a12191f24282a2b343434343434343434343434343434342a2a27241f181109010000000000000000000000000000000000020a12191f24282a2b343434343434343434343434343434342a2a27241e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b46505965707c87919ba6afb9c2cac6bfb6aea9a29c99949a9ca39d948f9095999ca2aaafb7c0c9cac0b7aca3998d82766a60564b3f34291d120600000007121e2935414c58636f7b86919ca8b4bfc9c5bab1a89c90857b70685f574f4844403f3e4041464a525a626c747f8b959fa9b4c0cbc4b9afa6988d81756a5a51473c31261b1004000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0006121d2935404c57636f7a868c8c8c8c8c8c8c8c8c8c8c8c82776b5b52483c3431333a454f586874808b97a2aebac5cfc4b8ada1958a7e73675c5044392d22160a000000000000071018222c364049525b636d737f8791979fa6adb5bcc5cac5beb7b0aaa39c95908a827b726e636059524b443c302b251e160e060a0a08050100000000000000000000000000000000000000000000000000000000000000000009121a22292f3336374040404040404040404040404040403f3635332e28211a1107000000000000000000000000000000000008121a22292f3336374040404040404040404040404040403f3635322e28211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a55606975818c98a2abb6bfc9c8bfb6aea59f9c928e888e939c9b8f8485888d929c9fa7afb9c4cfc8bcb3a89c91867b6f63584c4135291e12070000000915202c38434f5a66727d8997a0abb5c1ccc1b6aba1978c80756b61584f473f3735343334363b424a535c636f7a85909ca7b3bfc9c9beb2a79b8f84786a61564b4034291d1206000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0006121d2935404c57636f7a808080808080808080808080807e73675b5044382d262b3545505c68737f8a96a2adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000008121d263038424b545d656e737f8690969ea4acb6bac1c9c7c0bab5aca69f9c928d857e766f69625b544d453a352e261e170e06000000000000000000000000000000000000000000000000000000000000000000000000050f19222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42413d38322a21170f06000000000000000000000000000000051018222b33393e41424b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b42403d38322a21180f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636e7a85909ca8b3bbc7cec3b9afa69f959089827d828e9a968a7f797d828991969faab5bcc5ccc1b5aaa097897e72675b4f44382d2111070000000c17232e3a46515d6874808b97a7b0bac4cbbfb4a89c91867c70645b52473f362f292928292c313a424a55606975808c97a6afb9c4cabfb3a89d94867b6f63584c4135291e1207000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0006111d28343f4a5560696f75757575757575757575757575736e645a4e43382c222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000000000030d161f28323a444c555e656e737e858f949ca3abb1b8bec6c9c4bcb6afa9a29c959089817a706c645d5649453e372f271e160d0400000000000000000000000000000000000000000000000000000000000000000000000a151f29333b43494d4e575757575757575757575757575757564d4c48423a32281f160c0200000000000000000000000000040d162029333b43494d4e575757575757575757575757575757564d4c48423a32281e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d89969faab5c0cbcbc0b4a99f9590857e7677838e9a968a7f7371767e86919ca2abb6c0cbc4bab0a7988c8075695e5247352b21160b0000020e1925313c48535f6b76828d99a5b0bccac8bdb1a69a8e83776b62574a41372e261e1d1c1d2129313c46505965707c88969faab5c0cbc2b7ada494887d71665a4e43372c201409000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00040f1a26313b46505960636969696969696969696969696967645e554a40352a222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000000060f18212a333c454d555e646d727c848e929ca1a8aeb5bbc3c9c7bfb9b4aba59e9c918d837c726e655f544f473f372f261e150b01000000000000000000000000000000000000000000000000000000000000000000030e19242f39434c53585a626363636363636363636363636363625957524b42382f261c1208010000000000000000000000010b141e263039434c53585a626363636363636363636363636363625957524b42382e24190e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3b46525d6975808c97a6afb9bfbfbfb7aca39c90857c726d77838e9a968a7f73676e727e89929ca7b2bdc9cabdb1a69a8e83776c584f453b30251a0f0300030f1a25303b454f586c78838f9aa6b2bdc9c6baafa3978c8075695b52483a31271e1612111219222c36404c57636e7a85909ca8b3bfcac7b8ada1958a7e73675b5044392d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00010c17222c3640485055575e5e5e5e5e5e5e5e5e5e5e5e5e5b5a554d443b3126222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000000000000071119232c343d454d555d646c707b828b91979ea5abb5b9bfc7c8c3bbb6aea9a29b938f857e746f635f584f483f372e251b110702000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e64625b524840362c221a1107000000000000000000000006111b252e364149535c63656e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e64625b52483d32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313b4650596b77838e9aa5b1b3b3b3b3b3a89d93897e726c6b77838e9a968a7f7367646e77828e99a5b0bcc8cabeb3a79b908479685f554a3e33281c11050005111c28333e4a555f687985909ca7b3bfcac3b7aca095897e72665b4f44382c21160e050508121c28333e4a555f6877828e9aa5b1bcc8c5baaea2978b8074685d51463a2e23170c000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000008121c262f3840464a4c52525252525252525252525252504e4a443d342b21222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000000000109131b242d343d454d545b626a6f79808790949ba2aaafb6bcc4cac6bfb8b4aba49d9590897f756e685f584f473e352b201b1208000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79706c625950463b312a21170f06000000000000000000051018202b353e47515a636c717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79706c62574c40352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560697984909ca7a8a8a8a8a8a8a69a8f83776e646b77838e9a968a7f73675d66727e8995a0acb8c3cbbfb4a99e95857a6e63574c4034291d12060006121d2934404c57636e7a85959fa9b4c0cbc2b6aa9f93887c7165594e42372b1f14060000030f1a25303b454f586a75818d98a4afbbc7c6bbafa3988c8175695e52473b2f24180d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000020c161f282f363b3f40464646464646464646464646464443403b342c241b222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000000000000000020b141c242d343c444b525a61686e747d848d929c9fa6acb5bac0c8c8c3bbb4ada69f9c908b80786e695f584f453a302b23191007000000000000000000000000000000000000000000000000000000000000000814202b37424e5a65717c868585858585858585858585858585857c706960554a443a32281f160c0200000000000000040d1620292f3a454e57616a717d868585858585858585858585858585857c7064594d42362a1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2935404c57636f7a86959c9c9c9c9c9c9c9c9c968a7f73685d6b77838e9a968a7f73675c64707b87929eaab5c1cdc3b8aea592867a6f63584c4035291e12060006121e2935404c58636f7a8692a6afb9c3cec1b5aa9e92877b7064594d41362a1f13070000000b16212b3546525d6975808c97a3afbac6c7bbafa4988d81756a5e53473b3024190d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000060f171f262c3134353b3b3b3b3b3b3b3b3b3b3b3b3b393835312b241c16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000000000000030c141c242c333b424951585f636d717b818a90969ca3aab0b7bdc5cec5bdb6afa9a099918c81796e685f5449453c332920170e0400000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c747f8b929191919191919191919191968f837a6f635e544b42382f261c1208010000000000010b141e2630394149545e686f7a849097919191919191919191919191897e726c62574c40352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b869191919191919191919191877c7065606b77838e9a968a7f73675c646f7b86929da9b5c0d2c8b5a99d92867b6f63584c41352a1e12070007121e2a35414c58646f7b86929ea9b5c8d3c0b4a99d92867b6f63584c4135291e12070000000711232e3a46515d68747f8b97a2aeb9c5c7bbb0a4998d81766a5f53483c3025190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000070f161c222628292f2f2f2f2f2f2f2f2f2f2f2f2f2d2c2a26211b1416222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000000000000000000030c141b232a323941474f545d636a6f767e858e939ca0a7adb5bbc4cac7bfb9b5a9a19a918d81786e635f564c433931271e130900000000000000000000000000000000000000000000000000000000000006121d28333e49535c636e78828e949e9c9c9c9c9c9c9c9c9c9d938c81756e645b524840362c21191107000000000006111b252e364149535c636e78818d949e9c9c9c9c9c9c9c9c9c9d938c81756e645b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707c868585858585858585858585867a6f63606b77838e9a968a7f73675865707c87939faab6c1ccc1b6aba197867a6f63584c4035291e12060007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000060c12171a1d1d2424242424242424242424242421211f1b17110b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000000000000000000000030b131a222930373f454a545a61636e737c828b91979da4abb5bac0c8c9c3b9b1aaa29b918c80756f655d534a41372d23180f050000000000000000000000000000000000000000000000000000000000030e19242f394349545e686f7b849097a0aba8a8a8a8a8a8ada49b918a7e726c625950463b312a21170f05000000051018202b353e47515a636c737f8b929ca5aea8a8a8a8a8a8aa9f968f837a6f635d544b42382e24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b70797979797979797979797979796f6960606b77838e9a968a7f73675f68737f8a96a1adb9c4cbbfb4a89c91857a6e63574c4034291d12060007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000002080c0f111218181818181818181818181818161513100c070b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000000000000000000020a111820272e353b434951565e646b70797f868f949ba2aab0b7bfc6cec2bab2aba29a918b7f746d635a51473d32291f150a0000000000000000000000000000000000000000000000000000000000000a151f292f3a454e57616a717d86919ca2acb5b4b4b4b4b4aaa19c90857c706960554a443a32271f160c0200040d1620292f3a454e57616a717d86919ca2abb5b4b4b4b4b4aba19c90857c706960554d443a32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525b62646e6e6e6e6e6e6e6e6e6e6e6e6e636059606b77838e9a968a7f7367636e79838f9ba6b2bdc9cabeb3a79c908479685f554a3e33281c11050007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000010406060d0d0d0d0d0d0d0d0d0d0d0d0d0a0a080501000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000000000000000000000000010810161e252b303941474b555b62686e747d838d919ca0a7aeb6bec5cac3bbb2aaa19c91877d716b61564b43392f24190e040000000000000000000000000000000000000000000000000000000000050f16202b353e47515a636d747f8b929ca5aeb8c1cac5bbb5aa9f968f837a6f635d544b42382f261c1207010b141e2630394149545e686f7b849097a0aab3bbc5c9bfb7ada49b918a7e726c625950463d342a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e38424a52575862626262626262626262626262575550606b77838e9a968a7f73676d737f8b939da8b3becac8bdb1a69a8e83776c584f453b30251a0f030007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000010101010101010101010101010000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000000000000000000000000000060e151b212930373c454a52585f636c717a818a91979fa5aeb5bec5cbc2bab6aba09790847b6f645c53493e33281e140900000000000000000000000000000000000000000000000000000000000006111b252e364149535c636e78828e959ea7b0bac5cec3b9afa69d938c81756e645b52483f362c21191106111b252e364149535c636e78828e949ea7b0bac3cec4b9afa69d938d81756e645b524840362c241a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28313a42484c4d575757575757575757575757574c4a54606b77838e9a968a7f736e737e86919ca4adb7c1ccc6bbafa4988c81756a5e5247352b21160b000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000000000000000000000000000000050b111820272d313a42474f545c636a6f767f8690959ea5aeb5bec6cfc5bab0a79e958d81766c62584c42382e23180d020000000000000000000000000000000000000000000000000000000000010b141e2630394349545f686f7b849097a0abb6bcc6c9bfb6ada49b91897e726b625950463b302a21171018202b353e47515a636d747f8b929ca5aeb7c0cac5bdb5aa9f968f837a6f635e554b42382f261c13090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a31383d40414b4b4b4b4b4b4b4b4b4b4b4b4b404954606b77838e9a968a7f73787f869197a0abb4bdc7ccc1b6aca3958a7e73675c5044392d221107000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000000000000003060808090909090909090710171d222a31373f454a535960636e737d8590949ea5aeb6bfc8cac1b8aea59c91877c70655b52483d32271c1005000000000000000000000000000000000000000000000000000000000000040d162029303a454f58616a717d87919ca3acb6bec9c7bdb4aaa19c90857c706960554a443a31271f1620292f3a454e57616a717d86919ca2abb5bec8c7bdb4aba29c90857c706960554d443a32281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921282e3235363f3f3f3f3f3f3f3f3f3f393e41474b54606b77838e9a968a7f7c828b9197a0a7b0bac5cdc9beb3a79c93877b7064584d41362a1e1307000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000000000050a0e11131414141414141414141414131921272e353b434950565e656d717c8490949ea5aeb7c0cac8beb6aba1978e82776b62574c4035291e130800000000000000000000000000000000000000000000000000000000000000051018202b353e47515a636d74808b929ca5aeb8c1cac4bab5aa9f968f83796e635d544b42382f261e2630394149545e686f7b849097a0abb3bbc5c9c0b7ada49b918a7e736c625950463d342a21170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181e2327292a3434343434342e32393e43494d5156585c6b77838e9a9b8f83868e929ca0a7b0b8c0cacdc2b8aea59a8e83776b61574b4035291e1207000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000001090f15191d1f1f2020202020202020202020201e1e252b303940464b555c636b707c8490959fa7b0bac4cfc5bab1a89c92877b7064584d41372d22170d010000000000000000000000000000000000000000000000000000000000000007111b252e37414a535c636e79828e959ea8b1bac5cec3b9afa69d938c80756e645b52483f362c252e37414a535c636e78828e949ea7b0bac3cfc4b9afa69d948d81766e645b524940362c241a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e14181c1e1f282828222a31383d43494d53585a6164686c77838e9a9d948f91979ca3abb0b8c0c8cec6beb4a99e958a7e73675b52483d32271c1005000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000010a12191f24282a2b2b2b2b2b2b2b2b2b2b2b2b2b2a2927232830373c454c535b626b707c859097a0aab5bdc7cac1b8aca2968b7f74685a51473c31261b100400000000000000000000000000000000000000000000000000000000000000010b151e263139434a545f686f7b849097a1abb6bcc6c9bfb6ada49a91897e726b625950463b302b353e47515a636d747f8b929ca5aeb8c0cac5bdb5aa9f968f837a6f635e554b423830261c140901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d101213171f262c313a42484c53585c63656a6f74787d848f9ba49d9b9ca0a7acb5bac0c8cfc6beb5aca39b90847a6e63574c41382e23180d02000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000009121a22292f3336373737373737373737373737373534322d27272c313c434b525b626b717d86919ca4adb7c1ccc9bcb2a69a8f83786a60564b3f34291d12060000000000000000000000000000000000000000000000000000000000000000040d162029303b454f58616b717d87919ca3acb6bfc8c7bdb4aaa19c90857c706960554a443a303a454f58616a717d86919ca2abb5bec8c7bdb5aba29c91867c706960554d453b32281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080f18202830363c454a52575c63656c71767b7f83888f949da8a8a6a8abb0b8bcc4cacdc6beb6aea59c928a7e736960554a3f31281e140900000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000050f19222b32393e414243434343434343434343434341403d373129222b333a424a525b636d74808b939da8b3bec8cabeb3a89d93867b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000061018212b353f47515a636d74808c939ca5aeb8c3cec4bab5a99f958f83796e635d544a42394149545f686f7b849097a0abb3bcc6c9c0b7ada49b918a7f736c625950463d342a22170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f182028303840464a555b62646d71777d81868b8f939b9da4adb3b2b4b6bac1c8cfcdc5bdb6aea59e948e82786e635950463b3021180e0400000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000a151f29323b43494d4e4e4e4e4e4e4e4e4e4e4e4e4e4c4b4741393127232a323a424b535c636e79838f9ba5aeb8c2ccc1b7ada494887d71655a4e43372c2014090000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d636e79828e959fa9b4bac4cec3b9afa69d938c80756e645b5248414a535c636e78828e949ea7b0bac3cfc4b9afa79d948d81766e655b524940362d241a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1720283039404950555e656b70767d83888d91969b9da4a8adb5bdbebfc1c5cacec7c2bbb4ada69e9590847b6f685e54483f362c2111080000000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000030e19242f39434c5358595a5a5a5a5a5a5a5a5a5a5a5a5856514a41372d23212a323a434a555f69727e89949ea9b4bfcbc6b9ada2968a7f73685c5045392e22160b00000000000000000000000000000000000000000000000000000000000000000000010b151e27313a444a555f686f7b85909ca1aab4bcc6c9bfb6ada49a91897e726b62585047515a636d747f8b929ca5aeb8c0cac5bdb5aa9f968f837a6f635e554b423830261c1409010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f2830394049515960636e737c81888e93989ca0a7a8adb3b7bdc5c9cbcccdc9c3beb8b4aba49d9590847c706b61574e45382f261c12000000000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000006111d28333e49535c636565656565656565656565656564615a51473d32271b212a303b454f58636e7984909ba7b3becac6bbafa3988c81756a5e52473b3024180d0100000000000000000000000000000000000000000000000000000000000000000000050e162129303b454f58616b727e89909aa3acb6bfc8c7bdb4aaa19c90857c706960554f58616a717d87919ca2acb5bec8c8bdb5aba29c91867c706a60564e453b32281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f384049515a60696f757e868d929a9ca3a8aab0b3b7bdc2c7ced0ccc7c2bfb9b5aea8a29b938f857c706c625a51473e35271f160c020000000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000008131f2a36414d58636c717171717171717171717171716f6a61564b4034291d19212b353f49545f6875818c98a4afbbc6c7bbb0a4998d81766a5f53483c3025190e020000000000000000000000000000000000000000000000000000000000000000000000061019212b353f48515a646d75808c939ca6afb9c3cec4bab5a99f958f83796e635d545f686f7b849097a0abb3bcc6cac0b7ada49b928a7f736c625950463d342a22170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212c364048515a606a6f7a818a91969ba2a7acb3b5bac0c2c7cdcdcac5c1beb8b4afaaa59e9b918d837c706c625b524a41362e25170f05000000000007131e2a35414d58646f7b87929ea9b5c1cbc0b4a99d91867a6f63574c4035291e12060000000b17222e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766b5f53483c3125190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000008141f2b37424e5965717d7d7d7d7d7d7d7d7d7d7d7d7d7b6f64584c41352a1e131c25303a454f5868737f8a96a2adb9c4c8bcb0a5998e82776b5f54483d31251a0e0300000000000000000000000000000000000000000000000000000000000000000000000007111b252f37414a545d636e79828e959fa9b4bac4cec3b9afa69d938c80756e645d636e78828e959ea7b0bac3cfc4bab0a79d948d81766e655c534940372d241a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27313b465059606a6f7a838d919c9fa6abb3b6bcc0c4cacdcec7c2c1bab6b4aea9a69f9c949089817a706c625c534b423931261e140700000000000007131e2a35414d58646f7b86929ea9b5c9d3c0b4a99d92867a6f63584c4035291e12060000000b17232e3a45515c68747f8b96a2aeb9c5c7bcb0a4998d82766a5f53483c3025190e000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0004101b27323e4a55616c78838888888888888888888888887f73675c5045372d221b18202b35444f5b67727e8995a1acb8c3c8bdb1a69a8e83776c6054493d32261a0f03000000000000000000000000000000000000000000000000000000000000000000000000020c151e27313a444a555f69707b85909ca1aab4bdc7c9bfb6aca39a91897e726b636d74808b929ca5aeb8c1cac5beb5aaa0968f847a6f635e554b423830261c140a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f383f4a5560696f7a838f939ba1aaafb7bbc1c6cccfcccbc5beb7b4b1aba8a59e9b96908b847e766f69625b534b423a322920160d0400000000000007121e2935414c58636f7b8692a7afb9c4cfc1b5a99e92877b6f64584d41352a1e13070000000c18232f3a46525d6974808c97a3aebac6c7bbb0a4988d81766a5e53473c3024190d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00040f1b26323d4955606c77838f949494949494949494948b8074685a51473c312b2522252b3945505c67737e8a96a1adb8c4c9bdb2a69a8f83786c6055493e32261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000050e162129303b454f58626b727e89919aa3acb6bfc9c7bdb4aaa19c90857c706b717d87919ca3acb5bec8c8beb5aba29c91867d716a60564e453b322820160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212c363f48545d636f79828e939da3abb5b9c0c7cccccac5c1bfbeb5ada8a8a19c9a94908b857f7a726e636059524b423b322a211910050000000000000006121d2935404c57636e7a86969faab5c0ccc1b6aa9f93877c7065594d42362b1f1208000000081824303b47525e6a75818c98a4afbbc6c6bbafa4988c81756a5e52473b3024180d000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00030e1a25313d48545f6b77828e999f9f9f9f9f9f9f9f998e82776a61564b433a35312d31353e48525b6974808b97a3aebac5c8bdb1a59a8e83776c6054493d32261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000061019212c363f48525b646e75808c939da6afb9c3cec4bab4a99f958f83796f7b849097a0abb3bcc6cac0b7ada49b928a7f736c635950463d352a22180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b465058646d75818d939ca3acb4bbc4c9cec6c1c1bab6b4b6ada49e9b97918e89847f7b746f69645d555049423a322a221a1108000000000000000006111d28333f4a5560697985919ca8b3bfcbc2b7aba094887d71665a4e43362c22170c030106101c27323d48525b6b76828d99a5b0bcc7c6baaea3978c8074695d52463a2f23180c000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00010d18242f3b47525e6975818c98a3ababababababa89c91857b6f635c5349453e3c373c3e454c57626c77838e9aa6b1bdc8c8bcb1a5998e82776b5f54483d31251a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38424a545d636e79838f969faab5bac4cec3b9afa69d938c807a828e959ea7b0bac3cfc4bab0a79e948d81766f655c534940372d241a1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a556069727e89919ba3acb4bdc4cfc8c3bcb6b2b0aba8aba89e948f8b86827e79746f6a636059544a464038322a221a1209010000000000000000040f1a25303b4650596c78848f9ba6b2bec9c5b9aea2968b7f74685950463c31261c130e0c0f161e2935404c57626b7984909ba7b3becac4b9ada1968a7f73675c5045392e22160b000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000b17222e3945505c68737f8a96a6afb9b7b7b7b5aaa0968c80756d635c544e4b4747464a4e545e65707c86919ca8b4bfcbc6bbafa4988c81756a5e53473b3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000020c151f27313a444a556069707c85909ca1aab4bdc7c8bfb6aca39a918c828e929ca5aeb8c1cac5beb5aaa0968f847a6f635e554b433930271c140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7984909ba1abb4bcc4cdc6bfb9b4aca7a7a09ca0a79b8f847f7b77726e6863615a555048443c363028211a120a01000000000000000000010c17212c3648545f6b77828e99a5b1bcc8c8bcb0a5998e82766a60564a3f362c221d1a171b1f272f3a454e5764707b87949ea9b4bfcbc3b8aea594897d72665a4f43382c211509000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000008141f2b37424e5965717c88969faab5c0c2c4bab0a79c91867d716c635e575651535055575e636f76828d97a1abb6c1ccc5bab1a8978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212a303b465058626b727e89919ba4adb7bfc9c7bdb4aaa19a928e929ca3acb5bec8c8beb5aba29c91867d716a60564e453b322820160c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e49535c67737f8a949ea8b2bbc4cdc5bdb6afa9a39c9a979197a0968a7f74706b66635f5856514a464038312c261f1714120f0b060000000000000000000712242f3b46525e6975808c97a3afbac7cabfb3a89c90857a6f635850463b312d28252226282f373f49545e68737f8a96a5aeb8c2cbbfb4a99e95877b7064594d41362a1f1307000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000006121d2934404c57636e7a85909ca8b3bdc7c9c0b5aaa09690857c736e6863615a5f596063686e747f8b929ca8b1bac5ccc1b6aba197897d72665a4f43382c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000061119212c363f48525b646e75818c939da6afb9c4cec4bab1aaa29c999ca2abb3bcc6cac0b7aea59c928b7f736c635a51473d352b22180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c78838f9ba5aeb8c2cbc7bdb5ada69f9c928e8887919c968a7f7367615b57554f4b47413b362f28222828201f1d1a15100902000000000000000a16212d38444f5b67727e8995a4adb7c2cbc0b5aa9f968a7f736960554a443c3733302c3134384047515a636e79838f9ba6b2bdc8cabeb3a79c9084796b62574c4035291e1207000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000005111c28333f4a555f6976818d98a4adb7c2cdc4bab0a79f9590867f78726f6a6b6a6b696f7278808b9099a2abb8c1cacbbfb4a89c91867b6f63584c4135291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38424b545d636f7a838f969faab5bbc5cac2bab3aba7a5a7abb3bcc3cfc4bab0a79e948d82786e635c534940372d241a12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c88939da8b5bec7c8bfb6ada49d959089827d828e9a968a7f73675c524c4a453f3c37312c34343434342b2b28241f19120a0200000000000007131f2a36414d5864707b87939da8b3bfcac3b9afa69b8f84796e635d544b47413e3a363c3f43485058606a727d89939da8b3becac5bab1a8998e82766b5b52483d32271c1105000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000030f1a25303b454f5866717d89939da8b3bcc7cac0b7afa69f96918a837e7b78777676777a7e838b9099a0a9b3bbc9cec3b9afa69a8e83776a60564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27323a444a556069707c85909ca1abb4bdc7cac3bcb6b2b0b2b6bcc3ccc6beb5aaa09790847a6f685e544c433930271d140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45515d68747f8b97a4adb7c5cec3b9afa69d948f857e7777838e9a968a7f73675c50453e3b354040404040404040403736332f29221b120900000000000007121e2935404c57626b78838f9ba6b2bcc6c9bfb3a89d948c80756d645e56514b494547464a4c535960686f7a84909ba4adb7c2ccc1b6aba1978a7f73675c5045382e23190e03000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000b16212b35404b57636e79838f9ba3acb7c0c9c8bfb6afa69f9c938f8a86838281828385898f9399a0a9b0b9c3cccbc0b5aa9f968a7f73685a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212a313b465059626c737e8a919ba4adb7c0c9ccc5c0bdbcbdc0c5ccc8beb5aba29c91867d716a61574e453b332820170c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a25303b4650586b77828e99a5b0bcc7cbc0b4a99f958f837b726e77838e9a968a7f73675c504b4b4b4b4b4b4b4b4b4b4b4b4b43413e39332b22191006000000000005101c27323d48525b6974808b97a3acb6c1ccc2b7ada49a90897e726e63615a57544f535056585c63696f79818d949ea9b4bdc7cbbfb4a89c91867b6f64584d41352a1e140900000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000007121c28333e49545f68727e8a939ca7afb9c4cfc6bfb7afaaa49d9a97918f8e8d8e8f91969a9da4a9b1b9c1c9cdc3b8aea59c90857b6f63584c41372d22170d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061119212c364048525b646e75818d949da6afb9c4cfd0cbc9c8c9cbd0cac0b8aea59c928b7f746c635a51473e352b22180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a5560697984909ba7b3becacabfb3a79c90857c706b6b77838e9a968a7f73675c50565757575757575757575757574e4d49433b33291f150b0000000000020d18232e38424d5964707c87929ca7b2bcc8c7bdb5aaa19c91867e756f6a65635f585f596063666c717a818d929ba5aeb8c5cdc2b7ada4998e82776b61564b4034291e120400000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000030e1a25303a454f58636e78828e969faab5bac2cec7c0b9b5ada8a8a19c9b9999999a9ca0a7a8adb4bac1c9cfc3bbb4a99e958c80746a61564b4034271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000108121c262f38424b555e636f7a838f969faab5bbc9d1dad4d3d4d6cfc4bab0a79e948e82786e635c534941362e251a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b4bfcbc5baaea2978b80746b626b77838e9a968a7f73675c57626262626262626262626262625a58534c43392f241a0f04000000000009141e2a35414c57626c77828e9aa3acb8c1cac5bab5aaa097918a807b74716e686b6a6b6a6f72767d838d929ba2abb5bec7c7bfb3a89d94897d72665a51473d32271b100500000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000b16202b353e49545e68707c86919ca1aab2bac3c9c9c4bdb7b3b1aba8a6a5a4a5a6a8aab0b3b7bdc4cacac5bbb2aaa19b90847a6f635a51473c3126170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323a444a556069707c86919ca2abb8c1cad4dfdfe0d7ccc1b5aba09790847b6f685e544c433930261e140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b8797a1abb6c1ccc1b6aa9e93877c70645b6b77838e9a968a7f736760636e6e6e6e6e6e6e6e6e6e6e6e6e65635c53493e33281d1206000000000005111c27333d48525b66727d89929ca7b0bac5cfc4bab0a7a09c918c85807c7977767677787a7e81888f939ba2abb2bbc5c9bfb7aca39b8f83796e63574b41382d23180d0200000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000007111b252f3a454e57626c737e8a919aa1aab5b9bfc7cdc7c1c1bab6b4b2b1b0b0b1b3b5bac0c1c6cec8c1bab6aba29a90897e726a60564941372d22180600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17212a313c465059626c737f8a919ba8b1bac5d0dbe4d9cec3b8aea59c91867d716a61574e453b332920160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5964707b8793a8b1bac5d0c0b4a89d91867a6e63606b77838e9a968a7f7367696f797a7a7a7a7a7a7a7a7a7a7a7a716d63584d41362b1f14080000000000030e19242e38424d59636d77828e97a0abb6bdc6cac0b7b0aaa19a95908b8884838281828385898d919a9da3abb2bbc3cec4b9afa69c93897e72685f544a3e31281e13090000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b00000000010b16202b353e47525b646e75808c919aa1aaafb6bcc2c7cccac5c1bfbdbcbbbcbdbfc0c4caccc8c3bdb8b0aba29b928c80756e645a51473930271d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a222c364049525b656e76818d97a1abb6c1ccd8e2d6cbbfb4a99e958b7f746d635a51473e352b22181005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707b8792a7b0bac4cfc0b4a89d91867a6e63606b77838e9a968a7f73676f7a858585858585858585858585867d71655a4e43372b2014090000000000000a141f28343f4a545d65717c86919ca4adb5bec7c8c0bab5aaa69f9c9795908f8e8d8e8f9196999ba2a7acb4bbc3cbc3bcb5aa9f968e82776e64584f453b3021170e040000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000006111b252e36424b555e636e78808b909c9fa6acb3b7bdc0c4cacbcbc9c8c7c8c9cbcbcac7c2bfb9b4ada7a09c918d81796e635d544940372920170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000108121c263038424b555e64707b85919ca8b4bfcbd6e1d6cabeb3a79c90847a6e635c534941362e251b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b8697a0abb5c1ccc1b6aa9e93877c70645a6b77838e9a968a7f7367727d899191919191919191919191887c7065594e42362b1f1408000000000000050f1a25303a444c58636c74808c939da5aeb7bfc7cac4bab6afa9a7a59e9c9a99999a9b9ca0a7a6abb3b6bcc4cfc3bcb3aaa19c90857c70645d54473f352b211007000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b0000000000010b141e26323b4549545e686e78808a90969ca3a8adb3b5babdbfc0c4c9c3c3c8c3bfbebcb7b3afa9a49d97918b81796e685f544d44393027181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018212c363f48525b656e76818d97a1abb6c1ccd8e2d6cbbfb4a99e958b80746d635a51473c312a21170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7a85919ca8b4bfcbc5b9aea2978b7f746b616b77838e9a968a7f736d76828e999c9c9c9c9c9c9c9c9c95867b6f64584c41352a1e1207000000000000000b16202a333e49535c636e79838f959ea6afb6bec6cec6bfb9b4b3aea9a7a6a5a4a5a6a8aab0b1b5bbc1c6cac4bbb3aba39b918a7f736b62574d44372e251b1100000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4d0c4b8ada1968a7e73675c5044392d22160b000000000000040d16222a2f3a454e575e686e747e858e929b9da4a8aab0b1b3b5b9b7b7b7b7b8b4b3b0ada8a69f9c948f877f786e685f584f453c3428201708000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029303b454f58626c737f8a929ba8b1bac5d0dbe4d9cec3b8aea59c91867d716a60564b453a32271f150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e4a555f687884909ba7b2becacabeb3a79c90857b6f6b6b77838e9a968a7f73727e89929ca8a8a8a8a8a8a8a79c9085796a61564b4034291d120600000000000000061019242f39434a555f69707b8490969fa6aeb5bcc4c9c8c3c0bfb8b4b3b1b0b0b1b2b3b5bac0c0c5ccc8c0bab5aba29c928c81756e655b52483c34271e150b01000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c4cdc4b8ada1968a7e73675c5044392d22160b0000000000000005111a202b353e474e575e636e727c82898f94999ca0a7a6a8aaafababababaea9a7a5a49d9b95908b837d746e685f584f473f352c23180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273039414a555f69707c85909ca2abb8c1cad4dfddddd2c8beb5aba09790847a6f635e554b42382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f586b76828d99a5b0bcc7cbc0b4a99f958f837b736f77838e9a968a7f747d85909ca2abb4b4b4b4b4b1a8998e82776b5a51473c32261b100500000000000000000a151f29303b454f58616b717d8590959ea5acb5b9bfc4cacbc8c3c0bebdbcbbbcbdbfc0c4caccc7c2bdb8b0aba29b928e82796e635e554b42382c23160e0500000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb9c1c1c1b8ada1968a7e73675c5044392d22160b000000000000000106111b252e363e474e545e646b70777e83898e9196989a9c9fa79fa0a09fa59e9c9997948f8b857f7a716d635e574f483f372e251c130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a222d374149545d636e79838f969faab2bbc9d1d7d6d2d2d8cfc4bab0a79e948d81766e645b52483f362c21181005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b3545515d68747f8b97a4adb7c2cdc3b8aea59d938f857f7a77828e9a968b7f808590959fa9b3bcbfbfbfb6aba1978b7f73685c5145372d23180d020000000000000000050f16212c363f48525b636c717d8590959ca3aaafb5bac0c2c7cacbcac9c8c7c8c9cbcbcac5c1beb8b4ada7a09c918d82796f695f554e453a32281c13060000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1adb5b5b5b5b5ada1968a7e73675c5044392d22160b0000000000000000010b141e262e363e4549545b62646d72797d8285898c8f919693949494949395908e8b87837f7a746f69635c544e473f372f271e150b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17222a313c47515a636d75808c939da6afb9c3cbcfcccbc6c7cacecac0b8aea59b918a7e736b62584f453b302920160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111f2b36424e5965707c88949da8b3bec8c8bfb6ada49d95908a858284909b99908b8b90969fa6afb9c3cbc6beb4a89c91867b7064584d41362a1e13090000000000000000000007121c262f38414a535c636d717d848e939c9fa6aab0b4b8bcbebfc2c8c2c3cac4c0bfbebab6b4aea9a49d97918b81796f6960584f453d352a21180b030000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a96a1aaaaaaaaaaaaaaa1968a7e73675c5044392d22160b000000000000000000040d161e262e353a444a52575d64686e72767a7e818385868888898988878684827f7c78736f6a6360595349453e362f271e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27323b424b56616a717d87919ca3acb7bfc9cac4c1bfbabbbfc4cac8beb5aba29c90857c70695f554a433930261e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414c58626c78838f9ba5aeb8c3cdc6bdb4ada59f9c96908e90949ea09996979c9fa6afb6bfc9c8beb5aba2998d82766b61574b4035291e120300000000000000000000020c151f27313a434c535c636c717b828b90969ca0a7a8aeb0b3b4b8b6b7b7b7bab5b3b2b1aba8a59e9b938f867f766e69605950483f352d24191108000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a969e9e9e9e9e9e9e9e9e968a7e73675c5044392d22160b00000000000000000000050d161e252b2f3a42484c54585f63666a6f727577797b7c7d7d7d7d7c7a797674706c6863605a555048433a352e261e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38424b555e636f7b849097a1abb4bdc7c8c0bab5b3afb0b4bac2cac5bbb5aa9f968f83796e635d544a41362e251b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e48535c68737f8a959ea9b4bbc5cdc5bdb6aea9a69f9c999b9ea5a9a4a2a2a8aaafb7bfc7c9c0b7aea59b91887d71655b52483d32271c10050000000000000000000000050e172129333b434c535c636b6f797f858d91979b9ea5a5a7a9aeababacabb0aaa8a6a8a19c9a94908a837d736f636058504840372f251c140901000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f8a93939393939393939393938a7e73675c5044392d22160b0000000000000000000000050d141b202a31383d44474f54575960636769686e6f7071727171706f6a6b6865625b5856514a4640382f2b251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051019212c363f48525b656f76828d959ea8b1bac4cac0b7b0aaa8a3a5aab1bac3cec4b9afa69d938c80756d635a51473e352b20170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39424c57636f7a84909ba2abb4bdc5d0c6bfb8b4afaaa8a5a7a9aeb5afaeaeb3b5b9bfc7c8c1b8b0a79e958d81766c63584a41382e23180d02000000000000000000000000061119222b333b434c535a61686e747b81868c909496999b9ea59fa0a09fa7a09c9b9897918e8a847f79716c655e55504840382f271e150c0400000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000b16222d3945505c67737f878787878787878787878787877f73675c5044392d22160b000000000000000000000000040b111921282e32373e45494b5056585b575e63646565666665656360595d5957524c4b47403b362f28201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d162029303b465059626c737f8a929ca5aeb8c1cac4bab0a7a09c989aa1aab2bbc5c9bfb7aca39c91877d716a61574e453a2f281f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f28343f4a556069737e8a929ca4adb5bdc5cac8c3bfb9b5b3b0b3b4b8bebab9babfc0c4c9c7bfb8b0a8a09690847b6f635c53493a31281e1409000000000000000000000000000009121a222b333b434a51585f636b70757b8084888b8e909593949494949396918f8d8a86827e79736e68635c554a463f382f281f170e050000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000007121e2935404c58636f7a7c7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4035291e120700000000000000000000000000010611181e23262e353a3e40464b4c4f4e545758595a5a5a5a59585650514d4c48423f3c37312c261f17110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e263139414a556069707c86919ca2abb5bec9c6bfb5aaa097918c919aa2abb5bec8c7bdb6aba19790847b6f685e544942382f261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059646e76818d949da5adb6bac1c9ccc9c4c0bfbcbebfc2c8c6c5c5cacbc8c3bcb6afa7a09791867d716a61564c43392921180e040000000000000000000000000000020a121b222b323941484f555b61646b7074797c7f828486878888898888878584817e7b77736e69635f58534b453b362f271f170f06000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a6f707070707070707070707070706f6a60564b3f34291d1206000000000000000000000000000000080e14161e252b3033373c3f404445494b4c4e4e4f4f4e4d4c4b464542413e3934312d27211c160f06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e36414a545d636e79838f969faab3bbc6c8bfb6aca39c9186808c919ba5aeb8c1cac5bab1a89e958e82786e635b524840362c22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c364049555e636f7a838f949da4abb1b8bcc0c4c9cacac8cacbcdd2cecbcac6c1beb8b4aca69f9791877e736d635a51473b332919110800000000000000000000000000000000020a121a222931373f454a52575b6164686e717476797a7c7c7d7d7d7c7b7a7875736f6b67635f58554f48433b302c261f170f0700000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b0000000000000000000000000000000000000000000000000000000000000004101b26313c46505960636464646464646464646464646463605950463c31261b10040000000000000000000000000000000004090d151b2025282d313435353a3e4041424343434342403f3c373635332e2926221d17120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17202b353e47515a646d75808c939da6afb9c3cec3b9afa69c928b7f76818d949ea7b0bac5cac1b8aea59c928a7f736c625950463b312921160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038454b56616a707b848f939ca1a8acb3b5b9bdbfc0c3c8caccc8c3bfbebcb7b3aea9a39c9590877f736e645c534941372b221909000000000000000000000000000000000000020a121920272f353b41484b5257575e6365686b696f707171727171706e686a6764615a57554f4a453f37322b211c160e060000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000000000000000000000000000000000000000000000000000000010c17222d374049505658595959595959595959595959595856504940372d22170c01000000000000000000000000000000000000040b11161a1d222629292b2f3334353737383837363534312c2b2a28241f1b17130d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f282f3a454e57616b727e89919aa4adb7c0c9c5bdb4a99f958e82786f7a849097a0abb6bcc7c9beb5aba29c91867c706960554a443a31261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313c47515a616b707b838c91979ca3a8aaafb1b3b4b9bdbec1beb8b4b3b0aca8a59e9b938e857e736e655e554c433930271a120900000000000000000000000000000000000000010810161e252b30383d41484b4e54575a5c59606364656666666564635f585b5857514c4a453f3b352f27221a120c050000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1106000000000000000000000000000000000000000000000000000000000000000008131d27303940464b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b46403930271d1308000000000000000000000000000000000000000001070b0e13171b1d1e202427292a2b2b2c2c2b2b292826221f1e1c1915100d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c2630384049545e686f7b84909ca1aab4bdc7c8bdb5aaa19c90857b6f6a717d87919ca3acb6bfc8c6bbb5aa9f968f837a6f635d544a41372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17222d374149525b616b6f7a80878e93999c9fa6a5a7a9afb2b3b7b6aea9a7a5a39d9a95908a827c726d655e554d443c332920170a02000000000000000000000000000000000000000000060e151b21282e32383d3e45494b4e51505557595a5a5a5a595857544f504d4b47413f3b36302b251e161207020000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d030000000000000000000000000000000000000000000000000000000000000000030d17202830373c3f4042424242424242424242424242403f3c37302820170d03000000000000000000000000000000000000000000000003080c10121116191c1d1e1f202020201f1e1d1b171313110e0a04010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222c364049535c636e78828e959ea9b1bac5cac0b7ada49b91897e726b636d74808b939ca6afb9c3cec4b9afa79d938c80756d645a51473e352b20180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d273039414a525a61696f757d83888d9196979a9c9fa6a6a8ada9a59e9c9996938f8a847e78706b645d554d453d342b231810070000000000000000000000000000000000000000000000050c11161e23282e32353a3e404245464a4c4d4e4f4f4e4e4d4b4a454441403d3833302c26211b150e0601000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000000000000000000000000000000000000000000060f1820272d313435363636363636363636363636363534312d2720180f060000000000000000000000000000000000000000000000000000010406060b0e1011121414151514131211100c0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d162129313c465059626c737f8b929ca5aeb8c2cfc4bab0a79d948d81756e645c636e79828e959fa9b4bbc5c9c0b7ada49a91897e726b61584f453a302820160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313a414a515960636c71777d8185898c8e9095939a9da4a09995908e8b87837e7a736e68625b544c453d342c241b12080000000000000000000000000000000000000000000000000002070e14181e23252b2f333437363c3f4042424343434241403e3b353535322d2825211c16110c05000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b020000000000000000000000000000000000000000000000000000000000000000000000070f171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d170f070000000000000000000000000000000000000000000000000000000000000000030506070809090909080606040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e26313a414a556069707c86919ca2acb6bec8c6bfb5aaa0978f837a6f635d555f68707b85909ca1abb5bdc8c7bdb4aaa19c90857b6f685f5449433830261d120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101821293139414850555c63656d71767a7d80838586878f939d99908b84827f7c78736e69635f58524b443c342d241c140a0200000000000000000000000000000000000000000000000000000004090e14181b202427292b2c313435363737383737363433302b2a2927231e1a16120c07020000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d0400000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d636f7a838f96a0aab3bcc6c8bfb6aca39c91867d716960554f58626b727e89919ba4adb7c0cac5bab4a99e958e82786e635c534940372c221911060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000811192129313840464a53585c63656a6f727577797a7c838f9a968b7f797673706c67636059544f47423a332c241c140c0300000000000000000000000000000000000000000000000000000000000004090b1116191c1d20222628292b2b2c2c2c2b2a292825211e1e1c18140f0c07020000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b0400000000000000000000000000000000000000000000000000000000000000000000000000000003080c101212131313131313131313131313131212100c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080c0d0e0e0d0a060604010000000000000000000000000000000000000000000000060f18202b353e47515a646e75818c949da7b0bac3cec3b8aea59c928b7f746c63595048525b646e75818d949da7b0bac4cec3b8aea59c928b7f746c635950463c312a21170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111920282f363b43494d535859606366696b6a6f77838e9a968a7f736b6864625b57555049453e37312a231b140c0300000000000000000000000000000000000000000000000000000000000000000001060b0e101112171b1d1d1f202020201f1e1d1c1a161112100d0904010000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708080808080808080808080808070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0e10111417191a19181512110f0c08030000000000000000000000000000000000000000030d162028303a454f58616b727e89919ba4adb7c0c9c5bdb4a99f958e82786e635c5349424a545d636f7a838f96a0aab5bcc6c8bfb6aca39c91867d716a60564b443a31271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c31393e43494d5056585b5d59606b77838e9a968a7f73675c5957524c4a463f3a352e262119130b0300000000000000000000000000000000000000000000000000000000000000000000000000030506080c0f11121314151514141312110f0b070705020000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b1116191c1d1f2325262524211e1d1b17120d070200000000000000000000000000000000000008121d2630384049545f686f7b85909ca1aab4bdc7c8bdb4aaa19c90857b6f685f544b433a444a56606a717d86919ca3acb6bec8c6bcb5aaa0978f847a6f635e544a42372f251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c21292f33393e40464a4c4f5250606b77838e9a968a7f73675c504c48423f3b36302b251e16110902000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060808090909080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606101111111111111111111111111111110b0a08060200000000000000000000000000000000000000000000000000000000000000000000000000000000000002050d141b202427292b2e3031312f2c292826221c16110c0500000000000000000000000000000000061119222c374049535c636e78828e959fa9b2bbc5cac0b7ada49b91897e726b61584f453b313c465059636c747f8b929ca5aeb8c3cec4bab0a79d948d81766e645b52483f352b2118100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171f24292f33363c3f40434954606b77838e9a968a7f73675c50453d3833302c26201b150d06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060606050300000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121b1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161614110c0701000000000000000000000000000000000000000000000000000000000000000000000000000000040a12161e252b2f3334373a3c3d3c3b383534312c26211b150e060000000000000000000000000000050e16212a313c465059636c747f8b929ca5aeb8c2cfc4bab0a79d948c81756e645a51473e352c364049535c636e78828e959ea9b4bac5cac0b7ada49b918a7e726b62584f453b302920170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080f151a2025262c3134353d4954606b77838e98968a7f73675c5045392e2825211c16110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b090603000000000000000000000205080a0b1111111111111111111111110f0e0c09050100000000000000000000000000000000000000000000000000000000000204060709060b0e1011121211110e0b070a0707050200000000000000000000000000000000000000000000000000000000000000060d12171b1d1e2729292929292929292929292929292922211f1c17110b0400000000000000000000000000000000000000000000000000000000000000000000000000040d141b23262e353a3e4042464748484744403f3c36302b251e160f08000000000000000000000000020c151e27313a424b56606a717d86919ca3acb6bfc8c6bfb5aaa0968f837a6f635d544a41372e2630384349545f686f7b85909ca1aab4bdc7c8bdb5aba29c90857c70695f554a433930271d1308010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a10151a1d222628313d4954606b77838c8c8c8a7f73675c5045392d221a17120c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000001070c111415161d1d1d1d1d1d1d1d1d1d1d1d1a191714100b05000000000000000000000000000000000000000000000000000104080d101212151116191c1d1d1d1d1c1a1611161312100d090502000000000000000000000000000000000000000000000000000000070f161d22262829333434343434343434343434343434342d2d2a26211b140c040000000000000000000000000000000000000000000000000000000000000000000000040d151d252b33363e45494b4e51535453524f4c4a46403b352f2720180f07000000000000000000000007111b252f37424a545d636f7a848f97a0aab3bcc6c8bfb6aca39c91867c706960554d443a31261f28303a454f58616b727e89919aa4adb7c0c9c5bbb5a99f958e82796e635c534941372d221a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0d12171b222e3a45515c68747f818181817d71655a4e43372c20140c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b0400000000030b11171b1f21222929292929292929292929292625231f1a150e070000000000000000000000000000000000000000000002080c0f13181b1d1e21232024272929292928252024211e1e1c1814100d0904000000000000000000000000000000000000000000000000060f181f262c3134353e404040404040404040404040404040393835312b241c140901000000000000000000000000000000000000000000000000000000000000000000020b151d252d353c43474e5457595d5f605f5e5b5755504a453f37302820170f06000000000000000000060f18212b353f48525b646e76818d949da7b0bac4cec3b8aea59c928b7f736c625950463c34292118202b353e47515a646d75808c939da7afb9c4cec3b9afa69c938b80746d635a51473c312a22170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c16222d39444f5a656f7475757575716d63584d42362b1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d040000030c141b21262a2c2d34343434343434343434343431302e2a251e170f070000000000000000000000000000000000000003080c12171a1d222629292c2f2b2f333435353433302b2f2d2a2927231e1b18130e0904000000000000000000000000000000000000000000030d161f2830363c3f404a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4543403b352d241a110700000000000000000000000000000000000000000000000000000000000000000006131b252e353e454c53575e6365686a6b6b6966636059554f48403930281f160c0300000000000000030d172028303b454f58626b727e89919ba4adb7c0cac5bdb4a99e958e82786e635c534940362c2319111b252e37414a545d636f7a838f969faab5bbc6c9bfb6aca39c91877d716a61564b453a32271f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b36414b555e65686a6a6a6a65635c53493e33281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02010b141c242b313538394040404040404040404040403d3c39342e2720170e050000000000000000000000000000000000060d12171c2226282d313435383a353a3e404040403e3a353b383635322e2927231d18140e07020000000000000000000000000000000000000008121d26303840464a4c55575757575757575757575757575757504f4b453d352a22170f0600000000000000000000000000000000000000000000000000000000000000050e16232c353e464e565c63686e717476777675726f69635f585149403830261c12080000000000000008131d273039404a555f68707c85909ca2abb5bdc8c7bdb4aaa19c90857b6f685f544b433830261c130b151e26313a444a556069707c86919ca2abb5bec9c7bcb6aba09790847b6f635e554b42382f261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313c454e555a5c5e5e5e5e5a58534c43392f251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120807111b242d343b4043444b4b4b4b4b4b4b4b4b4b4b4b4847443e3830271e150b01000000000000000000000000000003080f161c22262c3134373c404143464845494b4c4c4b494548464441403d3834322d27231e16120c050000000000000000000000000000000000010c17222c364049505658616363636363636363636363636363635c5a554e453b32281f160c030000000000000000000000000000000000000000000000000000000000010b151e27333c464e565f656d71787c80818282817e7a736e68605a514940362c221710060000000000010d17222d374049535c636e79828e959fa9b2b5b5b5b5b7ada49a91897e726b61584f453b32281f160b040d162129313b465059626c737f8a929ca5aeb8b5b5b5bab0a79e948d81766e655b52483f362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17222c353e454b4f51525252524e4d49433c332a20150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d0c17212b343d454b4f5057575757575757575757575754534e4840382e251a100500000000000000000000000000060d12171f262c31363b3f41474b4c4f52544e5457575757544f54524f4d4b4841403d37322e28211c150e0600000000000000000000000000000000040f1b26313c46505960636d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b423830261c1208010000000000000000000000000000000000000000000000000000000007111b252e37444c565f666f747d83888b8d8e8d8c89847f796f6a605950463c312920150b000000000004101b26313c47515a636d74808b939ca6afaaaaaaaaaab0a79d948c80756d645a51473e352b22170f0600061019212c364048525b656f76828e959ea8b1aaaaaaaaaaaea59b928a7f736c625950463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b252d353c4144454747474743423e39332b2319100600000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c11111b26313b454e555a5c636363636363636363636363605e5851483e342a1f1409000000000000000000000000070f161c222830363c40464a4c5156585b5d5f575e636363635f58605e5b5857524c4b47413d38302b251e17110901000000000000000000000000000006111d28343f4a56606a6f787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736e655b524940362c22191106000000000000000000000000000000000000000000000000000000000b16212b353f47545d666f747f878f93979999999895908b827a6f6960554a43392f251a0d030000000006121d29343f4b56606a717d87919ca39e9e9e9e9e9e9e9ea0968f837a6f635d544a41372e251a120700000008121c262f38424b555e636f7b849097a19e9e9e9e9e9e9e9ea29c90857c706960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252c3136393a3b3b3b3b3736332f2a231b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b2014141f2a35404b555e65676e6e6e6e6e6e6e6e6e6e6e6e6b6861584e44392e23170c00000000000000000000000810171f262c313840464a5055575a616366696b6c686e6f6f6e686d6b696764615b5856514b47413b352f272119120a020000000000000000000000000006121e2935404c58636f7a838585858585858585858585858585857f736c625950463c312a21170e050000000000000000000000000000000000000000000000000000030f1a25303b454f58636d747f8b91979da3a4a5a5a59e9c928e837a6f635c53493e33261c1208000000030f1a25303b454f58636f7a849097939393939393939393939391867c706960554d443a31261e150a01000000020c161f28323b454b56616a717d87919393939393939393939393968f83796e63574c4035291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b22272b2d2e303030302c2b28252019120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d221615212c38434f5a656e737a7a7a7a7a7a7a7a7a7a7a7a7772685e53473c3025190e00000000000000000000081019202830363c44495055596063676a6f72747678797a7a7a7a7978777572706b6864615a57514a453f37312a221a120a0200000000000000000000000006111d28343f4a56606a707c869191919191919191919191919191867c706960554a443a31271f150c020000000000000000000000000000000000000000000000000005111c28333e4a545f68717d87919ca1a8acb0b1b0aea9a39c938d81766d63584d40362c22170c01000005111c28333e4a545f6876818787878787878787878787878787877f736c625950463c342921160d040000000000060f17222a313c47515a636d75808787878787878787878787878787878075695e52463b2f24180c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12171c20222224242424201f1d1a1510090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e231716222d3944505c67737f85858585858585858585858582776b6054483d31261a0f0000000000000000000810192129313840464a54596063696f73777b7d8082838585868685858482807e7b78746f6a64615a554f48423a322b231b120a010000000000000000000000040f1b26313c465059626c737f8b929ca59c9c9c9c9c9c9c9c9f968f837a6f635d544b42382f261c12070000000000000000000000000000000000000000000000000006121d2934404b57636e79838f97a1abb1b8bbbcbcb8b4aca39b91887d71655950463c31261b0f04000006121d2934404b57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c786e635c534840362c231910060000000000000007111a222d374149545d636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7064594d42362a1f130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141617181818181414120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e231716222d3944505c67737e8a919191919191919191918e82776b6054483d31261a0f0000000000000000060f1821293139414950555d64696f747a7e8286898c8e8f9096919196918f8e8c8987837f7b756f6b635f58524a433b332b231a11080000000000000000000000010c17222c364049535c636e78828e959ea7b0a8a8a8a8a8afa69d938d81756e645b52483f362c211910060000000000000000000000000000000000000000000000000915202c38434f5a66727d89939da8b1bac1c9c8c8c3bcb4aba2998e82766960554a3f34281d1106000005111c28333e4a545f686e707070707070707070707070707070706e685e544b42382f261b130800000000000000000109131d273039434a555f696e707070707070707070707070707070706b62574c40352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090b0b0d0d0d0d090807040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e231716222d3944505c67737e8a969c9c9c9c9c9c9c9c9a8e82776b6054483d31261a0f00000000000000040d162028313a414a515960636e727a80848a8e919797999b9c9fa6a69f9c9b999895938f8b85817b746e69625b534c433c332a22181005000000000000000000000008121d2630384349545e686f7b849097a0abb6b4b4b4b4b7ada49b91897e726b62584f453b302921160e0500000000000000000000000000000000000000000000000d18242f3b47525e6975808c98a4adb8c1cad1d3d2cec4bbb3a89c91857a6f63574c4035291e12060000030f1a25303b454f585f6364646464646464646464646464646464635e574e453b32281f160b03000000000000000000030d172029303b454f585f6364646464646464646464646464646464625b52483d32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e231716222d3944505c67737e8a96a1a8a8a8a8a8a8a59a8e82776b6054483d31261a0f000000000000010b151e263039414a515a61696f757e848b90959a9ca0a7a5a6a8aaafafaaa8a7a5a3a49d9a96918c857f79706b635c534c433b322920160d0400000000000000000000030d161f282f3a454e57616a717d87919ca3acb6bfc8c7bdb4aaa19c90857c70695f554a443a31271e150b01000000000000000000000000000000000000000000000f1a26313d4954606b77828e9aa5b1bcc9d1dae1ddd5ccc0b5aa9f96887c7065594e42362b1f14080000000b16212b353f474f54575959595959595959595959595959595957544e473e352a22170f060000000000000000000000071018212b353f484f55575959595959595959595959595959595957524b42382e23190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060707070707060605030000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb4b4b4b4b1a59a8e82776b6054483d31261a0f00000000000007111b252e374049515a616a6f7a818990949c9ea5a8abb0b0b2b3b5b9b9b5b3b2b1afada8a79f9c96908b827b716c635c534b423930261e140b0100000000000000000000060f18202b353e47515a636d74808b939ca6afb9c3cec5bbb5aa9f968f83796e635d544a41372e251b110700000000000000000000000000000000000000000000101b27323e4a55616c78848f9ba6b2bdc9d5e1ebe5dacfc4b9afa794897d71665a4f43382c20150900000007111b252e373f454a4b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b49453e362e251a12070000000000000000000000000007121c252f373f454a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c48423a32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b070c0f111212131313121211110e0b070a0707050300000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8bfbfbcb1a59a8e82776b6054483d31261a0f0000000000000b16202b353e47515a616b6f7b838d919b9ea5a9aeb4b5babcbdbfc0c3c4c0bfbebcbab7b3afaaa69f9c938e857d716d635b524a41362e251b1106000000000000000000000006111b252e364149535c636e79828e959fa9b4bac5cec3b9afa69d938c80756d645a51473f352b211810050000000000000000000000000000000000000000000f1b26323e4955606c78838f9aa6b2bdc9d4dfe8e3d9cdc3b8aea594887d71665a4e43372c201409000000010b151e272e353b3e4042424242424242424242424242424242403e3a352e261e140a0100000000000000000000000000020c151e272f353b3f4042424242424242424242424242424242403d38322a21180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070b0f1112141612171a1d1d1e1e1f1e1e1e1d1c1a1611151312110e09070502000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000000030e1a25303a454f58606a6f7b838f939ba1a9aeb4b8bfc1c4cac9cac8c7c7c8c9c9c8c6c1c0b9b5afaaa39c9590857d716c625a51473e352b20160d0300000000000000000000010b141e263039434a555f68707b85909ca1aab4bdc7c9bfb6aca39a90897e726b61584f453b302920160d0400000000000000000000000000000000000000000e1a25313d48545f6b76828e99a5b0bbc6cfd7dcd9d3cbbfb4a99e95877c7064594d42362a1f130800000000050e161e252b3033343636363636363636363636363636363634332f2b251e160d04000000000000000000000000000000050e171e252b3033343636363636363636363636363636363635322e28211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090d1011161a1c1d1f222421252829292a2a2a2a292928252023211f1e1c191412100d090502000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0000000006101a232b333e49545f686f7a838f949da4abb4b8bec3c8ccc8c3bfbebcbbbbbcbebfc2c7cbc9c4bfb9b5aca59e9690857c706a61574e453a2f261d12080000000000000000000000040d162029303b454f58616b727e89919aa4adb7bfc9c7bdb4aaa19c90857b6f685f544a433930261e140b01000000000000000000000000000000000000000b17232e3a45515d68747f8b97a2abb6bec7cdd1cec9c4b9afa69b9084786e63574b4034291d11060000000000060e151b212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a292724201b140d050000000000000000000000000000000000060e151c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a27231e181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f13181b1d212528292b2d2f2c3033353535363635353433302b2f2d2a2927231f1e1c1814100d090300000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000000b15202a333e48525b636e78828e939da4adb4bbc2c8cac4c1beb8b4b3b1b0b0b1b2b4b7bec0c3c9c9c4bcb6aea69f9590847b6f685e544940372c22170c020000000000000000000000051018212b353f48525b646e75808c939da6afb9c4cec4bab4a99e958e82796e635c534941362e251b11060000000000000000000000000000000000000008131f2b36424d5965707c87919ba5aeb6bdc2c7c4c0bab5aa9f968c8075685e54493e33271c1005000000000000050b11161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1916110b0400000000000000000000000000000000000000050c12161a1c1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c12161a1e2327292b30333436393b363b3f40414141414140403e3a353a383635322e2a2927231e1c18140e0b070100000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000000040f1a252f3a414c57626c747f8b929ca4adb5bdc4cdc8c0bab5b4aea9a7a5a4a4a5a7a8adb3b5b9bfc7cec6bfb6afa69e948e82786e635950463c31261c120700000000000000000000000007111b252f37414a545d636f7a838f969faab5bbc5cec3b8aea59c928b80746d635a51473e352b20180f0600000000000000000000000000000000000007131e2a35414c57626c76818d959ea6adb4b8b8b9b5b0aaa19c90857b6f64574e453a2f24190e030000000000000001070b0f11121313131313131313131313131313131311100e0b060100000000000000000000000000000000000000000002070b0f11121313131313131313131313131313131313110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070d13171c2125282d3234353b3e4042454748464a4c4c4d4d4d4c4c4b494547464441403d383635322e2927231e1a16110b04000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000007121d29343f49535d65707c86919ca3acb4bdc5ccc5bdb8b0aba8a59e9c9a9998999b9ea4a7a9afb6bbc3cac7bfb6aea59c928a7e736a60564b3f362c21170c010000000000000000000000020c151e27313a444a556069707c85909ca2abb5bec8c8bfb6aca39c91877d716a61574e453a2f2820160d03000000000000000000000000000000000006111c27333e48525b646f7b8490969da4a8aeadafaaa7a09c908a7f736b6156473e352b20160b0000000000000000000000030506080808080808080808080808080808080605030000000000000000000000000000000000000000000000000000000305060808080808080808080808080808080807050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11161d22262c3033373d4041454a4b4e50525450555758585958585757544f53524f4d4c484541403d3835322e2825201b150d0a0500000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00000008141f2b36424d58636d77828e97a0abb3bcc5ccc4bcb4ada7a09c9895908e8d8d8e8f94979c9fa6abb3bac2cac7beb5aba29b90847a6f635950463b30251a0f04000000000000000000000000050e162129313b465059626c737f8a919ba4adb7c0cac6bcb6aba09790847b6f685e5449433930271d13080100000000000000000000000000000000030e19242e38424b57616b717d858f949b9ea5a1a69f9c96918a80746e655a5147362e251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070e151b21272d31363b3f41474b4c4f5457595c5e5f596063636464646463635f585f5d5b595752504d4c4842403d3833302b251e16140f06010000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000005101c27323d48525b66717d88929ca7b0bac3ccc5bcb3aca49d97918c88848281818284878b90959ba2aab1bac3cbc6bbb4a99e958b7f746960554a3f33281d120700000000000000000000000000061119212c364048525b656e76818d949ea7b0bac4cfc5bab0a79e948e82786e635c534940372c221a110700000000000000000000000000000000000a141f29323d47515a636d717c848b909495969596908d867f746f665e554a4137261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161e252b30373c3f454a4c515658585f636567696b6c696e6f6f70706f6f6e686c6a696764625b5c5857524d4b48413e3a352e26241f16110b0400000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000007121e2935404b57616b76828e99a3acb8c0cac9bdb5aca39c938f86817c7977767677787c80858d929aa1aab2bbc6cec3b8aea59b90847a6e63574c40362c21160c010000000000000000000000000008121c262f38424b555e636f7a848f97a0aab5bcc6cac1b8aea59c928b7f736c635950463c312a22170f0600000000000000000000000000000000050f18232e38414a535c636c707a7f8487898a8a8885817c736e665f564d45393127160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21272f353b40474b4f55575a616467686e7073757678797a7b7b7b7b7b7a7a7977767472706b6b6864625b5857524b49453e37332e29201b140d05000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000007131e2a36414d5864707b86919ca8b4bcc8cac1b8ada49c928e837c75716e686a6a6b6b70747b818c919aa2abb5bec8c8beb4a99e95897e7267584f453b30251a0f0400000000000000000000000000020c161f28323a454b56606a717d86919ca3acb6bec9c8beb5aba29c91867d716a60564b453a32281f160c020000000000000000000000000000000009141e28313a434c535b62696f73787c7d7e7e7d7a76706b655e564f463d342920170500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911171e252b30373f454a5156585f63676b6f73777a7c7e818284858686878787868685848381807e7b797673706b6864615b57544f47443e382f2b251e160f080000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f00030f1a25303b454f5868737f8b97a1abb6c1d0c5bab1a89d948e827a706c65635e575e5b62646a6f78808c929ba5aeb8c3cdc3b8aea5998d8276695f554a3f33281c11050000000000000000000000000000060f17222a313c465059636c747f8b929ca5aeb8c1cac6bbb5aaa0968f847a6f635e554b42382f261c120800000000000000000000000000000000040e182129333b434b52596063686c70727372716e6964625b554e463e362d24191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121921272f353b43484f555a6063696e72777b7f8285878a8c8e8f919692929392929791908e8d8b898784827f7b7874706b66635f58544c48423a352e262018100800000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0005111c28333f4a555f6977828e9aa8b1bac5ccc1b6aba1978f837a6f6a625b57544e5352575a61686e78818d959ea9b4c0c9c8beb3a89c90857a6e63574c4034291d120600000000000000000000000000000007111a222d374049535c636e78828e959ea8b1bac5cfc4bab0a79d948d81766e655b524840362c2219110600000000000000000000000000000000071019222b333b42485055575b62646667676563605957524a453d362e251c1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a222931373f454a53585f636a6f74797e82868a8e90969698999b9c9fa69e9e9e9da19c9b9a99979595908e8a8783807b76726e68635d575249453e36302820191009000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0006121d2934404c57636e7985919ca8b3bfcacbbfb4a89c91877c706a6059524b494547484c51585f686f7a84909ba7afb9c4cbc0b5aa9f96887c7165594e42372b1f14080000000000000000000000000000050c12171f2730394349545f686f7b849097a1abb6bcc7cac0b7ada49b918a7e736c625950463b312a21170e050000000000000000000000000000000009121b222a3238424a5257595c5c5c5c5c5c5c5b59544d443a352d251d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131b232b323a41484f555c63686e737a7f848a8e9197999c9fa6a3a5a6a8aaafa9aaaab1aba8a7a6a4a3a59e9c9996938f8b86827d79716d65625b544e4740393129211910070000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f0008141f2b37424e5965707c88969faab5c0ccc3b9afa6998d81766c62595049423e3a383d41474f57606a737f8a969faab5c0ccc4b9afa6968a7f73685c5045392e22160b00000000000000000000000000070f161c21292f33393e454f58616b717d87919ca3acb6bfc9c8bdb5aba29c90857c706960554a443a31271e150c02000000000000000000000000000000020a121c27323d48525b62646767676767676767645e54473f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b232c333b434a52585f636d71797f858b90949a9ca0a7a8aaafafb0b2b3b5b9b5b5b5bab6b4b3b1b0aeaea9a7a5a49d9b97918e89837d77706c635e5751494139312921180e0400000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000a15212d38444f5b67727e8995a6afb9c4cbc0b4a99f95887d71655c53494039332f2e32373e475059636f7a85919ca8b3bfcbc9baafa3988c8075695e52463b2f24180d0000000000000000000000020911171f262c30393e43494d50555a636d75808c939da6afb9c3cec5bbb5aa9f968f837a6f635d544a42372f251c12070000000000000000000000000000000007121e2935404c57626b7073737373737373726e64584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131b232c343c444b535b61696e747d838a90959b9ea5a8abb0b3b5b9babcbdbfc0c4c9c1cac5c1bfbebdbbbab8b4b3b0ada8a7a09c99938f89827c736e68605a514a413a31281e140900000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000b17232e3a45515c68747f8b96a2aeb9c9cabfb3a79c90857a6e63574c433930282423262e36404a55606977828e99a5b1bcc8c7bcb0a5998e82766b5f54483c31251a0e00000000000000000000020a121921272f363b42484c535859606366696e79838f959fa9b5c0cbcec4b9afa69d938c81756e645b52483f352b2118100700000000000000000000000000000007131f2a36414d5964707c7f7f7f7f7f7f7f7e72685f544a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a232b343c444c545c626b707980878f939c9ea5a9aeb4b6babfc0c3c9c8c9cacccfd3cdd4d0cccbcac8c7c8c3c0bebcb7b3b0aba8a49d9a928e867f786f6a615a524a41382e23180d02000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000c18242f3b46525d6975808c97a3afbac6c8bcb1a59a8e8377685f554a3e32282019161e26313b4650596974808b97a3aebac5c8bdb1a69a8e83776c6055493d32261b0f000000000000000000020a121a222a31383f464a53585c6365696f727577787c85909ca7b3bfcad3c9bfb7ada49b91897e726b62584f453b302920170d0300000000000000000000000000000b16222e3945505c67737f8a8a8a8a8a8a8a86796e63574b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018222b333c444d545d646c707b838b91979da4a9aeb4b8bec1c5cacbcdcbcac7c6c4c3c3c3c3c3c4c5c6c8cacbcdcbcac7c2c1bab6b4ada8a39c96918a827a6f6b615b52483d32271c1005000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000d1824303b47525e6a75818c98a3afbbc6c7bbb0a4998d82766a584f453b3022180f0d16222c3645505c68737f8a96a2adb9c4c9bdb2a69b8f83786c6155493e32271b0f0000000000000000010a121b232b333a424850555c62656c71767a7d8082848590959fa9b5c0cbd7d0c7bdb4aaa19c90857c70695f554a443930271d130900000000000000000000000000010c18242f3b46525d6975808c969696969696877b7064584d41362a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e162029333b434c545d646d727d848f939ca0a7adb4b8bfc2c8cccccbc8c2bfbebcbab9b8b7b7b7b7b8b9babcbebfc2c8cbcccccac5c1bdb7b3aca69f9c928e837b706b61574b4035291e1207000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000d1924303b47535e6a75818d98a4afbbc7c7bbafa4988d81756a5e5347372d23180c0812222d3944505c67737e8a96a1adb8c4c9beb2a79b8f84786d61554a3e33271b10000000000000000008121a232b333b434a525960636c70777d8185898c8e8f90969fa6afb9c3ced9d7cdc5bab4a99f958e82796e635d544a41372d23191007000000000000000000000000030e1a25303a454f586b76828d99a1a1a1a794897d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e273139434c545d646d727e8590959da3abb0b8bdc3c8cdcac5c1bfbcb8b4b2b0afadacacabacacadadafb0b2b4b8bcbfc0c4caceccc6c1bcb7afaaa29c938f847b7064584d41362a1e1307000d1925303c47535f6a76818d99a4b0bbc7c6baaea3978c8074695d52463a2f231216222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000d18242f3b47525e6975818c98a3afbbc6c8bcb0a5998e82766b5a51473d32251c13121a222e3a45515d68747f8b97a2aeb9c5c9bdb2a69b8f83786c6155493e32271b0f00000000000000071018222b333c434c535b62696e757c82888d909697999b9c9fa6afb6bfc9d3ddded5cec3b9afa69c938c80746d635a51473c312921180e04000000000000000000000005111c28333e49545f6878838f9ba6adada1968a7f73675c5045392d2211070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a535c636d727e8690969ea5acb6bac1c8cec9c4c1bab6b4b0aea9a7a5a3a1a1a0a0a0a0a1a2a3a5a7a9aeb0b3b5bac0c3c9cfccc7c0b9b5aba49d94897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c6bbafa3988c81756a5e5247372c221716222d3944505c67737e8a96a1adb8c4c8bcb1a59a8e82776b6054483d31261a0f000c18232f3b46525d6974808c97a3aebacac9bdb2a69b8f83786a61564b3f352b221d1d212a333e49535c6a75818c98a4afbbc6c8bdb1a69a8e83776c6054493d32261a0f000000000000030d172029323b434c535c636b707980868e92989c9fa6a5a7a8aaafb6bfc7cfd9e1e2ddd3c8bfb6aca39c91877d716a61564b453a31281e1409000000000000000000000006111d2934404b57636e7a85919ca8b3afa3978c8075695d5246352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d16212b353f47515a636c717d8691979fa6aeb5bcc5cacec7bfb9b5b0aba8a5a59e9b9997969595949495959698999b9ea5a4a8aab0b5b9bfc7ccd0c9c4bcb4ada495897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c7bbb0a4998d81766a5950463c31261b17222e3945505c68737f8a96a2adb9c4c8bcb1a59a8e82776b6054483d31261a0f000b16222e3945505c68737f8a96a8b1bac5cbbfb4a89c91867b6f64584f453b312d29292c313b424d58636c7884909ba7b2bec9c7bcb0a4998d81766a5f53483c3025190e00000000000009131d273039434b535c636c717c838c91979ca3a8aaafb1b2b3b5b9bfc7cfd0d3d6d7d9d9cfc7bcb6aba19790847b6f645e554a41382e23180f060000000000000000000007131e2a36414d58646f7b87969faab5b0a5998e82766b584f453b30251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e26303b454f58616a717d859096a0a7afb7bec6cfc8c3bbb7afaaa7a09c999694908d8c8a89898989898a8b8c8e909495999ca0a7aaafb6bcc3ccd3cfc4b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c9beb2a69b8f84786a60564b3f34281e13232e3a46515d68747f8b97a2aeb9c5c8bcb1a59a8e82776b6054483d31261a0f000915202c37434f5a66717d8997a1abb6c1ccc1b6aba1978a7e73695f554a443c373434363b434b545d65717c88949ea8b4bfcac6baaea3978c8074695d52463a2f23180c0000000000050e17222d374149535c636d717d858f939ca0a7acb3b5b9bcbebfc0c3c9c2c3c4c7cacbced3d7d0c5bab1a89e958d81766e655a51473d322820170d030000000000000000000914202c37434e5a66717d8894a7afb9b2a69b8f8478685f554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e363e4a545f686f7b8490969fa7b0b8bfc7cdc6beb8b4aba69f9c97918e8a878482807f7e7d7d7d7d7e7f808284878a8d91969c9fa6abb3bcc5d0cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a89c91867a6f63584c41372d231d25303b454f586975808c98a3afbac6c8bcb1a5998e82776b5f54483d31261a0e0007121e2935414c58636f7b86919ca8b4bfc9c5bab1a89b8f84796e635d544b4641404041464a535b646e76828e99a5aeb8c2cdc2b7ada495897e72675b5044382d21160a00000000020c151e27313c47515a636c717d8690959da3abb0b8bcc0c4c4c0bfbcb9b7b7b7b9bbbfc0c3c8ced3cac1b8aea59b928a7f736b61574b443930271d13080000000000000000000a16222d3944505c67737e8a95a1adb8b3a89c91857a6e63574c4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e47525b636e79828e949ea6afb7c0c8cdc5bdb6aea9a29b96908c86827e7b79767573727271727273747576797b7e82868b90969ca2abb6c0cbcfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7ccc1b6aba197897d71665a51473d322d2929333e4a545f6877828e9aa5b1bcc8c7bcb0a5998d82766b5f53483c31251a0e0006121d2934404b56616a77838f9aa7b0bac4cac1b4a89e948b7f746d645d56504d4c4c4d50555c636c727e89929ca7b5bec7cabfb3a89d94877b7064584d41362a1e13070000000007121c252f373f4b56616a717d8590969ea5acb5bac0c8c4bfb9b5b3b0adacabacadb0b3b4b9bfc3c8cfc9beb5aba29c90857b6f645e544940372d22170e0400000000000000000c18232f3a46525d6974808c97a3aebab5aaa097877b7064594d41362a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57626c74808b929ca5aeb7bfc7cdc4bdb4ada59e9c918d85807b77736f6b6b696867666666666768696b6b6f72767b80858e929ca7b2bdc9cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d0c5bab1a8998d81766b61564b443c3734343a414b57636e7985909ca7b3bfcac7bbb0a4998d81766a5f53473c3025190d0004101b26313c47515a68747f8b96a0aab5bfc9c2b7ada49c91877d726d636059585757585960636c717c85909ca2abb6c5cfc4bab0a79b8f83786b61574b4035291e1207000000000b16212b353f48545d636f7b8490969fa6aeb6bdc4c7bfb9b5afaaa8a5a2a09fa0a1a4a7a9afb4b9bfc6cdc6bbb5a99f958e82776e645950463c31281e140900000000000000020e1925303c48535f6a76828d99a4b0bbbab0a794897d71665a4f43372c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68707c86919ca3acb5bec7cec5bdb4aca49d959089817b74706b6764615a5d5c5b5b5a5a5b5b5c5e5a6164676a6f747b828e99a5b0bcc8cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d4cabfb3a89c91867b6f645e544b4741403f424a535c66717d89959fa9b4c0cbc6baafa3978c8075695d52463b2f23180c00020d18222d37414c58646f7b86919ca6afb9c4c7beb6aba09790857e746f6a666463636465696f747d8490969faab3bcc5ccc1b5aaa0978b8074685b52483d32271c1005000000030f1a25303b454f58646e76828e949ea6afb7bec6c5beb7afaaa69f9c999695949596999c9fa6a9afb6bdc5cec3b9afa69c928a7e726a60564b42382e23180d0300000000000005101b26313c47515a6c78838f9aa6b2bdb9ada1968a7f73675c5045392e2212070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e78828e96a0aab3bcc6cec7bdb4aca39d948f857e766f6b64615b58565152504f4f4f4f4f5051525156585a61646b707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2ccc0b5aaa0968d81766e645e56514c4b4b4c535a636d76818d99a6afb9c3cec4b9ada2968a7f73685c5145392e22170b000008131d2934404b56616a75808c969faab5bdc9c5bab0a79f969087807a75716f6e6e6f71757a7f8690959ea6afb9c3cec4b9afa69c91867b6f64584d41382e23180d0200000005111c28333f4a555f69727e89929ca5aeb6bfc7c5bdb5ada69f9c96908d8a8988898a8d90959c9fa6adb4bdc4c9bfb6aba29b90847a6f635b52483d32271d130800000000000006121d2934404b56616a7985909ca7b3bfbaafa3988c8075695e5246352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68727e89929ca7b0bac4ccc9bfb6ada49d938f837b726d64615a57524d4b4746454443434344444546474b4d51565a65707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2cfc4bab0a79b928a7e726e63605a585756585c626b717d88929ba6b6bfc8ccc2b7ada494887d71665a4f43372c201509000005101b26313c47515a646f7b85909ca4adb8c1cac1b8afa69f97918c84807d7b7a7a7b7d80848b91969ea5aeb6bfc9c5bdb5aa9f968d81756b61574b4031281e14090000000006121d2934404c57636e7984909ba2abb5bec7c7bdb5ada49e96908b85827f7d7d7d7f81858b90959da4acb4bdc6c7bcb4a99e958c80756b62574c40372d22170d01000000000007121e2a35414c58646f7b86959fa9b5c0bcb0a5998e82766b584f453b30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e78838f9ba3acb7c0cacec3b9afa69d948f837a706b645d56514b4841403d38393838373838393a383d4041474e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2d4cac0b7aba29c91867e756f6a6664636163666c707b848f9ba2abb5c6cfcabeb3a89d93867b6f64584c41352a1e12070000020d18232d37414b56616a747f8b949da8b1bac5c8bfb7afa7a09c95908c8987868586888c90949c9fa6aeb6bec7c5bdb4aba29c90857b70645a51473d3221180e0400000005111c27323d48525b67737e8a949ea8b3bcc5c9bfb6ada49d948f85807a767372717273767a7f858f939da3acb6bec8c3b8aea59c91867b70645a51473c31261b100400000000000814202b37424e5a65717c8894a6afb9c3beb2a69b8f8478695f554a3f33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b66727e89939da8b3bcc8d0c8c0b5aa9f968f837b6f6a615b544b47413d3835322d2e2d2c2c2c2c2d2e2d323537424e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2dad0c8bbb5aba0979187807a75716f6e6a6f71757c838f949ea8b2bbc5d5c9bdb2a69b8f83786a61564b4034291d120600000009131d27323d47515a636e79838f97a1abb6bec8c7bfb8b0aba59e9c98949297919794979b9ea5aaafb7bec6c4bdb5ada49c928b7f736b61574a41382e2311080000000007121e2935404c57626b77838f9aa5aeb8c3cec3b9afa69d948f847c746f6a6866656667696e747b838f939da5aeb8c3c8beb5aaa0968c81756a60564b3f34291d120600000000000a16212d3844505b67727e8a95a1acb8c9bfb3a89c91857a6e63574c4034291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35404c57626b77838e9aa4adb7c4cccac0b8aba29c90857c706a615a524a443d38322e29272324282a2b2b2b2b2b2b2b2b36424e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2dfd8cfc4bab0a7a097918c84807d7b7a797b7d81868f949da4adb7c3cbccc1b7aca3978c8075695a51473c31261b1005000000030d18232d37414a555f69717d87919ca5aeb8c1cac8c1bab6aea9a7a3a09ea19ca1a8a3a7a9aeb5b9c0c7c3bbb4aca49d938e82786e635b52483a31281e14000000000007131f2a36414d5964707c87939da7b5bec7cbc0b5aa9f968f837b706c6360595b5a5b5960636b707a838f959ea9b4bdc7c4bab0a79c91857a6f63584c4135291e130900000000000c17232e3a46515d6874808b97a2aebac5c1b5aaa097877b7064594d41362a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d5964707c87939ca7b4bdc7cfc4bab0a79c928a7e726b625a5149413a322d28231e22292f3336373737373737373737424e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2d6cfc8c3c0b8b0a8a19c95908c8886858586888c91979da4adb5bec7d0c8c0b3a89d93887c7065594e42372d23180d020000000009131d27303b454f58636d75818c949ea7b0bac5cfcac5bfb8b4b3afabb1aba8abb1aeb2b4b8bec4c5bfb9b5aba39d948f837a6f685f544a41382921180e04000000000b17222e3945515c68737f8b96a3acb7c5cdc2b8aea59c90857c706a625b56504f4e4f50555b616a6f7b84909ca4adb7c2c9c0b5aa9f968a7f73675c5045372d23180d02000000020d1924303c47535e6a76818d98a4b0bbc7c4bab0a794897d71665a4f43382c201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d47515a6874808b97a3acb6c5cdccc1b5aba0978e82776e645b524a41393129231e18222b33393e41424343434343434343434e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2cfc6beb8b4b3b4b1aba59e9c98949791919694989ca0a7adb4bdc5cecac0b7aca39a8f83776c62584c4136271d13090000000000040e16212c363f48535c636f7a849097a0abb6bdc7cfcfc8c3c0bebab7bab6b4b6bababebfc2c3c1bab6afa9a29b938f847b6f6a61584f453a312819100700000000040f1a25303b4650596a76828d99a4b0bcc6cbbfb4a99e948b7f736c625a524b46444343464a5259616b727e8a939da8b3becac4b9afa6998d82766b5a51473d32271b1005000000030f1a26323d4954606b77838e9aa5b1bdc8cab9ada1968a7f73675c5045392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404b57616b78838f9ba6b2bcc6d5cbbfb4a89c91867c70645e544b423930292119151f29333b43494d4e4e4e4e4e4e4e4e4e4e4e5965707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7d2c8beb6aea9a7a9aeb6aea9a7a3a7a09c9c9fa7a4a8aab0b7bdc5cdcfc4bab0a79c93897e72665c53483e3328170d0300000000000007121c262f38434a56606a717d87919ca4adb6bfc9d3d2cecbcac6cac5c1bfc1c5c4c1bfbdb9b5b0aba69f9c918d837b6f6b615a51473e3529211809000000000006111d28333f4a5560697884909ba7b2becacabeb3a79b90847a6f635b524a423c3737363b4149515a636e79838f9ba6b2bdc9c9bfb3a79c9085796a61564b4034291d1206000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35414d58646f7b87949da8b3bfcacdc2b7ada4998d81766b62574d443a322920181119242f39434c5358595a5a5a5a5a5a5a5a5a5a5a65707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7cec3b8aea59e9c9ea5acb3b4b3afb0aba8a8aaafafb3b5bac0c8cdcac5bbb5aaa0978e83786e63574b42392f24190700000000000000020c151f27313c465059636d74808c939da6afb9c3ced5d9d6d6d2d4d0ccc4bfc0bab5b3b2afaaa7a09c95908a817a6f6b615a514941372e25191007000000000006121d2935404c57636e7a85919ca8b4bfcbc6baafa3978c80756960554b4239312c2c2c30394149545f68747f8b96a2aeb9c8cbc0b4a99f95867b6f64584c41352a1e1207000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a4adb7c2cdcabfb3a89d94887c71655b52483d342a211810111d28333e49535c6365656565656565656565656565707c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7cbbfb4a99e9590959ca3acb4bcbabab5b4b3b5b9bbbfc1c4caccc9c1bab6aba19c91867c70685e54493e32291f150a0000000000000000050e17222c364049535c636e79838f969faab5bbc5cdd8e0e1ddd4cbc2bab4b0b0aaa8a6a69f9c97918d857f766f69615a514a413930261e150900000000000007131f2a36414d5964707b8797a1abb6c1ccc2b7aba094887d71665950463b322922202128303a454f5865707c8793a6afb9c3cec3b9afa694887c71655a4e42372b201409000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1824303b47525e6a75818c98a3afbbc7d1c9beb2a69b8f84786c63584b42382c24191108131f2a36414d58636c71717171717171717171717171717c87939faab6c1cdc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7cabeb3a79c90848e929ca4acb5b9bfc1bfbfc0c4c9cbcac9c6c1bdb8b1aba29b918b7f736c62574e453a2f22190f0500000000000000000008121d263038434a555f69707c85909ca1abb4bdc7d0d9e3d9cec4bab2aaa5a7a09c9b9896908c86817b736e636059514a413a312920160d0400000000000008141f2b36424e5965707c8893a8b1bac5d0c1b5a99e92877b6f64584d41362a22191218202b35404c57636e7a86959fa9b4c0cbc8b7aba094897d72665a4f43382c201509000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515a6c77838e9aa6b1bdc8d1c5baaea3978c8074695c53493a32281c13090814202b37424e5965717d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8a95a1adb8c4cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f828e939ca3aaafb4b9bcbebfc1c3c0bfbdbbb6b2ada8a19c918d81756f655c53473e352b20120900000000000000000000030d161f28303b454f58626b727e8a919ba4adb7c0c9d3ded5cabfb4aaa19a9897918f8c8985817c766f6b655e5550494139312921181006000000000000000914202b37424e5a65717c88949fabb6cad4c0b4a89d91867a6e63574c4034291d1208111c28333f4a555f697985909ca7b3bfcac3b8aca095897e72665b4f44382d21150a000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56606a7984909ca7b3becacec3b8aea594897d71665a4f43392c21180c03101c27333e4a56616d7884888888888888888888888888888a8f98a3aeb9c5cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7b838e929c9fa6a9afb1b2b3b5b9b4b3b1b0aca7a49d97918b81796e635e554b42362e251b11010000000000000000000000060f18212c363f48525b646e75818d949da6afb9c4cfd6d3c7bcb0a59a918c878583817e7a75706c64615a554a46403831292119100800000000000000000814202b37424e5a65717c88939fabb6cad4c0b4a89d91867a6e63574c4034291d1109111c28333f4a555f697985909ca7b3bfcac3b7aca095897d72665b4f44382c21150a000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935414c58636f7b86959ea9b4c0cbcbbfb4a99e95867b6f63584c4135291e120804101c27333e4a56616d78848f94949494949494949494949495989fa8b2bdc8cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f747a828b90969c9fa6a5a7a8aaafa9a7a6a4a39c9a938f8780786e685f544e453b32261e140b0100000000000000000000000007121c262f38424b545e636f7a838f969faab5bbc5ced2c6bbafa3988c817b7a7875726f6964625b56514a453c3630282019100800000000000000000008131f2b36424d5965707c8793a7b0bac4cfc0b5a99e92877b6f64584d41352b21181318202934404c57636e7a86959fa9b4c0cbc3b7aba094897d71665a4f43372c201509000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c8893a5aeb8c3cecabeb3a79c9084796a60564b3f34291d120604101c27333e4a56616d78848f9b9f9f9f9f9f9f9f9f9f9f9fa1a3a8b0b8c2cccfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746f797f858c9095979a9b9ca0a69f9c9a9896938e89837d746e685f584f453e352a22160d0400000000000000000000000000020c151f27323a444a556069707c86919ca2abb5bec8d0cbbfb3a89c91867c70696a6663605957524b474139312c261f1710080000000000000000000007131e2a36414d58646f7b8796a0aab5c0ccc2b7ab9f94887d7165584f453b3029232122282f3a454e5765707c8793a6afb9c3cec3b9afa693887c7165594e42372b201408000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37434e5a65717d88949fabb7c8d2c8bdb1a69a8e83776c5a51473c31261b100404101c27333e4a56616d78848f9ba7ababababababababababadaeb2b8c0c9d2cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74686e747b8085898c8e9091979195908f8d8a87837e79716c635e574f473f352d251a1105000000000000000000000000000000050e17212a313c465059626c737f8a919ba4adb7c0caccc0b5aa9f968f837a6f635d5755504c48423d373129221c160f07000000000000000000000006121d2934404b57636e7a85919ca8b3bfcbc5baaea3978b8074685f554a4239322d2d2d31394049545e68737f8b96a2adb9c8cbc0b5aa9f96867b6f64584c41352a1e1207000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66717d8994a0abb7c3cec8bcb0a5998e82766b5f5448372d22170d0104101c27333e4a56616d78848f9ba7b2b7b7b7b7b7b7b7b7b7b8b9bdc2c9d1d9cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7468636b6f757a7d808284858686858583817f7b77726e68635c544e473f372e251d140a0100000000000000000000000000000000061119222c364049525b656e76818d949ea7b0bac4cfc4b9afa79d948d81756e645b5248403d38322d272019120d0600000000000000000000000005111c28333e4a545f6878848f9ba6b2bec9c9beb2a79b8f84796e635b5249423d3739373c4249515a636e79838f9aa6b2bdc9cabfb3a89c9085796a61564b4034291d1206000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38444f5b66727e8995a0acb8c3cfc7bcb0a4998d82766a5f53483c302513080004101c27333e4a56616d78848f9ba7b2bec2c2c2c2c2c2c2c2c4c5c8ccd4d4d4cfc3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685a6164696f717577787a7a7a7a79787673706b67635f585349453e362e271e150c0400000000000000000000000000000000000108121c263038424b555e636f7a848f97a0aab5bcc6c9c0b7ada49b91897e726b62584f453b3029231e1710080300000000000000000000000000030f1a25303b454f586a76818d98a4b0bbc6cabfb3a89d948a7e736b625a524b47454445474b5259616b727e89939da8b3becac8bcb1a59a8e82776b5a51473d32271b1005000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d38444f5b66727e8995a0acb8c3cfc7bbb0a4998d82766a5f53483c302512080004101c27333e4a56616d78848f9ba7b2bec9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c3b8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5659606366696b6d696e6f6e686c6a6764625b57544f47433a352e261e160e0500000000000000000000000000000000000000030c161f28323b454b56606a717d86919ca2abb5bec8c7bdb4aaa19c90857c70695f554a443a31271e150b010000000000000000000000000000000b16212b3545505c67737f8a96a3acb7c1ccc2b7ada49c90857b706a625b565151505151565b626a6f7b84909ba4adb7c1ccc2b8aea5978b8074695d5146372d23180d02000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5a66727d8994a0acb7c3cec8bcb0a5998e82766b5f5448372c22170c0104101c27333e4a56616d78848f9ba7b2bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb8aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d515055575a5d6058606363635f585e5c5957524b49453e372f2b251e160e06000000000000000000000000000000000000000000060f17222a313c465059636c737f8b929ca5aeb8c1cac5bbb5aa9f968f83796e635d544a41372e251b110700000000000000000000000000000007111f2a36414d5964707b87939da8b3bfc8c7bdb4a99e958f837a706c64615a5c5b5c5a61636b707a828f959ea9b4bdc6cbbfb4a99e94887d71655a4e43372b20130900000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c37434e5a65717d88949fabb7c9d3c8bdb1a69a8e83776c5950463c31261b0f0404101c27333e4a56616d78848f9ba7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aca195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51464a4c4f52545055575757544f53504d4c48423e3a352e26201b140d05000000000000000000000000000000000000000000000007111a222d374049535c636e78828e949ea7b0bac5cec3b9afa69d938c80756d645a51473f352b21181005000000000000000000000000000007121e2935404c57626b78838f9aa5aeb8c3cec3b8aea59d938f837c756f6a69686768696a6f747c838f939da5aeb8c4cfc4bab0a79b9084796e63574b4034291d110600000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37424e5965717c8893a6afb9c3cecabeb3a79b9084796a60564b3f34281d110604101c27333e4a56616d78848f9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a195897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453f40434648464a4c4c4b4945474541403d3833302b251e16110b040000000000000000000000000000000000000000000000000108131d2730394349545e686f7b849097a0abb6bcc6c9bfb6aca39a90897e726b61584f453b302920160d040000000000000000000000000005111c27323d48525b67737f8a959fa9b4bdc8c8beb6ada49d948f86807b777473737374777b80868f949da3acb5bec8ccc0b5aaa0968b8074685f54493e33281c110500000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86969faab5c0cbcbbfb4a99e95867a6f63584c4035291e150a00101c27333e4a56616d78848f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a95897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a35383b363b3f4040403e3a35393635322e2825201b150d06010000000000000000000000000000000000000000000000000000030d1720282f3a454e57616a717d87919ca3acb6bec9c7bdb4aaa19c90857b6f685f544a433930261e140b01000000000000000000000000030e19232e38424c57636f7a85909ca4adb8c1cac6bdb4ada49d96918c8683807f7e7f8083868c91969da4acb4bcc6cec3b8aea59c91867b6f64584f453a30251a0e0300000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a7985909ca8b3bfcacdc3b8aea594887d71665a4e43392f24190e04101c27333e4a56616d78848f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f897e72675b5044382d21160a000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2c2f2c303334353433302b2d2a2927231e1a16110b040000000000000000000000000000000000000000000000000000000000060f18202b353e47515a636d74808b929ca5aeb8c1cac4bab4a99e958e82796e635c534941362e251b11060000000000000000000000000009141e28343f4a556069747f8b949da7b0bac5cfc4bdb5ada79f9c97918e8c8b8a8a8c8e91979c9fa6adb4bcc4ccc4bcb4a99e958c80756b6156473e352b20160b0000000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a6c78838f9aa6b2bdc9d2c8baaea2978b8074695c53483e33281e14090e1925313c48535f6b76818383838383838383838383838383838383838383838383838383837d71665a4f43372c201509000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2323212528292929282520221f1e1c19140e0b07010000000000000000000000000000000000000000000000000000000000000006111b252e364149535c636e79828e959ea8b1bac5cec3b8aea59c928b80746d635a51473e352b20180f06000000000000000000000000040f1b26313c465059636e79848f97a0abb6bbc4ccc5bdb7afaaa7a09c9a97969596979a9ca0a7aaafb7bdc5ccc4bcb3aaa19c90847a6f635a5147372e251b11070000000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d3747535e6a76818d98a4b0bbc8d2c9bdb2a69b8f83786c62574c42382e231910071924303b47525d687176777777777777777777777777777777777777777777777777777777716d63584d42372b201409000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2312171a1d1d1e1d1c1a16111312110e090300000000000000000000000000000000000000000000000000000000000000000000010b141e263039434a545f686f7b859097a1abb6bcc7c8beb6aca39c91877d716a61574e453a2f2820160d030000000000000000000000010c17222c36404a556069717d87919ca2abb3bbc3cdc7c0b9b5b0aba8a6a3a2a1a2a3a5a8abb0b5b9c0c7cec4bcb4aca39b91897e726a61564a4137261e150b010000000000030f1b26323d4955606c77838f9aa6b1bdc9c5b9ada2968b7f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000913222d3945505c67737f8a96a5aeb8c3cecabeb3a89d93887c70655b52483d322921170f17222d38434e5861686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635d54493f34291e1207000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170c0f11121211110e0b070707050300000000000000000000000000000000000000000000000000000000000000000000000000040d162029303b454f58616b727e87919ca3acb6bfc8c6bcb6aba09790847b6f685e5449433830261d120801000000000000000000000008121c26303b465058636d74808b929ba3abb3bac2c7c9c4c1bab6b4b1aeadadadaeb1b4b5bac0c4c9c8c3bbb3aca49c928d81756e645a5147393127160d04000000000000030f1b26323d4955606c77838f9aa6b1bdc1c1b9ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b36424d5965707c87959ea9b4bfcbcdc2b7ada4988d81756b62574c443a31281f170f1f29343e4750585d5f6060606060606060606060606060606060606060606060606060605a58544c443a30251a0f04000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b040606060605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051018212b353f47515a636d75808c939ca6afb9c3cec5bab0a79e948e82786e635c534940372c221a11070000000000000000000000030c17212c363f48535c636e79818d929ca2aab4b8bec3c9cac5c1bfbdbab9b8b9babdbfc1c4cac9c4beb8b4aaa39c938e82796e635d544940372920170600000000000000030f1b26323d4955606c77838f9aa6b1b5b5b5b5ada2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e7984909ca7b3bec7d1c7bdb3a89c91867b70645d544a413830271f171a242e3740474e52535555555555555555555555555555555555555555555555555555554f4d49443c332a20160b00000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37414a545d636e79828e959fa9b4bac4cac1b8aea59c928a7f736c625950463c312a21170f06000000000000000000000007121c262f38434a545f686f79828e929aa1a9aeb5b9bfc2c7cacbc8c6c5c4c4c6c8cbcac7c2c0b9b5aea9a19b938e837a6f6960554d4439302719100700000000000000030f1b26323d4955606c77838f9aa6aaaaaaaaaaaaa2968b7f73685c5145392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333e49545f6875818c98a5aeb8c2cdccc0b5aaa0968d81766d645a514940383028201b1e272f373e434748494949494949494949494949484f55575957524b4949494949494943423f3a332c231a100600000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e27313a444a555f69707c85909ca1aab4bdc7c8beb5aba29c91867c706a60564b453a32281f160c0200000000000000000000020c161f27303b454f5860696f7a818c909b9ea5a9afb3b7bcbebfc1c5cac3c2c8c2bfbebcb7b3afaaa59e9c918d827a6f6a605950463d34282017080000000000000000030f1b26323d4955606c77838f9a9e9e9e9e9e9e9e9e968b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f5865717d88949ea9b4bfc8cfc4bab0a79b92897e726b615950484038302b251e1c272e34383b3c3d3d3d3d3d3d3d3d3d3a414950585f6364625b534b433b3d3d3d3d373734302a231b130a0000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e162129303b454f58626b727e89919aa4adb7bfc9c6bbb5aaa0968f837a6f635e554b42382f261c12080000000000000000000000050e17212b353f47505960696f79808990949c9fa6a8adb0b2b4b6bab7b7b7b6b8b4b3b0ada8a69f9c95908981796f6a605a51483f362c241810060000000000000000030f1b26323d4955606c77838f939393939393939393938b7f73685c5145392e22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b35404b57636e7984909ba6afb9c3cecac0b7aba29c90857b6f6960585049423a352e29272321292d303132323232322d32373d444a515960696e706c635c534c433b3332322c2b2925201a130b020000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019212b353f48525b646e75808c939da6afb9c4c1c4bab0a79d948d81766e645b524840362c21171006000000000000000000000007111b252e374048505960686e757d848b90959b9da4a4a7a8abb1abacababaea9a7a5a49d9b96918c847e756f69605a514940382f261c1308000000000000000000030f1b26323d4955606c77838787878787878787878787877f73685c5145392e22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c28333e49545f68747f8b959fa9b4bec8d0c8bbb4a99e958f837a6f6960595249453e3735322d2c2b2b2a2b2b2c2c3134383d41474b545a61696f797c716c635c534c433b332b22201e1a16100a02000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f37424a545d636f7a838f969faab5b5b5b5b5b7ada49b918a7e736c625950463b312a20160c0100000000000000000000010b151e272f38404850585f636d727a80858b8f9396999b9ca1a8a0a0a09fa59e9b9996948f8b85807a726e6360595149403930271f160b030000000000000000000007131e2a36414d5864707b7c7c7c7c7c7c7c7c7c7c7c7c7a6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca5aeb8c3cdcec3b8aea59d938e81796f69625b544f4744403d3838373636363738373c3f41474b51565d636b6f7a82857d716c635c534c433b332b231b120b060000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e27313a444a556069707c85909ca2abaaaaaaaaaaaaaba29c90857c706960554a443a30251b10050000000000000000000000050e161f282f3840484f555d63696f747a7f83878b8d90919794949494949394908d8b88847f7b756f6a645d5550484039302820170f05000000000000000000000007121e2935404b57616b707070707070707070707070706f6a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4b56606a74808b959ea9b4bcc6cfc8beb6aca39c928e827a706b635f58544d4b47454342424142424345464b4c51565a61646d717b828e90857d716c635c534c433b332b231b120b0200000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212a313b465059626c737e8a919ba49e9e9e9e9e9e9e9e9f968f837a6f635d544a3f34291e1307000000000000000000000000060f171f282f373f454a545960636a6f73787c7f828486878888898888878684827f7c78746f6a636059544a464038302820180f0700000000000000000000000005101c27323d48525b616464646464646464646464646463615a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25313c465059636f7a84909ba3acb6bfc8cfc6bcb4aba29c928e837c736e68635d585651504f4e4d4d4d4e4f505056585a61646b6f767d858e939590857d716c635c534c433c332b231b120900000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061119212c364048525b646e76818d949393939393939393939393938c80756e64594e42372c20150900000000000000000000000000070f171f272f353b44495055596063686c707376787a7b7c7d7d7d7c7c7a797674706c6863615a565049443b362f2820180f0800000000000000000000000000020d18232e38414a5257585959595959595959595959595856514940372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222c37404b56606a727e8a929ca5aeb8c3cecdc4bbb3aba39c938f857f79716d6864615a5c5b59595959595a5c596063676b6f757b818990959c9f9590857d716d635c534c433c332b23191006000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f38424b555e636f7a838787878787878787878787878787877e72665b4f44382c21150a0000000000000000000000000000070f161e252b303840464a5056585b6264686a696e707171727171706f696b6865625c5856514b464039312c261f170f0800000000000000000000000000000009141e28313a41484b4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47403930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d26313c465059636e78828e959fa9b4bac2cbccc3bbb3aca49d95908a837d78736f6b6a686665646465656668696a6f72767b80858d919c9ea5a69f9590857d716d635c534c433c332a20150b000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f28323a444a56606a6f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584d41362a1e1307000000000000000000000000000000060e151b212830363c40464b4c5257595c586063646566666665646360595c5958534c4b47413c373028211c160f0700000000000000000000000000000000040e18212931383d4041424242424242424242424242413f3c37302820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17222c374049545e68707b85909ca1aab2bbc3ccccc3bcb4ada69f9c938f89837f7b787573727170707071727375787a7e82868c90969ba2a9aeafa69f9690857d716d635c534c433a2f251a0f040000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17212a313c465059616a6f7070707070707070707070707070706f6b61574b4035291e120700000000000000000000000000000000050c11171f262c31373c3f42484c4d51505557595a5a5a5a5a59575550514e4c4842403c37312d272018120c0600000000000000000000000000000000000007101921282e3235363636363636363636363636363534312d2720181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d272f3a454e57616b727e89909aa2abb3bcc3cbccc4bdb6afa9a39d9a938f8b8783817f7d7c7c7b7c7c7d7f808386898d91969c9fa6abb4b8b6afa69f9690857d716d635c53493f34281d12070000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a222c364049515a616364646464646464646464646464646464615a51473d32271c1005000000000000000000000000000000000002070f161c22272c3134383d414245464a4c4d4e4e4f4e4e4d4c4a464542413e3934312d27221d170f080200000000000000000000000000000000000000000910181e2327292a2a2a2a2a2a2a2a2a2a2a2a2a292926221d171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d16202b353e47525b646d74808c919ba2abb3bbc2cecdc7bfb9b4aca7a49d9a96948f8c8a898887878788898a8c8f9197999ca0a7aaafb6bbc3bfb6afa69f9690857d716d63584d42362b1f14080000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000108121d26303841495156585959595959595959595959595959595857514a41382e23180d0200000000000000000000000000000000000000060c12171d2226282e333536363b3f4041424343434242403f3b363636332f2926221d17130d060000000000000000000000000000000000000000000000070e14181c1e1e1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e36414a545d636e78818d929ca2abb2bac3c8cfc8c3bcb6b3ada8a6a49d9b98969493939293939496989a9ca0a7a8aab0b5b9bfc7cec7bfb6afa69f9690857d71665a4e43372c2014090000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28303941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e140900000000000000000000000000000000000000000003080d13171b1f24272a2a2c303334363737383737363534312c2b2a28241f1b18130d08030000000000000000000000000000000000000000000000000004090d1012131313131313131313131313131212100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e26313a4449545e686e79828e929ba2aab4b8bfc6cdcec6c1bdb7b3b2ada8a6a4a2a09f9e9e9e9fa0a2a3a6a8abb0b3b5bac0c3c9cfc9c4bdb6afa8a19c908b8074695d51463a2f23180c00000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18202930373c404142424242424242424242424242424241403d38312921180e04000000000000000000000000000000000000000000000003080c1014191c1e1f212528292a2b2c2c2c2b2a292826211f1f1d1915100d090300000000000000000000000000000000000000000000000000000000000205070708080808080808080808080807060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1621292f3a454e575f696f7a828d919aa1a9aeb6bcc2c7ceccc6c1bebdb7b3b2afadacabaaaaaaabacadafb1b4b6babfc0c4cacecbc7c0b9b5aca69f97918b80746f665b5045392e22170b000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272d3134353636363636363636363636363636363635322e2821191007000000000000000000000000000000000000000000000000000001040a0e111312171a1d1d1f20202020201f1d1d1a171213110e0a050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051019202b353e474f5860696f79818c909c9fa5acb4b8bec3c8cccccac7c2bfbdbbb9b7b6b6b5b6b6b7b9babdbfc1c5cacccecbc5c0bbb7afaaa39d9590877f746f665f564c41372b20150a000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d222629292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231e181009000000000000000000000000000000000000000000000000000000000000030507070c0f11121314141515141312110f0c0808060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0d0e111111111111111111111111110e0d0c09050000000000000000000000000000000000000000000000000000000000000000000206090b0b1111111111111111111111111111070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252e363f48505960696e78808990959ca3a9aeb4b8bec1c7cacdcdcac9c6c4c3c2c1c1c1c2c3c4c6c9cbcccecbc8c3c0bbb6b2aba69f9c938f857e736f665f564f463c32281d120700000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c18140e0700000000000000000000000000000000000000000000000000000000000000000000000104060608080909090808060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141719191d1d1d1d1d1d1d1d1d1d1d1d1d1a191714100a04000000000000000000000000000000000000000000000000000000000002080d111416171d1d1d1d1d1d1d1d1d1d1d1d1d1d1312100d09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141e262f38404950585f686e747e858e929b9ea5a9aeb3b7bdbfc2c7c8c9cbcccfd4cdcccdd4cfcccbc9c8c8c3bfbeb9b4b3aba6a29c96918b837b726d655e564e463e362c22180e030000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d1012121313131313131313131313131313131312100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a1f222425292929292929292929292929292524221f1a140e06000000000000000000000000000000000000000000000000000000040b12181c20222329292929292929292929292929281e1e1c18140e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f27303840484f585f636d727b828990949b9ea5a8adb2b3b7babcbebfc1c4cac2c3c2cac5c1bfbebcbbb8b4b3afa9a7a29c99928e867f79706b635d554e463e362e251c120800000000000000060d14191e2224252929292929292929292929292322201c18120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607080808080808080808080808080808070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f161e24292d30313434343434343434343434343431302d29241e170f0600000000000000000000000000000000000000000000000000040d141c22272b2d2e34343434343434343434343434342a2927231e1810090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f2830383f474f545d646b70777e848b90959b9da4a6a8adaeb1b2b3b5bab6b7b7b7b6bab6b4b2b1afaea9a7a69f9c98928e88827c746e69625b544c453e352e251d150c020000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f272e34383b3c404040404040404040404040403c3b38342e271f17090000000000000000000000000000000000000000000000000006141d252c3236393a40404040404040404040404040403635322e28211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f373e4549545b61646e727a7f848a8f93979b9da4a3a5a7a8aab0ababacababb0aba8a7a5a3a59e9b9895908c87827d76706b636058524a443c352d251d150d05000000000000000000000004080b0d0d1111111111111111111111110b0b09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506111111111111111111111111110b0a08050200000000000000000000000000000000000000000002040607111111111111111111111111110a090705010000000000000000000000000000000000000000000000000a141e272f373e4347484b4b4b4b4b4b4b4b4b4b4b4b4b4847433e372f271911080000000000000000000000000000000000000000000000050e16252d353c4144454b4b4b4b4b4b4b4b4b4b4b4b4b4b41403d38312921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262e353a444a52575d64696f747a7e83878b8f939597999b9ca0a79fa0a0a09fa7a09c9b9a989595908d8985817c76716d64625b555048423a332c251d150d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f11121d1d1d1d1d1d1d1d1d1d1d1d1d161514110c0701000000000000000000000000000000000003080d1012121d1d1d1d1d1d1d1d1d1d1d1d1d151413100b0600000000000000000000000000000000000000000000050f1a242e3740474e52535757575757575757575757575754524e4840372a21180e04000000000000000000000000000000000000000000020c151e27353e454b505157575757575757575757575757574d4b48413a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b303a41484b54596063696e73787c808386898c8e8f9197939494949493939791908e8c8a8784817d7a75706c65635c57524a463f38312a231b140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060707070707070707070707070606040100000000000000000000000000000000000000000000000000000000050c12161a1c1d2829292929292929292929292922211f1b17110b03000000000000000000000000000000070d13181b1d1e2829292929292929292929292921201e1b16100a03000000000000000000000000000000000000000009141f29343e4750585d5f636363636363636363636363635f5d5850483a31281e140900000000000000000000000000000000000000000007111b252f37454e565b5d63636363636363636363636363625857524a41382e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b202931383d44495055596063676c7074787b7d80828485878788888988888787858482817e7b7976726e6965625b58534c48423b362f272119130b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f111212121212121212121212121212110f0c080300000000000000000000000000000000000000000000000000060e151c21252829343434343434343434343434342d2c2a26211b140c03000000000000000000000000000810171d22262929343434343434343434343434342c2b2925201a130b03000000000000000000000000000000000000000c17222d38434e5861686b6e6e6e6e6e6e6e6e6e6e6e6e6e6b6861584a42382e23180c0200000000000000000000000000000000000000000b16212b353f48565f65686e6e6e6e6e6e6e6e6e6e6e6e6e6e64615b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b111921282e323840464a5055575b6265686a6f727577787a7b7c7c7d7d7d7c7c7b7a78777573706b6a66635f5857524d49433d38302c261f1711090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1c1d1e1e1e1e1e1e1e1e1e1e1e1e1e1d1b17120d060000000000000000000000000000000000000000000000050e171e252b3033343f404040404040404040404040393835312b241c140b01000000000000000000000007101820272d3134353f404040404040404040404040383734302a231c130a000000000000000000000000000000000000000d1924303b47525d6871767a7a7a7a7a7a7a7a7a7a7a7a7a7671685b52483d32261c120800000000000000000000000000000000000000030f1a25303b454f58656f747a7a7a7a7a7a7a7a7a7a7a7a7a7a706b61574b4035291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010710181e232830363c3f464a4c5257595a616466696b686e7070717172717170706e696b696764625b5a57554f4c48423e39322e28211c160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21252829292929292929292929292929292826221c160f07000000000000000000000000000000000000000000020c151e272f353b3f404b4b4b4b4b4b4b4b4b4b4b4b4b4443403b342d241b110700000000000000000000030d17202930373c40414b4b4b4b4b4b4b4b4b4b4b4b4b43423f3a342c231a10060000000000000000000000000000000000000e1925313c48535f6b76818585858585858585858585858581766b62574c40362c21170c0100000000000000000000000000000000000005111c28333e4a555f68747f85858585858585858585858585867b7064584d41362a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14171f262c31363b3f42484c4d5156585b5d585f63646565666666656564635f585e5b5957524f4c4a453f3e39332f29231e17120c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252b3033343535353535353535353535353534312c261f170f06000000000000000000000000000000000000000007121c252f373f454a4c56575757575757575757575757504f4b453d342b21170c0200000000000000000008131d27303941474b4c575757575757575757575757574f4e4a443c342a20160b0100000000000000000000000000000000000914202c37434e5a66717d88939191919191919191919191867c70645950463b31261a0f0400000000000000000000000000000000000006121d2934404c57636e79849091919191919191919191918d81766b61574b4035291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090f161c22262c3033383e4142474b4c4f524f555758595a5a5a5a5a595857554f52504d4c4843403f3b36332e29241f18140e07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f353b3f40404040404040404040404040403f3c3630281f160d03000000000000000000000000000000000000000b16212b353f484f5557626363636363636363636363635c5a554e453b31261b0f050000000000000000020d18222d374149515658626363636363636363636363635b59544d443a30251b1005000000000000000000000000000000000008141f2b36424d58636d78838f9aa59c9c9c9c9c9c9ca1978c80746960554a3f34281f150a000000000000000000000000000000000005111c28333e48525b66727e89949e9c9c9c9c9c9c9c9c9d93887d71655b52483d32271c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171c2125282e3335373c40414346454a4c4d4d4e4e4f4e4e4d4d4c4a45474441403d383433302c26241f1a151009040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f373f454a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a46403830261c1208000000000000000000000000000000000000030f1a25303b454f585f636e6e6e6e6e6e6e6e6e6e6e6e6e67655e554b4035291f150b000000000000000004101b26313c47515a61636e6e6e6e6e6e6e6e6e6e6e6e6e66645d544a3f34291e1307000000000000000000000000000000000007121d28343f49535c67737e8a959ea9a8a8a8a8a8b1a89c90857a6f63574c43392f241a0d03000000000000000000000000000000010b151e2a35414c57626c77828e9aa5aea8a8a8a8a8aea59a8f83786d63584a41382e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c12171a1f24272a2d32343538353b3e40414242434343424241403f3b36393635322e292825211c19150f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f484f55575858585858585858585858585755504940362c22170c01000000000000000000000000000000000005111c28333f4a555f696e797a7a7a7a7a7a7a7a7a7a7a7a736e655a4f43392f241a0d030000000000000006121d2934404b56616a6f797a7a7a7a7a7a7a7a7a7a7a7a726d64594e42372b2012080000000000000000000000000000000000040f1a252f3a434c57636f7a84909ca7b0bab4b4b4b4a99f958a7e73675c53493e33271d130900000000000000000000000000000007111b25313c47515a65707c87929ca7b5b4b4b4b4b4a99e958a7e73675c53493a31281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f14191c1e2326292a2c2b3033343636373738373736363433302c2d2a2927231d1c1a16120c0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f585f6363636363636363636363636363605950463c31261b0f04000000000000000000000000000000000006121d2934404c57636e79858585858585858585858585857f73675c53493e33271d1309000000000000030e1a25303a454f58636f7b868585858585858585858585857e72665b4f43372c22170c0100000000000000000000000000000000000b152028343f4a55606974808c97a0abb5c1bfc3b8aea59a8f83786c63584d41372d23180c0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b16212b353f4b56616a75818c98a3acb6c5bfc4bab0a79c90847a6e63574c43392921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040a0e1113181b1d1e21212528292a2b2b2c2c2c2b2b2a29282521211f1e1c1914110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6960554a3f34281d110600000000000000000000000000000000000814202b37424e5a65717c8896919191919191919191918f83786d63584d41372d23180b01000000000005111c28333e49545f68747f8b96919191919191919191918c8075695950463c31261b0f040000000000000000000000000000000000040f1a26313b465059646f7b86919ca8b4bdc6c8bfb3a89d93887d71655a51473c32251b11171717171717171717171717171717171a25303b454f58636f7b85909ca8b3bcc6ccc0b5aaa0968b80746960554a3f33281d100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090d10121211161a1c1d1e1f20202020201f1e1d1c1a16121312110e09050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e797a7a7a7a7a7a7a7a7a7a7a7a7a6f63574c4035291e120600000000000000000000000000000000030e1a25303a454f5868737f8b969c9c9c9c9c9c9c9c9c9d93887d71655a51473c31251b1107000000000006111d2934404b57636e79848f9b9c9c9c9c9c9c9c9c9c9a8f83776a60564b3f34281d11060000000000000000000000000000000000010c17212c36404b57616b76818d99a3acb7c1ccc1b7aca3988d81766a61564b3f352b2122222222222222222222222222222222222228333e4a545f68737f8b969faab5c0cccbbfb3a89c91867b6f645950463b30251a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050607070b0f111213141415151414131312110f0c07070705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e86868686868686868686868683776c6055493d32261b0f0000000000000000000000000000000005111c28333e49545f6876828d99a5a8a8a8a8a8a8a8ada4988d81766a61564b3f352b21160b0000000005101c27323d48525b66727d89949ea8a8a8a8a8a8a8a8a89c91867a6f63584c4035291e120700000000000000000000000000000000000008121c26323d47515a65717d88939da8b3bec8c6bdb3a89c91867b6f64584f453b302e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e34404b57636e79848f9ba6afb9c4ccc1b6aca3988d81766b6156483f362c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060708080909090808070605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89929292929292929292928f83776c6055493d32261b0f0000000000000000000000000000000006111d2934404b57636e7985909ca7b3b4b4b4b4b4b4b3a89c91857b6f64584f453b30251a0f0300000007121e2935404c57626b76828e99a4adb7b4b4b4b4b4b6aba097897d71665a4f43362c21170c010000000000000000000000000000000000020c18232e38414d58636d78838f9aa5aeb8c3ccc0b5aaa0968b7f74685f554a3e3939393939393939393939393939393939393939393e48525b66727d89949ea8b7bfc9c9beb3a79c93887c71655a5147382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e89959d9d9d9d9d9d9d9d9a8f83776c6055493d32261b0f0000000000000000000000000000000008141f2b36424d5965707c87959fa9b4c0bfbfbfbfc0b5aaa0968b7f74685f544a3e33281e14090000040f1a25303b46505864707b86919ca8b4bec7bfbfbfc5bab0a7978b8074695950463b30251a0f0400000000000000000000000000000000000009141e28333e49535c67737e8a959ea9b4c0cac4bab0a79b9084796e63574c45454545454545454545454545454545454545454545454c57626c77828e99a4adb7c7cdc2b8aea59a8e83776c63584a4137271f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b090603000000000000000000000105080a0a1111111111111111111111111111110f060604010000000000000000000000000000000000000000000000000000000000000000000000000000030506060606050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1a9a9a9a9a9a9a69a8f83776c6055493d32261b0f000000000000000000000000000000000b16222e3945505c67737f8a96a6afb9c3cecbcbcfc4bab0a79b9084796e63574b42382e23180c020006111d28333f4a55606974808c97a0abb6c1cecbcbd4cabdb1a59a8e83776960554a3f33281d1106000000000000000000000000000000000000040e1a242f39434c57636e7a84909ca7b0bac4cac0b4a99e94897e72665b525151515151515151515151515151515151515151515151505964707c87929ca7b5bec7cbbfb4a99e94897e72675c5349393127170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000001070c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b12110f0c080300000000000000000000000000000000000000000000000000000000000204060709060b0e1011121212110f0b070a08070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb4b4b4b4b1a69a8f83776c6055493d32261b0f00000000000000000000000000000005111c27323d48525b6a76818d99a4b0bbc8d2ddded3c9c0b4a89e94897d72665b52483d32261c12070006121d2934404c57636e7a84909ca7b0bac5cfded6d6cbbfb3a89c91857a6e63574c4035291d1107000000000000000000000000000000000000000b151f28333f4a55606974808b97a0aab5c1ccc2b8aea59a8e82776c625c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c606a75818c98a3acb6c5cfc4b9afa79b9084796e63574c4339292017070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b0400000000030a11171b1e2121292929292929292929292929292929261e1d1b17120d06000000000000000000000000000000000000000000000000000104080d101212151116191c1d1d1e1d1c1a1611161313110e0a0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c0c0bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000007121e2a35404c57626b7984909ba7b3becad5e1e3d9cdc2b8aea5998e82766b62574c3f362c21170c06111c28333e48535c67727e8a959ea9b8c1cad4dfe3d7ccc0b5aaa096887d71655a4e43352b21160b00000000000000000000000000000000000000040f1a25303b465059646f7b86919ca8b3bcc6c7beb2a79c92877c706868686868686868686868686868686868686868686868686868686f7a85909ca8b3bcc5ccc0b5aa9f968b7f74695f554a3f33281c100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d040000030c131b21262a2c2d34343434343434343434343434343432292826221c160f070000000000000000000000000000000000000000000003080c0f13181b1d1e21232024272929292928252124221f1e1c1914110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000008131f2a36414d5964707c87959ea9b4bfcbd6e2e7dcd1c7beb4a89c91867b70645950463b30251a0f07131f2a35414c57626c77838e9aa5aeb8c8d1dae4e5dacfc4bab0a7978b7f7468584f453b30251a0f03000000000000000000000000000000000000010c17212c363f4b56616b76818d99a3acb6c1ccc1b6aca3988c8075737373737373737373737373737373737373737373737373737373737f8a969faab5c0cccbbfb3a89c91857b6f64584f453b30251a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b02020b131c242b303538384040404040404040404040404040403d3534312c261f170f060000000000000000000000000000000000000003090d12171b1d222629292c2f2b2f333435353433302b302d2b2a28241f1c19140f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000000000a16212d3944505b67737e8a95a5aeb8c2cdd8e4ebe1d8ccc1b6aba1978c80746960554a3f33281f15101b26313c46505965707c88939ca7b6bec8d9e1eae9ded3c9bcb1a5998e8277685f554a3e33281c11050000000000000000000000000000000000000007121c26323d47515a65717d88939da7b3bec8c6bcb3a89c90857f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f848f9ba6afb9c3ccc1b6aca3988d81756a6156483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12080a131b242c343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49403f3c3630281f160d030000000000000000000000000000000002070d13181d2226282d313435383a353a3e404040403e3b353b393635332e2a28241f1a15100904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060606040a16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000000005101c27323d47515a6a75818d98a4afbbc8d2dce7f1e6dbd0c5bab1a89c90847a6e63574c43392f2419121d29343f4b56606a75818c98a3acb6c6cfd8e9f2ede2d6cabfb3a89c90857a6e63574c4034291d110600000000000000000000000000000000000000020c18232d38414d58636c77838f9aa5aeb8c3cbc0b5aa9f96908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949ea8b6bfc9c9beb2a79c92887c70655a5147372f251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d121a232b343d444a4e50575757575757575757575757575757554c4a46403830261c1208000000000000000000000000000000050c11161d23262c3134373c3f4143464845494b4c4c4c4a4549474442413e3935332e29252019140e08010000000000000000000000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c16212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000000007121e2935404b56616b78848f9ba7b2bec9d5e1ecf4e9dfd4cac1b4a99e958a7e72675c53493e33271d131e2935404c58636f7a85909ca8b3bcc6d6dfe8f9eee2d7cbc0b5aa9f96887c7165594e42352b20160b000000000000000000000000000000000000000009131e28333e49535c67727e8a959ea9b4c0c9c3b9afa69f9c96969696969696969696969696969696969696969696969696969696969b9ea4adb7c7cdc2b8aea59a8e82776c62574a4137271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c1119222a333c444d54595b636363636363636363636363636363605755504940362c22170c0100000000000000000000000001060e151b21272d31363c3f40474b4c4f51544e5457575857554f5452504d4c4842413e39342f2a231e181107020000000000000000000000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1d1a1712212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000000007131e2a35414d58646f7b87949ea8b4bfcad6e1edeeeee4dacec3b8aea59a8e83776c62584c40372d221d29343f49535d68737f8a969faab5c0cbd7e2eeeef0e4d9cec3b9afa6968b7f7368574e453a2f24190e0300000000000000000000000000000000000000040e1a242f39434c57636e7a84909ba7b0bac4c9bfb6afaaa8a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a7a8adb5bec7cabfb4a89e94897e72665c5348393027170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b20182129323b434c545e64676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c63605950463c31261b0f040000000000000000000000020911161e252b30373c40464a4c5156585b5d5f575e636363635f58605e5c5957524d4c48423f3a322e282119120c0500000000000000000000000000000000000000000000000000000000000002070c0f14181c1e1e2220242729292928252123212d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000000000a15212d38444f5b67727e8995a4adb7c2cdd8e3e5e3e2e3ddd2c8bfb3a79c93887c70655a51473c31251f2b36424d58636d78838f9ba6afb9c4ced9e3e2e3e5e8ddd3c9bcb0a5998d8276685e54493e33271c100500000000000000000000000000000000000000000a151f28333f4a555f6974808b96a0aab5c0ccc7bfb9b5b3adadadadadadadadadadadadadadadadadadadadadadadadadadadadadb2b4b7bec5cec4b9afa69b9084796e63574b42392920170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d222028313a424b545d646e727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776f6960554a3f34281d110600000000000000000000030b131a21272f353b41474b5056585a616366696b6c686e6f6f6e686d6b6a6765625b5957524d49433d38312a211c160f0700000000000000000000000000000000000000000000000000000001070c12171a1e2327292a2d2b2f3334353433302c2e2b2d3844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000004101b26313c47515a6975818c98a3afbbc7d1dcdfdad7d6d7dad8ccc1b6aca3988c81756a60564b3e352b27323d47515a66717d88949da8b7bfc9d3dad7d6d7dadfe1d6cabeb3a79c9084796e63574b4034291d11060000000000000000000000000000000000000000040f1a25303b454f58646f7b86919ca8b3bcc6cfc9c3c0bfb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bebfc2c7cecbc0b5aa9f968b7f73685f544a3e33281c100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e1f283039414a535c636d727e858585858585858585858585858585837a6f63574c4035291e1206000000000000000000030c141b232a32373f454a5156596063676a6f72747678797a7a7a7a7978777573706c6965625b58534c48423a302c261f170f0700000000000000000000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a36353844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000006121d2934404b56616a78838f9ba6b2bdc9d5dad4cfcccbcccfd4d0c6bcb3a89c90857a6f63574e453a2f2934404b56616b76828d99a4adb7c7d0d4cfcccbcccfd4dad6cbc0b4a99f95877c7065594d42362b1f14090000000000000000000000000000000000000000010c16212c363f4b56616a76818d98a3acb6c1ccd3cecbcac5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c9cacdd1d6cabfb3a89c90857b6f63584f453b30251a0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e262f384049525b626c717d86919191919191919191919191958f847b6f6960554a3f34281d11060000000000000000030c141c242c333a42484f555a61646a6f73777b7d8082838585868685858483817e7c7875706c66635d57524b453b362f2720180f070000000000000000000000000000000000000000000000060d151b20262c3033383d4041444745494b4c4c4a46484542413e44505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000007121e2935414c58636f7b86919ca8b4bfcbd6d1cac5c1bfc1c5cad1cbc0b5aa9f968a7f73685e54493e33303b454f58646f7b86919ca8b3bdc7d1cac5c1bfc1c5cad1d9cec3b8aea5968a7f73675c5045382e23190e03000000000000000000000000000000000000000007121c26323d47515a65717c88939ca7b2bec8d2d9d7d6d0cdc6c1bebdbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbdbec1c6cdd0d5d6d8d6cbc0b6aca2988c81756a6156473f352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e2e374048515a616b707c859096a09c9c9c9c9c9c9c9c9f9690857c706a615950463c31261b0f0400000000000000020b141c242d343c444b52585f636a6f757a7e8285898b8d8f909197919691908e8c8a8784807c77716d64625b554a463f38302820180f060000000000000000000000000000000000000000020911161e252b30363b3f42484c4d50534e54575757555054514e4c4844505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000000915212c38434f5b66727d8997a1abb6c1ccd1c8c1bab6b4b6bac1c8cec4b9afa69b8f83796e63574b4138333f4a555f6974808b97a0aab5c1cdc8c1bab6b4b6bac1c8d1d2c8bbb0a4998d81766a5b52483d32271c11050000000000000000000000000000000000000000020c18232d37414c58636c77838e9aa5aeb8c2cdd9e0d6cdc4bdb7b3b2b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b2b6bcc4cdd6e0e0d4c9bdb2a79c92877c70645a5147372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2b353e475059616a707b8490959fa7b0a8a8a8a8a8aba09790867d716b625a514940362c22170c010000000000000009131b242d343d454c545b62686e747b80858a8e919797999b9c9ca19da09c9b9a989694908c87827d77706b655e555048403830281f160d04000000000000000000000000000000000000040b131921262e353a3f464a4c5257585c5e575e63636360585f5d5957534c505b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000000040f1b26313c4650596975808c97a8b1bac5d0cac1b8b0aba8abb0b8bdc5c9bfb3a89d94887d71665a51473d34404c57636e7984909ba7b0bac4cac1b8b0aba8abb0b8c1cad4cabeb3a79b9084796b62574c4035291e120700000000000000000000000000000000000000000009131d27333e49535c67727e89949ea9b4c0c9d3dbd1c6bdb4ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7acb3bcc6d0dbd8cdc2b7ada4998e82776c6257494037271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a303a454f5860696f7a838f959ea6afb7b4b4b4b2aaa19c91877e726c635b524a413830261c120800000000000000081119232c343d454d555d636c70797f858c90959a9ca0a7a5a6a7a8abb0aaa8a7a5a4a59e9b98938e88827c736f6360595049403830261e150b0100000000000000000000000000000000040c141b232a31373e45495055575b6264676a6c686e6f6e696d6b6865625c57555b67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000006111d28343f4a55606977838f9aa6b1bdcacfc5bab0a7a09ca0a7adb4bdc7c2b7ada4998d81766b61564b3f3d48525b66727e89949ea9b7c0cac5bab0a7a09ca0a7b0bac5cfcbbfb4a99e94877b7064594d41362a1f1309000000000000000000000000000000000000000000040e19242f39434c57636e7984909ba7afb9c4cfd7ccc1b7ada49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ca3acb6c1ccd7d6cabfb3a89d94897d72665b5248393027160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a3d4449545f686f79828e939da5aeb6bfc4bcb3aba29a908a7f736d645c534b423931281f160d03000000000000040e18212a333c454d555e656d727c838b90969c9fa6a8aab0b0b2b3b4b6bab5b3b2b1afaea8a7a39c9a928e857f766e696059504940372e251b1107000000000000000000000000000000040c141d242c333a42474f54596063676b70737677797a7a7a79787674706c6763605867727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000006121e2935404c57636f7a85919ca8b4bfcbccc1b6aba09791979da4adb7c2c7bdb4a89c91867b6f64584f45414c57626c77828e9aa5aeb8c8ccc1b6aba0979197a0abb6c1cccdc2b8aea5958a7e73675b5044382d23180d020000000000000000000000000000000000000000000a151f28333f4a555f69747f8b969faab5c0ccd5cabeb3a89d938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e939ca7b2bec9d5cec3b9afa69b8f83796e63574b42382920170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453c444d555e636e78818d939ca4adb5bec5bdb4aca29b918b80746e655d544c433a322920170f060000000000000009141e28313a434c555e656e737e858f939c9fa6a9afb3b5babcbdbfbfc1c4c0bfbebcbbb8b4b2aca7a29c96908a81796f6a605950473e352b20160d0400000000000000000000000000030b141c242d353c444a52585f63696e73777b7e8183858586868584827f7c78736e696467727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000000915202c37434f5a66717d8997a0abb5c1cccbbfb4a89c91868f949da8b3bfc9c1b5aba0978b8074695f554a46505964707c87929ca7b5bec8c1b6aca39c9185919ca8b4bec8d2c8bbafa4988d81756a5a51473d32271b1005000000000000000000000000000000000000000000030f1a25303b454f58636f7b85919ca8b3bcc6d0c9bdb2a69a8f838282828282828282828282828282828282828e9aa6b1bdc8d4cbc0b5a99f958a7f73685f54493e33281c100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5145434c545d656f75808c929ba3acb4bdc6beb5ada49c928d81786e635e554d443b332a2118100700000000000000050e16232e38424a545d656e737f8790959da3aaafb5b9bfc1c4cac7c4c2c2c1c2c3c6c8c7c2bfbcb6b2aca69f9c918d827a6f6a60584f453a30261e140b010000000000000000000000010a131c242d353d454c545b62686e737a7e83878a8d8f90919796918f8d8b88837e79726d67727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000000040f1a25303b4650586974808b97a7b0bac4cfc8bcb1a5998e82838f9ba6afb9c4c4bab0a79b9084796e63574c4a55606975808c98a3acb6c6c9beb2a79c938c808c98a5aeb8c3cec9beb2a79b8f84786b61564b4034291e1206000000000000000000000000000000000000000000000b16212b353f4b56616a75818d98a3acb6c1ccc5baaea3978b8077777777777777777777777777777777777e8a95a1adb8c4d0c5bab1a89c90857a6f63584f453a30251a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51454b535d646e747f8b919aa2abb3bcc5bfb6aea59d938e82796e685e544e453c342b2219110800000000000000010b151e27323d48525b636d737f8791979fa6acb5b9bfc3c9c3c0bfbcb9b7b6b6b6b8babebfc2c7c6c1bcb7afaaa29b938e827a6f685f544942362e251b1106000000000000000000000007121a242c353d454e555d646b70787e848a8e9396989a9c9ca1a09c9b9997938f8a837e756f727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000006111d28333f4a55606977828e9aa5b1bccacfc4bab0a7978b7f7f8a969faab5c0cac0b4a99e95897e72665b524c57636f7a85909ca7b3bcc6c3b8aea59a8e827c87959ea9b4bfcbcabfb3a89d94877b6f64584d41352a1e13080000000000000000000000000000000000000000000007121c25313c47515a65707c88929ca7b2bec7cabeb3a79c90847a6e6b6b6b6b6b6b6b6b6b6b6b6b6b6d78838f9aa6b2bdc9ccc1b6aba1978c80756a6056473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d514a525b636d727e87919ca1aab2bbc4c0b7aea59e948f837a6f695f574e453d352c231a1209010000000000000007111b252e373f4c57626b717d869197a0a7afb6bcc3c9c4bfb9b5b3b0adabaaaaabacafb2b3b7bdc2c7c7bfb9b5aba39c938d81786e635c53473e352b20160b00000000000000000000060f18222b343d454e555e656d727c828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000000006121d2934404c57636e7a85919ca8b3bfcbccc1b5aba097887d7a85909ca8b3bcc6c2b8aea59a8e82776c6257535c67737e8a959fa9b4c0cbbfb4a99e958a7e7984909ca7b3becacdc2b7ada495897e72675b4f44372d22180d02000000000000000000000000000000000000000000020c18222d37414c57626c77828e9aa5aeb8c2cbbfb4a99e958a7e72675c6060606060606060605a65717d88939da8b3becacbbfb4a89c91867c7064595046372e251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51515a626c717d869197a1abb1bac3c1b8afa79f9590847b6f6a60584f473e352d241b130a0200000000000000000b16212b353f47545d64707b859097a0a8b0b8bfc7c7c0b9b5afaaa8a5a1a09f9e9fa0a3a7a8adb3b7bdc5c9c4bbb3aca39c928b80746c62574e453a2f24190e030000000000000000030d161f28323b444d555e656e737e858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1acb8c3c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000000914202b37434e5a65717d88969faab5c0cccbbfb4a89c91857a75818c98a3acb6c1c8beb2a79c92877c70645958636d78838f9aa6afb9c3c5bab0a79c90847a76828d99a5b0bcc9d1c7baafa3988c8175695a51473c31261b10040000000000000000000000000000000000000000000009131d27333e48535c66727e89949ea8b4bfc9c3b8aea59a8f83776c63585454545454545456616b76818d99a4adb7c1ccc2b7ada4998e82766b6257494037261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d515a616b707c859096a0a8b1bac2c5bab0a79f9690857c706b615950483f362e251c140b030000000000000000030f1a25303b454f58646e77828e959fa7b0b8c1c8c6beb7afaaa69f9c99969493939495989b9da4a8adb4bbc3cec4bcb3aba29c91867c70685e54493e33271e140a000000000000000008121d263038434b545d656e737f8790969ca3a9aeb3b6bbbdbfbfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb9c4c9bdb1a69a8f83776c6055493d32261b0f00000000000000000000030f1a25303b454f5868747f8b96a7afb9c4cfc9bdb1a69a8f8378707c88939ca7b2bec8c1b6aca3988c807569605a65717d88939da8b6bfc8c1b6aba0978b8074747f8b96a7b0bac4cfc9bdb2a69b8f83786a61564b4034291d120600000000000000000000000000000000000000000000030d19242f39424b57636e7984909ba6afb9c4c8beb3a79d93887c71655a5147484848454f58646f7b86919ca8b3bdc6cabeb3a89d93887d71665b5248383026160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d58606a6f7b8490959fa7b0b8c1c2bbb6aba09791867d716c625a514940372f261e140c0400000000000000000005111c28333e4a545f68727e89929ca6afb8c0c9c6beb5aea79f9c96908d8a88888788898c8f949b9da4abb2bbc3cbc4bbb5aaa0978f83786e63574b42382e24190e03000000000000010c17222c364049535c646e737f8a91979fa6acb4b8bec1c6c9cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfcac9bdb1a69a8f83776c6055493d32261b0f0000000000000000000005111c28333e4a545f6877828e99a5b0bcc9d3c6baafa3988c80756c77838e9aa5aeb8c3c6bcb3a79c90857a6f63616a76818d98a4adb7c7cbbfb4a89c91867b70717d8896a0aab5c0cccbbfb4a89c91867b6f63584c4135291e120800000000000000000000000000000000000000000000000a151f28333e4a545f68747f8b969faab5c0cbc1b6aca3988d81766b61564b3f363f4a555f6974808b96a0aab5c0cec3b9afa69b8f83796e63574b42382920160600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685860696f7a838f949ea6afb7c0c3bbb2aaa19c91877e726d635b524a413830271e160d040000000000000000000006121d2934404b57636e79838f9ba3acb6bfc8c8bfb6aea59e96918b85827f7d7c7c7c7e8084898f949ba2abb2bbc5cfc4bab0a79d93897e72665b52483d32271c1105000000000000040f1b26313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f0000000000000000000006121d2934404b57636e7a85909ca7b3bfcacdc2b8aea595897e7267727e8a959ea9b4c1cac0b4a99f958a7e7367646f7b85919ca8b3bdc6c2b7ada4998d82766b6e7a85919ca8b3bfcbccc1b6aba197897d72665b4f43362c22170c0100000000000000000000000000000000000000000000030f1a25303b454f58636f7b85909ca8b3bcc6c6bcb3a89c91867b6f64584f453b404c57636e7984909ba7b0bac4cbc0b4a99f958a7e73685e54493e33271c0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685f686e79828e939da5aeb6bfc4bcb3aba29a908a7f736e645c534b4239312820170e050000000000000000000004101b26313c47515a66727e89949da8b3bcc6cec3b8aea59e959086807b7673717070717275797e838d929ba2abb4bdc7cac0b7aca39a8e83776c62574c41352a1e1207000000000006101a232b343f4a56606a707c859097a1abb0b8bfc7c9c3beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f0000000000000000000008141f2b37424e5965707c88959fa9b5c0cbcbbfb4a99e94877b70646e7a84909ca7b0bac5c3b9afa69a8f83786c68747f8b96a0aab5c0cabfb3a89d94897d71666977838e9aa6b1bdc8d0c5bab1a8978c8075695950463c31261b0f0400000000000000000000000000000000000000000000000b16212b353f4b56616a75818c98a3acb6c1ccc0b5aaa0968b8074695f554a3f48535c67727e89959ea9b7c0cac4bab0a79c90857a6f63574e453a2f24190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7468636e78818d929ca4adb5bec5bdb4aca39b918c80746f655d544c433a322920180f06000000000000000000000006121d29343f4b56616a76828e99a4adb7c3cccbc0b4a99f9590847d746f6a676665646566686e727a818d929ba4adb7c2ccc8bcb3a79c93877c7064594d42352b21160b00000000000b16202a333e49535c636f7a848f969fa8b1bac1c8c7bfb9b5aea9a7a3a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f000000000000000000030e19242f3a454e5768737f8a96a6afb9c3cecabeb2a79b9084796b616974808b97a0abb6c1c8bfb3a89d93887d716e79848f9ba7b0bac4c4b9afa69b8f84796e636975808c97a3aebac7d1cabdb1a69a8e83776960554a3f34281d1106000000000000000000000000000000000000000000000007111b25313c47515a65707c87929ca7b2bdc7c4bab0a79b90847a6e63574c434c57626c77828e9aa5aeb8c8ccc1b5aba0978c8074696055473e352b20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74686f75808c919ba3acb4bdc6beb5ada49c928d81786e635e554d443b332a2119100700000000000000000000000007121e2935414c58636f7b86919ca8b4bdc7cbc0b5aba29c90857c716c63615a5a59595a585f636a6f78818d939da8b3bdc6ccc1b6aca3978b807468584f453b30251a0f03000000040f1a252f3a414d58636c75818c949ea6afb8c1cac5beb6afaaa59e9c9894929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f00000000000000000005101c27333e49545e6876828d99a4b0bcc9d3c7bbb0a4998d81766a5b64707b86919ca8b4bdc7c1b7ada4988d8176727d89949ea8b7c0c9c0b5aa9f968b7f73685e66727d8995a4adb7c2cdcbbfb3a89c91857a6f63574c4035291e12070000000000000000000000000000000000000000000000010b18222d37404c57626c77828e9aa4adb7c2cac0b4a99e95897e72675c5349515a65707c88939ca7b5bec8cbbfb4a89c91867b7064595046362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746e737f8b909aa2abb3bcc5bfb6aea59d938e82796e685e544e453c342b221a1108000000000000000000000000000915212c38434f5b66727d8997a0abb5c1cec8bdb2a69c92897d716b635c56514e4e4d4e4f545960686f7a838f9ba3acb7c1ccc6bcb1a59a8e8377695f554a3f33281c110500000007121d29343f49545d65717d88919aa4adb7bfc9c5bdb5ada69f9c95908c898786858586888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f00000000000000000006111d2934404b57636e7984909ca7b3becacec4b9afa6968a7f73685c616b76828d99a4adb7c2c6bdb3a89c91857b76828e99a4adb7c7cabfb3a89c91857b6f6357646f7b86949da8b3bfcaccc1b5aaa097887d71665a4f43362c21170c01000000000000000000000000000000000000000000000008131d27333e48525b66727d89949da8b3bfc9c2b8aea59a8e83776c63584c56616a75818c98a3acb6c6ccc1b7ada4998d81766b6157494036261e140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74727e87919ca1aab2bbc4c0b7afa69e948f837a6f695f574e453d352c231b120901000000000000000000000000000c18232f3b46525d6975808c97a7b0bac4cec3b8aea5998d82766d635b534b4743424243454950576069717d89939da8b3becacbbfb3a89c9185796e63574c4034291d12060000000814202b36424d58636d77828e9aa1aab5bec7c7bdb4ada49e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f00000000000000000008131f2a36424d5964707c87959ea9b4bfcbcbc0b5aa9f96887c7165595b66717d89949da8b3c0c9c0b5aaa0968b7f7c86919ca8b4bec7c1b6aca3988d81756a6156616a78848f9ba7b2bec9cfc4bab0a7978b8074685850463b30251a0f040000000000000000000000000000000000000000000000030d19242e39424b57636e79848f9ba6afb9c3c8beb2a79c93887c71655a5158636f7b85909ca8b3bcc6cabeb3a89d93887d71655b5248383026160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f747d869197a1abb1bac3c1b8b0a79f9590847b6f6a60584f473e352d241c130a0200000000000000000000000000000e1a25313c48545f6b76828d99a5b0bccacbbfb4a99e95887d71655d544b433c373636353a40475059636d78838f9aa6b1bdc9ccc0b5aaa096877c7064594d41362a1f1308000005101c27323d47515a66717d89939ca7b2bac5c9c0b7ada49d948f857f7a75726f6e696e6f7174797e848e929ca2abb5bdc7d1d4c9bdb1a69a8f83776c6055493d32261b0f0000000000000000000b16222d3944505c67737e8a96a5aeb8c3cecabfb3a89c90857a6e635757636e79848f9ba6afb9c4c4bab0a79b8f84808c97a1abb6c1c9beb3a79d93887c71655a515a6a75818d98a4afbbc8d3cabcb1a59a8e82776960554a3f33281d11060000000000000000000000000000000000000000000000000a141f28333e49545f68737f8b969faab5c0cbc1b6aca3988d81756a61565f68737f8b969faab5c0cec3b8aea59a8f83786d63584a4138281f160500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7c859096a0a8b1bac2c5bab1a8a09690857c706b615950483f362e251d140b03000000000000000000000000000000101b27323e4a55616c78838f9ba6b2bdc9cabeb3a79c9084796e63574b443a312d2b2a2b30364049545d6874808b97a2aebac5cfc4bab0a794897d71665a4f43372c201509000007121e2935404b57616b76828e99a3acb6c2cfc4b9afa69d948f847c746f6966646360636465686e727a828d929ca4adb7c2cdd4c9bdb1a69a8f83776c6055493d32261b0f000000000000000005101c27323d48525b6a76818d98a4b0bbc8d2c8bcb1a59a8e8277695f55545e68737f8b969faab5c0c9c0b4a89e948f85919ca8b1bac5c3b8aea59a8f83776c6358505c67737e8a96a6afb9c3cecabfb3a89c91857a6e63574c4034291d1107000000000000000000000000000000000000000000000000030e1a25303a454f58636f7a85909ca8b3bcc5c6bcb3a89c91857b6f6458636e79848f9ba6afb9c4cbbfb4a99e958a7e73675c53493a3128170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c6bbafa3988c808490959fa7b0b8c1c3bbb6aba19791867d716c625a514940382f261e140c0400000000000000000000000000000000101c28333f4a56616d7984909ba7b3becac8bcb0a5998e8276685f54493e332a221f1f20263038444f5a66717d8994a0abb7c3d4cab8aca195897e72675b4f44382d21150a000007131e2a36414d58646f7b86919ca8b4bcc6ccc0b5aa9f968f837b706c6360595857555758585f636a6f79818d949da8b3bbc5cfc9bdb1a69a8f83776c6055493d32261b0f000000000000000007121e2935404c57626b7884909ba7b2becad0c5bab1a8978b807469584f4e57636f7b85919ca8b3bcc6c2b7ada49e979197a0abb8c1cac0b4a99e958a7e73675c534d5965707c87959fa9b4c0cbccc0b5aa9f96887c71655a4e42352b21160b000000000000000000000000000000000000000000000000000b16202b353e4b56606a75818c98a2acb6c0ccc0b5aaa0968b7f74685f66727d89949da8b7bfc9c4bab0a79c90847a6e63574c4339292118070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c7bcb0a59a918c90949ea6afb7c0c8bbb2aaa19c91877e726d635b524a413930271f160d040000000000000000000000000000000000111c28343f4b56626e7985909ca8b3bfcac6bbafa4988d81756a584f453a3023191311161f2b36424e5965707c87939faab6c1cdc4b8ada1968a7e73675c5044392d22160a00040f1a25303b454f5868737f8a97a0abb6c1cdc2b8aea59c91867c706b625b55504d4c4a4c4d4f545960696f7a848f9ba2abb6c0cbc9bdb1a69a8f83776c6055493d32261b0f000000000000000007131e2a36414d5864707b87949ea9b4bfcaccc1b6aba197897d72665a4f4b56616a75818d98a3acb6c1c7beb5ada7a09ca0a7b0bac9c5bab1a89c90847a6f63574c4b57636e7985909ca7b3bfcacfc4b9afa6968b7f7468584f453b30251a0f0300000000000000000000000000000000000000000000000007111b25313c46505964707c87929ca7b2bdc7c4bab0a79b9084796e636b77828e99a4adb7c7ccc1b5aaa0978b80746960554a3f33281d10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cabfb4aaa19a989b9ea5aeb6bfc7c0b7aba29a908b7f736e645c534b423a312820170e05000000000000000000000000000000000000111c28343f4b56626d7985909ca7b3bfcac6bbafa3988c8175695e5247382d23160f0c121f2a36424d5964707c87939eaab5c1cdc4b8ada1958a7e73675b5044392d21160a0005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e948a7f736c625a524a4641403f404145495058606a717d88929ca7b2bfc8c9bdb1a69a8f83776c6055493d32261b0f00000000000000000a16212d3844505b67727e8a95a5aeb8c2cdcbbfb4a89c91867b6f63584c47515a65717c88939da7b3bfc8c5beb8b0aba8abb0b8c0cac1b6aba1978c80756960554a49545f6876828e99a5b0bccad3c9bcb0a5998e8276685f544a3e33281c1105000000000000000000000000000000000000000000000000010b17222d37404c57626c77828e99a4adb7c2c9c0b4a99e94897e7266707c86919ca8b4bdc7cbbfb3a89c91867b6f645950463b30251a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cec4bab2aaa5a3a7a9aeb5bec6c4bab0a79b918c80756f655d544c433b322921180f0600000000000000000000000000000000000000101c27333f4a56616d7884909ba7b2becac7bcb0a4998d82766a5a51473d32271e1a191c212b37434e5a65717d88949fabb6c2cec3b8aca095897e72665b4f44382c21150a0006121d2934404c57636e7985919ca8b3bfcacabeb3a79b90847a6e635b524a423c36353334353a40485059636c76828e99a5aeb8c3c9bdb1a69a8f83776c6055493d32261b0f0000000000000005101b26323c47515a6a75818c98a4afbbc7d2c9bdb2a69b8f83786a61564b404c58636c77838f9aa5aeb8c3cec8c0bab5b4b5bac0c8cbbfb4a89c91867c7064595046454f5868747f8b97a7b0bac4cfcabfb3a79c90857a6e63574b4034291d11060000000000000000000000000000000000000000000000000008131d27323d48525b66727d89949da8b3bfc9c2b8aea59a8e82776c75808c97a1abb6c1ccc1b6aca3988d81766b6156483f362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cbc2bab4b0afb2b4b8bec5ccc1b5aaa0978d81786e635e554d443c332a2219100700000000000000000000000000000000000000000f1b27323e4955616c78838f9ba6b2bdc9c9bdb2a69a8f83786b61564b41372f282524262c323d47515a67737e8a95a1adb8c4cec4b9afa694897d71665a4f43372c2015090008141f2b37424e5965717d88969faab5c0ccc2b8aea5968b7f746960554b4239312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f0000000000000006121d2934404b56616a78848f9ba6b2bec9d2c6bbafa4988c81756a5a51473e49535c67737e8a959ea9b4c1cad1cac4c1bfc1c4cacdc2b7ada4998e82766b62574840434e5a66717d8897a0abb5c1cccbc0b5a99f95887c7065594e42352b20160b00000000000000000000000000000000000000000000000000030d19242e38424b57636e79838f9ba6afb9c3c7beb2a79c92887c707a85909ca8b1bac5c9beb3a79c93887c71655a5147382f261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d2cdc4bdb7b3b1b3b7bdc4cacbbfb3a89c91857b6f6960584f453b302c241b12090100000000000000000000000000000000000000000e1925313c48535f6b76828d99a5b0bcc9cabeb3a89d93877b6f645a51473f3733302e32363b434b56616b76818d99a4b0bcc7cbc0b5aa9f96877c7064584d41362a1f1307000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3229221d1d1d20273039434b57636e7984909ca7b3bec9bdb1a69a8f83776c6055493d32261b0f0000000000000007121e2a35414c58646f7b86949da8b3bfcacec3b8aea5958a7e73675b504439434c57636e7a84909ca8b1bac5d0d4cfcccbcccfd4cabfb4a89e94897d72665b524838404c57636f7a85919ca8b4bfcbcec3b9afa6968a7f7368574e453a2f24190e03000000000000000000000000000000000000000000000000000a141e27333e49545e68737f8a959fa9b5c1cac1b6aca3988c81757f8a959fa9b8c1cac2b8aea59a8e83776c63584a4137271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7d1c6bdb4aca8a6a8acb4b9c1ccc1b5aaa0978f827a6f685f544a453d342b231a110800000000000000000000000000000000000000000c18232f3a46515d6974808b97a7afb9c4ccc1b7ada4978b7f746a61584f48413f3b383d3f464a545d646f7b85909ca8b3bfcacabfb3a89c9085786e63574b4034291d1106000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c6257483f362a2219121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f000000000000000a15212c38444f5b66727e8995a4adb7c2cdcbbfb4a99e95877b7064594d41363f4a55606974808c97a1abb6c1ccd8dad7d6d7dacfc4bab0a79b8f84796e63574b42383f4a55606977838f9aa6b1bdc9d3c9bcb0a4998d8276685e54493e33271c100500000000000000000000000000000000000000000000000000030e19242f3a454e57636f7a85909ca8b1bac5c6bcb3a89c91857b838f9ba6afb9c9cbbfb4a99e94897e72675c5349393127170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7ccc1b7aca39d9a9da3a9b1b9c2c4bab0a79d938d81796e635f554d443c332a22191007000000000000000000000000000000000000000915212c38434f5b66727d89969faab5c0ccc6bdb3a79c90857b6f685f58524c4a4648484c50555d646e75818c969faab5c0cbc5bab1a89a8e8277685f54493e33281c1105000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b5248382f261a110806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f00000000000004101b26313c4650596975808c98a3afbac7d1cabeb3a79c9084796b62574c40353b46505964707b86919ca8b4bec7d1dce3e2e3d7ccc0b5aaa0968b7f74685f54493e313c4650596975808c98a3afbac7d2cabeb3a79c9084796e63574b4034291d110600000000000000000000000000000000000000000000000000000b16202b353e4b56606a75808c97a1abb6c1ccc0b5aa9f968e828e939da8b6bfc8c4b9afa79b9084796e63574c4339292017070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7cabeb3a89d938f9399a0a9b2bbc3c0b7aca39c928c80756f655d544c433b322921180f0600000000000000000000000000000000000006121e2935404c57636f7a85919ca8b3bcc8cbc0b4a99f958e82796e69615b5755505452575860636d727e89919ba6afb9c4ccc1b6aba1978b7f7368584f453a30251a0e03000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e534738301f16090100000b16202b3545505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f00000000000006121d29343f4b56606a78838f9aa6b2bdc9d3c7bcb0a5998d82766b5b52483d32363f4c57626b76828e99a4adb7c2cdd9e3ede2d6cbbfb3a89c91857b6f63584f453a3036444f5b67727e8995a5aeb8c2cdcbbfb4a99e95877c7064594d42362a1f1409000000000000000000000000000000000000000000000000000006111b25313c46505964707c86919ca8b4bdc7c4b9afa69c928e929ca4adb7c6ccc0b5aa9f968b7f74695f554a3f33281c10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c9bdb1a69a8f838b9099a1aab3bcc4bcb4aba29a918b7f746e645c534b423a312820170e05000000000000000000000000000000000006111d28343f4a55606976828d99a3acb8c1cac3b9afa69c928c8179706b666360585f5b6264696e747d86909ca1aab7bfc9c6beb4a89c91867c7064594d41352b20160b00000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23180c0100000711212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f00000000000007121e2935404c58636f7a86919ca8b4bfcbcfc4bab0a7968b7f74685c5145382e323d48525b66727d89949ea8b4c0c9d3dee3d7ccc1b7ada4988d81766a6156473e352b36414d58646f7b87949ea9b4bfcacec3b8aea5968a7e73675c5044382e23180d0200000000000000000000000000000000000000000000000000010b17222c37404c57626b76828e99a4adb7c2c9c0b7aba29c999ca2abb4bdc7cbbfb3a89c91857b6f64584f453b30251a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7f8b919ba2abb4bdc4bbb3aaa19c91877e726d635b524a413830271e150c0200000000000000000000000000000000040f1b26313c46505966717d88939da7b0bac5c8bfb6aba29b918c827b75716e696b6b6c6c7073797f8790969faab2bac7c7beb5aba2998d82766b62574c4035251b110700000e1a25313c48545f6b76828e99a5b0bcc8c6baaea3978c8075695d52463b2f23140a0000000a15212c38444f5b66727e8995a0acb8c3bdb1a69a8f83776c6055493d32261b0f0000000000000915202c38434f5a66727d8997a0abb6c1ccccc0b5aaa096887c71655a4e42372b2e38424b57636e79848f9ba7b0bac4cfdae1d5cabeb3a89d93887d71655a5147372e2935404b57616b7884909ba7b2becad2c8bbb0a4988d81766a5b52483d32271c1005000000000000000000000000000000000000000000000000000008121d26323d48525b66717d89939da8b3bfc8c7bbb3aba6a5a6abb3bbc5ccc1b6aca3988d81756a6156483f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f75818c929ca3acb5bec3bab6aba19791867d716c625a514940372f251c120703000000000000000000000000000000010c17222c36404d58636d77838f97a0abb6bbc4c6bcb3aaa19b928e86817d7a78777778797c7f848b91979fa6afb9c2c7c0b7aea59b91887d71655b52483d3227150b0100000e1925303c48535f6a76828d99a4b0bcc7c7bbafa4988d81756a5e5347382e24190c0200000716222d3945505c67737e8a96a1adb8c4bdb1a69a8f83776c6055493d32261b0f0000000000040f1a26313b4650596974808c97a7b0bac5cfcbbfb3a89c91857a6e63574c40352928333e49545f68747f8b96a0aab5c0ccd7d9cec3b9afa69a8f83786c63584941372627323d47515a6a76818d99a4b0bbc9d3cabeb2a79b9084786b62574c4035291e12070000000000000000000000000000000000000000000000000000030d19232e38424b57636e79838f9ba6afb9c3cec3bbb6b2b0b2b6bbc3ccc9beb2a79c92887c70655a5147372f251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7479828e939da4adb6bfc5bab1a8a09690857c706b615950483f352b211c140b0200000000000000000000000000000008121c26343f49535d65717d87919ca2abb3bbc3c3bbb2aaa39c96918c88858383828384878a90949ca0a7afb7bfc6bfb7afa69e958d81766d63584a42382e2319040000000d1924303b47535e6a75818d98a4afbbc6c7bcb0a5998e82766b5b52483d32261c120806070f1a25303a454f5868747f8b97a2aeb9c5bdb1a69a8f83776c6055493d32261b0f000000000006111d28343f4a55606977838e9aa6b1bdcad4c8bdb1a69a8e83776960554a3f332825303a454f58636f7b85919ca8b3bdc6d1d7cbc0b4a99f958a7e73675c5349393027232e3845505c68737f8a96a6afb9c3cecabfb4a99e94877b7064584d41362a1e130900000000000000000000000000000000000000000000000000000009141e27333e49545e68737f8a959fa9b4c1caccc5c0bdbcbdc0c5cccdc2b8aea59a8e82776c62584a4137271e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f746f7a838f949ea5aeb7c0c1b8b0a79f9590847b6f6a60584f453b302d241b130a010000000000000000000000000000030d1a252f3a434c58636c74808c929ca3abb5b9bfc2bbb3aca7a09c9896908f8e8e8f9095969b9ea5abb0b8bfc4bcb6afa69f9690847b6f645c53493a31281e14090000000c17232f3a46515d6874808b97a2aebac9cabeb3a79b9084796c62574c3f362c2119121111172028333e49545f6876828d99a5b0bcc7bdb1a69a8f83776c6055493d32261b0f000000000006121d2935404c57636f7a85919ca8b3bfcbd1c6baaea3978c8075695950463b3025202b353e4b56616a76818d98a3acb7c1ccd6cabfb3a79c90857a6f63574c433929201f2b36424e5965707c88969faab5c0cbcdc2b8aea5958a7e72675b5044372d23180d020000000000000000000000000000000000000000000000000000030e19242f3a454e57636f7a85909ca7b0bac5cfcfcbc8c7c8cbcfd6cabfb4a89e94897e72665c5348393027170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74696f7b848f959fa7afb8c1c0b7afa69e948f837a6f695f554a463d342c231a12090000000000000000000000000000000b15202a333e49535c636e79818e929ba2a9afb6bfc4bcb7b0aaa8a69f9c9b9a999a9b9ea5a7a9aeb6bac1c6bcb3aca69f9691867d716a61564c43392a21180e040000000a16212d3944505b67737e8a95a7afb9c4cbbfb4a99e95877c70645850463b3029221d1d1d20273039404b57636e7985909ca7b3bfc9bdb1a69a8f83776c6055493d32261b0f00000000000914202c37434e5a66717d8896a0aab5c0cccdc2b7ada495897d72665b4f43362c211b25313c47515a65717d88939da8b3bfc8cbc0b6aca3978c80756960554a3f34281d1d2934404c57636e7a85909ca8b3bfcad2c7bbafa4988c81756a5a51473d32271b10050000000000000000000000000000000000000000000000000000000b16202b353e4a55606975808c97a0abb6c1ccd7d6d4d3d4d6d9cec4b9afa69b9084796e63574b4239292017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74686a707c8590969fa8b1bac5bfb6aea59d938e82796e635f564d453c332b221911080000000000000000000000000000061019242f39434a545f686f7a828d919c9fa6afb9c3c8c0bab5b3afaaa8a6a5a5a6a7a9aeb2b4b8bec5c8beb6aca39c9590867e726c635a51473b33291911080000000008141f2b37424e5965717d88969faab5c0ccc3b8aea5968b7f746960554a423a312c2928292b30384049535c65717d88959fa9b4c0c9bdb1a69a8f83776c6055493d32261b0f00000000030f1a25303b454f586874808b97a7b0bac4cfcabfb3a89d94867b6f64584c41352a1e18222d37414d58636c78838f9aa6afb9c3c9bdb2a79c92877c70645950463c31261b1c28333e4a555f6877828e9aa5b1bccad4c9beb2a69b8f84786a61564b4034291d120600000000000000000000000000000000000000000000000000000006111b25313c46505964707b86919ca8b4bdc7d1dbdfdfdfe2d7cbc0b5aa9f968b7f74685f544a3e33281c10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f7468626c717d869197a1abb6bac3beb5ada49c928d81756f665e554c443b32292118100700000000000000000000000000000a151f29303b454f58606a6f79818a90959fa9b5c0cbcac4c0bfb9b5b3b2b1b1b1b3b4b8bebfc2c7cec3b8aea59c928e857d726d645c534a41372b221909000000000006121d2934404c57636e7985919ca8b3bfcac8beb3a79b90847a6e635b524a423c36353434353a40485059636c76828e99a6afb9c3c9bdb1a69a8f83776c6055493d32261b0f0000000005111c28333f4a555f6977828e99a5b1bccad4c9beb2a79b8f84786a61564b4034291d131d27333e49535c67737e8a959fa9b4c1c2b8aea5998e82776b62574940362c22171a25303b454f586874808b97a8b1bac5d0cabfb3a89d94867b6f64584c41352a1e1308000000000000000000000000000000000000000000000000000000010b17222c36404c57626b76828d99a4adb7c1ccd8e2ecede2d6cabfb3a89c90857b6f63584f453b30251a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685b636d727e87919ca1aab2bbc4bdb4aca29b918b80746e655d544b433a312820170f0500000000000000000000000000050f16212b353f47505960696e767f85909ca7b3bfcad4cfccc9c4c0bfbdbdbcbdbebfc3c8cacdd2cbbfb4a99e958e827b716d645d544b433930271b1209000000000005111c28333f4a555f6977828e9aa7b0bac5cbbfb4a99e958a7f736c625a524a4641403f404145495159606a717d88929ca7b6bfc8c9bdb1a69a8f83776c6055493d32261b0f0000000006121d2934404c57636e7a85909ca8b3bfcad2c7bbafa4988d81756a5a51473d32271b101a242f39434c57636f7a85909ca8b1babfb4a99e94897e72665b52483830261c1216212b35434f5a66717d8997a1abb6c1cccdc2b7ada495897e72665b4f44372d22170c0100000000000000000000000000000000000000000000000000000008121c26323d48525b66717d88939da8b3bfc8d2dde7e2d7cbc0b6aca3988c81756a6156473f352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5c646e737f8a909aa2abb3bcc4bcb3aba19a908a7f736d635c534a413930271f160d040000000000000000000000000007111b252e374049505860636f75808c97a3afbac6d0c9c4c0bfbab6b4b3b2b3b5b9bebfc2c7cfcabeb3a79c90847b706b635c544d443b322920170a020000000000040f1a25303b454f5868737f8a97a0abb6c1ccc2b8aea59c91867c706b625b55504d4c4a4c4d4f545a61696f7a848f9ba2abb6c6cfc9bdb1a69a8f83776c6055493d32261b0f000000000814202b37424e5965717c88969faab5c0cbcec3b9afa6968a7e73675c5044372d23180d151f28343f4a55606975808c97a1abb6bab0a79b9084796e63574c4238291f160c111e2935404c58636f7a86919ca8b4bfcbd1c7baafa3988c8075695950463c31261b1004000000000000000000000000000000000000000000000000000000030d18232e38424d58636d78838f9ba5aeb8c3cedad8d8d4c9bdb2a79c92877c70645a5147372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d545d656f75808c919ba3acb4bdc3bbb2a9a09c91867e716c625b524940382f261e140b01000000000000000000000000010b151e27323d47515a646e747f8b909aa5b0bbc7c7c0bab5b3b0aba8a7a7a8aaafb2b3b7bdc5cabfb4a99e958e827a6f685e544942382e23181007000000000000010c16212c36414d58646f7b86919ca8b4bcc9c8beb5aa9f968f837b706c6360595857555758585f636a6f79828e949ea8b3bcc5d4c9bdb1a69a8f83776c6055493d32261b0f000000030e1a25303a454f5868737f8b96a6afb9c4cecbc0b4a99f95877c7065594d42362b1f13090f1a26313b46505964707c86919ca8b4b5aaa0968b7f74685f554a3e33281c0f06121d29343f4b56606a78838f9aa6b2bdc9d4c9bdb2a69a8f83786a60564b3f34291d12060000000000000000000000000000000000000000000000000000000009141e28343f49535c67737e8a959ea9b4c0cad4cdcdcdc2b7ada4998e82776c6257494037271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51555e636e78818d939ca4adb5bec2bab5aba09790857c706b615a51483f362e251b11060000000000000000000000000005121e2935404b57616b727e899099a1aab4bfc4bcb7b0aaa8a7a09c9c9b9c9fa6a6a8adb6bac1c3b8aea59c938d81786e635b52483d32281e14090000000000000007121e2935404b57616b76828d99a3acb8c1cac4b9afa69d948f847c746f6966646360636466686e737a828e929ca4adb7c3ccd4c9bdb1a69a8f83776c6055493d32261b0f00000005111c28333e49545f6876828d99a5b0bcc9d3cabfb3a79c9085796e63574b4034291d11060c17222c36404c57626b77828e99a5aeb3a89c91867b6f64584f453b30251a0f04101b26313c4650596975818c98a3afbbc8d2cbbfb4a89c91867a6f63584c4035291e120800000000000000000000000000000000000000000000000000000000040e1a252f3a434c57636f7a84909ca7b0bac4c1c1c1c1bfb3a89d94897d72665b5248393027160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5149545f686e79828e949da5aeb6bfc4bab0a79f9690847b706a615950473e352b20161208000000000000000000000006121d28333e49535c646f7b85909ca0a9b1bac3bcb4aca7a09c98979190909096969b9da4abb0b8c1beb6aca39b928b7f736b62574c41382e23180d0200000000000005101c27323d47515a66717d88929ca8b1bac5c9c0b7ada49d949085807a7572706f696e6f7174797e848e939ca2abb5bec7d3d4c9bdb1a69a8f83776c6055493d32261b0f00000006111d2934404b57636e7985909ca7b3bfcad3c8bcb0a5998e8276685f54493e33281c110508121c26323d48525b66727e89949ea9ada4998d81766a6156483f352b21160b010c17222d3744505b67727e8a95a5aeb8c3cdccc1b6aba097897d72665a4f43362c22170c01000000000000000000000000000000000000000000000000000000000b152028343f4a55606974808c97a0abb5b5b5b5b5b5b9afa69b8f83796e63574b4238292017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51454f5860696f7a838f959ea6afb7b4b4b8afa69e958f837a6f6960574e453a2f2b21170d020000000000000000000008131f2b36414d58636d76828e969faab0b9c2bcb3aca39d96918c8885848485878a8f949ca0a7b0b8c1bcb4aba29c90857c70645b52483d32271c1005000000000000020d18232e38414d58636d77828e97a1abb6bdc7c7bdb4ada59e96908b84817d7b7a797a7b7d80838a90949ca3abb3bbc5ced7d4c9bdb1a69a8f83776c6055493d32261b0f00000008141f2b36424d5965707c87959fa9b4c0cbcfc4bab0a7978b7f7468584f453a30251a0e03020c19232e38424b57636e7984909ba7a89d93887d71655a5147372f251b11070008131f2a36414d5964707b87959ea9b4bfcbcfc5bab0a7978c8074695950463b31261a0f0400000000000000000000000000000000000000000000000000000000040f1a26313b465059646f7b86919ca8aaaaaaaaaaaaaaa99f958a7f73685f54493e33281c10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5145475059616a707b8490969fa7b0a8a8a8a8aea59d938e82796e685e5449453b31271c110600000000000000000005101b26323c47515a65717d88929ca6afb9c1beb5aca39c938f86817d7a7978797b7f838b9197a0a8b1bac5bbb5aa9f968d81756b61574b4035291e13080000000000000009141e28343f49545d65717d87919ca4adb7bfc9c5bdb5aea69f9c95908c898786858587888c8f949b9ea5acb3bbc3c8cfd7d4c9bdb1a69a8f83776c6055493d32261b0f0000000b16222e3945505c67737f8a96a6afb9c3ceccc1b5aba097887d71665a4e43352b20160b00000a141e28333e4a545f68747f8b96a0a69b8f83786d63584a4137271e150c020007121e2935404c57626b7984909ba7b3becad4cabdb1a69a8e83776960554a3f34281d110600000000000000000000000000000000000000000000000000000000010c17222c36404b57616b76818d99a49e9e9e9e9e9e9ea89c90857a6f63584f453a30251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453f48515a626b707c859097a09c9c9c9c9c9c9ca49c928d81786e635e554b40352a1f140900000000000000000006121d2934404b56616a76828d99a2abb6bfc2b8aea59c928e827c75716e696d6b7073797f879197a1abb6bec4b9afa69c91867b7064584d41372d22170c01000000000000040e1a252f3a434d58636c75808c949da6afb8c1cac5beb7afaaa59e9c9895929690919794979b9da4a9aeb4b3b4b9bfc6cfd4c9bdb1a69a8f83776c6055493d32261b0f000005111c27323d48525b6a76818d99a4b0bbc8d2cbbfb4a89c91857a6f63574c4035291e11070000030f1a25303b454f58646f7b86919c9f958a7f73675c5349393127160e05000005111c27323d48525b6a76828d99a4b0bcc9d3cbbfb3a89c91857a6f63574c4035291d1207000000000000000000000000000000000000000000000000000000000008121c26323d47515a65717d8893939393939393939393978c80756a6056473e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d5145384049525b626c717e86919191919191919191919191918c80756f655a4f44382d21160a00000000000000000007121e2a35414c58646f7b86919ca8b3bbc7bfb4a99e948e8279706b6563605b6264686e747e87919ca5aeb8c3bfb5aba0978b7f74685950463c31261b1004000000000000000b15202a333e49535c636f7a848f969fa8b1bac0c8c7bfb9b5aea9a7a4a0a69f9c9ca1a8a3a6a8adb4afa9a7a9afb6bfc8d3c9bdb1a69a8f83776c6055493d32261b0f000007121e2935404c57626b7984909ba7b3bec1c1c1bdb1a69a8f83776960554a3f34281d11010000000b16212b353f4b56616a76818d999c90857a6f63584c433929201706000000030e19232e3845515c68737f8b96a7afb9c4c1c1c0b5aaa096887d71665a4e43352b21160b0000000000000000000000000000000000000000000000000000000000020c18232e38414d58636d78838787878787878787878787877c7064595046372e251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a39424a535c636d737f8585858585858585858585858585857f73685c5045392e22160b0000000000000000000a16212d3944505b67737e8a97a0aab5c1c4bab0a79b90847a6f69625b57555257585f636e74808b959ea9b4bfc4bab0a79a8f83776a60564b3f34291d120600000000000000061019242f39434a556069707c859097a1abb0b8bfc7c9c4beb8b4b3afacafaaa8a8abb1aeb2b3b4ada69f9c9fa6afb9c3cec9bdb1a69a8f83776c6055493d32261b0f000007131f2a36414d5964707b87959ea9b4b5b5b5b5b5afa3988c8075695950463c31261b0f0400000007111b25323d47515a65717d8893988c80756a60564a3f34281d1007000000000914202b37424e5a65717c88969faab5b5b5b5b5bab0a7978b807468584f453b30251a0f03000000000000000000000000000000000000000000000000000000000009141e28333e49535c646f7b7c7c7c7c7c7c7c7c7c7c7c7c706b6257494037261e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a313a434b545d656e737a7a7a7a7a7a7a7a7a7a7a7a7a7a7a736f655a4f44382d21160a0000000000000000020d1924303c47535e6a75818d98a7b0bac4c0b5aaa0968a7e736a6058524c4a484c4f545d636f7a84909ba7b3becabfb4a89c91867a6f63584c4035291e120700000000000000000a151f29313c465059626c727e87919ca0a7afb6bcc2c7c8c3bfbebbb7b9b5b3b4b6bababbb4aca49d9590959fa9b4c0cbc9bdb1a69a8f83776c6055493d32261b0f00000a16212d3944505b67737e8a95a5aeaaaaaaaaaaaaaea595897e72675b4f44362c22170c01000000010b18232d37414d58636d78838f92877c70645950463c31261b0f000000000006121d2934404c57636e7a85919ca8aaaaaaaaaaaaaaa59a8e8277695f554a3f33281c11050000000000000000000000000000000000000000000000000000000000040e1a252f39434b56616a6f7070707070707070707070706b625b5248383026160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e323b444c555e65676e6e6e6e6e6e6e6e6e6e6e6e6e6e6e68655e554b40352a1f14090000000000000000040f1a26313b4650596c78838f9aa6b2bdcabfb3a89c91857a6f63595048423f3d3f454a55606975808c98a3afbac6c1b6aba097887d71655a4e43372b2014090000000000000000050f17222c364049535c646e737f8a91979fa6acb4b8bec1c6c8cac6c9c4c0bfbfc1bdb7b3aba39d938f85909ca7b3bfbfbfbdb1a69a8f83776c6055493d32261b0f0005101c27323d47515a6a75818d989e9e9e9e9e9e9e9e9e9e94877b7064584d41362a1e1208000000000009131d27333e49535c67737f8a8e82776c62574940362c22170c010000000005111c28333f4a555f6977838e9a9e9e9e9e9e9e9e9e9e9c90857a6e63574c4034291d12060000000000000000000000000000000000000000000000000000000000000b151f29313c47515a6164646464646464646464646464625b524b4238282016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e2b333c454d555a5c6363636363636363636363636363635c5a554e453b31271c1106000000000000000006111d28343f4a5560697985909ca8b3bfc9bdb1a69a8f83776a60564940383332353b46505967727e8995a1acb8c3c5bab0a7958a7e73675b5044392d21160a00000000000000000008121c263038424b545d656e737f8690959ca3a8aeb2b6bbbdbebfc1c0bfbebcb7b3ada8a19b938f837f8a96a1adb4b4b4b4b1a69a8f83776c6055493d32261b0f0007121e2935404b56616b78848f93939393939393939393939084786b61574b4035291e12030000000000040e1a242f39434c57636f7a85897e72665b52483830261d12080000000000040f1a25303b454f586974808c939393939393939393939396887c71655a4e42372b201408000000000000000000000000000000000000000000000000000000000000061018232d37414a51565859595959595959595959595957524a423a3128180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e232c343d454b4f50575757575757575757575757575757504f4b453d352b21170d02000000000000000006121d2935404c57636f7a86969faab5c0c8bcb0a5998e82766b595046393028252c36434e5a66717d8894a0abb7c2cab9ada2968b7f74685c51453a2e22170b000000000000000000030d161f28323b444d555e656e737d858e929b9ea5a7acafb1b3b4b6b5b3b2b0ada8a49d9b918d837b7e8995a1a8a8a8a8a8a8a69a8f83776c6055493d32261b0f0007131e2a35414d58646f7b878787878787878787878787878781766a5b52483d32271c10050000000000000b151f28343f4a556069758084796e63574c4238291f160d030000000000010c16212c36434f5b66727e87878787878787878787878787877f74685c51453a2e22170b0000000000000000000000000000000000000000000000000000000000000009131d27303941474b4c4d4d4d4d4d4d4d4d4d4d4d4d4c48423a312a211807000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23242d343b4043444b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4544403b352d241b120800000000000000000007121e2935414c58636f7b8692a6afb9c3c8bcb1a59a8e83776b5c53493e332e2c3039434f5b66727d8994a0acb7c3c5baaea2978b8074685d51463a2f23170c00000000000000000000060f17222a343d454d555e656d717b828a90949a9ca3a4a6a7a8abaaa8a7a5a49d9b948f89817a727e89959c9c9c9c9c9c9c9c9a8f83776c6055493d32261b0f0006121d2935404c57636f797c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f63584c41382e23180d02000000000000040f1b26313c46505964707c8074695f554a3f33281c0f060000000000000007121d2934404c57636e797c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6f64584c41352a1e120700000000000000000000000000000000000000000000000000000000000000030d17202930373c4041424242424242424242424241403d38312a21191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231c242b31353839404040404040404040404040404040393835312b241d140b0200000000000000000007121e2935414c58636f7a8692a5aeb8c3cabeb2a79b9084796c62584c443d38363b4149535c68737f8b96a2adb9c5c5b9aea2978b8074685d51463a2e23170c000000000000000000000007111a242c343d454e555d636b70787e848a8e9395989a9c9ca09f9c9b9997938f8a837e756f727e89919191919191919191918f83776c6055493d32261b0f0006111d28343f4a5560696f70707070707070707070707070706f6a61564b4031281e140900000000000000010c17222c36404c57626c707a6f63584f453b30251a0f000000000000000006111d28333f4a5560696e70707070707070707070707070706f6a61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000007101820272d31343536363636363636363636363635322e282119110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23171b21262a2c2d3434343434343434343434343434342e2d2a27211b140c040000000000000000000006121d2934404c57636e7a85959ea9b4bfcbbfb4a99e94887c70655e554c484545464a515a636d77828e9aa5b1bcc8c4b9ada2968b7f73685c5145392e22170b0000000000000000000000010a131c242d343d454c545b62686e737a7e83878a8d8e90919796918f8d8b87837e79726d67727e85858585858585858585858583776c6055493d32261b0f00040f1a26313b4650596063646464646464646464646464646463615a51473c3121180e04000000000000000008121c26333e48525b62696f696055483f352b21160b0000000000000000040f1a25303b4650586063646464646464646464646464646464615a51473d32271b10050000000000000000000000000000000000000000000000000000000000000000000810171d2326292a2a2a2a2a2a2a2a2a2a2a2a2a2927231e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e231711171b1f212229292929292929292929292929292922211f1c17120b04000000000000000000000005111c28333e4a555f687984909ba7b3becac2b8aea5998d81766e645e5752515050555a616a717d88929ca7b2bec9c3b9afa695897e72665b4f44382c21150a000000000000000000000000030b141c242d343c444a52575e63696e73777b7e8183858586868584827f7c78736e6964646e727a7a7a7a7a7a7a7a7a7a7a7a7772695e53483c31261a0e00010c17212c36404850555759595959595959595959595959595856514941372d221007000000000000000000030d19242e38424b5259606360595046372f251c12070000000000000000010c17212c363f4850555759595959595959595959595959595856514a41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000070d13181b1d1e1f1f1f1f1f1f1f1f1f1f1f1f1e1c18140e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0c101315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161614110d0802000000000000000000000000030f1a25303b454f586b77828e9aa5b1bcc7c8beb1a69b928a7e726e64625b5c5c5960636b6f7b838f9ba3acb6c1cbc0b4a99f95877c7065594d42362b1f130800000000000000000000000000030c141c242c333a42474e54586063676b70737577797a7a7a79787674706c676360585d64676e6e6e6e6e6e6e6e6e6e6e6e6c6962594f44392e23180d000008121c262f3840464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413930271d1300000000000000000000000a141f28323a42485055575550484036271e150c0200000000000000000007121c262f383f464a4c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4b47413931271d130900000000000000000000000000000000000000000000000000000000000000000000000003090d10121213131313131313131313131312110e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0205080a0a1111111111111111111111111111110b0a0906020000000000000000000000000000000b16212b3546515d6974808b97a4adb7c2cbc0b5aba29c91867e76706c69686868696e737b838f949da8b3bcc6cabfb3a79c9085796e63574b4034291d12060000000000000000000000000000040c141b232a31363e45495055575b6164676a6c686e6f6e696d6b6865625c57555054595b636363636363636363636363605e5951493f352a20150a0000020c161f282f363b3f40424242424242424242424242424241403c37302920170d0300000000000000000000050f18222a323840464a4c4a4640382f26170e0500000000000000000000020c161f272f363b3f40424242424242424242424242424241403d37312920170e04000000000000000000000000000000000000000000000000000000000000000000000000000002050607080808080808080808080807070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000006060606060606060606060606060600000000000000000000000000000000000000000711202b37434e5a65717d88949da8b3bec7c5bbb5aaa097918a817c7775747374767a7f848f939da4adb7c4cdc2b7ada4998d8176685f544a3e33281c1105000000000000000000000000000000040b131921262e353a3f464a4c5257585b5e575e6363635f585f5d5957534c4a464a4e5057575757575757575757575755534f4941382f251b1106000000060f171f262c31343536363636363636363636363636363534312d272018100700000000000000000000000008111a22282f363b3f403f3b362f281f1606000000000000000000000000050e171f262c30333436363636363636363636363636363534322d272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000006111d2934404b57636e79848f9ba5aeb8c2cdc4bab0a7a09c918d8683807f7f8082858a90959da3acb5bdc7c6beb3a89d94897d7266584f453b30251a0f0300000000000000000000000000000000020911161e252b2f363b3f41484b4d50534e54575757554f53514e4c48423f3b4043444b4b4b4b4b4b4b4b4b4b4b4b4948443f3831281f150b0100000000070f161c212628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2926221d17100800000000000000000000000000010911171f262c31343534312c261f170f0600000000000000000000000000060e161c212528292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2927231d1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e68737f8a949ea9b4bac3cac0b7b0aaa29b97918f8c8b8a8b8d90959c9ea5acb4bdc5c7beb5aca29b8f83796e63574c40352b21160b00000000000000000000000000000000000000050d141b20262c3033383d4041444745494b4c4c4a45484542413e3933303537384040404040404040404040403d3c39352f2820180f05000000000000060c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130d0700000000000000000000000000000001070f161c222628292826221c160f07000000000000000000000000000000050c12171a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b18130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f3a454e57636e7a84909ba1aab3bcc3c8c0bab5aba8a19c9a97969697999c9fa6a9aeb6bdc4c7bfb7aea59c92897e72685f554a3e33251b11070000000000000000000000000000000000000000040b11161c2125282e32353639353a3e4040403f3b363a3635332e28252a2c2d34343434343434343434343432312e2a251f181007000000000000000002080c0f111213131313131313131313131313131212100d0903000000000000000000000000000000000000060c12171a1d1d1d1a17120c06000000000000000000000000000000000002070c0f111213131313131313131313131313131212100d090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b353e4a556069727e89919aa3acb3bbc3c8c4bbb8b1aba8a6a3a2a2a2a4a7a9afb4b8bec6c5beb7afa69e958e82776e64584f453b3025150b0100000000000000000000000000000000000000000001060c12171a1e2327292a2d2b2f3334353433302c2e2b2a28241f1a1e2021292929292929292929292929262623201b150f0700000000000000000000000104060608080808080808080808080808080706050200000000000000000000000000000000000000000002080c0f1112110f0c0802000000000000000000000000000000000000000001040606080808080808080808080808080807060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b25303b465059646d75808c929ca3abb4b9bfc4c9c1bab6b4b1afadadaeb0b3b4b9bfc3c7c2bbb5aea69f9690847b6f645d54483f352b21160500000000000000000000000000000000000000000000000002070c0f14181c1e1e22202427292929282521231f1e1c19150f1315161d1d1d1d1d1d1d1d1d1d1d1d1b1a1815110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17212c363f48545d636e79828e929ba1a9afb5bac0c3c5c1bfbdbab9b9babcbfc0c3c5c1bdb7b3aba59e9690867d716b61564d44372f251b110700000000000000000000000000000000000000000000000000000104090d1012131116191c1d1d1d1c1a16121413110e0a0408090a1111111111111111111111110f0e0d0a060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbc7c5b9aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262f38444a555f696f7a828d919c9fa6abb0b4b8bcbfc0c3c8c3c3cac5c1bfbdbab6b4ada8a29b9490857d716c635a51473d34271e150c02000000000000000000000000000000000000000000000000000000000002050707060b0e10111212110f0c07080706030000000000060606060606060606060606030301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b0b0b0b0b0b0b0b0b0b0b080705030000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090d0c0a070400000000000000010507090a0c060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0bbbfbfb9aea2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f27303b454f5860696f79818a90959ca0a7a9aeb1b3b4b9b7b7b7b7bab6b4b2b1aba8a49d9b928d847d716d635c534a41382c24160e050000000000000000000000000000000000000000000000000000000000000000000000000305060606050401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f111216161616161616161616161313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000060b0f121415181816130e090300000001060c101315151712110f0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4b0b4b4b4b4aea2978b7f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212b353f48505960696e757e858d91979c9ea5a5a7a9afababacabb0aba8a6a8a19c99938f89817b716c635c534c433a31281c130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1c1d22222222222222222222221f1e1c19140f0801000000000000000000000000000000000000000000000000000000000000000000020710161a1e20202423211d19130c0500030a11161b1e2021231d1c1a16110c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d99a4a8a8a8a8a8a8a2978b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252f374048505960636e737b81868c9095979a9c9fa69fa0a0a0a7a09c9b9897918e89837e766f6a635c534c433b332921170b03000000000000000000000000000000030607080a0a0a0a0a0a0a0a0a0a0908070400000305060a0a0a0a0a0a0a0a0a0a0a06060401000000000000000000000000000000030607080a0a0a0a0a0a0a0a0a0a0908070400000000000000000000000000000000000000000000000000060e151c212528292d2d2d2d2d2d2d2d2d2d2d2a2a27241e1811090100000000000000000000000000000000000000000000000000000000000000050c12172025292b2c2f2f2c28231d150e050b131a2025292c2c2f292825211b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d999c9c9c9c9c9c9c9c978b7f74685d51453a2e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e272f38404850555e656b6f757c8084888c8e909593949494949397918f8d8a86827e79726d64615a534b433c332b221910070000000000000000000000000000050a0e111313161616161616161616161514120f0b0b0f1112161616161616161616161612110f0c08020000000000000000000000050a0e111313161616161616161616161514120f0b0600000000000000000000000000000000000000000000050e171e252b30333439393939393939393939393635322e28211a1108000000000000000000000000000000000000000000000000000000000001060f161c212a303437383b3a37332d261e150c131c232a303437383a3433302b251e161108030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818d919191919191919191918b7f74685d51453a2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f383f464a555a61646b70757a7d80828586878889898888878583817e7b77726e68645d56514a433b332b231a12080000000000000000000000000001080f14191c1e1f22222222222222222222201f1d1a15161a1c1d22222222222222222222221d1d1a17120c06000000000000000001080f14191c1e1f22222222222222222222201f1d1a1510090200000000000000000000000000000000000000020c151e272f353b3f40454545454545454545454542403d38322a21180f05000000000000000000000000000000000000000000000000000000040b11171f262c303a3f42434745423d362e261c1419232c343a3f434446403e3b352f272119120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303c47535f6a76818585858585858585858585857f74685d51453a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f363b454a51565b6264696e717477797b7c7d7d7d7d7c7b7a7876736f6b66635f58544b474139322b231b120a02000000000000000000000000010911181f24272a2b2d2d2d2d2d2d2d2d2d2d2c2b292520212528292d2d2d2d2d2d2d2d2d2d2d292826211c160f07000000000000010911181f24272a2b2d2d2d2d2d2d2d2d2d2d2c2b2925201a130b0200000000000000000000000000000000000007121c252f373f454a4c50505050505050505050504d4c48423a32281e140a0000000000000000000000000000000000000000000000000000050d141b20272f363b444a4d4f52514d463f362d241a212a343c444a4e4f514c4a453f37312a221c160f07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3b46515d6771767a7a7a7a7a7a7a7a7a7a7a7a746f655b5044392d22160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262c303a41474b5257585f6365696b6a6f707171727171706e696a6764615a57544f47443c373029221a120a020000000000000000000000000008111a22282e333536393939393939393939393736342f2a2b30333439393939393939393939393534312c261f170f06000000000008111a22282e333536393939393939393939393736342f2a231b13090000000000000000000000000000000000000b16212b353f484f55575c5c5c5c5c5c5c5c5c5c5c5957524b42382e24190e030000000000000000000000000000000000000000000000000810161e252b2f383f464a54595a5e5c574f463d352a2227313a444d54595b5d57554f48423a312c261f17120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38434d5760676a6e6e6e6e6e6e6e6e6e6e6e6e68655f564c41362b201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c212931383d42484c4f55575a5d5a616365656666666564635f585b5856514b4a453f37312d272018120a0200000000000000000000000000050f18222a32383e41424444444444444444444443423f3a33353b3e404444444444444444444444403f3b362f281f160c02000000050f18222a32383e41424444444444444444444443423f3a332b231a100600000000000000000000000000000000030f1a25303b454f585f63676767676767676767676764625b52483d32271c1105000000000000000000000000000000000000000000000007101820262e353a424850555d636669665f574e453b32282f38424a545d646669635f58524a443c363028221a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29333d4750575d5f6363636363636363636363635d5b564e453c32271c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c121921282d32383d3f454a4c4e52515658595a5a5a5a595857554f504c4b47413e3b352e27231d1710080100000000000000000000000000000a141f28323a42484c4d505050505050505050504f4d49433c3f454a4c50505050505050505050504c4a4640382f261c12080000000a141f28323a42484c4d505050505050505050504f4d49433c332a20150b0000000000000000000000000000000005111c28333f4a555f696e7373737373737373737373706c62574c40352a1e130700000000000000000000000000000000000000000000030d17202931363e4549525960636d727570665e554b423830363f48525b646e72746e68625b544a464038322b2218100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d373f474d515357575757575757575757575751504c453e352c22180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020710171e23282e32353b3f404346474b4c4d4e4f4f4e4e4d4c4a454441403d3733302b251e16130d07000000000000000000000000000000030e19242e38424b5257595b5b5b5b5b5b5b5b5b5b5a58544c43484f55575b5b5b5b5b5b5b5b5b5b5b5755504840362c21170c0100030e19242e38424b5257595b5b5b5b5b5b5b5b5b5b5a58544c433a2f251a0f0400000000000000000000000000000006121d2934404c57636e797f7f7f7f7f7f7f7f7f7f7f7c7064594d42362a1f13080000000000000000000000000000000000000000000009131d27313941474e545b62696e757d80756e655c534940373b454f58626b727e8079706b645d555049433b322820170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373d4346474b4b4b4b4b4b4b4b4b4b4b4b4544413c352d251c12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e13181e23252b30333437373c3f4142434343434241403f3b353534322d2825211b150e09030000000000000000000000000000000006111c27333e48525b62646767676767676767676766635d54494f585f63676767676767676767676763605950463b31261a0f040006111c27333e48525b62646767676767676767676766635d54493f34291d120700000000000000000000000000000006121e2935404c57636f7a868a8a8a8a8a8a8a8a8a8a7e72675b5044392d21160a000000000000000000000000000000000000000000020d18232d37414a51575e636c707980898a7f736c625950463c414a555f69707c858b827b726e636059534b433930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f262d33383b3c4040404040404040404040403a3936322c251d150b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e14191c212528292c2d313435363737383737363433302b2a2927231e1a16110b0500000000000000000000000000000000000007131e2a35414c57626c7073737373737373737373716d63584d555f686e73737373737373737373736f6960554a3f34281d11060007131e2a35414c57626c7073737373737373737373716d63584d42362b1f140800000000000000000000000000000006121e2935404c57636f7a869196969696969696958a7e72675b5044392d21160a00000000000000000000000000000000000000000005101b26323c47515a61686e737c838c9191867c706a60564b454a545d636e79838f938e857e756f69625c534940372d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161d24292d2f303434343434343434343434342e2d2b27221c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c12161a1c1d20222629292b2b2c2c2c2b2a292825211e1d1b18130f0b07010000000000000000000000000000000000000008131f2b36424d5964707c7e7e7e7e7e7e7e7e7e7e7d71665a4f57636e797e7e7e7e7e7e7e7e7e7e7e796f63574c4035291d12060008131f2b36424d5964707c7e7e7e7e7e7e7e7e7e7e7d71665a4f43372c20150900000000000000000000000000000006121e2935404c57636f7a86919da1a1a1a1a1a1958a7e72675b5044392d21160a00000000000000000000000000000000000000000006121d2934404b56616a6f787f868f939a968f837a6f635e554b515a646d75808c939c959089817a706c625a51473c31261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191e2224252929292929292929292929292322201c18120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f111213181b1d1e1f20202020201e1d1c1a161212100d0903000000000000000000000000000000000000000000000b16222e3945505c68737f8a8a8a8a8a8a8a8a8a8a82766b5f5457636f7a868a8a8a8a8a8a8a8a8a867b6f64584c41352a1e1207000b16222e3945505c68737f8a8a8a8a8a8a8a8a8a8a81766b5f54483c31251a0e00000000000000000000000005050506121e2935404c57636f7a86919da9adadadaca1958a7e72675b5044392d21160a05050503020000000000000000000000000000000007121e2a35414c58646f7b828a91969da49d948d81766e655c5358616b727e89909aa39f9c918d837c706a61564b3f34291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131618191d1d1d1d1d1d1d1d1d1d1d1d171614110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080d1012121414151514141312110f0b070605020000000000000000000000000000000000000000000000000b16222e3945505c68737f8a95959595959595958d82766b5f5457636f7a86919595959595959592867b6f64584c41352a1e1207000b16222e3945505c68737f8a95959595959595958d82766b5f54483c31251a0e000000000000000307090b0c11111111121e2935404c57636f7a86919da9b4b9b8aca1958a7e72675b5044392d2116111111110e0e0c0905000000000000000000000000030f1b26323d4954606c77838e929c9fa7ada49b918a7f736c62595f686f7b85909ca1aaa9a19b948f857b6f63584c4135291e1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d1111111111111111111111110b0b09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070809090909080706050300000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a1a1a1a1a1a1998d82766b5f5457636f7a86919da1a1a1a1a19e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a1a1a1a1a1a1998d82766b5f54483c31251a0e000000000002080d121517171c1c1c1c1c1e2935404c57636f7a86919da9b4c0b8aca1958a7e72675b5044392d211c1c1c1c1c1a191714100a0400000000000000000000000814202b37424e5965717d86919ca2acb5aba29c91867c706a60636e79828e959ea9b1aea59b928a7f736a61564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222e3945505c68737f8a96a2adadadada5998d82766b5f5457636f7a86919da9adadada99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adadadada5998d82766b5f54483c31251a0e00000000040c12181d2022232828282828282935404c57636f7a86919da9b4c0b8aca1958a7e72675b5044392d2828282828282525221f1a140e060000000000000000000008131f2a36414d58636c747f8b929ca5aeb5aa9f968f837a6f636d74808b939ca5aeb0a79e948d81766f655a51473c31261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406060a0d0e0e0d0c080806030000000000000000000000000000000000000000000000000000000000000000000000000104060609090909090909090908070503000000000000000000000000000000040608090b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a08060200000000000000000000000b16222e3945505c68737f8a96a2adb8b8b0a5998d82766b5f5457636f7a86919da9b4b8b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb8b8b0a5998d82766b5f54483c31251a0e000000040d151c22272b2e2e3333333333333335404c57636f7a86919da9b4c0b8aca1958a7e72675b5044393333333333333331302e2a241e170f0600000000000000000006111d28333e49535c636e78828e959ea8b1afa79d948d81766e717d87919ca3acb5aba09790847a6f635e554940372d22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f11121518191a19171413110e0a05000000000000000000000000000000000000000000000000000000000000000002070c0f11121414141414141414141313110e0a050000000000000000000000060b0f1214141717171717171717171717171717171717171717171717171717161614110c07010000000000000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e0000020c151d252c3236393a3f3f3f3f3f3f3f3f404c57636f7a86919da9b4c0b8aca1958a7e72675b50443f3f3f3f3f3f3f3f3d3c39342e271f170e040000000000000000030e19242f394349545e686f7b849097a1abb6ada49b918a7f737b849097a1abb3aca39c91867d716a61564e453930271d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070d12171b1d1e2124252625231f1f1d19150f0b050000000000000000000000000000000000000000000000000000000000050c12171a1d1d2020202020202020201f1e1c19140f080100000000000000020910151a1d1f20222222222222222222222222222222222222222222222222222222211f1c17110b0400000000000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000008121c252e353c4144464a4a4a4a4a4a4a4a4a4c57636f7a86919da9b4c0b8aca1958a7e72675b504a4a4a4a4a4a4a4a4a4847433e3730271e140a0000000000000000000a151f292f3a454e57616a717d87919ca3acb5aba29c91867c828e959ea8b1aea59c928b7f746d635a51473d352820170d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161d222628292c2f3131302e2b2a28241f1a150f09020000000000000000000000000000000000000000000000000000060e161c212528292b2b2b2b2b2b2b2b2b2a2a27241e181109010000000000020a12191f24282b2b2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2d2a26211b140c04000000000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e00030d18222c353e464c50515656565656565656565657636f7a86919da9b4c0b8aca1958a7e72675b5656565656565656565654524e4840372e241a100500000000000000060b0f16202b353e47515a636d74808b939ca6afb5aaa09690858e929ca5aeb1a89e958e82786e635c534941372d2418100b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151c21262c313435383b3c3d3c3a3736332f29241f19120a04000000000000000000000000000000000000000000000000050e171f262c3033343737373737373737373635322e28211a1108000000000009121b22292f3336373939393939393939393939393939393939393939393939393939393835312b241c140b010000000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e0007121d27323c464e565b5d6262626262626262626262636f7a86919da9b4c0b8aca1958a7e726762626262626262626262625f5d5850483e342a1f14090000000000020910151a1b20252e36414a535d636e79828e959fa9b4b0a79f9690969ca3acb6aba19790847b6f685f544c43393027201c1916110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171f262c30363c3f4044474848474642413e39332f29221b140c0400000000000000000000000000000000000000000000040d161f272f363b3f4042424242424242424242413d38322a21180f05000000061019222b33393e414345454545454545454545454545454545454545454545454545454543403b352d241b11070000000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000915202b36414c565f66686d6d6d6d6d6d6d6d6d6d6d6d6f7a86919da9b4c0b8aca1958a7e726d6d6d6d6d6d6d6d6d6d6d6d6b6861584e43392e22170c00000000020a12192025252b2f333439434a555f68707b85909ca1aab7afa69f9c9fa6acb3aca39c91877d726b61584f453a35332f2b2724201b140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272f363b40464a4c4f52535453514e4c49433e39332b251d140d040000000000000000000000000000000000000000010b141e262f383f464a4c4e4e4e4e4e4e4e4e4e4d4c48423a32281e140a0000000b151f29333b43494d4e5151515151515151515151515151515151515151515151515151504f4b453d352b21170c0200000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000b17222e3944505b666f74797979797979797979797979797a86919da9b4c0b8aca1958a7e797979797979797979797979797671685d52473c3025190e0000000009121b232a2f33353a3e4043494c4f58616b727e89919aa6afb7afaaa8aaafb7b3a79d938c80756d635a514b4945403e3a35332f2b251e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17202930383f454a5056585b5e5f605f5d5958534d49433b352d251d140b020000000000000000000000000000000000000106111b252e363f485055575a5a5a5a5a5a5a5a5a5957524b42382e24190e0300040f1a242f39434c53585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a554e453b31261c110600000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c17232e3a46515d6874808484848484848484848484848484909ca7b3becabfb3a89c90858484848484848484848484848482766b5f54483d31251a0e000000061019232b33393e3e45494b4e5358595c62656d75808c969faab5b9b5b3b5b9bdb1a69a8f83796e65635f5857544f4b4945403e3a352e261e140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28303941484f5559606366696b6b6a6865635c58534c453d352d251b130600000000000000000000000000000000000109121b202b353e475058606365656565656565656564625b52483d32271c11050006121d28333e49535c6365686868686868686868686868686868686868686868686868686867655e554b40352a1f140800000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c90909090909090909090909090959ea9b4bfcbc0b5aa9f96909090909090909090909090908e83776c6054493d32261a0f0000000b15202a333c43494d4e54575a5c6365696c7074787c85909ca8b3bfc0bfc0c4b8aca1958a7e7875716e6865635f5857544e4b49453e362e251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c263038414951585f636a6f727576777674716c65635c554e453e352c23160e050000000000000000000000000000000008111a232b2f3a454e5760696e717171717171717171706c62574c41352a1e13070008141f2b36414d58636d717373737373737373737373737373737373737373737373737373736e655a4f43382d21160a00000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c979c9c9c9c9c9c9c9c9c9c9c9c9ea5aeb8c3cec3b9afa69f9c9c9c9c9c9c9c9c9c9c9c9c9a8e83776c6054493d32261a0f0000040f1a252f39434c5358575e6365696c7174787c80838890969faab5c0cbcacbc5b9aea3988f8a84807d7975716e6865635e5757544e473e352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c364049515a61696e747a7e81828281807c77716d655e554e453c33271e150c020000000000000000000000000000071018212a333c4349545e686e797c7c7c7c7c7c7c7c7d7c7064594d42362a1f1308000914202b37434e5a65717d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f73675c5045392d22160b00000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a3a7a7a7a7a7a7a7a7a7a7a7a9aeb6bec8d2c9bfb6afaaa8a7a7a7a7a7a7a7a7a7a7a69a8e83776c6054493d32261a0f000007121d28333e49535c6365686e7175787c8084888b8f949c9fa6afb9c4ced6d7c7bdb2a89f9894908c8884807d7975716e6865635e574e453a2f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059616a6f797f85898c8d8e8d8b88837d736f655f554c43372f251b110700000000000000000000000000050f172029323a434c555e636e78818888888888888888887e72675b4f44382d21150a000c18232f3a46525d6974808b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b85796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a3aeb3b3b3b3b3b3b3b3b3b3b4b8bec6cfd8cfc7bfb9b5b3b3b3b3b3b3b3b3b3b3b1a69a8e83776c6054493d32261a0f000008141f2b36424d58636d7175797d8084888c8f94979b9da4aaafb7bfc9d2d8d4ccc2b8b0a8a59e9b9894908c8884807d7975716e685e54493e33271c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a5560696f7b828b90959899999997938e877f746f655d54483f352b21160b000000000000000000000000040d161f273039424b535c646e74808b919494949494948e83786e63574b4034291d1106000c18232f3a46525d6974808b9696969696969696969696969696969696969696969696969084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a3aebabebebebebebebebebebfc3c8cfd6dfd7cfc9c3c0bfbebebebebebebebebdb1a69a8e83776c6054493d32261a0f00000914202c37434e5a65717d8084888c9094979b9da4a6a8adb5b9bec0c3c8cfcbc4bfbcb8b5aea9a7a59e9b9894908c8884807d786e63574b4034291d11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e49535c636f7a838e929c9fa6a5a5a4a39c97918a7f746d63584f453b30251a0f0300000000000000000000010b141e262f384149525b636d737e8a909aa29f9fa79b92887d71685e54493e33271c1005000c18232f3a46525d6974808b97a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a3aeb9b9b9b9b9b9b9b9b9babbbec3cad2dad3cbc5c0bdbcb9b9b9b9b9b9b9b9b9b1a69a8e83776c6054493d32261a0f0004101b27323e4a55616c78838c9094979b9ea5a7a8adb2b3b3b2aeb3b4b8bfc6c2bab4b0afb1b4b4b3aea9a7a59e9b9894908c867b6f64584c41352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2a36414d58636c76818d939ca3a9afb0b1b0aca7a09c91877d71685f554a3e33281c11050000000000000000000106111b252e363f48515a626c717d86919ca0a9abaaa0968d81766d63574e453a2f24190e03000c18232f3a46525d6974808b97a3adadadadadadadadadadadadadadadadadadadada79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a3aeaeaeaeaeaeaeaeaeaeaeb0b4bac1cad3cbc3bbb5b1b0aeaeaeaeaeaeaeaeaeaea69a8e83776c6054493d32261a0f00000c18232f3a46515d6974808b979ea5a7a8aeb2b3b3b2ada8a6a3a7a9aeb6bfbab1aaa5a3a5a8abb0b4b4b3aea9a7a59e9a8e83776b61564b4034291d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b454f5865717d88919ba4acb4b9bcbcbbb8b0aba1978f83796e63574c4034291d120600000000000000000109121b202b353e475059616a707c859096a0aab1afa69c91867c70645c53473e352b20160b00000c18232f3a46525d6974808b97a3aeb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b3a79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c97a2a2a2a2a2a2a2a2a2a2a2a3a4aab1bac3cec5bbb2aba6a4a2a2a2a2a2a2a2a2a2a2a29a8e83776c6054493d32261a0f000008141f2b37424e5965717c88949ea8b2b4b3b1ada8a6a49d9b979c9fa5aeb8b4aaa19a989a9ca0a7a8abb0b3b4b3aca3968b7f73685a51473d32271b100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a555f6976818d99a2abb4bcc3c8c8c8c1bab1a89d94897e72665b4f44382c21150a000000000000000008111a232b2f3a454e5760696f7b848f959fa7b0b4a99f958c80756b62574c43362e251b110600000c18232f3a46525d6974808b97a3aebac5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5beb3a79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808c979797979797979797979797979aa0aab4bec9c0b5aba29b999797979797979797979797978e83776c6054493d32261a0f000008131f2a36414c58636c7884909ba7b1aca7a6a49d9b97948f8c90959fa9b4b0a59a918c8e9197999ca0a7a8aab0a89d93877b7064584d41372d23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404c57636e7985909ca7b3bbc4ced2d3d1cac1b8ada4988d81756a5e53473b3024190d00000000000000071018212a333c4349545e686e79828e949da6afb7ada49c90857a6f635b52483b33261e140b0100000c18232f3a46525d6974808b97a3aebac2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2beb3a79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f5457636f7a86919da9b4c0b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb9bcb0a5998d82766b5f54483c31251a0e000c18232f3b46525d6974808b8b8b8b8b8b8b8b8b8b8b8b8b8b909aa4b0bbc6bdb1a69b928d8b8b8b8b8b8b8b8b8b8b8b8b8b82776c6054493d32261a0f000006111d28333e49535c6975808c97a5a5a39d9a96938f8b87848085909ca7b3afa3988c8082868a8e9197999ca0a7a69a8f83776b62574c4035271e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36414d5864707c87959fa9b4c0cbd5dde1dad1c9bdb1a69a8f83786c6055493e32261b0f000000000000050f172029323a434c555e636e78818d939ca4adb6b3a89d948b7f736a61564b42382b22160d040000000c18232f3a46525d6974808b97a3aeb6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b3a79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2adb5b5b0a5998d82766b5f5457636f7a86919da9b4b5b5a99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2adb5b5b0a5998d82766b5f54483c31251a0e000915202c37434f5a66717d80808080808080808080808080808b97a3aebac5bcb0a4998d81808080808080808080808080807e73675b5044392d22160a0000030e19242f39434e5a65717d88959c9a96938f8b8783807c787884909ba7b2ab9f93887d777b7f82868a8e9196999c968b7f74685b52483d3227170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b37424e5965717c8893a6afb9c3cedce5eae1d5cabeb3a79b9084796d61564a3f33271c100000000000040d161f273039424b535c646e74808b919ba3acb5b6aca39b8f83796e635a51473a31281b1205000000000c18232f3a46525d6974808b97a3ababababababababababababababababababababa79c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a96a2aaaaaaaaa5998d82766b5f5457636f7a86919da9aaaaaaa99e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a96a2aaaaaaaaa5998d82766b5f54483c31251a0e0008141f2b36424d58636d71747474747474747474747474747a86919da9b4c0b8aca1958a7e74747474747474747474747474736e645a4e43382c21150a0000000a151d2934404b57636e798490918e8a87837f7c7874706c7884909ba7b2ab9f93887c716f73777b7e8285898d9193877c7064594d42382e231808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424e5965707c8893a4adb7c2cdd9e3e7dfd5c9beb2a79b8f84786d61554a3e33271c1000000000010b141e262f38414a525b636d737e8a909aa2abb3bcb2a79c93897e72695f554940372a21180a02000000000c18232f3a46525d6974808b979f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c9084796d62564a3f33281c1100000000000b16222e3945505c68737f8a969e9e9e9e9e9e998d82766b5f5457636f7a86919d9e9e9e9e9e9e92867b6f64584c41352a1e1207000b16222e3945505c68737f8a969e9e9e9e9e9e998d82766b5f54483c31251a0e0007121d29343f49545d63666868686868686868686868686f7a86919da9b4c0b8aca1958a7e7268686868686868686868686867645e554b40352a1f130800000005111c28333e49545f6875818a86837f7b7774706b68656d7884909ba7b2ab9f93887c7165676a6f73767a7e82858983786c62574c4135281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2a35414c58646f7b86949da8b3bfc9d3dadcd7cec6bdb1a59a8e83776b6054493d32261a0f0000000006111b252e363f48515a626c717d86919ca0aab2bbb7aba29a8e82776e64584f4539302719110800000000000c18232f3a46525d6974808b9393939393939393939393939393939393939393939393939084796d62564a3f33281c1100000000000b16222e3945505c68737f8a93939393939393938d82766b5f5457636f7a86919393939393939392867b6f64584c41352a1e1207000b16222e3945505c68737f8a93939393939393938d82766b5f54483c31251a0e00040f1a252f3a434c54585a5d5d5d5d5d5d5d5d5d5d5d636f7a86919da9b4c0b8aca1958a7e72675d5d5d5d5d5d5d5d5d5d5d5b5a554d453b31261b1005000000030e1a25303a454f5865717d7f7b7773706b6864625b616d7884909ba7b2ab9f93887c71655a6163676a6f72767a7e7e72665b52483d32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616a78848f9ba6afb9c3caced1cdc6beb5aba2978b8074695d51463a2f23170c00000009121b202b353e475059616a707c859096a0aab1bab9afa79b91887d71655d54483f36282017090100000000000c18232f3a46525d697480888888888888888888888888888888888888888888888888888884796d62564a3f33281c1100000000000b16222e3945505c68737f8787878787878787878782766b5f5457636f7a86878787878787878787867b6f64584c41352a1e1207000b16222e3945505c68737f8787878787878787878782766b5f54483c31251a0e00000b15202a333c43494d4f5151515151515151515157636f7a86919da9b4c0b8aca1958a7e72675b51515151515151515151504e4b453d342b21170c02000000000b16202b353e4c58636c71736f6b6864615b595752616d7884909ba7b2ab9f93887c716559565859606367696f72726e64594b42382e24190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d47515a6974808c969faab5bac0c4c7c2bdb6aea59b92887c7065594e42362b1f14080000061019232b2f3a454e5760696f7b848f959fa7b0bac0b5aa9f968d81766c63584d44382f2618100600000000000007131e2a35414d58646f7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7065594e42362b1f1408000000000007121e2935414c58636f7a7c7c7c7c7c7c7c7c7c7c7b6f64584d57636e787c7c7c7c7c7c7c7c7c7c7c7a6e63574b4034291d12060007121e2935414c58636f7a7c7c7c7c7c7c7c7c7c7c7b6f64584d41352a1e1307000006101a232b333a3f42434646464646464646464c57636f7a86919da9b4c0b8aca1958a7e72675b504646464646464646464443403b342d241b1107000000000007111b25333e49535c63656764615a5857524d4c56616d7884909ba7b2ab9f93887c7165594e4c5056585960636666645d544a3a32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414c58646f7b85909ca1aab0b5b9b8b7b4ada69e958d81766c62584c41362a1f130800000b15202a333c4349545e686e79828e949da6afb7b4b8aea59c91867b70645c53493c34271f15080000000000000007121e2935404b57616b6f7171717171717171717171717171717171717171717171717171706c62584c41362a1f1308000000000006121d29343f4b56606a6f707070707070707070706f6b61564b545e686e70707070707070707070706e685f544a3e33281c11050006121d29343f4b56606a6f707070707070707070706f6b61564b4035291e120700000009131b232a2f3436373a3a3a3a3a3a3a3a404c57636f7a86919da9b4c0b8aca1958a7e72675b50443a3a3a3a3a3a3a3a393835312b241c140b010000000000010b19242f39434b5358595c5856514d4b48424a56616d7884909ba7b2ab9f93887c7165594e42464b4c5055575b5b59544d443a2a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d2934404b56616a737f8a909ca0a7aaafadada8a49d9590847b6f645c53483e33281d110600040f1a252f3a434c555e636e78818d939ca4ada8a8a8a8a99e958c80746b62574c43392c23170e050000000000000005101c27323d47515a6164656565656565656565656565656565656565656565656565656565625c53493e33281d1106000000000004101b26313c47515a60636464646464646464646464615a51474e575e636464646464646464646464635f584f453b30251a0f030004101b26313c47515a60636464646464646464646464615a51473d32271c1005000000020b131a2025292b2c2e2e2e2e2e2e2e35404c57636f7a86919da9b4c0b8aca1958a7e72675b5044392e2e2e2e2e2e2e2d2c2a26211b140c03000000000000000a151f29323b43494c4e504c4b4741403d384a56616d7884909ba7b2ab9f93887c7165594e423c3f40464a4c4f4f4e4a443d342a1a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26323c47515a656e75808a91979c9fa6a1a49e9b948f857d716b61564b42392f24190e030007121d28343f49535c646e74808b919ba39c9c9c9c9c9ca49c90847a6f635b52483b33291c13060000000000000000020d18232d38414a51575859595959595959595959595959595959595959595959595959595958534b43392f24190e030000000000010d17222d374049515658595959595959595959595856514a41474e5457595959595959595959595957544f473f352b21160b0000010d17222d374049515658595959595959595959595856514a41382d23180d0200000000020910151a1d1f202323232323232935404c57636f7a86919da9b4c0b8aca1958a7e72675b5044392d23232323232322211f1b17110b030000000000000000050f19222b32393e41424541403d3735323f4a56616d7884909ba7b2ab9f93887c7165594e423734363c3f404444433f3a342c241a09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232d37414a555e6670757f868d9096959695948f8b837c716c635a51473b32291f150a000008141f2b36424d58636d737e8a9091919191919191919191948a7f736a60564a42382b22190b0300000000000000000009141e28313a41474b4d4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4c49433b32291f150a0000000000000008131d27303940474b4c4d4d4d4d4d4d4d4d4d4d4d4b47413a3e45494b4d4d4d4d4d4d4d4d4d4d4d4b4a453f372e251b110700000008131d27303940474b4c4d4d4d4d4d4d4d4d4d4d4d4b47413a31281e130900000000000000060b0f12141517171717171e2935404c57636f7a86919da9b4bfb8aca1958a7e72675b5044392d211717171717161513100c07010000000000000000000009121a22292f333637393534322d29333f4a56616d7884909ba7aaaa9f93887c7165594e42372b2c31343538383734302a241c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d273139454e565f666f737c818588898a8987847f79706c635c534a41382a22190f0500000914202c37434e5a66717d868585858585858585858585858583796e635950463a31281a120900000000000000000000040e18212931383d4041424242424242424242424242424242424242424242424242424242413e39322b22190f0500000000000000030d17202830373c3f414242424242424242424241403d3831353a3e404242424242424242424242403e3b352e271e150b01000000030d17202830373c3f414242424242424242424241403d38312921170e04000000000000000000040708090c0c0c0c121e2935404c57636f7a86919da9b4b4b4aca1958a7e72675b5044392d21160c0c0c0c0a0a080502000000000000000000000000010a12191f24282a2b2d2a29272327333f4a56616d7884909b9e9e9e9e93887c7165594e42372b222628292c2d2c2926201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029343d464f565e656b70767a7d7e7e7d7c78736e69625b534c433a31281a120900000008141f2b36424d58636d71797a7a7a7a7a7a7a7a7a7a7a7a7a786e695f554940372a21180a02000000000000000000000007101921282d32353537373737373737373737373737373737373737373737373737373636332f29221a1209000000000000000000060f1820272d313435363636363636363636363535322d282b2f333436363636363636363636363433302b251e160e050000000000060f1820272d313435363636363636363636363535322d2821191007000000000000000000000000000000000006121e2935404c57636f7a86919da8a8a8a8a8a1958a7e72675b5044392d21160a00000000000000000000000000000000000000000001090f15191d1f1f221e1d1b1827333f4a56616d788490939393939393887c7165594e42372b201b1d1e2121201e1b16110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018242d363e464e555b6264696e71727372706c68636058524b433b322921170a0100000007121d28343f49535c63666e6e6e6e6e6e6e6e6e6e6e6e6e6e6c635f584f45393027191108000000000000000000000000000810181e2327292a2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a28241f19120a0100000000000000000000080f171d222629292a2a2a2a2a2a2a2a2a2a2a2927231e202427292a2a2a2a2a2a2a2a2a2a2a292825211b150e0600000000000000080f171d222629292a2a2a2a2a2a2a2a2a2a2a2927231e17100800000000000000000000000000000000000006121e2935404c57636f7a86919c9c9c9c9c9c9c958a7e72675b5044392d21160a0000000000000000000000000000000000000000000000050a0e111314161312101c27333f4a56616d788487878787878787877d7165594e42372b2014111215151513100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c262e363d454b52575960636567676665625b57555048423a322b2219100700000000040f1a252f3a434c53585a62636363636363636363636363636157554f483f3528201709000000000000000000000000000000070e14181c1e1e20202020202020202020202020202020202020202020202020201f1f1d19150f0901000000000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1e1e1c181316191c1d1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110b05000000000000000000060d13171b1d1e1f1f1f1f1f1f1f1f1f1f1e1e1c18130e070000000000000000000000000000000000000006121e2935404c57636f7a869191919191919191918a7e72675b5044392d21160a00000000000000000000000000000000000000000000000000030608080b070607131f2a36414d5964707c7c7c7c7c7c7c7c7c796e63574c4035291d1206060a0a0907050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c151e262d353a42484c5055575a5b5c5b5957524c4a463f38322a221a12080000000000000b15202a333c43494d4e5757575757575757575757575757554c4a453f372f25180f060000000000000000000000000000000004090d10121314141414141414141414141414141414141414141414141414141413110e0a0500000000000000000000000000000003080d101212131313131313131313131312100d090b0e1011131313131313131313131312110f0b0701000000000000000000000003080d101212131313131313131313131312100d0904000000000000000000000000000000000000000006121e2935404c57636f7a85858585858585858585857e72675b5044392d21160a000000000000000000000000000000000000000000000000000000000000000007121e2935404c57626b7070707070707070706e6960554a3f33281d1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d242a32383d3f464a4c4e50504f4d4c48423f3b362f27211a120a01000000000000061019232b333a3f42434b4b4b4b4b4b4b4b4b4b4b4b4b4b4a403f3b352f271e150700000000000000000000000000000000000000020507070808080808080808080808080808080808080808080808080808080806030000000000000000000000000000000000000001040607080808080808080808080707050200000305060808080808080808080808060503000000000000000000000000000000000104060708080808080808080808070705020000000000000000000000000000000000000000000006111d28343f4a556069777a7a7a7a7a7a7a7a7a7a7a726e64594e43382c21150a000000000000000000000000000000000000000000000000000000000000000005111c27323d48525b6264646464646464646463605950463b30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c141921282e32363b3f404344454442413e3833302c261f17110901000000000000000009121b232a2f34363740404040404040404040404040403e3433302b251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26313c465059606d6e6e6e6e6e6e6e6e6e6e6e67645e554a40352a1f13080000000000000000000000000000000000000000000000000000000000000000020e18232e38424a5257595959595959595959575550483f362c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040911181e23262c303335373839383635332e2825211c160e0601000000000000000000020b12192025282b2c343434343434343434343434343432292825211c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222c36404950556263636363636363636363635b59554d443b30261b100500000000000000000000000000000000000000000000000000000000000000000009141e28313a42484c4d4d4d4d4d4d4d4d4d4c4a463f382f261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191c212528292b2d2d2c2b2a27241f1a17120c05000000000000000000000000020910151a1d1f202829292929292929292929292929271d1c1a16120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303840464a575757575757575757575757504e4a443d342b21170c01000000000000000000000000000000000000000000000000000000000000000000040e18212a31383d40414242424242424242403f3b362f271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c12171a1d1d202122211f1e1c19140f0c0702000000000000000000000000000000060b0f1214141d1d1d1d1d1d1d1d1d1d1d1d1d1d1b12110f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f2830363c3f4b4b4b4b4b4b4b4b4b4b4b4b4443403b342c241b1107000000000000000000000000000000000000000000000000000000000000000000000008111921282e32353636363636363636363533302c261f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f1112141616151313110e0a040100000000000000000000000000000000000000040708091111111111111111111111111111100605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c3134404040404040404040404040393835302b241c140a010000000000000000000000000000000000000000000000000000000000000000000000000911181e2327292a2a2a2a2a2a2a2a2a292825211c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040606090a0b0a080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c2226283434343434343434343434342d2c2a26211b140c030000000000000000000000000000000000000000000000000000000000000000000000000000080e14181c1e1f1f1f1f1f1f1f1f1f1d1d1a17120c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12171b1d29292929292929292929292921211f1b17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f111d1d1d1d1d1d1d1d1d1d1d1d161513100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707080808080808080806060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104061111111111111111111111110a0a080501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset.meta new file mode 100644 index 00000000..2715de1f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Fonts/Euclid Circular B SemiBold SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 25e6546b30de74641a7d135b443cf5dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs.meta new file mode 100644 index 00000000..82e5f6ae --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3169ae44ab8b24745a8294c8ea7ae2d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab new file mode 100644 index 00000000..ac445f96 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab @@ -0,0 +1,96 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &565171663956538073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 565171663956538075} + - component: {fileID: 565171663956538074} + - component: {fileID: 8848943428709072873} + m_Layer: 0 + m_Name: MetaMaskUnity + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &565171663956538075 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 565171663956538073} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &565171663956538074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 565171663956538073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 523533b4558dd4b4094acf159d13a23d, type: 3} + m_Name: + m_EditorClassIdentifier: + config: {fileID: 11400000, guid: 6cbb8289bcfbdba43817188b3b4f15e0, type: 2} + initializeOnStart: 1 + _transport: {fileID: 11400000, guid: 2794b8de755b55048bc6f0544321e072, type: 2} + clearSessionData: 0 +--- !u!114 &8848943428709072873 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 565171663956538073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8d71131c319421d9620f5fbcf63ed20, type: 3} + m_Name: + m_EditorClassIdentifier: + MetaMaskConnected: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletReady: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletPaused: + m_PersistentCalls: + m_Calls: [] + MetamaskConnecting: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletDisconnected: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletAccountChanged: + m_PersistentCalls: + m_Calls: [] + MetaMaskChainIdChanged: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletAuthorized: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletUnauthorized: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletEthereumRequestResult: + m_PersistentCalls: + m_Calls: [] + MetaMaskWalletRequestFailed: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab.meta new file mode 100644 index 00000000..0bee546f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/MetaMaskUnity.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d4ef2d9932841424eb1a167afaf0d480 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI.meta new file mode 100644 index 00000000..689d908a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae5cc1c5cb561480d8fe3272ff8b38f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab new file mode 100644 index 00000000..d738e411 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab @@ -0,0 +1,5059 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4546866092825550465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092825550464} + m_Layer: 5 + m_Name: 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092825550464 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092825550465} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093213280429} + m_Father: {fileID: 4546866093515423457} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -555, y: -315} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092830642509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092830642508} + - component: {fileID: 4546866092830642497} + - component: {fileID: 4546866092830642498} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092830642508 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092830642509} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093890418361} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092830642497 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092830642509} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092830642498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092830642509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.74509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866092855311774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092855311773} + m_Layer: 5 + m_Name: 4 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092855311773 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092855311774} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094480606033} + m_Father: {fileID: 4546866093515423457} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -95, y: -834} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092859501289 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092859501288} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092859501288 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092859501289} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094843542114} + m_Father: {fileID: 4546866094467994608} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1286, y: -449} + m_SizeDelta: {x: 98.406006, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092897421564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092897421555} + m_Layer: 5 + m_Name: 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092897421555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092897421564} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093311010988} + m_Father: {fileID: 4546866094438820944} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 30, y: -567} + m_SizeDelta: {x: 98.40599, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092902249689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092902249688} + - component: {fileID: 4546866092902249693} + - component: {fileID: 4546866092902249694} + m_Layer: 5 + m_Name: Image (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092902249688 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092902249689} + m_LocalRotation: {x: -0, y: -0, z: 0.88863325, w: -0.4586187} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.11030334, y: 0.11030334, z: 0.11030334} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093586311344} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 234.59601} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 683.45184, y: 599} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092902249693 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092902249689} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092902249694 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092902249689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 453405934, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866092915687486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092915687485} + - component: {fileID: 4546866092915687474} + - component: {fileID: 4546866092915687484} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092915687485 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092915687486} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092939546065} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092915687474 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092915687486} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092915687484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092915687486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.6039216} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866092928958635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092928958634} + - component: {fileID: 4546866092928958639} + - component: {fileID: 4546866092928958632} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092928958634 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092928958635} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094131646374} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000061035156} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092928958639 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092928958635} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092928958632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092928958635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866092939546066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092939546065} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092939546065 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092939546066} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5130893, y: 0.5130893, z: 0.5130893} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092915687485} + m_Father: {fileID: 4546866094232599994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -355, y: -28.000017} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092959340370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092959340369} + - component: {fileID: 4546866092959340374} + - component: {fileID: 4546866092959340368} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092959340369 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092959340370} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094642229085} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092959340374 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092959340370} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092959340368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092959340370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.6039216} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866092974547346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092974547345} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092974547345 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092974547346} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3322814, y: 0.3322814, z: 0.3322814} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093405349185} + m_Father: {fileID: 4546866093485270242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 316, y: -531} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866092982100612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866092982100603} + - component: {fileID: 4546866092982100601} + - component: {fileID: 4546866092982100602} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866092982100603 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092982100612} + m_LocalRotation: {x: 1, y: 0, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094512971818} + m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -910} + m_SizeDelta: {x: 1674, y: 912} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866092982100601 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092982100612} + m_CullTransparentMesh: 1 +--- !u!114 &4546866092982100602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866092982100612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9176471, g: 0.96470594, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f148bf16f6894aa41a406846c4e6e623, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093000299454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093000299453} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093000299453 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093000299454} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3322814, y: 0.3322814, z: 0.3322814} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093517096562} + m_Father: {fileID: 4546866094232599994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 316, y: -531} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093068510595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093068510594} + m_Layer: 5 + m_Name: 4 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093068510594 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093068510595} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093385366272} + m_Father: {fileID: 4546866094232599994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -95, y: -834} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093091804282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093091804281} + - component: {fileID: 4546866093091804287} + - component: {fileID: 4546866093091804280} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093091804281 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093091804282} + m_LocalRotation: {x: -0.20248653, y: -0.0042414838, z: -0.020508386, w: 0.9790611} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.8399999, y: 2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093758487717} + m_LocalEulerAnglesHint: {x: -23.37, y: 0, z: -2.4} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0.000022888184, y: 912.0001} + m_SizeDelta: {x: 1674, y: 912} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093091804287 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093091804282} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093091804280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093091804282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9176471, g: 0.96470594, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f148bf16f6894aa41a406846c4e6e623, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093100620763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093100620762} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093100620762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093100620763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5130893, y: 0.5130893, z: 0.5130893} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094217034982} + m_Father: {fileID: 4546866093515423457} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -355, y: -28.000017} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093122383449 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093122383448} + m_Layer: 5 + m_Name: 4 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093122383448 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093122383449} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093863321101} + m_Father: {fileID: 4546866094232599994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 379, y: -107} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093146366869 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093146366868} + - component: {fileID: 4546866093146366857} + - component: {fileID: 4546866093146366858} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093146366868 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093146366869} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094613400438} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 300, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093146366857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093146366869} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093146366858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093146366869} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.6, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -81369497, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093213280430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093213280429} + - component: {fileID: 4546866093213280419} + - component: {fileID: 4546866093213280428} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093213280429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093213280430} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092825550464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093213280419 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093213280430} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093213280428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093213280430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093231652936 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093231652943} + - component: {fileID: 4546866093231652940} + - component: {fileID: 4546866093231652941} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093231652943 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093231652936} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094240909476} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093231652940 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093231652936} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093231652941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093231652936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093245680730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093245680729} + - component: {fileID: 4546866093245680734} + - component: {fileID: 4546866093245680735} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093245680729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093245680730} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094902820447} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093245680734 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093245680730} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093245680735 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093245680730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.74509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093285360639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093285360638} + - component: {fileID: 4546866093285360627} + - component: {fileID: 4546866093285360636} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093285360638 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093285360639} + m_LocalRotation: {x: -0, y: -0, z: 0.1826808, w: 0.9831723} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4316052, y: 0.4316052, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093417100504} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 21.052} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093285360627 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093285360639} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093285360636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093285360639} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093311010989 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093311010988} + - component: {fileID: 4546866093311010977} + - component: {fileID: 4546866093311010978} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093311010988 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093311010989} + m_LocalRotation: {x: -0, y: -0, z: 0.1826808, w: 0.9831723} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4316052, y: 0.4316052, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092897421555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 21.052} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093311010977 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093311010989} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093311010978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093311010989} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093385366273 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093385366272} + - component: {fileID: 4546866093385366277} + - component: {fileID: 4546866093385366278} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093385366272 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093385366273} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093068510594} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093385366277 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093385366273} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093385366278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093385366273} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.98823535, g: 0.654902, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093405349186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093405349185} + - component: {fileID: 4546866093405349190} + - component: {fileID: 4546866093405349191} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093405349185 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093405349186} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092974547345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000061035156} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093405349190 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093405349186} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093405349191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093405349186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093417100505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093417100504} + m_Layer: 5 + m_Name: 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093417100504 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093417100505} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093285360638} + m_Father: {fileID: 4546866094467994608} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 30, y: -567} + m_SizeDelta: {x: 98.40599, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093417677127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093417677126} + - component: {fileID: 4546866093417677115} + - component: {fileID: 4546866093417677124} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093417677126 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093417677127} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094540567397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093417677115 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093417677127} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093417677124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093417677127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.98823535, g: 0.654902, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093422621753 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093422621752} + m_Layer: 5 + m_Name: Circle (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093422621752 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093422621753} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094642229085} + - {fileID: 4546866094131646374} + - {fileID: 4546866093524521342} + - {fileID: 4546866093890418361} + - {fileID: 4546866093518206213} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1214, y: -38} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093435542081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093435542080} + m_Layer: 5 + m_Name: GameObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093435542080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093435542081} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093872836070} + m_Father: {fileID: 4546866093513562880} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 495, y: -244} + m_SizeDelta: {x: 87.803314, y: 76.953735} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093447792938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093447792937} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093447792937 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093447792938} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5130893, y: 0.5130893, z: 0.5130893} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093810624622} + m_Father: {fileID: 4546866093485270242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -355, y: -28.000017} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093451569932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093451569923} + m_Layer: 5 + m_Name: 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093451569923 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093451569932} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094662382775} + m_Father: {fileID: 4546866093485270242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -555, y: -315} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093466153986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093466153985} + m_Layer: 5 + m_Name: Spahes Move + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093466153985 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093466153986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094002075912} + - {fileID: 4546866094815387589} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 632, y: 246} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093485270243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093485270242} + m_Layer: 5 + m_Name: Circle (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093485270242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093485270243} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093447792937} + - {fileID: 4546866092974547345} + - {fileID: 4546866093451569923} + - {fileID: 4546866094415741954} + - {fileID: 4546866094439179297} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -1513} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093513155649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093513155648} + m_Layer: 5 + m_Name: CircleUnfilled + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093513155648 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093513155649} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094888791805} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093513562881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093513562880} + m_Layer: 5 + m_Name: Traingle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093513562880 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093513562881} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093435542080} + - {fileID: 4546866094965814293} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093515423458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093515423457} + m_Layer: 5 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093515423457 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093515423458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093100620762} + - {fileID: 4546866094361506142} + - {fileID: 4546866092825550464} + - {fileID: 4546866094902820447} + - {fileID: 4546866092855311773} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093517096563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093517096562} + - component: {fileID: 4546866093517096567} + - component: {fileID: 4546866093517096560} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093517096562 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093517096563} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093000299453} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000061035156} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093517096567 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093517096563} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093517096560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093517096563} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093518206214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093518206213} + m_Layer: 5 + m_Name: 4 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093518206213 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093518206214} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094535643726} + m_Father: {fileID: 4546866093422621752} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -95, y: -834} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093524521343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093524521342} + m_Layer: 5 + m_Name: 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093524521342 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093524521343} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094710918772} + m_Father: {fileID: 4546866093422621752} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -555, y: -315} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093581424177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093581424176} + - component: {fileID: 1588944691690074812} + m_Layer: 5 + m_Name: Dynamic Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093581424176 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093581424177} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094312012755} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &1588944691690074812 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093581424177} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &4546866093586311345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093586311344} + m_Layer: 5 + m_Name: GameObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093586311344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093586311345} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092902249688} + m_Father: {fileID: 4546866094067886503} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -661, y: -577} + m_SizeDelta: {x: 75.387024, y: 66.07172} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093594374737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093594374736} + - component: {fileID: 4546866093594374741} + - component: {fileID: 4546866093594374743} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093594374736 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093594374737} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094389357507} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093594374741 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093594374737} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093594374743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093594374737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.6039216} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093754571320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093754571327} + m_Layer: 5 + m_Name: 4 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093754571327 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093754571320} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094711302004} + m_Father: {fileID: 4546866094205990837} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 379, y: -107} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093758487718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093758487717} + m_Layer: 5 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4546866093758487717 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093758487718} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093091804281} + m_Father: {fileID: 4546866094312012755} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -126.82001, y: -315.02002} + m_SizeDelta: {x: 3080.1602, y: 1824} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093810624623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093810624622} + - component: {fileID: 4546866093810624611} + - component: {fileID: 4546866093810624621} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093810624622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093810624623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093447792937} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093810624611 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093810624623} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093810624621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093810624623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.6039216} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093816614578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093816614577} + - component: {fileID: 4546866093816614583} + - component: {fileID: 4546866093816614576} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093816614577 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093816614578} + m_LocalRotation: {x: -0, y: -0, z: -0.5064099, w: 0.86229295} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.43160525, y: 0.43160525, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094002075912} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -60.85} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093816614583 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093816614578} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093816614576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093816614578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.54509807, b: 0.8000001, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093863321102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093863321101} + - component: {fileID: 4546866093863321090} + - component: {fileID: 4546866093863321091} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093863321101 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093863321102} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093122383448} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093863321090 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093863321102} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093863321091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093863321102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.74509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093872836071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093872836070} + - component: {fileID: 4546866093872836068} + - component: {fileID: 4546866093872836069} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093872836070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093872836071} + m_LocalRotation: {x: -0, y: -0, z: 0.9769368, w: 0.21352896} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.12847033, y: 0.12847033, z: 0.12847033} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093435542080} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 155.342} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.000022888184} + m_SizeDelta: {x: 683.45184, y: 599} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093872836068 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093872836071} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093872836069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093872836071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 453405934, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093883565173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093883565172} + - component: {fileID: 4546866093883565161} + - component: {fileID: 4546866093883565162} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093883565172 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093883565173} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094415741954} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093883565161 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093883565173} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093883565162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093883565173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.74509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093890418362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093890418361} + m_Layer: 5 + m_Name: 4 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093890418361 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093890418362} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092830642508} + m_Father: {fileID: 4546866093422621752} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 379, y: -107} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093920642056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093920642063} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093920642063 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093920642056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094421402615} + m_Father: {fileID: 4546866094438820944} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1286, y: -449} + m_SizeDelta: {x: 98.406006, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093927668585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093927668584} + m_Layer: 5 + m_Name: 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093927668584 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093927668585} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094296565230} + m_Father: {fileID: 4546866094205990837} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -555, y: -315} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093938887035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093938887034} + - component: {fileID: 4546866093938887039} + - component: {fileID: 4546866093938887032} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093938887034 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093938887035} + m_LocalRotation: {x: -0, y: -0, z: 0.9769368, w: 0.21352896} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.12847033, y: 0.12847033, z: 0.12847033} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093979228231} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 155.342} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.000022888184} + m_SizeDelta: {x: 683.45184, y: 599} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093938887039 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093938887035} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093938887032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093938887035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 453405934, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866093979228224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093979228231} + m_Layer: 5 + m_Name: GameObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093979228231 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093979228224} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093938887034} + m_Father: {fileID: 4546866094067886503} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 495, y: -244} + m_SizeDelta: {x: 87.803314, y: 76.953735} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093989379476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093989379467} + m_Layer: 5 + m_Name: CircleUnfilled (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4546866093989379467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093989379476} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094613400438} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1228, y: -1513} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866093994900252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866093994900243} + - component: {fileID: 4546866093994900241} + - component: {fileID: 4546866093994900242} + m_Layer: 5 + m_Name: Image (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866093994900243 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093994900252} + m_LocalRotation: {x: -0, y: -0, z: 0.88863325, w: -0.4586187} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.11030334, y: 0.11030334, z: 0.11030334} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094965814293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 234.59601} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 683.45184, y: 599} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866093994900241 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093994900252} + m_CullTransparentMesh: 1 +--- !u!114 &4546866093994900242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866093994900252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 453405934, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094002075913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094002075912} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094002075912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094002075913} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093816614577} + m_Father: {fileID: 4546866093466153985} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1286, y: -449} + m_SizeDelta: {x: 98.406006, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094067886496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094067886503} + m_Layer: 5 + m_Name: Traingle (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094067886503 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094067886496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093979228231} + - {fileID: 4546866093586311344} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -1513} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094131646375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094131646374} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094131646374 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094131646375} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3322814, y: 0.3322814, z: 0.3322814} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092928958634} + m_Father: {fileID: 4546866093422621752} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 316, y: -531} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094189182792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094189182799} + - component: {fileID: 4546866094189182796} + - component: {fileID: 4546866094189182797} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094189182799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094189182792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094439179297} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094189182796 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094189182792} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094189182797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094189182792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.98823535, g: 0.654902, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094191985370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094191985369} + m_Layer: 5 + m_Name: Accent Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094191985369 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094191985370} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094512971818} + m_Father: {fileID: 4546866094312012755} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 2290} + m_SizeDelta: {x: 3080.1602, y: 1824} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094205990838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094205990837} + m_Layer: 5 + m_Name: Circle (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094205990837 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094205990838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094389357507} + - {fileID: 4546866094226390445} + - {fileID: 4546866093927668584} + - {fileID: 4546866093754571327} + - {fileID: 4546866094540567397} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1178, y: -828} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094217034983 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094217034982} + - component: {fileID: 4546866094217034980} + - component: {fileID: 4546866094217034981} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094217034982 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094217034983} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093100620762} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094217034980 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094217034983} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094217034981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094217034983} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.6039216} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094226390446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094226390445} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094226390445 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094226390446} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3322814, y: 0.3322814, z: 0.3322814} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094353103095} + m_Father: {fileID: 4546866094205990837} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 316, y: -531} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094232599995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094232599994} + m_Layer: 5 + m_Name: Circle (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094232599994 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094232599995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092939546065} + - {fileID: 4546866093000299453} + - {fileID: 4546866094240909476} + - {fileID: 4546866093122383448} + - {fileID: 4546866093068510594} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -887, y: -600} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094240909477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094240909476} + m_Layer: 5 + m_Name: 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094240909476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094240909477} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093231652943} + m_Father: {fileID: 4546866094232599994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -555, y: -315} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094285231893 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094285231892} + - component: {fileID: 4546866094285231882} + - component: {fileID: 4546866094285231883} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094285231892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094285231893} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094361506142} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000061035156} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094285231882 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094285231893} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094285231883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094285231893} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094296565231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094296565230} + - component: {fileID: 4546866094296565219} + - component: {fileID: 4546866094296565228} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094296565230 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094296565231} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093927668584} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094296565219 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094296565231} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094296565228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094296565231} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094305569982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094305569981} + - component: {fileID: 4546866094305569971} + m_Layer: 5 + m_Name: Shapes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094305569981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094305569982} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093515423457} + - {fileID: 4546866093513155648} + - {fileID: 4546866093466153985} + - {fileID: 4546866093513562880} + - {fileID: 4546866093485270242} + - {fileID: 4546866093989379467} + - {fileID: 4546866094438820944} + - {fileID: 4546866094067886503} + - {fileID: 4546866094467994608} + - {fileID: 4546866094232599994} + - {fileID: 4546866094205990837} + - {fileID: 4546866093422621752} + m_Father: {fileID: 4546866094312012755} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &4546866094305569971 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094305569982} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 1 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &4546866094312012764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094312012755} + - component: {fileID: 4546866094312012753} + - component: {fileID: 4546866094312012759} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094312012755 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094312012764} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 109} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093758487717} + - {fileID: 4546866094305569981} + - {fileID: 4546866094191985369} + m_Father: {fileID: 4546866093581424176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 7680, y: 4320} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094312012753 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094312012764} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094312012759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094312012764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &4546866094353103088 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094353103095} + - component: {fileID: 4546866094353103092} + - component: {fileID: 4546866094353103093} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094353103095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094353103088} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094226390445} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000061035156} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094353103092 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094353103088} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094353103093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094353103088} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.9960785, b: 0.7254902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094361506143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094361506142} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094361506142 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094361506143} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3322814, y: 0.3322814, z: 0.3322814} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094285231892} + m_Father: {fileID: 4546866093515423457} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 316, y: -531} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094377284535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094377284534} + - component: {fileID: 4546866094377284532} + - component: {fileID: 4546866094377284533} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094377284534 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094377284535} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094888791805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 300, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094377284532 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094377284535} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094377284533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094377284535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.6, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -81369497, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094389357516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094389357507} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094389357507 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094389357516} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5130893, y: 0.5130893, z: 0.5130893} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093594374736} + m_Father: {fileID: 4546866094205990837} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -355, y: -28.000017} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094415741955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094415741954} + m_Layer: 5 + m_Name: 4 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094415741954 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094415741955} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093883565172} + m_Father: {fileID: 4546866093485270242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 379, y: -107} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094421402608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094421402615} + - component: {fileID: 4546866094421402612} + - component: {fileID: 4546866094421402613} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094421402615 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094421402608} + m_LocalRotation: {x: -0, y: -0, z: -0.5064099, w: 0.86229295} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.43160525, y: 0.43160525, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093920642063} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -60.85} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094421402612 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094421402608} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094421402613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094421402608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.54509807, b: 0.8000001, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094423762677 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094423762676} + - component: {fileID: 4546866094423762666} + - component: {fileID: 4546866094423762667} + m_Layer: 5 + m_Name: Image (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094423762676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094423762677} + m_LocalRotation: {x: -0, y: -0, z: 0.1826808, w: 0.9831723} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4316052, y: 0.4316052, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866094815387589} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 21.052} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094423762666 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094423762677} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094423762667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094423762677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094438820945 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094438820944} + m_Layer: 5 + m_Name: Spahes Move (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094438820944 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094438820945} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093920642063} + - {fileID: 4546866092897421555} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 632, y: -1267} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094439179298 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094439179297} + m_Layer: 5 + m_Name: 4 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094439179297 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094439179298} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094189182799} + m_Father: {fileID: 4546866093485270242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -95, y: -834} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094467994609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094467994608} + m_Layer: 5 + m_Name: Spahes Move (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094467994608 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094467994609} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092859501288} + - {fileID: 4546866093417100504} + m_Father: {fileID: 4546866094305569981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -97, y: -1159} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094480606034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094480606033} + - component: {fileID: 4546866094480606038} + - component: {fileID: 4546866094480606039} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094480606033 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094480606034} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092855311773} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094480606038 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094480606034} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094480606039 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094480606034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.98823535, g: 0.654902, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094512971819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094512971818} + - component: {fileID: 4546866094512971823} + - component: {fileID: 4546866094512971816} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094512971818 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094512971819} + m_LocalRotation: {x: -0.20248653, y: -0.0042414838, z: -0.020508386, w: 0.9790611} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.8399999, y: 2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092982100603} + m_Father: {fileID: 4546866094191985369} + m_LocalEulerAnglesHint: {x: -23.37, y: 0, z: -2.4} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: -282, y: 163.75} + m_SizeDelta: {x: 1674, y: 912} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094512971823 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094512971819} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094512971816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094512971819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9176471, g: 0.96470594, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f148bf16f6894aa41a406846c4e6e623, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094535643727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094535643726} + - component: {fileID: 4546866094535643715} + - component: {fileID: 4546866094535643724} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094535643726 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094535643727} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093518206213} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094535643715 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094535643727} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094535643724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094535643727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.98823535, g: 0.654902, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094540567398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094540567397} + m_Layer: 5 + m_Name: 4 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094540567397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094540567398} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093417677126} + m_Father: {fileID: 4546866094205990837} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -95, y: -834} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094613400439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094613400438} + m_Layer: 5 + m_Name: 7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094613400438 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094613400439} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.8485, y: 1.8485, z: 1.8485} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093146366868} + m_Father: {fileID: 4546866093989379467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -827, y: -1069.4} + m_SizeDelta: {x: 300, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094642229086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094642229085} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094642229085 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094642229086} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5130893, y: 0.5130893, z: 0.5130893} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866092959340369} + m_Father: {fileID: 4546866093422621752} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -355, y: -28.000017} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094662382768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094662382775} + - component: {fileID: 4546866094662382772} + - component: {fileID: 4546866094662382773} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094662382775 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094662382768} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093451569923} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094662382772 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094662382768} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094662382773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094662382768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094710918773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094710918772} + - component: {fileID: 4546866094710918761} + - component: {fileID: 4546866094710918762} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094710918772 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094710918773} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093524521342} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094710918761 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094710918773} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094710918762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094710918773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7254902, g: 0.87843144, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094711302005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094711302004} + - component: {fileID: 4546866094711301993} + - component: {fileID: 4546866094711301994} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094711302004 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094711302005} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31372672, y: 0.31372672, z: 0.31372672} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866093754571327} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094711301993 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094711302005} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094711301994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094711302005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8862746, b: 0.74509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2072618194, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094815387590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094815387589} + m_Layer: 5 + m_Name: 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094815387589 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094815387590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094423762676} + m_Father: {fileID: 4546866093466153985} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 30, y: -567} + m_SizeDelta: {x: 98.40599, y: 61.287964} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094843542115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094843542114} + - component: {fileID: 4546866094843542119} + - component: {fileID: 4546866094843542112} + m_Layer: 5 + m_Name: Image (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094843542114 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094843542115} + m_LocalRotation: {x: -0, y: -0, z: -0.5064099, w: 0.86229295} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.43160525, y: 0.43160525, z: 0.43160522} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4546866092859501288} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -60.85} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 228, y: 142} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4546866094843542119 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094843542115} + m_CullTransparentMesh: 1 +--- !u!114 &4546866094843542112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094843542115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.54509807, b: 0.8000001, a: 0.34901962} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 1758506076, guid: 64f4af66c4f6a02428e72182a3fd6a80, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4546866094888791806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094888791805} + m_Layer: 5 + m_Name: 7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094888791805 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094888791806} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.8485, y: 1.8485, z: 1.8485} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866094377284534} + m_Father: {fileID: 4546866093513155648} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -827, y: -1069.4} + m_SizeDelta: {x: 300, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094902820440 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094902820447} + m_Layer: 5 + m_Name: 4 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094902820447 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094902820440} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093245680729} + m_Father: {fileID: 4546866093515423457} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 379, y: -107} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4546866094965814294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4546866094965814293} + m_Layer: 5 + m_Name: GameObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4546866094965814293 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4546866094965814294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4546866093994900243} + m_Father: {fileID: 4546866093513562880} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -661, y: -577} + m_SizeDelta: {x: 75.387024, y: 66.07172} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab.meta new file mode 100644 index 00000000..ba652052 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/Dynamic Background.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2073171fdaa259469d91f20b9b6cf17 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab new file mode 100644 index 00000000..618db9dd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab @@ -0,0 +1,156 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8739125453532968868 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8277335847142362516} + - component: {fileID: 1586956362231357577} + - component: {fileID: 1901893919355684761} + - component: {fileID: 1542943019436598481} + - component: {fileID: 8244977632061719267} + m_Layer: 5 + m_Name: MetaMask QR RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8277335847142362516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739125453532968868} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 256, y: 256} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1586956362231357577 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739125453532968868} + m_CullTransparentMesh: 1 +--- !u!114 &1901893919355684761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739125453532968868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &1542943019436598481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739125453532968868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b56c620f6012af6429dc1ce97ea5aeb4, type: 3} + m_Name: + m_EditorClassIdentifier: + rawImage: {fileID: 1901893919355684761} + showQrCodeOnDeeplink: 0 + deepLinkTexture: + - {fileID: 21300000, guid: fe325ec3a9b865442857793bbacd4a31, type: 3} + - {fileID: 21300000, guid: d35ee54fc7ad3b44489a62c3b126e56e, type: 3} + - {fileID: 21300000, guid: 2d4c6ef3ec9cf5c43881498da06d7fef, type: 3} + - {fileID: 21300000, guid: 0c6ddf8ba03940d4fae54f32674325df, type: 3} + - {fileID: 21300000, guid: 2e505d709673eb64e93ae6d7d2559bfc, type: 3} + - {fileID: 21300000, guid: 1e05b908ccbc3c34bbcfa687c73d2e3e, type: 3} + - {fileID: 21300000, guid: 3371bfa112d180e4cb05ff379a184da7, type: 3} +--- !u!114 &8244977632061719267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739125453532968868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1901893919355684761} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1542943019436598481} + m_TargetAssemblyTypeName: MetaMask.Transports.Unity.UI.MetaMaskUnityUIQRImage, + MetaMaskUnity.Runtime + m_MethodName: SwitchMode + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab.meta new file mode 100644 index 00000000..7bd831dd --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask QR RawImage.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f94c4f71513d37640b52f4094e97e9e3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab new file mode 100644 index 00000000..b387ed61 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab @@ -0,0 +1,1122 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &377211283740429879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6534412299432871727} + - component: {fileID: 7045671062346391518} + - component: {fileID: 5840703379983740305} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6534412299432871727 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8368185024531543926} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00052643, y: -0.00122} + m_SizeDelta: {x: 510.8092, y: 515.88} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7045671062346391518 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_CullTransparentMesh: 1 +--- !u!114 &5840703379983740305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8396226, g: 0.8396226, b: 0.8396226, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 822f988632a8d1e4eaf8c48a64f114fd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1585872074127001833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8153481091150003373} + - component: {fileID: 7541521060975267945} + - component: {fileID: 1184473691834264988} + - component: {fileID: 3908739046322989221} + m_Layer: 5 + m_Name: Mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8153481091150003373 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5865748283406482728} + m_Father: {fileID: 8368185024531543926} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00052261, y: -0.0000019073486} + m_SizeDelta: {x: 492.5164, y: 479.8882} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7541521060975267945 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_CullTransparentMesh: 1 +--- !u!114 &1184473691834264988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 822f988632a8d1e4eaf8c48a64f114fd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3908739046322989221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &1850004062007021657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8788168392122667522} + m_Layer: 5 + m_Name: QR Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &8788168392122667522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850004062007021657} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4909953034281529766} + - {fileID: 8368185024531543926} + m_Father: {fileID: 8076574866014554358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2203544183764163577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3969316956470800944} + - component: {fileID: 7867820992885372941} + - component: {fileID: 8359460640924354667} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3969316956470800944 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2203544183764163577} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8076574866014554358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 7.3758, y: -32.0097} + m_SizeDelta: {x: 4078.4844, y: 2366.4902} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7867820992885372941 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2203544183764163577} + m_CullTransparentMesh: 1 +--- !u!114 &8359460640924354667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2203544183764163577} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3215529119228226055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4909953034281529766} + - component: {fileID: 1003101488116295666} + - component: {fileID: 7939425065484314893} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4909953034281529766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7089558685279630760} + m_Father: {fileID: 8788168392122667522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 658.9868} + m_SizeDelta: {x: 850, y: 67.2016} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1003101488116295666 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_CullTransparentMesh: 1 +--- !u!114 &7939425065484314893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Connect Wallet + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4293519849 + m_fontColor: {r: 0.9150943, g: 0.9150943, b: 0.9150943, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 52 + m_fontSizeBase: 52 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5455918590097035912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8368185024531543926} + - component: {fileID: 2268755768774888843} + m_Layer: 5 + m_Name: QR Code + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8368185024531543926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5455918590097035912} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6534412299432871727} + - {fileID: 8153481091150003373} + m_Father: {fileID: 8788168392122667522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 577.7642, y: 515.8825} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &2268755768774888843 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5455918590097035912} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &6439922646294248678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8076574866014554358} + - component: {fileID: 2704016860542296127} + - component: {fileID: 6832460214055734638} + - component: {fileID: 7374580453394333779} + - component: {fileID: 7163004371329352223} + m_Layer: 5 + m_Name: MetaMask UI with Colored Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8076574866014554358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3969316956470800944} + - {fileID: 8788168392122667522} + - {fileID: 293841021509110826} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &2704016860542296127 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &6832460214055734638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 3840, y: 2160} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &7374580453394333779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &7163004371329352223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 395050cd8374dbf4f8c3a0932f61ff05, type: 3} + m_Name: + m_EditorClassIdentifier: + canvasGroup: {fileID: 2268755768774888843} + qrCodePanel: {fileID: 1850004062007021657} + isOpen: 0 + qrImage: {fileID: 3950203764407014509} + otpPanel: {fileID: 4990485137583038978} + background: {fileID: 2203544183764163577} + fadeDuration: 0.5 + description: {fileID: 5504587220700742623} +--- !u!1 &8801738631881413888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7089558685279630760} + - component: {fileID: 4015458628874823836} + - component: {fileID: 5504587220700742623} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7089558685279630760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4909953034281529766} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -94.620735} + m_SizeDelta: {x: 938.8752, y: 58.6008} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4015458628874823836 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_CullTransparentMesh: 1 +--- !u!114 &5504587220700742623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Scan the QR code in your metamask app + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4290822336 + m_fontColor: {r: 0.754717, g: 0.754717, b: 0.754717, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 41 + m_fontSizeBase: 41 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &2573899431427174588 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8153481091150003373} + m_Modifications: + - target: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: width + value: 384 + objectReference: {fileID: 0} + - target: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: height + value: 384 + objectReference: {fileID: 0} + - target: {fileID: 1901893919355684761, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Texture + value: + objectReference: {fileID: 2800000, guid: 717e217158e3e694eb447a4a5910fbbd, type: 3} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_SizeDelta.x + value: 481.6911 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_SizeDelta.y + value: 481.6911 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.000023842 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000025749 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8739125453532968868, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Name + value: MetaMask QR RawImage + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} +--- !u!114 &3950203764407014509 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + m_PrefabInstance: {fileID: 2573899431427174588} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b56c620f6012af6429dc1ce97ea5aeb4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &5865748283406482728 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + m_PrefabInstance: {fileID: 2573899431427174588} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5035838325572611500 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8076574866014554358} + m_Modifications: + - target: {fileID: 856985863518395958, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0.000061035 + objectReference: {fileID: 0} + - target: {fileID: 856985863518395958, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -254 + objectReference: {fileID: 0} + - target: {fileID: 1183405676231325757, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2714734313992310095, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3312588479195484562, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 530.7941 + objectReference: {fileID: 0} + - target: {fileID: 3312588479195484562, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 101.4302 + objectReference: {fileID: 0} + - target: {fileID: 3312588479195484562, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -63 + objectReference: {fileID: 0} + - target: {fileID: 3312588479195484562, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 4332644768163851999, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SortingLayer + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 1227.1284 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 828.3267 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5777876816244660639, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: 164.23 + objectReference: {fileID: 0} + - target: {fileID: 5777876816244660639, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -100 + objectReference: {fileID: 0} + - target: {fileID: 6015860287890676222, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 472.8123 + objectReference: {fileID: 0} + - target: {fileID: 6015860287890676222, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 4.8314 + objectReference: {fileID: 0} + - target: {fileID: 6015860287890676222, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: 209.50778 + objectReference: {fileID: 0} + - target: {fileID: 6015860287890676222, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -98.77954 + objectReference: {fileID: 0} + - target: {fileID: 6021340919975947382, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6217051989118167513, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 462.0877 + objectReference: {fileID: 0} + - target: {fileID: 6217051989118167513, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 3.6583 + objectReference: {fileID: 0} + - target: {fileID: 6217051989118167513, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -343.93167 + objectReference: {fileID: 0} + - target: {fileID: 6217051989118167513, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -99.36609 + objectReference: {fileID: 0} + - target: {fileID: 6255381356743835954, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_fontSize + value: 34 + objectReference: {fileID: 0} + - target: {fileID: 6255381356743835954, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_fontSizeBase + value: 34 + objectReference: {fileID: 0} + - target: {fileID: 6679804656875098759, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Name + value: OTP Panel + objectReference: {fileID: 0} + - target: {fileID: 6679804656875098759, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6747737215282434016, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 1109.6 + objectReference: {fileID: 0} + - target: {fileID: 6747737215282434016, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 334.2201 + objectReference: {fileID: 0} + - target: {fileID: 6747737215282434016, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -158.42 + objectReference: {fileID: 0} + - target: {fileID: 6747737215282434016, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -86.8465 + objectReference: {fileID: 0} + - target: {fileID: 6794275300617282617, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_fontSize + value: 38 + objectReference: {fileID: 0} + - target: {fileID: 6794275300617282617, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_fontSizeBase + value: 38 + objectReference: {fileID: 0} + - target: {fileID: 6954974079852138370, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 527.0477 + objectReference: {fileID: 0} + - target: {fileID: 6954974079852138370, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 98.2162 + objectReference: {fileID: 0} + - target: {fileID: 6954974079852138370, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.000015259 + objectReference: {fileID: 0} + - target: {fileID: 6954974079852138370, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: 270 + objectReference: {fileID: 0} + - target: {fileID: 7631325021668220152, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SortingLayer + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8423982654817606664, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 1109.1364 + objectReference: {fileID: 0} + - target: {fileID: 8423982654817606664, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 420.542 + objectReference: {fileID: 0} + - target: {fileID: 8423982654817606664, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -158.67487 + objectReference: {fileID: 0} + - target: {fileID: 8423982654817606664, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: 289.12238 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 4519065099083792754, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} +--- !u!224 &293841021509110826 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + m_PrefabInstance: {fileID: 5035838325572611500} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4990485137583038978 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 45923903797546926, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + m_PrefabInstance: {fileID: 5035838325572611500} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4478478a417d48d3b21628f5a664e86e, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab.meta new file mode 100644 index 00000000..d0bbbc86 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Colored Background.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9e03dfd5b166cc246ae7bbe9c62d6baf +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab new file mode 100644 index 00000000..17969081 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab @@ -0,0 +1,1080 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &377211283740429879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6534412299432871727} + - component: {fileID: 7045671062346391518} + - component: {fileID: 5840703379983740305} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6534412299432871727 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8368185024531543926} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.00046192} + m_SizeDelta: {x: 362.7412, y: 359.41} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7045671062346391518 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_CullTransparentMesh: 1 +--- !u!114 &5840703379983740305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377211283740429879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8396226, g: 0.8396226, b: 0.8396226, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 822f988632a8d1e4eaf8c48a64f114fd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1585872074127001833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8153481091150003373} + - component: {fileID: 7541521060975267945} + - component: {fileID: 1184473691834264988} + - component: {fileID: 3908739046322989221} + m_Layer: 5 + m_Name: Mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8153481091150003373 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5865748283406482728} + m_Father: {fileID: 8368185024531543926} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.000030518, y: -0.00047684} + m_SizeDelta: {x: 347.1757, y: 335.1969} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7541521060975267945 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_CullTransparentMesh: 1 +--- !u!114 &1184473691834264988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 822f988632a8d1e4eaf8c48a64f114fd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3908739046322989221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585872074127001833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &1850004062007021657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8788168392122667522} + m_Layer: 5 + m_Name: QR Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &8788168392122667522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850004062007021657} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4909953034281529766} + - {fileID: 7089558685279630760} + - {fileID: 8368185024531543926} + m_Father: {fileID: 8076574866014554358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3215529119228226055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4909953034281529766} + - component: {fileID: 1003101488116295666} + - component: {fileID: 7939425065484314893} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4909953034281529766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8788168392122667522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: -7.0000305, y: 364.42538} + m_SizeDelta: {x: 850, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1003101488116295666 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_CullTransparentMesh: 1 +--- !u!114 &7939425065484314893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3215529119228226055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Connect Wallet + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4283256141 + m_fontColor: {r: 0.3019608, g: 0.3019608, b: 0.3019608, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 38 + m_fontSizeBase: 38 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5455918590097035912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8368185024531543926} + - component: {fileID: 2268755768774888843} + m_Layer: 5 + m_Name: QR Code + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8368185024531543926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5455918590097035912} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6534412299432871727} + - {fileID: 8153481091150003373} + m_Father: {fileID: 8788168392122667522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -7.0001, y: -35} + m_SizeDelta: {x: 402.52, y: 359.4079} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &2268755768774888843 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5455918590097035912} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &6439922646294248678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8076574866014554358} + - component: {fileID: 2704016860542296127} + - component: {fileID: 6832460214055734638} + - component: {fileID: 7374580453394333779} + - component: {fileID: 7163004371329352223} + m_Layer: 5 + m_Name: MetaMask UI with Dynamic Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8076574866014554358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8693613688436065263} + - {fileID: 8788168392122667522} + - {fileID: 6313998725518230372} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &2704016860542296127 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &6832460214055734638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &7374580453394333779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &7163004371329352223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6439922646294248678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 395050cd8374dbf4f8c3a0932f61ff05, type: 3} + m_Name: + m_EditorClassIdentifier: + canvasGroup: {fileID: 2268755768774888843} + qrCodePanel: {fileID: 1850004062007021657} + isOpen: 0 + qrImage: {fileID: 3950203764407014509} + otpPanel: {fileID: 1643243715054366028} + background: {fileID: 8693613688436065262} + fadeDuration: 0.5 +--- !u!1 &8801738631881413888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7089558685279630760} + - component: {fileID: 4015458628874823836} + - component: {fileID: 5504587220700742623} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7089558685279630760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8788168392122667522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: -7, y: 258} + m_SizeDelta: {x: 850, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4015458628874823836 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_CullTransparentMesh: 1 +--- !u!114 &5504587220700742623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8801738631881413888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Scan the QR code in your metamask app + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4287072135 + m_fontColor: {r: 0.5294118, g: 0.5294118, b: 0.5294118, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &1616474506555564770 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8076574866014554358} + m_Modifications: + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.x + value: 755.8213 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_SizeDelta.y + value: 510.1886 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6679804656875098759, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_Name + value: OTP Panel + objectReference: {fileID: 0} + - target: {fileID: 6679804656875098759, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} +--- !u!114 &1643243715054366028 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 45923903797546926, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + m_PrefabInstance: {fileID: 1616474506555564770} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4478478a417d48d3b21628f5a664e86e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &6313998725518230372 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4751590749222510982, guid: 9fd24752cf4fec04f9071b0a3c24fd9e, type: 3} + m_PrefabInstance: {fileID: 1616474506555564770} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2573899431427174588 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8153481091150003373} + m_Modifications: + - target: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: width + value: 384 + objectReference: {fileID: 0} + - target: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: height + value: 384 + objectReference: {fileID: 0} + - target: {fileID: 1901893919355684761, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Texture + value: + objectReference: {fileID: 2800000, guid: 717e217158e3e694eb447a4a5910fbbd, type: 3} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_SizeDelta.x + value: 331.2662 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_SizeDelta.y + value: 331.2662 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0.000017166 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0000014305 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8739125453532968868, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + propertyPath: m_Name + value: MetaMask QR RawImage + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} +--- !u!114 &3950203764407014509 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1542943019436598481, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + m_PrefabInstance: {fileID: 2573899431427174588} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b56c620f6012af6429dc1ce97ea5aeb4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &5865748283406482728 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8277335847142362516, guid: f94c4f71513d37640b52f4094e97e9e3, type: 3} + m_PrefabInstance: {fileID: 2573899431427174588} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5169108769518704095 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8076574866014554358} + m_Modifications: + - target: {fileID: 1588944691690074812, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_Alpha + value: 0.75 + objectReference: {fileID: 0} + - target: {fileID: 1588944691690074812, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1588944691690074812, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_BlocksRaycasts + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1588944691690074812, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_IgnoreParentGroups + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424177, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_Name + value: Background + objectReference: {fileID: 0} + - target: {fileID: 4546866093581424177, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4546866094312012764, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8470860158041936860, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9134807210552527206, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 4546866094305569980, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093091804286, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094217034971, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094285231881, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093213280418, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093245680728, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094480606032, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094377284523, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093816614582, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094423762665, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093872836059, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093994900240, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093810624620, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093405349184, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094662382774, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093883565163, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094189182798, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093146366859, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094421402614, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093311010979, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093938887033, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866092902249695, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094843542113, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093285360637, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866092915687475, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093517096561, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093231652942, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093863321100, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093385366279, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093594374742, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094353103094, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094296565229, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094711301995, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866093417677125, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866092959340375, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866092928958633, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094710918763, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866092830642499, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094535643725, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + - {fileID: 4546866094512971817, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} +--- !u!1 &8693613688436065262 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4546866093581424177, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + m_PrefabInstance: {fileID: 5169108769518704095} + m_PrefabAsset: {fileID: 0} +--- !u!224 &8693613688436065263 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4546866093581424176, guid: d2073171fdaa259469d91f20b9b6cf17, type: 3} + m_PrefabInstance: {fileID: 5169108769518704095} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab.meta new file mode 100644 index 00000000..ed69f3ec --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/MetaMask UI with Dynamic Background.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c363ca23f1bd00f41b758192c96d8083 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab new file mode 100644 index 00000000..99da9bf1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab @@ -0,0 +1,1532 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1183405676231325757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 856985863518395958} + - component: {fileID: 2753398359487877976} + - component: {fileID: 606823305735616010} + - component: {fileID: 3273917818847182916} + - component: {fileID: 892906291545261737} + m_Layer: 5 + m_Name: Disconnect Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &856985863518395958 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183405676231325757} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 695.28906} + m_LocalScale: {x: 1.6292849, y: 1.6292849, z: 1.6292849} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1738390782584415588} + - {fileID: 4295949972570702562} + m_Father: {fileID: 4751590749222510982} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 13.182556, y: -199.43} + m_SizeDelta: {x: 402.0996, y: 34.6534} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &2753398359487877976 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183405676231325757} + m_CullTransparentMesh: 1 +--- !u!114 &606823305735616010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183405676231325757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 008aebc663b1c0b488f40d18d26ac1bb, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 11.79 +--- !u!114 &3273917818847182916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183405676231325757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.011764707, g: 0.4901961, b: 0.83921576, a: 1} + m_HighlightedColor: {r: 0.08235294, g: 0.39607844, b: 0.7529412, a: 1} + m_PressedColor: {r: 0.011764707, g: 0.4901961, b: 0.83921576, a: 1} + m_SelectedColor: {r: 0.011764707, g: 0.4901961, b: 0.83921576, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 606823305735616010} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 45923903797546926} + m_TargetAssemblyTypeName: MetaMask.Transports.Unity.UI.MetaMaskOTPPanel, + MetaMaskUnity.Runtime + m_MethodName: OnDisconnect + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!82 &892906291545261737 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183405676231325757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 0.449 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &1301874994801964035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8423982654817606664} + - component: {fileID: 6716903020152288247} + - component: {fileID: 2411377507205221984} + m_Layer: 5 + m_Name: TopHalf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8423982654817606664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301874994801964035} + m_LocalRotation: {x: 0, y: 0, z: -1, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5777876816244660639} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -180} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -3.5368, y: 230.3} + m_SizeDelta: {x: 798.8602, y: 302.8972} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6716903020152288247 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301874994801964035} + m_CullTransparentMesh: 1 +--- !u!114 &2411377507205221984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301874994801964035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 488de1d0461bb14438957c0d125d1a27, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 4 +--- !u!1 &1314478609664877487 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1738390782584415588} + - component: {fileID: 3007049950844289212} + - component: {fileID: 1540118461981570206} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1738390782584415588 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314478609664877487} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 856985863518395958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.0000075251, y: 0.0000038146973} + m_SizeDelta: {x: 398.6467, y: 31.8439} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3007049950844289212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314478609664877487} + m_CullTransparentMesh: 1 +--- !u!114 &1540118461981570206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314478609664877487} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 008aebc663b1c0b488f40d18d26ac1bb, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 11.79 +--- !u!1 &1616153104873801725 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6015860287890676222} + - component: {fileID: 997896206343182649} + - component: {fileID: 3713565746857002617} + m_Layer: 0 + m_Name: DividerRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6015860287890676222 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616153104873801725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 411431599298750533} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 126.518524, y: -100} + m_SizeDelta: {x: 306.8338, y: 2.3905} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &997896206343182649 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616153104873801725} + m_CullTransparentMesh: 1 +--- !u!114 &3713565746857002617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616153104873801725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83921576, g: 0.85098046, b: 0.86274517, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1754945773686993995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5073039476282446024} + - component: {fileID: 4990645345997470863} + - component: {fileID: 6255381356743835954} + m_Layer: 0 + m_Name: OrText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5073039476282446024 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754945773686993995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 411431599298750533} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -69.74957, y: -97.459076} + m_SizeDelta: {x: 700.5007, y: 67.0818} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4990645345997470863 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754945773686993995} + m_CullTransparentMesh: 1 +--- !u!114 &6255381356743835954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754945773686993995} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: or + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4284570195 + m_fontColor: {r: 0.3254902, g: 0.3529412, b: 0.38039216, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2714734313992310095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5489269269375405834} + m_Layer: 5 + m_Name: ResumeWithCode + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5489269269375405834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2714734313992310095} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6018523544108943553} + - {fileID: 8734063940264174270} + m_Father: {fileID: 4751590749222510982} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3604039626650330303 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6217051989118167513} + - component: {fileID: 6009874023587889946} + - component: {fileID: 6726437740761655791} + m_Layer: 0 + m_Name: DividerLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6217051989118167513 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3604039626650330303} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 411431599298750533} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -266.51163, y: -100} + m_SizeDelta: {x: 307.2477, y: 2.3905} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6009874023587889946 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3604039626650330303} + m_CullTransparentMesh: 1 +--- !u!114 &6726437740761655791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3604039626650330303} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83921576, g: 0.85098046, b: 0.86274517, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3802800503891758670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6954974079852138370} + - component: {fileID: 9025027281415261538} + - component: {fileID: 4949548439422005332} + m_Layer: 5 + m_Name: Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6954974079852138370 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3802800503891758670} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4751590749222510982} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 13.183, y: 196} + m_SizeDelta: {x: 381, y: 71} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9025027281415261538 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3802800503891758670} + m_CullTransparentMesh: 1 +--- !u!114 &4949548439422005332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3802800503891758670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 8d9c45869374b664b81a250f81f363ec, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5275997198860306368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5777876816244660639} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5777876816244660639 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5275997198860306368} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8423982654817606664} + - {fileID: 6747737215282434016} + m_Father: {fileID: 4751590749222510982} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 11, y: -101} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6021340919975947382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 411431599298750533} + m_Layer: 0 + m_Name: ResumeWIthOpen + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &411431599298750533 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6021340919975947382} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 65.55328, y: 26.37143, z: -7.7266245} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3312588479195484562} + - {fileID: 6217051989118167513} + - {fileID: 5073039476282446024} + - {fileID: 6015860287890676222} + m_Father: {fileID: 4751590749222510982} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6086993058777616867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8734063940264174270} + - component: {fileID: 1327444282835160038} + - component: {fileID: 9020589096059800127} + m_Layer: 5 + m_Name: Code + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8734063940264174270 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6086993058777616867} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5489269269375405834} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000030517, y: -0.000013351} + m_SizeDelta: {x: 723.1039, y: 100.52} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1327444282835160038 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6086993058777616867} + m_CullTransparentMesh: 1 +--- !u!114 &9020589096059800127 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6086993058777616867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 3045 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1410b767db5f2474aa7d0b0c7764db98, type: 2} + m_sharedMaterial: {fileID: -7672897273165428658, guid: 1410b767db5f2474aa7d0b0c7764db98, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 52 + m_fontSizeBase: 52 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6679804656875098759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4751590749222510982} + - component: {fileID: 8290723059239505651} + - component: {fileID: 45923903797546926} + m_Layer: 5 + m_Name: OTP Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4751590749222510982 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6679804656875098759} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5777876816244660639} + - {fileID: 6954974079852138370} + - {fileID: 856985863518395958} + - {fileID: 5489269269375405834} + - {fileID: 411431599298750533} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 755.8213, y: 510.1886} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &8290723059239505651 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6679804656875098759} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &45923903797546926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6679804656875098759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4478478a417d48d3b21628f5a664e86e, type: 3} + m_Name: + m_EditorClassIdentifier: + codeText: {fileID: 9020589096059800127} + otpCodeDisplay: {fileID: 2714734313992310095} + simpleTextDisplay: {fileID: 6021340919975947382} +--- !u!1 &7657022319446177028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6018523544108943553} + - component: {fileID: 982644136101007116} + - component: {fileID: 3746593686690029166} + m_Layer: 5 + m_Name: Instructions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6018523544108943553 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7657022319446177028} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5489269269375405834} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 8.232407, y: 79.394226} + m_SizeDelta: {x: 438.3315, y: 75.3071} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &982644136101007116 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7657022319446177028} + m_CullTransparentMesh: 1 +--- !u!114 &3746593686690029166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7657022319446177028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Open the MetaMask app and select the code on this screen to continue + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 25e6546b30de74641a7d135b443cf5dc, type: 2} + m_sharedMaterial: {fileID: -7581536809202965839, guid: 25e6546b30de74641a7d135b443cf5dc, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7974412769726595226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3312588479195484562} + - component: {fileID: 9015314280676289531} + - component: {fileID: 6794275300617282617} + m_Layer: 5 + m_Name: Instructions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3312588479195484562 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7974412769726595226} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 7.7266245} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 411431599298750533} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -57.32086, y: 34.4} + m_SizeDelta: {x: 438.3315, y: 75.3071} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9015314280676289531 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7974412769726595226} + m_CullTransparentMesh: 1 +--- !u!114 &6794275300617282617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7974412769726595226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Open the MetaMask app to continue with your session. + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 25e6546b30de74641a7d135b443cf5dc, type: 2} + m_sharedMaterial: {fileID: -7581536809202965839, guid: 25e6546b30de74641a7d135b443cf5dc, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8924702634975910434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6747737215282434016} + - component: {fileID: 5108756408221558749} + - component: {fileID: 6280002738903190903} + m_Layer: 5 + m_Name: BottomHalf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6747737215282434016 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8924702634975910434} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5777876816244660639} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -3.0179, y: -40} + m_SizeDelta: {x: 798.8386, y: 240.5271} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5108756408221558749 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8924702634975910434} + m_CullTransparentMesh: 1 +--- !u!114 &6280002738903190903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8924702634975910434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 488de1d0461bb14438957c0d125d1a27, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 4 +--- !u!1 &8953107957574401519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4295949972570702562} + - component: {fileID: 6176718637738143926} + - component: {fileID: 4524691777346223504} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4295949972570702562 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8953107957574401519} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 856985863518395958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -1.9570007, y: 0.43489838} + m_SizeDelta: {x: -3.9141, y: -0.8698} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6176718637738143926 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8953107957574401519} + m_CullTransparentMesh: 1 +--- !u!114 &4524691777346223504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8953107957574401519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Disconnect + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1410b767db5f2474aa7d0b0c7764db98, type: 2} + m_sharedMaterial: {fileID: -7672897273165428658, guid: 1410b767db5f2474aa7d0b0c7764db98, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292246787 + m_fontColor: {r: 0.011764706, g: 0.49019608, b: 0.8392157, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: -6.03 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab.meta new file mode 100644 index 00000000..9d683a7c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Prefabs/UI/OTP Panel.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fd24752cf4fec04f9071b0a3c24fd9e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites.meta new file mode 100644 index 00000000..071412da --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76ecafc99b6114250b5bb001040831c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png new file mode 100644 index 00000000..943ff53c Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png.meta new file mode 100644 index 00000000..bb9fd729 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Sprites/metamask-logo.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 2fc88ccd4f03e40b383ae78227776733 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports.meta new file mode 100644 index 00000000..fe73605e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 75936ad432d4e4347a06e6fda86a0963 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset new file mode 100644 index 00000000..8eab5b77 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 20df40b080d9d4749ba22a363ec31ab8, type: 3} + m_Name: UnityUI + m_EditorClassIdentifier: + spawnCanvas: 0 + metaMaskCanvas: {fileID: 6439922646294248678, guid: 9e03dfd5b166cc246ae7bbe9c62d6baf, type: 3} + useUniversalLinks: 0 diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset.meta new file mode 100644 index 00000000..a935e6c9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Resources/MetaMask/Transports/UnityUI.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2794b8de755b55048bc6f0544321e072 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime.meta new file mode 100644 index 00000000..550bdab0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3eb7b2627b4320d43b111976a2646f77 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml new file mode 100644 index 00000000..2bb4b52d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml.meta new file mode 100644 index 00000000..a76b9792 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/link.xml.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d6ffeed2bcc64c37b06fc054250169aa +timeCreated: 1702970430 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0.meta new file mode 100644 index 00000000..68b7c493 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd8444143109a6246bdd9399098b9450 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll new file mode 100644 index 00000000..02ab6648 Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll.meta new file mode 100644 index 00000000..6525ba0b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.0/MetaMask.SDK.dll.meta @@ -0,0 +1,93 @@ +fileFormatVersion: 2 +guid: 16958e7d35dc55f4a8b82ada5abb85bd +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - '!NET_STANDARD_2_1' + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1.meta new file mode 100644 index 00000000..fdb920da --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6619e6bf9097a6408253a9b4e8cc7e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll new file mode 100644 index 00000000..fdb5322d Binary files /dev/null and b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll differ diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll.meta new file mode 100644 index 00000000..de06b00f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Runtime/netstandard2.1/MetaMask.SDK.dll.meta @@ -0,0 +1,93 @@ +fileFormatVersion: 2 +guid: 4795dd033c0169346b11f02bb060663f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: + - NET_STANDARD_2_1 + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 0 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts.meta new file mode 100644 index 00000000..29552567 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95a269903c1f0a54786b08d0ca7e2f46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts.meta new file mode 100644 index 00000000..9c562767 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a26e7c0966574af9af17f8affaa2c86c +timeCreated: 1680970592 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs new file mode 100644 index 00000000..1acb6456 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using evm.net; +using evm.net.Factory; +using evm.net.Models; + +namespace MetaMask.Unity.Contracts +{ + public abstract class ScriptableContract : ScriptableObject where T : class, IContract + { + #if ENABLE_MONO + static ScriptableContract() + { + Contract.ContractFactory = new ImpromptuContractFactory(); + } + #endif + + [Serializable] + public enum ChainId : int + { + Ethereum = 1, + Polygon = 137, + Bsc = 56, + Avalanche = 43114, + Arbitrum = 42161, + Optimism = 10, + zkSyncEra = 324, + LineaTestnet = 59140, + Goerli = 5, + } + + [Serializable] + public class AddressByChain + { + public ChainId ChainId; + public string Address; + } + + public List ContractAddresses = new List(); + + private MetaMaskWallet connectedProvider; + private Dictionary contractInstances = new Dictionary(); + + public T CurrentContract + { + get + { + if (connectedProvider == null) + { + // We need to setup + var success = Setup(); + if (!success || connectedProvider == null) + throw new InvalidOperationException("MetaMask is not currently connected"); + } + + var chainId = Convert.ToInt64(connectedProvider.SelectedChainId, 16); + if (!contractInstances.ContainsKey(chainId)) + throw new InvalidOperationException( + $"There is no contract instance setup for chainId {chainId}. " + + $"Chains available: {string.Join(',', contractInstances.Keys.Select(cid => $"0x{cid:X}"))}"); + + return contractInstances[chainId]; + } + } + + public bool HasAddressForSelectedChain + { + get + { + if (connectedProvider == null) + { + // We need to setup + var success = Setup(); + if (!success) + throw new InvalidOperationException("MetaMask is not currently connected"); + } + + var chainId = Convert.ToInt64(connectedProvider.SelectedChainId, 16); + + return contractInstances.ContainsKey(chainId); + } + } + + private bool Setup() + { + var metaMask = FindObjectOfType(); + + if (metaMask == null || metaMask.Wallet == null) + return false; + + if (metaMask.Wallet.IsConnected) + { + SetupContract(metaMask.Wallet); + return true; + } + else + { + metaMask.Wallet.Events.WalletAuthorized += (_, __) => SetupContract(metaMask.Wallet); + return false; + } + } + + private void OnEnable() + { + Setup(); + } + + private void OnDisable() + { + contractInstances.Clear(); + connectedProvider = null; + } + + private void OnValidate() + { + List indexesToRemove = new List(); + HashSet bucket = new HashSet(); + for (int i = 0; i < ContractAddresses.Count; i++) + { + if (bucket.Contains(ContractAddresses[i].ChainId)) + indexesToRemove.Add(i); + else + bucket.Add(ContractAddresses[i].ChainId); + } + + indexesToRemove.RemoveAll(i => i == ContractAddresses.Count - 1); + + indexesToRemove.Reverse(); + foreach (var index in indexesToRemove) + { + ContractAddresses.RemoveAt(index); + } + + indexesToRemove.Clear(); + bucket.Clear(); + } + + private void SetupContract(MetaMaskWallet provider) + { + try + { + connectedProvider = provider; + foreach (var addressDetails in ContractAddresses) + { + var instance = Contract.Attach(connectedProvider, addressDetails.Address); + contractInstances.Add((long)addressDetails.ChainId, instance); + } + } + catch (Exception e) + { + Debug.LogError("Could not create contract instances"); + Debug.LogException(e); + } + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs.meta new file mode 100644 index 00000000..64ed5a08 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableContract.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ed105cec5e4744608f3933bb15d299e9 +timeCreated: 1680970604 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs new file mode 100644 index 00000000..594583a9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs @@ -0,0 +1,59 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using MetaMask.Contracts; +using UnityEngine; +using evm.net.Models; + +namespace MetaMask.Unity.Contracts +{ + [CreateAssetMenu(menuName = "MetaMask/Contract Templates/ERC1155")] + public class ScriptableERC1155 : ScriptableContract, ERC1155 + { + public EvmAddress Address => CurrentContract.Address; + public Task DeployNew(string uri_) + { + return CurrentContract.DeployNew(uri_); + } + + public Task BalanceOf(EvmAddress account, BigInteger id) + { + return CurrentContract.BalanceOf(account, id); + } + + public Task BalanceOfBatch(EvmAddress[] accounts, BigInteger[] ids) + { + return CurrentContract.BalanceOfBatch(accounts, ids); + } + + public Task IsApprovedForAll(EvmAddress account, EvmAddress @operator) + { + return CurrentContract.IsApprovedForAll(account, @operator); + } + + public Task SafeBatchTransferFrom(EvmAddress from, EvmAddress to, BigInteger[] ids, BigInteger[] amounts, byte[] data) + { + return CurrentContract.SafeBatchTransferFrom(from, to, ids, amounts, data); + } + + public Task SafeTransferFrom(EvmAddress from, EvmAddress to, BigInteger id, BigInteger amount, byte[] data) + { + return CurrentContract.SafeTransferFrom(from, to, id, amount, data); + } + + public Task SetApprovalForAll(EvmAddress @operator, bool approved) + { + return CurrentContract.SetApprovalForAll(@operator, approved); + } + + public Task SupportsInterface(byte[] interfaceId) + { + return CurrentContract.SupportsInterface(interfaceId); + } + + public Task Uri(BigInteger tokenId) + { + return CurrentContract.Uri(tokenId); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs.meta new file mode 100644 index 00000000..b0478c11 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC1155.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4a4a72f49b3f4f7192d42f6342616be7 +timeCreated: 1690667288 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs new file mode 100644 index 00000000..4a810b87 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs @@ -0,0 +1,78 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using MetaMask.Contracts; +using UnityEngine; +using evm.net.Models; + +namespace MetaMask.Unity.Contracts +{ + [CreateAssetMenu(menuName = "MetaMask/Contract Templates/ERC20")] + public class ScriptableERC20 : ScriptableContract, ERC20 + { + public Task DeployNew(String name_, String symbol_) + { + return CurrentContract.DeployNew(name_, symbol_); + } + + public Task BalanceOf(EvmAddress address) + { + return CurrentContract.BalanceOf(address); + } + + public Task IncreaseAllowance(EvmAddress spender, BigInteger addedValue) + { + return CurrentContract.IncreaseAllowance(spender, addedValue); + } + + public Task Name() + { + return CurrentContract.Name(); + } + + public Task Symbol() + { + return CurrentContract.Symbol(); + } + + public Task Decimals() + { + return CurrentContract.Decimals(); + } + + public Task DecreaseAllowance(EvmAddress spender, BigInteger subtractedValue) + { + return CurrentContract.DecreaseAllowance(spender, subtractedValue); + } + + public Task Approve(EvmAddress spender, BigInteger value) + { + return CurrentContract.Approve(spender, value); + } + + public Task TotalSupply() + { + return CurrentContract.TotalSupply(); + } + + public Task TransferFrom(EvmAddress from, EvmAddress to, BigInteger value) + { + return CurrentContract.TransferFrom(from, to, value); + } + + public Task Transfer(EvmAddress to, BigInteger value) + { + return CurrentContract.Transfer(to, value); + } + + public Task Allowance(EvmAddress owner, EvmAddress spender) + { + return CurrentContract.Allowance(owner, spender); + } + + public EvmAddress Address + { + get => CurrentContract.Address; + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs.meta new file mode 100644 index 00000000..78c79fad --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC20.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2a8606b8d748427487bb59a14e219131 +timeCreated: 1680970992 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs new file mode 100644 index 00000000..8419fcbe --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs @@ -0,0 +1,180 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using MetaMask.Contracts; +using UnityEngine; +using evm.net.Models; + +namespace MetaMask.Unity.Contracts +{ + [CreateAssetMenu(menuName = "MetaMask/Contract Templates/ERC721")] + public class ScriptableERC721 : ScriptableContract, ERC721PresetMinterPauserAutoId + { + public EvmAddress Address => CurrentContract.Address; + + public Task DeployNew(string name, string symbol, string baseTokenURI) + { + return CurrentContract.DeployNew(name, symbol, baseTokenURI); + } + + public Task DeployNew(string name_, string symbol_) + { + return CurrentContract.DeployNew(name_, symbol_); + } + + public Task DEFAULT_ADMIN_ROLE() + { + return CurrentContract.DEFAULT_ADMIN_ROLE(); + } + + public Task MINTER_ROLE() + { + return CurrentContract.MINTER_ROLE(); + } + + public Task PAUSER_ROLE() + { + return CurrentContract.PAUSER_ROLE(); + } + + public Task Approve(EvmAddress to, BigInteger tokenId) + { + return CurrentContract.Approve(to, tokenId); + } + + public Task BalanceOf(EvmAddress owner) + { + return CurrentContract.BalanceOf(owner); + } + + public Task Burn(BigInteger tokenId) + { + return CurrentContract.Burn(tokenId); + } + + public Task GetApproved(BigInteger tokenId) + { + return CurrentContract.GetApproved(tokenId); + } + + public Task GetRoleAdmin(HexString role) + { + return CurrentContract.GetRoleAdmin(role); + } + + public Task GetRoleMember(HexString role, BigInteger index) + { + return CurrentContract.GetRoleMember(role, index); + } + + public Task GetRoleMemberCount(HexString role) + { + return CurrentContract.GetRoleMemberCount(role); + } + + public Task GrantRole(HexString role, EvmAddress account) + { + return CurrentContract.GrantRole(role, account); + } + + public Task HasRole(HexString role, EvmAddress account) + { + return CurrentContract.HasRole(role, account); + } + + public Task IsApprovedForAll(EvmAddress owner, EvmAddress @operator) + { + return CurrentContract.IsApprovedForAll(owner, @operator); + } + + public Task Mint(EvmAddress to) + { + return CurrentContract.Mint(to); + } + + public Task Name() + { + return CurrentContract.Name(); + } + + public Task OwnerOf(BigInteger tokenId) + { + return CurrentContract.OwnerOf(tokenId); + } + + public Task Pause() + { + return CurrentContract.Pause(); + } + + public Task Paused() + { + return CurrentContract.Paused(); + } + + public Task RenounceRole(HexString role, EvmAddress account) + { + return CurrentContract.RenounceRole(role, account); + } + + public Task RevokeRole(HexString role, EvmAddress account) + { + return CurrentContract.RevokeRole(role, account); + } + + public Task SafeTransferFrom(EvmAddress from, EvmAddress to, BigInteger tokenId) + { + return CurrentContract.SafeTransferFrom(from, to, tokenId); + } + + public Task SafeTransferFrom(EvmAddress from, EvmAddress to, BigInteger tokenId, byte[] data) + { + return CurrentContract.SafeTransferFrom(from, to, tokenId, data); + } + + public Task SetApprovalForAll(EvmAddress @operator, bool approved) + { + return CurrentContract.SetApprovalForAll(@operator, approved); + } + + public Task SupportsInterface(byte[] interfaceId) + { + return CurrentContract.SupportsInterface(interfaceId); + } + + public Task Symbol() + { + return CurrentContract.Symbol(); + } + + public Task TokenByIndex(BigInteger index) + { + return CurrentContract.TokenByIndex(index); + } + + public Task TokenOfOwnerByIndex(EvmAddress owner, BigInteger index) + { + return CurrentContract.TokenOfOwnerByIndex(owner, index); + } + + public Task TokenURI(BigInteger tokenId) + { + return CurrentContract.TokenURI(tokenId); + } + + public Task TotalSupply() + { + return CurrentContract.TotalSupply(); + } + + public Task TransferFrom(EvmAddress from, EvmAddress to, BigInteger tokenId) + { + return CurrentContract.TransferFrom(from, to, tokenId); + } + + public Task Unpause() + { + return CurrentContract.Unpause(); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs.meta new file mode 100644 index 00000000..a3ecaf71 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Contracts/ScriptableERC721.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d9bf78eab9e343138abaf12f0330a57a +timeCreated: 1690667256 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography.meta new file mode 100644 index 00000000..c29df578 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cad5b3f2e9381743bb60fbba57ee3cf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs new file mode 100644 index 00000000..f87f686a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs @@ -0,0 +1,63 @@ +namespace MetaMask.Cryptography +{ + + public class BouncyEciesProvider : IEciesProvider + { + /// Gets the singleton instance of the BouncyEciesProvider class. + protected static BouncyEciesProvider instance; + + /// Gets the singleton instance of the BouncyEciesProvider class. + /// The singleton instance of the BouncyEciesProvider class. + public static BouncyEciesProvider Singleton + { + get + { + if (instance == null) + { + instance = new BouncyEciesProvider(); + } + return instance; + } + } + + /// Initializes a new instance of the class. + protected BouncyEciesProvider() { } + + /// Decrypts a string. + /// The encrypted text. + /// The private key. + /// The decrypted text. + /// Thrown when the function hasn't been implemented yet. + public string Decrypt(string encryptedText, string privateKey) + { + throw new System.NotImplementedException(); + } + + /// Encrypts a string using the specified public key. + /// The string to encrypt. + /// The public key to use for encryption. + /// The encrypted string. + /// Thrown when the function is not implemented. + public string Encrypt(string plainText, string publickey) + { + throw new System.NotImplementedException(); + } + + /// Generates a private key. + /// A private key. + public string GeneratePrivateKey() + { + throw new System.NotImplementedException(); + } + + /// Gets the public key from a private key. + /// The private key. + /// The public key. + public string GetPublicKey(string privateKey) + { + throw new System.NotImplementedException(); + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs.meta new file mode 100644 index 00000000..8e576649 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/BouncyEciesProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e7e86447c8dc1847a7aec6447f08d8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs new file mode 100644 index 00000000..42674b9f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs @@ -0,0 +1,173 @@ +using System; +using System.Runtime.InteropServices; + +namespace MetaMask.Cryptography +{ + public class UnityEciesProvider : IEciesProvider + { + #region Constants + +#if (UNITY_IOS || UNITY_TVOS || UNITY_WEBGL) && !UNITY_EDITOR + private const string libraryName = "__Internal"; +#else + private const string libraryName = "ecies"; +#endif + + #endregion + + #region Fields + + protected static UnityEciesProvider instance; + + #endregion + + #region Properties + + /// Gets the singleton instance of the . + /// The singleton instance of the . + public static UnityEciesProvider Singleton + { + get + { + if (instance == null) + { + instance = new UnityEciesProvider(); + } + + return instance; + } + } + + #endregion + + #region Externals + + // + // Imports from ECIES Go library + // + +#if UNITY_WEBGL && !UNITY_EDITOR + /// Initializes the ECIES library. + [DllImport(libraryName)] + private static extern void EciesInitialize(); + + /// Generates a private key for ECIES. + /// A private key for ECIES. + [DllImport(libraryName)] + private static extern string EciesGeneratePrivateKey(); + + /// Gets the public key from a private key. + /// The private key. + /// The public key. + [DllImport(libraryName)] + private static extern string EciesGetPublicKey(string privkey); + + /// Encrypts a message using ECIES. + /// The public key of the recipient. + /// The message to encrypt. + /// The encrypted message. + [DllImport(libraryName)] + private static extern string EciesEncrypt(string pubkey, string message); + + /// Decrypts a message using the ECIES scheme. + /// The private key. + /// The message, as a base64-encoded string. + /// The decrypted message. + [DllImport(libraryName)] + private static extern string EciesDecrypt(string privkey, string messageB64); +#else + + /// Generates a new ECIES private key. + /// A pointer to the generated private key. + [DllImport(libraryName)] + private static extern IntPtr EciesGeneratePrivateKey(); + + /// Gets the public key from a private key. + /// The private key. + /// The public key. + [DllImport(libraryName)] + private static extern IntPtr EciesGetPublicKey(string privkey); + + /// Encrypts a message using ECDH-ES. + /// The public key of the recipient. + /// The message to encrypt. + /// The encrypted message. + [DllImport(libraryName)] + private static extern IntPtr EciesEncrypt(string pubkey, string message); + + /// Decrypts a message using the ECDH-ES scheme. + /// The private key. + /// The message, as a base64-encoded string. + /// The decrypted message, as a base64-encoded string. + [DllImport(libraryName)] + private static extern IntPtr EciesDecrypt(string privkey, string messageB64); +#endif + + #endregion + + #region Constructors + + /// Initializes the ECCIES provider. + protected UnityEciesProvider() + { +#if UNITY_WEBGL && !UNITY_EDITOR + EciesInitialize(); +#endif + } + + #endregion + + #region Public Methods + + /// Decrypts a string using the specified private key. + /// The encrypted text. + /// The private key. + /// The decrypted text. + public string Decrypt(string encryptedText, string privateKey) + { +#if UNITY_WEBGL && !UNITY_EDITOR + return EciesDecrypt(privateKey, encryptedText); +#else + return Marshal.PtrToStringAnsi(EciesDecrypt(privateKey, encryptedText)); +#endif + } + + /// Encrypts a string using the specified public key. + /// The plain text to encrypt. + /// The public key to use for encryption. + /// The encrypted string. + public string Encrypt(string plainText, string publickey) + { +#if UNITY_WEBGL && !UNITY_EDITOR + return EciesEncrypt(publickey, plainText); +#else + return Marshal.PtrToStringAnsi(EciesEncrypt(publickey, plainText)); +#endif + } + + /// Generates a private key for use with the ECIES algorithm. + /// A private key. + public string GeneratePrivateKey() + { +#if UNITY_WEBGL && !UNITY_EDITOR + return EciesGeneratePrivateKey(); +#else + return Marshal.PtrToStringAnsi(EciesGeneratePrivateKey()); +#endif + } + + /// Gets the public key from a private key. + /// The private key. + /// The public key. + public string GetPublicKey(string privateKey) + { +#if UNITY_WEBGL && !UNITY_EDITOR + return EciesGetPublicKey(privateKey); +#else + return Marshal.PtrToStringAnsi(EciesGetPublicKey(privateKey)); +#endif + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs.meta new file mode 100644 index 00000000..bbaee3f8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Cryptography/UnityEciesProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d1ea1b7db3128343b0dbb5557bba3bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO.meta new file mode 100644 index 00000000..e4572a99 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9856b9fe3a7a9b640ab75e7e25f5c478 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs new file mode 100644 index 00000000..e4d95efe --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; + +namespace MetaMask.IO +{ + public static class Infura + { + public static Dictionary ChainIdToName = new Dictionary() + { + { 0x1, "mainnet" }, + { 0x5, "goerli" }, + { 0xaa36a7, "sepolia" }, + { 0xe708, "linea-mainnet" }, + { 0xe704, "linea-goerli" }, + { 0x89, "polygon-mainnet" }, // TODO Check with Infura + { 0xa, "optimism-mainnet" }, // TODO Check with Infura + { 0xa4b1, "arbitrum-mainnet" }, // TODO Check with Infura + { 0x2a15c308d, "palm-mainnet" }, + { 0x2a15c3083, "palm-testnet" }, + { 0xa86a, "avalanche-mainnet"}, + { 0xa869, "avalanche-fuji" }, + { 0x4e454152, "aurora-mainnet" }, + { 0x4e454153, "aurora-testnet" }, + { 0xa4ec, "celo-mainnet" }, + { 0xaef3, "celo-alfajores" }, + }; + + public static string Url(string projectId, string chainName) + { + return $"https://{chainName}.infura.io/v3/{projectId}"; + } + + public static bool IsUrl(string url, bool enforceSSL = true) + { + Uri uri = new Uri(url); + string scheme = uri.GetLeftPart(UriPartial.Scheme); + string host = uri.GetLeftPart(UriPartial.Authority); + + return host.EndsWith(".infura.io") && (!enforceSSL || scheme == "https://"); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs.meta new file mode 100644 index 00000000..a7ab6fe5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/Infura.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 17917e01ffdb4377a39a74e328ed6843 +timeCreated: 1695017658 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs new file mode 100644 index 00000000..bf193d6a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs @@ -0,0 +1,305 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using evm.net.Network; +using MetaMask.Unity; +using UnityEngine; +using UnityEngine.Networking; +#if UNITY_WEBGL && !UNITY_EDITOR +using System; +using UnityEngine.Scripting; +using MetaMask.Unity.Utils; +using Newtonsoft.Json; +using System.Runtime.InteropServices; +#endif + +namespace MetaMask.IO +{ + /// + /// A Singleton class that handles all the network requests. It uses UnityWebRequest to make the requests. + /// + public class MetaMaskHttpService : Singleton + { + public enum RequestType + { + GET, + POST, + DELETE + } + + /// + /// A class that represents a single HTTP Request + /// + public class UnityHttpServiceRequest + { + public TaskCompletionSource requestTask; + public string url; + public string @params; + public RequestType requestType; + public string authKey; + public string authValue; + } + + /// + /// A class that implements the IHttpService interface. + /// + public class UnityHttpServiceProvider : IHttpService + { + private MetaMaskHttpService service; + private string baseUrl; + private string authValue; + private string authKey; + + public UnityHttpServiceProvider(string baseUrl, string authKey, string authValue, MetaMaskHttpService service) + { + this.service = service; + this.baseUrl = baseUrl; + this.authValue = authValue; + this.authKey = authKey; + } + + public Task Get(string uri) + { + var fullUrl = string.IsNullOrWhiteSpace(baseUrl) ? uri : + baseUrl.EndsWith("/") || uri.StartsWith("/") ? $"{baseUrl}{uri}" : $"{baseUrl}/{uri}"; + + // ensure we dont end on a / + if (fullUrl.EndsWith("/")) + fullUrl = fullUrl.Substring(0, fullUrl.Length - 1); + + var request = new UnityHttpServiceRequest() + { + url = fullUrl, + requestTask = new TaskCompletionSource(), + authKey = authKey, + authValue = authValue, + requestType = RequestType.GET + }; + + service.requests.Enqueue(request); + + return request.requestTask.Task; + } + + public Task Post(string uri, string @params) + { + var fullUrl = string.IsNullOrWhiteSpace(baseUrl) ? uri : + baseUrl.EndsWith("/") || uri.StartsWith("/") ? $"{baseUrl}{uri}" : $"{baseUrl}/{uri}"; + + // ensure we dont end on a / + if (fullUrl.EndsWith("/")) + fullUrl = fullUrl.Substring(0, fullUrl.Length - 1); + + var request = new UnityHttpServiceRequest() + { + url = fullUrl, + requestTask = new TaskCompletionSource(), + requestType = RequestType.POST, + @params = @params, + authKey = authKey, + authValue = authValue + }; + + service.requests.Enqueue(request); + + return request.requestTask.Task; + } + + public Task Delete(string uri, string @params) + { + var fullUrl = string.IsNullOrWhiteSpace(baseUrl) ? uri : + baseUrl.EndsWith("/") || uri.StartsWith("/") ? $"{baseUrl}{uri}" : $"{baseUrl}/{uri}"; + + // ensure we dont end on a / + if (fullUrl.EndsWith("/")) + fullUrl = fullUrl.Substring(0, fullUrl.Length - 1); + + var request = new UnityHttpServiceRequest() + { + url = fullUrl, + requestTask = new TaskCompletionSource(), + requestType = RequestType.DELETE, + @params = @params, + authKey = authKey, + authValue = authValue + }; + + service.requests.Enqueue(request); + + return request.requestTask.Task; + } + } + + private Queue requests = new Queue(); + private bool isCheckingQueue; + + private void Awake() + { + HttpServiceFactory.SetCreator(CreateHttpService); + } + + private IHttpService CreateHttpService(string baseUrl, string authHeaderValue, string authHeaderName = "Authorization") + { + return new UnityHttpServiceProvider(baseUrl, authHeaderName, authHeaderValue, this); + } + + private void Update() + { + if (!isCheckingQueue) + { + isCheckingQueue = true; + StartCoroutine(ProcessQueue()); + } + } + + private IEnumerator ProcessQueue() + { + while (requests.Count > 0) + { + yield return ProcessRequest(requests.Dequeue()); + } + + isCheckingQueue = false; + } + + private IEnumerator ProcessRequest(UnityHttpServiceRequest request) + { + string method; + switch (request.requestType) + { + case RequestType.POST: + method = "POST"; + break; + case RequestType.DELETE: + method = "DELETE"; + break; + case RequestType.GET: + default: + method = "GET"; + break; + } + +#if UNITY_WEBGL && !UNITY_EDITOR + yield return SendRequestWebgl(method, request); +#else + yield return SendRequestUnity(method, request); +#endif + } + + private IEnumerator SendRequestUnity(string method, UnityHttpServiceRequest request) + { + string url = request.url; + string @params = request.@params; + bool isGet = request.requestType == RequestType.GET; + string authHeaderKey = request.authKey; + string authHeaderValue = request.authValue; + + using (UnityWebRequest uwr = !isGet + ? new UnityWebRequest(url, method) + : UnityWebRequest.Get(url)) + { + if (!string.IsNullOrWhiteSpace(authHeaderValue) && !string.IsNullOrWhiteSpace(authHeaderKey)) + { + uwr.SetRequestHeader(authHeaderKey, authHeaderValue); + } + + if (Infura.IsUrl(url)) + { + uwr.SetRequestHeader("X-Infura-User-Agent", $"metamask/sdk-csharp {MetaMaskUnity.Version}"); + uwr.SetRequestHeader("Metamask-Sdk-Info", $"Sdk/Unity SdkVersion/{MetaMaskUnity.Version} Platform/{SystemInfo.operatingSystem} dApp/{MetaMaskUnity.Instance.Config.AppUrl} dAppTitle/{MetaMaskUnity.Instance.Config.AppName}"); + } + + if (!string.IsNullOrWhiteSpace(@params)) + { + byte[] jsonToSend = Encoding.UTF8.GetBytes(@params); + uwr.uploadHandler = new UploadHandlerRaw(jsonToSend); + uwr.downloadHandler = new DownloadHandlerBuffer(); + uwr.uploadHandler.contentType = "application/json"; + uwr.SetRequestHeader("Content-Type", "application/json"); + } + + yield return uwr.SendWebRequest(); + + switch (uwr.result) + { + case UnityWebRequest.Result.ConnectionError: + case UnityWebRequest.Result.DataProcessingError: + case UnityWebRequest.Result.ProtocolError: + request.requestTask.SetException(new IOException(uwr.error + " | " + uwr.downloadHandler.text)); + break; + case UnityWebRequest.Result.Success: + request.requestTask.SetResult(uwr.downloadHandler.text); + break; + } + } + } + +#if UNITY_WEBGL && !UNITY_EDITOR + [DllImport("__Internal")] + public static extern void _SendRequestFetch(string id, string objectName, string method, string url, string @params, bool isGet, string authHeaderKey, string authHeaderValue); + + private Dictionary> fetchResults = + new Dictionary>(); + + public class FetchResponse + { + public string responseJson; + public string errorMessage; + public string id; + } + + private IEnumerator SendRequestWebgl(string method, UnityHttpServiceRequest request) + { + string url = request.url; + string @params = request.@params; + bool isGet = request.requestType == RequestType.GET; + string authHeaderKey = request.authKey; + string authHeaderValue = request.authValue; + + string id; + do + { + id = Guid.NewGuid().ToString(); + } while (fetchResults.ContainsKey(id)); + + var resultTaskSource = new TaskCompletionSource(); + fetchResults.Add(id, resultTaskSource); + + _SendRequestFetch(id, gameObject.name, method, url, @params, isGet, authHeaderKey, authHeaderValue); + + yield return new WaitForTask(resultTaskSource.Task); + + var resultJson = resultTaskSource.Task.Result; + fetchResults.Remove(id); + + var result = JsonConvert.DeserializeObject(resultJson); + + if (!string.IsNullOrWhiteSpace(result.responseJson)) + { + request.requestTask.TrySetResult(result.responseJson); + } + else if (!string.IsNullOrWhiteSpace(result.errorMessage)) + { + request.requestTask.TrySetException(new IOException(result.errorMessage)); + } + else + { + request.requestTask.TrySetCanceled(); + } + } + + [Preserve] + public void OnFetchResponseCallback(string resultJson) + { + var result = JsonConvert.DeserializeObject(resultJson); + + if (fetchResults.ContainsKey(result.id)) + { + fetchResults[result.id].TrySetResult(resultJson); + } + } +#endif + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs.meta new file mode 100644 index 00000000..fd9001e7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskHttpService.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 197bc6540b6a47328860a65dc2f1b894 +timeCreated: 1688526171 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs new file mode 100644 index 00000000..5c4471e3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs @@ -0,0 +1,84 @@ +using MetaMask.SocketIOClient; +using MetaMask.Unity; +using UnityEngine; + +namespace MetaMask.IO +{ + public class MetaMaskPlayerPrefsStorage : IMetaMaskPersistentStorage + { + /// The singleton instance of the class. + protected static MetaMaskPlayerPrefsStorage instance; + + /// Gets the singleton instance of the class. + /// The singleton instance of the class. + public static MetaMaskPlayerPrefsStorage Singleton + { + get + { + if (instance == null) + { + instance = new MetaMaskPlayerPrefsStorage(); + } + + return instance; + } + } + + /// Creates a new instance of the class. + protected MetaMaskPlayerPrefsStorage() { } + + /// Determines whether a key exists in the PlayerPrefs database. + /// The key to check. + /// Whether the key exists in the PlayerPrefs database. + public bool Exists(string key) + { + return PlayerPrefs.HasKey(key); + } + + /// Writes a string to the persistent storage. + /// The key to write to. + /// The data to write. + public void Write(string key, string data) + { + if (MetaMaskUnity.Instance.IsInUnityThread()) + { + DoWrite(key, data); + } + else + { + UnityThread.executeInUpdate(() => { DoWrite(key, data); }); + } + } + + /// Reads a string from persistent storage. + /// The key to write to. + public string Read(string key) + { + return PlayerPrefs.GetString(key); + } + + public void Delete(string key) + { + if (MetaMaskUnity.Instance.IsInUnityThread()) + { + DoDelete(key); + } + else + { + UnityThread.executeInUpdate(() => { DoDelete(key); }); + } + } + + private void DoWrite(string key, string data) + { + PlayerPrefs.SetString(key, data); + PlayerPrefs.Save(); + } + + private void DoDelete(string key) + { + PlayerPrefs.DeleteKey(key); + PlayerPrefs.Save(); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs.meta new file mode 100644 index 00000000..e24fd8e4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskPlayerPrefsStorage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8740cd87f6cfbe4daea46d72a724f6c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs new file mode 100644 index 00000000..5e28ce51 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace MetaMask.IO +{ + public static class MetaMaskUnityStorage + { + private static IMetaMaskPersistentStorage _instance; + + public static IMetaMaskPersistentStorage Instance + { + get + { + if (_instance == null) + { + BuildPlatformStorage(); + } + + return _instance; + } + } + + private static void BuildPlatformStorage() + { + #if UNITY_WEBGL && !UNITY_EDITOR + _instance = MetaMaskWebLocalStorage.Singleton; + #else + _instance = MetaMaskPlayerPrefsStorage.Singleton; + #endif + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs.meta new file mode 100644 index 00000000..00f178d2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskUnityStorage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3aa42b8f5444426c82205009f6541187 +timeCreated: 1687465355 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs new file mode 100644 index 00000000..10b9e237 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs @@ -0,0 +1,95 @@ +#if UNITY_WEBGL +using System.Runtime.InteropServices; +#else +using System; +using UnityEngine; +#endif + +namespace MetaMask.IO +{ + public class MetaMaskWebLocalStorage : IMetaMaskPersistentStorage + { + /// The singleton instance of the class. + protected static MetaMaskWebLocalStorage instance; + + /// Gets the singleton instance of the class. + /// The singleton instance of the class. + public static MetaMaskWebLocalStorage Singleton + { + get + { + if (instance == null) + { + instance = new MetaMaskWebLocalStorage(); + } + + return instance; + } + } + +#if UNITY_WEBGL + [DllImport("__Internal")] + public static extern bool LSExists(string key); + + [DllImport("__Internal")] + public static extern void LSWrite(string key, string data); + + [DllImport("__Internal")] + public static extern string LSRead(string key); + + [DllImport("__Internal")] + public static extern void LSDelete(string key); +#else + public static bool LSExists(string key) + { + throw new NotImplementedException("Incorrect platform, expected WebGL"); + } + + public static void LSWrite(string key, string data) + { + throw new NotImplementedException("Incorrect platform, expected WebGL"); + } + + public static string LSRead(string key) + { + throw new NotImplementedException("Incorrect platform, expected WebGL"); + } + + public static void LSDelete(string key) + { + throw new NotImplementedException("Incorrect platform, expected WebGL"); + } +#endif + + /// Creates a new instance of the class. + protected MetaMaskWebLocalStorage() { } + + /// Determines whether a key exists in the PlayerPrefs database. + /// The key to check. + /// Whether the key exists in the PlayerPrefs database. + public bool Exists(string key) + { + return LSExists(key); + } + + /// Writes a string to the persistent storage. + /// The key to write to. + /// The data to write. + public void Write(string key, string data) + { + LSWrite(key, data); + } + + /// Reads a string from persistent storage. + /// The key to write to. + public string Read(string key) + { + return LSRead(key); + } + + public void Delete(string key) + { + LSDelete(key); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs.meta new file mode 100644 index 00000000..c4ced922 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/IO/MetaMaskWebLocalStorage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3cae37e3b397425185135969c078167c +timeCreated: 1687465161 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging.meta new file mode 100644 index 00000000..b5fb67c8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1b8c50f09f312944a099b76f1072fed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs new file mode 100644 index 00000000..812aeeeb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs @@ -0,0 +1,79 @@ +using System; + +using MetaMask.Unity; + +using UnityEngine; + +using Object = System.Object; + +namespace MetaMask.Logging +{ + public class MetaMaskUnityLogger : IMetaMaskLogger + { + protected const string Tag = "MetaMask"; + + protected static MetaMaskUnityLogger instance; + + /// The event that is raised when a log message is written. + public Action onLog; + + /// Gets the singleton instance of the logger. + /// The singleton instance of the logger. + public static MetaMaskUnityLogger Instance + { + get + { + if (instance == null) + { + instance = new MetaMaskUnityLogger(); + } + + return instance; + } + } + + protected Logger logger; + + protected MetaMaskUnityLogger() + { + logger = new Logger(Debug.unityLogger); + logger.filterLogType = MetaMaskConfig.DefaultInstance.Log ? LogType.Log : LogType.Assert; + } + + /// Initializes the class. + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)] + protected static void Initialize() + { + MetaMaskDebug.Logger = Instance; + } + + /// Logs a message to the Unity console. + /// The message to log. + public void Log(object message) + { + logger.Log(Tag, message); + this.onLog?.Invoke(message); + } + + /// Logs an error message. + /// The message to log. + public void LogError(object message) + { + logger.LogError(Tag, message); + } + + /// Logs an exception. + /// The exception to log. + public void LogException(Exception exception) + { + logger.LogException(exception); + } + + /// Logs a warning message. + /// The message to log. + public void LogWarning(object message) + { + logger.LogWarning(Tag, message); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs.meta new file mode 100644 index 00000000..28028448 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Logging/MetaMaskUnityLogger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57d4a0c70ba2a4e41b00eb5b0e2e6fc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs new file mode 100644 index 00000000..bbe2ea3e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs @@ -0,0 +1,118 @@ +using UnityEngine; + +namespace MetaMask.Unity +{ + + [CreateAssetMenu(menuName = "MetaMask/Config")] + public class MetaMaskConfig : ScriptableObject, IAppConfig + { + + #region Constants + + /// The path to the resource file containing the configuration. + protected const string ResourcePath = "MetaMask/Config"; + /// The default resource path. + /// This is the default resource path used by the . + protected const string DefaultResourcePath = ResourcePath + "/Default"; + + #endregion + + #region Fields + + /// Gets the default instance of the class. + /// The default instance of the class. + protected static MetaMaskConfig defaultInstance; + + [Header("Debug Logging")] + [Tooltip("Whether to turn off the debug logs.")] + [SerializeField] + protected bool log = true; + /// The name of the application. + [Header("App Details")] + [SerializeField] + protected string appName = ""; + + /// The URL of the app. + /// This is used to determine whether the app is running in the foreground. + [SerializeField] + protected string appUrl = "example.com"; + + /// The URL of the app icon. + /// This is used to determine where the app icon should be fetched from. + [SerializeField] + protected string appIcon = ""; + + /// The user agent to use when making requests. + /// This is used to identify the application when making requests. + [SerializeField] + protected string userAgent = "UnityUGUITransport/1.0.0"; + + [Header("Persistent Data")] + [Tooltip("Whether to encrypt the persistent data.")] + [SerializeField] + protected bool encrypt = true; + + /// The password used to encrypt the persistent data. + [SerializeField] + protected string encryptionPassword = MetaMaskDataManager.RandomString(12); + + /// The URL of the socket server. + /// This is an advanced property. + [Header("Advanced")] + [SerializeField] + protected string socketUrl = MetaMaskWallet.SocketUrl; + + #endregion + + #region Properties + + /// Gets the default instance of the MetaMaskConfig class. + /// The default instance of the MetaMaskConfig class. + public static MetaMaskConfig DefaultInstance + { + get + { + if (defaultInstance == null) + { + defaultInstance = Resources.Load(DefaultResourcePath); + } + return defaultInstance; + } + } + + /// Gets whether to log details to the console. + /// Whether to log details to the console. + public virtual bool Log => this.log; + + /// Gets the name of the application. + /// The name of the application. + public virtual string AppName => string.IsNullOrWhiteSpace(this.appName) ? Application.productName : this.appName; + + /// Gets the URL of the app. + /// The URL of the app. + public virtual string AppUrl => this.appUrl; + + /// Gets the URL of the app. + /// The URL of the app. + public virtual string AppIcon => this.appIcon; + + /// The user agent to use when making requests. + /// This is used to identify the application when making requests. + public virtual string UserAgent => this.userAgent; + + /// Gets whether to encrypt the data. + /// Whether to encrypt the data. + public virtual bool Encrypt => this.encrypt; + + /// Gets the password used to encrypt the data. + /// The password used to encrypt the data. + public virtual string EncryptionPassword => this.encryptionPassword; + + /// Gets the URL of the socket. + /// The URL of the socket. + public virtual string SocketUrl => this.socketUrl; + + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs.meta new file mode 100644 index 00000000..a56dfc51 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77f59ac8818a0fe45a3283d7576eead3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs new file mode 100644 index 00000000..266414e0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs @@ -0,0 +1,502 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using evm.net; +using System.Threading; +using System.Threading.Tasks; +using EventEmitter.NET; +using evm.net.Models; +using MetaMask.Contracts; +using MetaMask.Cryptography; +using MetaMask.IO; +using MetaMask.Logging; +using MetaMask.Models; +using MetaMask.Providers; +using MetaMask.SocketIOClient; +using MetaMask.Sockets; +using MetaMask.Transports; +using MetaMask.Transports.Unity; +using MetaMask.Transports.Unity.UI; +using MetaMask.Unity.Utils; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.Scripting; +using UnityEngine.Serialization; + +namespace MetaMask.Unity +{ + [RequireComponent(typeof(MetaMaskUnityEventHandler))] + [RequireComponent(typeof(MetaMaskHttpService))] + public class MetaMaskUnity : MonoBehaviour, IMetaMaskEvents + { + public static readonly string Version = MetaMaskWallet.Version; + public static readonly string Build = "8ea8c0b"; + + #region Classes + + [Serializable] + public class MetaMaskUnityRpcUrlConfig + { + public long ChainId; + + public string RpcUrl; + } + + #endregion + #region Fields + + protected static MetaMaskUnity instance; + + /// The configuration for the MetaMask client. + [SerializeField] + protected MetaMaskConfig config; + /// Whether or not to initialize the wallet on awake. + /// This is useful for testing. + [FormerlySerializedAs("initializeOnStart")] [SerializeField] + protected bool initializeOnAwake = true; + + [SerializeField] + protected MetaMaskUnityScriptableObjectTransport _transport; + + + /// Initializes the MetaMask Wallet Plugin. + protected bool initialized = false; + + /// The transport to use for communication with the MetaMask backend. + protected IMetaMaskTransport transport; + /// The socket wrapper to use for communication with the MetaMask backend. + protected IMetaMaskSocketWrapper socket; + /// The data manager to use for storing data. + protected MetaMaskDataManager dataManager; + /// The session to use for storing data. + protected MetaMaskSession session; + /// The session data to use for storing data. + protected MetaMaskSessionData sessionData; + /// The wallet to use for storing data. + protected MetaMaskWallet wallet; + /// + /// The Infura Project Id to use for connecting to an RPC endpoint. This can be used instead of + /// RpcUrl + /// + [FormerlySerializedAs("InfuraProjectId")] [SerializeField] + protected string _infuraProjectId; + + public string InfuraProjectId + { + get + { + return _infuraProjectId; + } + } + + /// + /// The RPC URL to use for web3 query requests when the MetaMask wallet is paused + /// + [FormerlySerializedAs("RpcUrl")] [SerializeField] + protected List _rpcUrl; + + public List RpcUrl + { + get + { + return _rpcUrl; + } + } + + internal Thread unityThread; + + #endregion + + #region Events + + [Inject] + private MetaMaskUnityEventHandler _eventHandler; + + public IMetaMaskEventsHandler Events => _eventHandler; + + public event EventHandler MetaMaskUnityBeforeInitialized; + public event EventHandler MetaMaskUnityInitialized; + + #endregion + + #region Properties + + /// Gets the singleton instance of the class. + /// The singleton instance of the class. + public static MetaMaskUnity Instance + { + get + { + if (instance == null) + { + var instances = FindObjectsOfType(); + if (instances.Length > 1) + { + Debug.LogError("There are more than 1 instances of " + nameof(MetaMaskUnity) + " inside the scene, there should be only one."); + instance = instances[0]; + } + else if (instances.Length == 1) + { + instance = instances[0]; + } + // Don't automatically create new instances + /* + else + { + instance = CreateNewInstance(); + }*/ + } + return instance; + } + } + + /// Gets the configuration for the MetaMask client. + /// The configuration for the MetaMask client. + public MetaMaskConfig Config + { + get + { + if (this.config == null) + { + this.config = MetaMaskConfig.DefaultInstance; + } + return this.config; + } + } + + /// The wallet associated with this instance. + public MetaMaskWallet Wallet => this.wallet; + + #endregion + + #region Unity Messages + + /// Resets the configuration to the default instance. + private void Reset() + { + this.config = MetaMaskConfig.DefaultInstance; + } + + /// Initializes the MetaMask Unity SDK. + /// The configuration to use. + protected void Awake() + { + if (instance == null) + { + instance = this; + } + else if (instance != this) + { + Debug.LogError("There are more than 1 instances of " + nameof(MetaMaskUnity) + " inside the scene, there should be only one."); + Destroy(gameObject); + } + if (this.initializeOnAwake) + { + Initialize(Config); + } + } + + + /// Saves the current session. + protected void OnApplicationQuit() + { + MetaMaskDebug.Log("Would've call Dispose on MetaMaskWallet"); + //Release(); + } + + #endregion + + #region Public Methods + + /// Initializes the MetaMask client. + /// The configuration to use. + /// The transport to use. + /// The socket to use. + public void Initialize() + { + var transport = _transport ? _transport : Resources.Load("MetaMask/Transports/UnityUI"); + var socket = new MetaMaskUnitySocketIO(); + Initialize(Config, transport, socket); + } + + /// Initializes the MetaMask client. + /// The configuration to use. + public void Initialize(MetaMaskConfig config) + { + var transport = _transport ? _transport : Resources.Load("MetaMask/Transports/UnityUI"); + var socket = new MetaMaskUnitySocketIO(); + Initialize(config, transport, socket); + } + + /// Initializes the MetaMask client. + /// The transport to use. + /// The socket to use. + public void Initialize(IMetaMaskTransport transport, IMetaMaskSocketWrapper socket) + { + Initialize(Config, transport, socket); + } + + /// Initializes the MetaMask client. + /// The configuration to use. + /// The transport to use. + /// The socket to use. + public void Initialize(MetaMaskConfig config, IMetaMaskTransport transport, IMetaMaskSocketWrapper socket) + { + if (this.initialized) + { + return; + } + + // Keep a reference to the config + this.config = config; + + this.transport = transport; + this.socket = socket; + + // Inject variables + UnityBinder.Inject(this); + + // Validate config + if (Config.AppName == "example" || Config.AppUrl == "example.com") + { + if (SceneManager.GetActiveScene().name.ToLower() != "metamask main (sample)") + throw new ArgumentException( + "Cannot use example App name or App URL, please update app info in Window > MetaMask > Setup Window under Credentials"); + } + + try + { + // Check if we need to create a WebsocketDispatcher + var dispatcher = FindObjectOfType(); + if (dispatcher == null) + { + MetaMaskDebug.Log("No WebSocketDispatcher found in scene, creating one on " + gameObject.name); + gameObject.AddComponent(); + } + + this.unityThread = Thread.CurrentThread; + + // Configure persistent data manager + this.dataManager = new MetaMaskDataManager(MetaMaskUnityStorage.Instance, this.config.Encrypt, this.config.EncryptionPassword); + + //#if UNITY_WEBGL && !UNITY_EDITOR + //var providerEngine = new MetaMask.Unity.Providers.JsSDKProvider(this); + //this.wallet = new MetaMaskWallet(this.dataManager, transport, providerEngine); + //#else + // Setup the wallet + this.wallet = new MetaMaskWallet(this.dataManager, this.config, + UnityEciesProvider.Singleton, + transport, socket, this.config.SocketUrl); + //#endif + + if (!string.IsNullOrWhiteSpace(this.config.UserAgent)) + this.wallet.UserAgent = this.config.UserAgent; + + // Grab session data + this.session = this.wallet.Session; + this.sessionData = this.wallet.Session.Data; + + this.wallet.ProviderEngine.AnalyticsPlatform = "unity"; + + if (!string.IsNullOrWhiteSpace(_infuraProjectId)) + { + _rpcUrl ??= new List(); + + foreach (var chainId in Infura.ChainIdToName.Keys) + { + var chainName = Infura.ChainIdToName[chainId]; + + _rpcUrl = _rpcUrl.Where(r => r.ChainId != chainId).ToList(); + _rpcUrl.Add(new MetaMaskUnityRpcUrlConfig() + { + ChainId = chainId, + RpcUrl = Infura.Url(_infuraProjectId, chainName) + }); + } + } + + // Setup the fallback provider, if set + if (_rpcUrl != null && _rpcUrl.Count > 0) + { + var rpcUrlMap = _rpcUrl.ToDictionary( + c => c.ChainId, + c => c.RpcUrl + ); + + this.wallet.FallbackProvider = new HttpProvider(rpcUrlMap, this.wallet); + } + + if (this.MetaMaskUnityBeforeInitialized != null) + this.MetaMaskUnityBeforeInitialized(this, EventArgs.Empty); + + _eventHandler.SetupEvents(); + + // Initialize the transport + transport.Initialize(); + + this.initialized = true; + + if (this.MetaMaskUnityInitialized != null) + this.MetaMaskUnityInitialized(this, EventArgs.Empty); + } + catch (Exception ex) + { + MetaMaskDebug.LogError("MetaMaskUnity initialization failed"); + MetaMaskDebug.LogException(ex); + this.initialized = false; + } + } + #endregion + + #region Wallet API + + /// Connects to the wallet. + public void Connect() + { + this.wallet.Connect(); + } + + public Task ConnectAndSign(string message) + { + return this.wallet.ConnectAndSign(message); + } + + /// Disconnects the wallet. + public void Disconnect(bool endSession = false) + { + if (this.wallet.IsConnected) + this.wallet.Disconnect(); + + if (endSession) + EndSession(); + } + + public void EndSession() + { + this.wallet.EndSession(); + } + + public bool IsInUnityThread() + { + return Application.isEditor || (unityThread != null && Thread.CurrentThread.ManagedThreadId == unityThread.ManagedThreadId); + } + + internal void ForceClearSession() + { + if (this.wallet != null) + // We are inside editor code, we are safe to clear session here. +#pragma warning disable CS0618 + this.wallet.ClearSession(); +#pragma warning restore CS0618 + else + { + if (this.dataManager == null) + this.dataManager = new MetaMaskDataManager(MetaMaskUnityStorage.Instance, this.config.Encrypt, this.config.EncryptionPassword); + + this.dataManager.Delete(EncryptedProvider.SessionId); + } + } + + /// Makes a request to the users connected wallet. + /// The ethereum request to send to the user wallet. + public void Request(MetaMaskEthereumRequest request) + { + this.wallet.Request(request); + } + + public bool clearSessionData = false; + + private void OnValidate() + { + if (clearSessionData && Application.isEditor) + { + ForceClearSession(); + clearSessionData = false; + } + + if (_rpcUrl != null && _rpcUrl.Count > 0 && !string.IsNullOrWhiteSpace(_infuraProjectId)) + { + Debug.LogWarning("The InfuraProjectId will be used over the RpcUrl list if it can. Please set only one."); + } + } + + public bool IsWebGL() + { + #if UNITY_WEBGL && !UNITY_EDITOR + return true; + #else + return false; + #endif + } + + #endregion + + #region Protected Methods + + /// Creates a new instance of the class. + /// A new instance of the class. + protected static MetaMaskUnity CreateNewInstance() + { + var go = new GameObject(nameof(MetaMaskUnity)); + DontDestroyOnLoad(go); + return go.AddComponent(); + } + + /// Releases all resources used by the object. + protected void Release() + { + this.wallet.Dispose(); + } + + [Preserve] + public void AotStopCodeStrip() + { + var eventDelegator = new EventDelegator(); + eventDelegator.ListenFor("test", (sender, @event) => + { + Debug.Log(@event.EventData); + }); + eventDelegator.Trigger("test", "hi"); + + var obj = new JsonRpcPayload(); + Debug.Log(obj.Id); + Debug.Log(obj.Method); + + // we only need 1 generic type, in IL2CPP land, all reference types + // use the same type (smart pointer type) (MetaMaskTypedDataMessage) + var obj2 = new MetaMaskTypedDataMessage(); + Debug.Log(obj2.Data); + Debug.Log(obj2.Name); + + var obj3 = new JsonRpcResult(); + Debug.Log(obj3.Result); + Debug.Log(obj3.Id); + + var obj4 = new GenericError(); + Debug.Log(obj4.Message); + Debug.Log(obj4.Code); + + var obj5 = new JsonRpcError(); + Debug.Log(obj5.Error); + + var obj6 = new MetaMaskMessage(); + Debug.Log(obj6.Id); + Debug.Log(obj6.Message); + + + + // All contract types + Debug.Log(new ERC20Backing(null, null, null)); + Debug.Log(new ERC721Backing(null, null, null)); + Debug.Log(new ERC1155Backing(null, null, null)); + Debug.Log(new ERC20PresetFixedSupplyBacking(null, null, null)); + Debug.Log(new ERC20PresetMinterPauserBacking(null, null, null)); + Debug.Log(new ERC721PresetMinterPauserAutoIdBacking(null, null, null)); + + throw new Exception("This method should not be ran at runtime"); + } + + #endregion + + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs.meta new file mode 100644 index 00000000..090b611b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 523533b4558dd4b4094acf159d13a23d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs new file mode 100644 index 00000000..844ebe7a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs @@ -0,0 +1,280 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MetaMask.SocketIOClient; +using MetaMask.Unity.Utils; +using UnityEngine; +using UnityEngine.Events; + +namespace MetaMask.Unity +{ + public class MetaMaskUnityEventHandler : BindableMonoBehavior, IMetaMaskEventsHandler + { + [Inject] + private MetaMaskUnity _metaMask; + + [Inject(optional = true)] + private MetaMaskUnityEventListener _eventListener; + + public event EventHandler StartConnecting; + public event EventHandler WalletReady; + public event EventHandler WalletPaused; + public event EventHandler WalletConnected; + public event EventHandler WalletDisconnected; + public event EventHandler ChainIdChanged; + public event EventHandler AccountChanged; + public event EventHandler WalletAuthorized; + public event EventHandler WalletUnauthorized; + public event EventHandler EthereumRequestResultReceived; + public event EventHandler EthereumRequestFailed; + + public IMetaMaskEventsHandler Events => this; + + private List TeardownActions; + + private void OnDestroy() + { + TeardownEvents(); + } + + internal void SetupEvents() + { + if (_metaMask == null) + UnityBinder.Inject(this); + + // 1. Unity Event + // 2. Getter for .NET Event Handler + // 3. Getter for Unity Event Handler + // 4. Function to update .NET Event Handler + var allEvents = new (Action, Func)[] + { + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletConnected += eh; + else + this._metaMask.Wallet.Events.WalletConnected -= eh; + }, () => WalletConnected), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletReady += eh; + else + this._metaMask.Wallet.Events.WalletReady -= eh; + }, () => WalletReady), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletPaused += eh; + else + this._metaMask.Wallet.Events.WalletPaused -= eh; + }, () => WalletPaused), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletDisconnected += eh; + else + this._metaMask.Wallet.Events.WalletDisconnected -= eh; + }, () => WalletDisconnected), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.AccountChanged += eh; + else + this._metaMask.Wallet.Events.AccountChanged -= eh; + }, () => AccountChanged), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.ChainIdChanged += eh; + else + this._metaMask.Wallet.Events.ChainIdChanged -= eh; + }, () => ChainIdChanged), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletAuthorized += eh; + else + this._metaMask.Wallet.Events.WalletAuthorized -= eh; + }, () => WalletAuthorized), + ((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.WalletUnauthorized += eh; + else + this._metaMask.Wallet.Events.WalletUnauthorized -= eh; + }, () => WalletUnauthorized), + }; + + TeardownActions = allEvents.Select((e) => SetupEvent(e.Item1, e.Item2)).ToList(); + + TeardownActions.Add(SetupEvent( + (eh, set) => + { + if (set) + this._metaMask.Wallet.Events.StartConnecting += eh; + else + this._metaMask.Wallet.Events.StartConnecting -= eh; + }, () => StartConnecting)); + + TeardownActions.Add(SetupEvent( + (eh, set) => + { + if (set) + this._metaMask.Wallet.Events.EthereumRequestResultReceived += eh; + else + this._metaMask.Wallet.Events.EthereumRequestResultReceived -= eh; + }, + () => EthereumRequestResultReceived)); + + TeardownActions.Add(SetupEvent((eh, set) => + { + if (set) + this._metaMask.Wallet.Events.EthereumRequestFailed += eh; + else + this._metaMask.Wallet.Events.EthereumRequestFailed -= eh; + }, + () => EthereumRequestFailed)); + + if (_eventListener != null) + _eventListener.SetupEvents(); + } + + private void TeardownEvents() + { + if (TeardownActions == null) + return; + + foreach (var action in TeardownActions.Where(action => action != null)) + { + try + { + action(); + } + catch (Exception e) + { + Debug.LogError("Error during MetaMask Event teardown"); + Debug.LogError(e); + } + } + + TeardownActions.Clear(); + } + + private Action SetupEvent(Action sourceUpdater, Func targetGetter) + { + void EventTriggered(object sender, EventArgs e) + { + UnityThread.executeInUpdate(() => + { + var handler = targetGetter(); + handler?.Invoke(this, EventArgs.Empty); + }); + } + + sourceUpdater(EventTriggered, true); + + return () => + { + sourceUpdater(EventTriggered, false); + }; + } + + private Action SetupEvent(Action, bool> sourceUpdater, + Func> targetGetter) where T : EventArgs + { + void EventTriggered(object sender, T e) + { + UnityThread.executeInUpdate(() => + { + var handler = targetGetter(); + handler?.Invoke(sender, e); + }); + } + + sourceUpdater(EventTriggered, true); + + return () => + { + sourceUpdater(EventTriggered, false); + }; + } + } + + /// + /// UnityEvent definition for when metamask sdk is connecting to a session. + /// + [Serializable] + public class MetaMaskConnectingEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet is ready for user interaction. + /// + [Serializable] + public class MetaMaskWalletReadyEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has been closed or paused, and user interaction will require + /// a resume. + /// + [Serializable] + public class MetaMaskWalletPausedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has connected, but may not be ready for user interaction. + /// + [Serializable] + public class MetaMaskConnectedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask sdk has disconnected + /// + [Serializable] + public class MetaMaskWalletDisconnectedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet's chain id has changed + /// + [Serializable] + public class MetaMaskChainIdChangedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet's account address has changed + /// + [Serializable] + public class MetaMaskWalletAccountChangedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has been authorized + /// + [Serializable] + public class MetaMaskWalletAuthorizedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has not been authorized and the session + /// connect was rejected + /// + [Serializable] + public class MetaMaskWalletUnauthorizedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has not been authorized and the session + /// connect was rejected + /// + [Serializable] + public class MetaMaskWalletEthereumRequestResultEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has not been authorized and the session + /// connect was rejected + /// + [Serializable] + public class MetaMaskWalletRequestFailedEvent : UnityEvent {} + + /// + /// UnityEvent definition for when metamask wallet has not been authorized and the session + /// connect was rejected + /// + [Serializable] + public class MetaMaskStartConnectingEvent : UnityEvent {} +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs.meta new file mode 100644 index 00000000..50384fd2 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f8d71131c319421d9620f5fbcf63ed20 +timeCreated: 1690254156 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs new file mode 100644 index 00000000..73d3c45e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MetaMask.SocketIOClient; +using MetaMask.Unity.Utils; +using UnityEngine; +using UnityEngine.Events; + +namespace MetaMask.Unity +{ + public class MetaMaskUnityEventListener : BindableMonoBehavior + { + [Inject] + private MetaMaskUnityEventHandler _eventHandler; + + public MetaMaskConnectedEvent MetaMaskConnected = new MetaMaskConnectedEvent(); + public MetaMaskWalletReadyEvent MetaMaskWalletReady = new MetaMaskWalletReadyEvent(); + public MetaMaskWalletPausedEvent MetaMaskWalletPaused = new MetaMaskWalletPausedEvent(); + public MetaMaskConnectingEvent MetamaskConnecting = new MetaMaskConnectingEvent(); + public MetaMaskWalletDisconnectedEvent MetaMaskWalletDisconnected = new MetaMaskWalletDisconnectedEvent(); + public MetaMaskWalletAccountChangedEvent MetaMaskWalletAccountChanged = new MetaMaskWalletAccountChangedEvent(); + public MetaMaskChainIdChangedEvent MetaMaskChainIdChanged = new MetaMaskChainIdChangedEvent(); + public MetaMaskWalletAuthorizedEvent MetaMaskWalletAuthorized = new MetaMaskWalletAuthorizedEvent(); + public MetaMaskWalletUnauthorizedEvent MetaMaskWalletUnauthorized = new MetaMaskWalletUnauthorizedEvent(); + public MetaMaskWalletEthereumRequestResultEvent MetaMaskWalletEthereumRequestResult = + new MetaMaskWalletEthereumRequestResultEvent(); + public MetaMaskWalletRequestFailedEvent MetaMaskWalletRequestFailed = new MetaMaskWalletRequestFailedEvent(); + public MetaMaskStartConnectingEvent MetaMaskWalletStartConnecting = new MetaMaskStartConnectingEvent(); + + private List TeardownActions; + + internal void SetupEvents() + { + if (_eventHandler == null) + UnityBinder.Inject(this); + + var allEvents = new (UnityEvent, Action)[] + { + (MetaMaskConnected, (eh, set) => + { + if (set) + this._eventHandler.WalletConnected += eh; + else + this._eventHandler.WalletConnected -= eh; + }), + (MetaMaskWalletReady, (eh, set) => + { + if (set) + this._eventHandler.WalletReady += eh; + else + this._eventHandler.WalletReady -= eh; + }), + (MetaMaskWalletPaused, (eh, set) => + { + if (set) + this._eventHandler.WalletPaused += eh; + else + this._eventHandler.WalletPaused -= eh; + }), + (MetaMaskWalletDisconnected, (eh, set) => + { + if (set) + this._eventHandler.WalletDisconnected += eh; + else + this._eventHandler.WalletDisconnected -= eh; + }), + (MetaMaskWalletAccountChanged, (eh, set) => + { + if (set) + this._eventHandler.AccountChanged += eh; + else + this._eventHandler.AccountChanged -= eh; + }), + (MetaMaskChainIdChanged, (eh, set) => + { + if (set) + this._eventHandler.ChainIdChanged += eh; + else + this._eventHandler.ChainIdChanged -= eh; + }), + (MetaMaskWalletAuthorized, (eh, set) => + { + if (set) + this._eventHandler.WalletAuthorized += eh; + else + this._eventHandler.WalletAuthorized -= eh; + }), + (MetaMaskWalletUnauthorized, (eh, set) => + { + if (set) + this._eventHandler.WalletUnauthorized += eh; + else + this._eventHandler.WalletUnauthorized -= eh; + }), + }; + + TeardownActions = allEvents.Select((e) => SetupEvent(e.Item1, e.Item2)).ToList(); + + TeardownActions.Add(SetupEvent( + MetaMaskWalletStartConnecting, + (eh, set) => + { + if (set) + this._eventHandler.StartConnecting += eh; + else + this._eventHandler.StartConnecting -= eh; + })); + + TeardownActions.Add(SetupEvent( + MetaMaskWalletEthereumRequestResult, + (eh, set) => + { + if (set) + this._eventHandler.EthereumRequestResultReceived += eh; + else + this._eventHandler.EthereumRequestResultReceived -= eh; + })); + + TeardownActions.Add(SetupEvent( + MetaMaskWalletRequestFailed, + (eh, set) => + { + if (set) + this._eventHandler.EthereumRequestFailed += eh; + else + this._eventHandler.EthereumRequestFailed -= eh; + })); + } + + private Action SetupEvent(UnityEvent @event, Action sourceUpdater) + { + void EventTriggered(object sender, EventArgs e) + { + UnityThread.executeInUpdate(() => + { + @event?.Invoke(); + }); + } + + sourceUpdater(EventTriggered, true); + + return () => + { + sourceUpdater(EventTriggered, false); + }; + } + + private Action SetupEvent(UnityEvent @event, Action, bool> sourceUpdater) where T : EventArgs + { + void EventTriggered(object sender, T e) + { + UnityThread.executeInUpdate(() => + { + @event?.Invoke(e); + }); + } + + sourceUpdater(EventTriggered, true); + + return () => + { + sourceUpdater(EventTriggered, false); + }; + } + + private void OnDestroy() + { + TeardownEvents(); + } + + private void TeardownEvents() + { + if (TeardownActions == null) + return; + + foreach (var action in TeardownActions.Where(action => action != null)) + { + try + { + action(); + } + catch (Exception e) + { + Debug.LogError("Error during MetaMask Event teardown"); + Debug.LogError(e); + } + } + + TeardownActions.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs.meta new file mode 100644 index 00000000..97262c8b --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/MetaMaskUnityEventListener.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a28d80c5cb9148249de0575481cecaa5 +timeCreated: 1693163938 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers.meta new file mode 100644 index 00000000..3af895bb --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1844a72920e14d18bffbaa835b7d6a8e +timeCreated: 1700848061 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs new file mode 100644 index 00000000..4d99459f --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs @@ -0,0 +1,159 @@ +#if UNITY_WEBGL +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using evm.net.Models; +using MetaMask.Cryptography; +using MetaMask.Models; +using MetaMask.Providers; +using MetaMask.Scripts.Utilities; +using MetaMask.SocketIOClient; +using MetaMask.Transports; +using Newtonsoft.Json; +using UnityEngine; + +namespace MetaMask.Unity.Providers +{ + public class JsSDKProvider : BaseProvider + { + private IAppConfig _appConfig; + private MetaMaskUnity _unitySdk; + + [DllImport("__Internal")] + public static extern bool _InitMetaMaskJS(string dappName, string dappUrl, string dappIcon, + string infuraAPIKey, string rpcMapJson, + string walletCallback, string providerCallback, string errorCallback, string providerEventCallback, bool doJsConnect, bool isDebug); + + [DllImport("__Internal")] + public static extern bool _SendMetaMaskJS(string id, string method, string jsonData, string responseCallback, string errorCallback); + + [DllImport("__Internal")] + public static extern bool _TerminateMetaMaskJS(); + + [DllImport("__Internal")] + public static extern bool _DisconnectMetaMaskJS(); + + [DllImport("__Internal")] + public static extern bool _HasMetaMaskJSSession(); + + public JsSDKProvider(MetaMaskUnity sdk) + { + // We need to init this service, because MetaMaskUnity uses it for + // event propagation... maybe move it out of SocketIO ? + UnityThread.initUnityThread(); + this._unitySdk = sdk; + this._appConfig = sdk.Config; + ConnectionMode = TransportMode.External; + } + + public override void SendMessage(object data) + { + var json = JsonConvert.SerializeObject(data); + + // Always assume it's a MetaMaskEthereumRequest + var request = JsonConvert.DeserializeObject(json); + + var decodedCallback = JSCallback.Using(payload => + { + var eventArgs = new JsonRpcEventArgs(payload, JsonConvert.SerializeObject(payload)); + EthereumRequestReceived?.Invoke(this, eventArgs); + }); + + var errorCallback = JSCallback.Using(error => + { + var jsonRpcErrpr = JsonConvert.DeserializeObject( + JsonConvert.SerializeObject(new JsonRpcError() + { + Error = error, + Id = request.Id, + JsonRpc = "2.0" + + })); + + var eventArgs = new JsonRpcEventArgs(jsonRpcErrpr, JsonConvert.SerializeObject(jsonRpcErrpr)); + EthereumRequestReceived?.Invoke(this, eventArgs); + }); + + _SendMetaMaskJS(request.Id, request.Method, json, decodedCallback, errorCallback); + } + + public override void LoadOrCreateSession(IAppConfig appConfig, IEciesProvider eciesProvider) + { + // Only save the session data, but nothing else + this.Session = new MetaMaskSession(eciesProvider, new MetaMaskSessionData(appConfig)); + } + + public override void ClearSession() + { + _TerminateMetaMaskJS(); + } + + #region NO OP Provider Functions + public override void SaveSession() + { + // NO OP, JS SDK already saves our session + } + + public override void ReloadNewSession() + { + // NO OP, JS SDK init will handle this + } + #endregion + + public override void Disconnect() + { + _DisconnectMetaMaskJS(); + } + + public override void Connect(bool useConnectAndSign = false) + { + var providerCallback = JSCallback.Using(ConnectCallback); + var walletCallback = JSCallback.Using(OnWalletAuthorized); + var errorCallback = JSCallback.Using(OnWalletUnauthorized); + var eventCallback = JSCallback.UsingJson(OnEthereumEvent); + + var rpcMap = this._unitySdk.RpcUrl.ToDictionary( + c => $"0x{c.ChainId:x8}", + c => c.RpcUrl + ); + + if (string.IsNullOrWhiteSpace(_appConfig.AppUrl)) + { + throw new Exception("AppUrl cannot be null or empty. Please set in Tools > MetaMask > Setup Window"); + } + + if (string.IsNullOrWhiteSpace(_appConfig.AppName)) + { + throw new Exception("AppName cannot be null or empty. Please set in Tools > MetaMask > Setup Window"); + } + + _InitMetaMaskJS(_appConfig.AppName, _appConfig.AppUrl, _appConfig.AppIcon, + this._unitySdk.InfuraProjectId, JsonConvert.SerializeObject(rpcMap), + walletCallback, providerCallback, errorCallback, eventCallback, !useConnectAndSign, Debug.isDebugBuild); + } + + private void OnEthereumEvent(string json) + { + var payload = JsonConvert.DeserializeObject(json); + EthereumEventReceived?.Invoke(this, new JsonRpcEventArgs(payload, json)); + } + + private void ConnectCallback() + { + ProviderConnected?.Invoke(this, EventArgs.Empty); + } + + public override bool HasSession => _HasMetaMaskJSSession(); + public override event EventHandler EthereumEventReceived; + public override event EventHandler EthereumRequestReceived; + public override event EventHandler ProviderConnected; + + protected override void DoDispose() + { + Debug.Log("Do Dispose"); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs.meta new file mode 100644 index 00000000..1aaa89b9 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Providers/JsSDKProvider.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e73d832998a04d25b3d2b68924631858 +timeCreated: 1700848069 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets.meta new file mode 100644 index 00000000..99b4954c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bde9e40c622dbbd4887d5f1ec906472e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs new file mode 100644 index 00000000..a9da8392 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs @@ -0,0 +1,353 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +#if UNITY_WEBGL && !UNITY_EDITOR +using System.Runtime.InteropServices; +using Newtonsoft.Json; +#endif +using System.Threading.Tasks; + +using MetaMask.SocketIOClient; +using MetaMask.SocketIOClient.Transport; +using UnityEngine.Networking; + +namespace MetaMask.Sockets +{ + + public class MetaMaskUnitySocketIO : IMetaMaskSocketWrapper + { + +#if UNITY_WEBGL && !UNITY_EDITOR + /// The name of the Socket.IO game object. + private static readonly string SocketGameObjectName = "SocketIo_Ref"; +#endif + + /// The protocol version. + private static byte _protocol = 0; + /// The protocol version. + public static byte protocol + { + get + { + if (_protocol == 0) + { +#if UNITY_WEBGL && !UNITY_EDITOR + _protocol = GetProtocol(); +#else + _protocol = 5; +#endif + } + return _protocol; + } + } + +#if UNITY_WEBGL && !UNITY_EDITOR + /// Gets the socket for the given id. + /// The id of the socket. + /// The socket for the given id. + private static Dictionary EnabledSockets = new Dictionary(); +#endif + + /// Gets the next socket ID. + /// The next socket ID. + private static int LastSocketId = -1; + + /// Raised when the connection to the server is established. + public event EventHandler Connected; + + /// Raised when the socket has been disconnected. + public event EventHandler Disconnected; + + /// The socket. + protected SocketIOUnity socket; + /// The socket ID of the socket that this instance is associated with. + protected int socketId; +#if UNITY_WEBGL && !UNITY_EDITOR + private event Action Action_AnyEvents; + private Dictionary>> ActionEvents = new Dictionary>>(); +#endif + + public SocketIO Socket => this.socket; + + /// Creates a new MetaMaskUnitySocketIO instance. + public MetaMaskUnitySocketIO() + { + LastSocketId++; + this.socketId = LastSocketId; + } + + public async Task<(string, bool, string)> SendWebRequest(string url, string data, Dictionary headers) + { + using (var uwr = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST, new DownloadHandlerBuffer(), + new UploadHandlerRaw(Encoding.UTF8.GetBytes(data)))) + { + if (headers != null) + { + foreach (var header in headers) + { + uwr.SetRequestHeader(header.Key, header.Value); + } + } + + await uwr.SendWebRequest(); + + return (uwr.downloadHandler.text, uwr.result == UnityWebRequest.Result.Success, uwr.error); + } + } + + /// Initializes the socket.0 + /// The URL of the socket. + /// The options for the socket. + public void Initialize(string url, MetaMaskSocketOptions options) + { + var socketOptions = new SocketIOOptions(); + socketOptions.ExtraHeaders = options.ExtraHeaders; + socketOptions.Transport = TransportProtocol.WebSocket; + socketOptions.AutoUpgrade = true; + + this.socket = new SocketIOUnity(url, socketOptions); + + this.socket.OnConnected += OnSocketConnected; + this.socket.OnDisconnected += OnSocketDisconnected; +#if UNITY_WEBGL && !UNITY_EDITOR + //check for gameobject + if (GameObject.Find(SocketGameObjectName) == null) + { + GameObject go = new GameObject(SocketGameObjectName); + go.AddComponent(); + + GameObject.DontDestroyOnLoad(go); + + SetupGameObjectName(SocketGameObjectName); + } + + // TODO: Pass options for WebGL socket.io + this.socketId = EstablishSocket(url, string.Empty); + + EnabledSockets.Add(this.socketId, this); +#endif + } + + private void OnSocketDisconnected(object sender, string e) + { + Debug.Log(e); + Disconnected?.Invoke(this, EventArgs.Empty); + } + + private void OnSocketConnected(object sender, EventArgs e) + { + Connected?.Invoke(this, e); + } + + /// Connects to the server. + /// A task that represents the asynchronous connect operation. + public Task ConnectAsync() + { +#if UNITY_WEBGL && !UNITY_EDITOR + Socket_Connect(this.socketId); + return Task.CompletedTask; +#else + this.socket.Connect(); + return Task.CompletedTask; +#endif + } + + /// Disconnects the socket. + public Task DisconnectAsync() + { +#if UNITY_WEBGL && !UNITY_EDITOR + Socket_Disconnect(this.socketId); + return Task.CompletedTask; +#else + if (this.socket != null) + this.socket.Disconnect(); + return Task.CompletedTask; +#endif + } + + /// Disposes of the socket. + public void Dispose() + { + if (this.socket != null) + this.socket.Dispose(); + } + + /// Emit an event to the server. + /// The name of the event. + /// The data to send with the event. + public void Emit(string eventName, params object[] data) + { +#if UNITY_WEBGL && !UNITY_EDITOR + if (data == null) + { + Socket_Emit(this.socketId, eventName, null); + } + else + { + string result; + result = JsonConvert.SerializeObject(data[0]); + Socket_Emit(this.socketId, eventName, result); + } +#else + if (this.socket != null) + this.socket.Emit(eventName, data); +#endif + } + + /// Registers a callback for the specified event. + /// The name of the event. + /// The callback to register. + public void On(string eventName, Action callback) + { +#if UNITY_WEBGL && !UNITY_EDITOR + if (!this.ActionEvents.ContainsKey(eventName)) + { + this.ActionEvents.Add(eventName, new List>()); + } + this.ActionEvents[eventName].Add(callback); +#else + this.socket.On(eventName, response => + { + callback(response.ToString()); + }); + //this.socket.OnUnityThread(eventName, response => + //{ + // callback(response.ToString()); + //}); +#endif + } + + /// Removes the specified callback from the list of callbacks for the specified event. + /// The name of the event. + /// The callback to remove. + public void Off(string eventName, Action callback = null) + { +#if UNITY_WEBGL && !UNITY_EDITOR + if (callback != null) + { + if (this.ActionEvents.TryGetValue(eventName, out List> value)) + { + value.Remove(callback); + } + } + else + { + this.ActionEvents = new Dictionary>>(); + } +#else + this.socket.Off(eventName); +#endif + } + +#if UNITY_WEBGL && !UNITY_EDITOR + /// Invokes an event. + /// The event name. + /// The event data. + public void InvokeEvent(string ev, string data) + { + Action_AnyEvents?.Invoke(data); + + if (ev == "connect") + { + Connected?.Invoke(this, EventArgs.Empty); + } + + if (ev == "disconnect") + { + //Disconnected?.Invoke(this, EventArgs.Empty); + } + + //invoke event specific events + if (this.ActionEvents.TryGetValue(ev, out List> value)) + { + foreach (Action act in value) + { + act.Invoke(data); + } + } + } + + /// Gets the protocol of the current application. + /// The protocol of the current application. + [DllImport("__Internal")] + private static extern byte GetProtocol(); + + /// Establishes a socket connection to the specified URL. + /// The URL to connect to. + /// The options to use when establishing the connection. + /// The socket ID. + [DllImport("__Internal")] + private static extern int EstablishSocket(string url, string options); + + /// Sets up the name of the game object. + /// The name of the game object. + /// The name of the game object. + [DllImport("__Internal")] + private static extern string SetupGameObjectName(string name); + + /// Determines whether the socket is connected. + /// The socket ID. + /// Whether the socket is connected. + [DllImport("__Internal")] + private static extern bool Socket_IsConnected(int id); + + /// Gets the connection ID of a socket. + /// The socket ID. + /// The connection ID of the socket. + [DllImport("__Internal")] + private static extern string Socket_Get_Conn_Id(int id); + + /// Connects to the server. + /// The socket ID. + [DllImport("__Internal")] + private static extern void Socket_Connect(int id); + + /// Disconnects the socket. + /// The socket's id. + [DllImport("__Internal")] + private static extern void Socket_Disconnect(int id); + + // [DllImport("__Internal")] + // private static extern void Socket_Send(int id, string data); + + /// Emits an event to the socket. + /// The socket ID. + /// The event name. + /// The event data. + [DllImport("__Internal")] + private static extern void Socket_Emit(int id, string ev, string data); + + //gameobject for webgl + public class SocketIoInterface : MonoBehaviour + { + /// Calls the socket event. + /// The data. + public void callSocketEvent(string data) + { + //SocketEvent ev = JsonUtility.FromJson(data); + var ev = JsonConvert.DeserializeObject(data); + if (EnabledSockets.TryGetValue(ev.SocketId, out MetaMaskUnitySocketIO soc)) + { + soc.InvokeEvent(ev.EventName, ev.JsonData); + } + else + { + throw new System.NullReferenceException("socket does not exist"); + } + } + } + + private struct SocketEvent + { + /// The Event Name. + public string EventName; + /// The Socket ID. + public int SocketId; + /// The JSON Data. + public string JsonData; + } +#endif + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs.meta new file mode 100644 index 00000000..bc0fe0b5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Sockets/MetaMaskUnitySocketIO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c9b8fb604f0d63478d1c1298c371be2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports.meta new file mode 100644 index 00000000..568c9082 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1132f42d4db0f646b138662212567f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity.meta new file mode 100644 index 00000000..d7ef9aa1 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91b599562d4fa6643b8c5a8ff609cd95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs new file mode 100644 index 00000000..f931fcb4 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs @@ -0,0 +1,37 @@ +using System; + +using MetaMask.Models; + +namespace MetaMask.Transports.Unity +{ + + public interface IMetaMaskUnityTransportListener + { + + /// Called when the MetaMask client wants to connect to the application. + /// The URL to connect to. + void OnMetaMaskConnectRequest(string universalLink, string deepLink); + + /// Handles a MetaMask request. + /// The request ID. + /// The request. + void OnMetaMaskRequest(string id, MetaMaskEthereumRequest request); + + /// Called when MetaMask fails to connect. + /// The error that occurred. + void OnMetaMaskFailure(Exception error); + + /// Called when the MetaMask login was successful. + void OnMetaMaskSuccess(); + + /// + /// Called when the MetaMask connection requires an OTP code + /// + /// The OTP code to show + void OnMetaMaskOTP(int otp); + + void OnMetaMaskDisconnected(); + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs.meta new file mode 100644 index 00000000..27df3ce3 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/IMetaMaskUnityTransportListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40591c2dd51acbc4da9932f9ba0477fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs new file mode 100644 index 00000000..eefd10cf --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs @@ -0,0 +1,87 @@ +using System; +#if UNITY_WEBGL +using System.Runtime.InteropServices; +#endif +using MetaMask.Models; +using UnityEngine; + +namespace MetaMask.Transports.Unity +{ + + public abstract class MetaMaskUnityScriptableObjectTransport : ScriptableObject, IMetaMaskTransport + { + public abstract event EventHandler Requesting; + + public void Initialize() + { + DoInitialize(); + + // if we are on mobile, set the connection mode to deeplink + ConnectionMode = IsMobile ? TransportMode.Deeplink : TransportMode.QRCode; + } + + public abstract void DoInitialize(); + + public abstract void UpdateUrls(string universalLink, string deepLink); + + public abstract void OnConnectRequest(); + + public abstract void OnFailure(Exception error); + + public abstract void OnRequest(string id, MetaMaskEthereumRequest request); + public abstract void OnOTPCode(int code); + + public abstract void OnSessionRequest(MetaMaskSessionData session); + + public abstract void OnSuccess(); + +#if UNITY_WEBGL && !UNITY_EDITOR + [DllImport("__Internal")] + public static extern void OpenMetaMaskDeeplink(string url); + + [DllImport("__Internal")] + public static extern bool WebGLIsMobile(); +#endif + + public bool IsMobile + { + get + { + #if UNITY_WEBGL && !UNITY_EDITOR + return WebGLIsMobile(); + #else + return Application.isMobilePlatform; + #endif + } + } + public abstract void OnDisconnect(); + + public virtual TransportMode ConnectionMode { get; set; } + + protected void OpenDeeplinkURL(string url) + { +#if UNITY_WEBGL && !UNITY_EDITOR + OpenMetaMaskDeeplink(url); +#else + Application.OpenURL(url); +#endif + } + + } + + public class MetaMaskUnityRequestEventArgs : EventArgs + { + + /// The request to be sent to MetaMask. + public readonly MetaMaskEthereumRequest Request; + + /// Initializes a new instance of the class. + /// The request. + public MetaMaskUnityRequestEventArgs(MetaMaskEthereumRequest request) + { + this.Request = request; + } + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs.meta new file mode 100644 index 00000000..d2b89835 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityScriptableObjectTransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d779bbd94491a4edb8d04502765bfc06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs new file mode 100644 index 00000000..ac3db12c --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; + +using MetaMask.Models; +using MetaMask.SocketIOClient; +using UnityEngine; + +namespace MetaMask.Transports.Unity +{ + + public class MetaMaskUnityTransportBroadcaster : MonoBehaviour + { + + #region Fields + + private static MetaMaskUnityTransportBroadcaster instance; + + + [SerializeField] + protected GameObject[] listeners; + + protected List allListeners = new List(); + + #endregion + + #region Properties + + public static MetaMaskUnityTransportBroadcaster Instance + { + get + { + if (instance == null) + { + var instances = FindObjectsOfType(); + if (instances.Length > 1) + { + Debug.LogError("There are more than 1 instances of " + nameof(MetaMaskUnityTransportBroadcaster) + " inside the scene, there should be only one."); + instance = instances[0]; + } + else + { + // Don't automatically create a new instance + return null; + } + instance.Initialize(); + } + return instance; + } + } + + #endregion + + #region Unity Messages + + private void Awake() + { + if (instance == null) + { + instance = this; + } + else + { + var instances = FindObjectsOfType(); + if (instances.Length > 1) + { + Debug.LogError("There are more than 1 instances of " + nameof(MetaMaskUnityTransportBroadcaster) + " inside the scene, there should be only one."); + Destroy(gameObject); + return; + } + } + Initialize(); + } + + #endregion + + #region Protected Methods + + protected void Initialize() + { + for (int i = 0; i < this.listeners.Length; i++) + { + var listener = this.listeners[i]; + if (listener != null) + { + var metamaskListener = listener.GetComponent(); + if (metamaskListener != null) + { + this.allListeners.Add(metamaskListener); + } + } + } + } + + protected static MetaMaskUnityTransportBroadcaster CreateNewInstance() + { + var go = new GameObject(nameof(MetaMaskUnityTransportBroadcaster)); + DontDestroyOnLoad(go); + return go.AddComponent(); + } + + #endregion + + #region MetaMask Events + + public void OnMetaMaskConnectRequest(string universalLink, string deepLink) + { + for (int i = 0; i < this.allListeners.Count; i++) + { + var listener = this.allListeners[i]; + if (listener != null) + { + UnityThread.executeInUpdate(() => { listener.OnMetaMaskConnectRequest(universalLink, deepLink); }); + } + } + } + + public void OnMetaMaskOTPCode(int code) + { + for (int i = 0; i < this.allListeners.Count; i++) + { + var listener = this.allListeners[i]; + if (listener != null) + { + UnityThread.executeInUpdate(() => { listener.OnMetaMaskOTP(code); }); + } + } + } + + public void OnMetaMaskFailure(Exception error) + { + for (int i = 0; i < this.allListeners.Count; i++) + { + var listener = this.allListeners[i]; + if (listener != null) + { + UnityThread.executeInUpdate(() => { listener.OnMetaMaskFailure(error); }); + } + } + } + + public void OnMetaMaskRequest(string id, MetaMaskEthereumRequest request) + { + for (int i = 0; i < this.allListeners.Count; i++) + { + var listener = this.allListeners[i]; + if (listener != null) + { + UnityThread.executeInUpdate(() => { listener.OnMetaMaskRequest(id, request); }); + } + } + } + + public void OnMetaMaskSuccess() + { + for (int i = 0; i < this.allListeners.Count; i++) + { + var listener = this.allListeners[i]; + if (listener != null) + { + UnityThread.executeInUpdate(() => { listener.OnMetaMaskSuccess(); }); + } + } + } + + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs.meta new file mode 100644 index 00000000..b49933d0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/MetaMaskUnityTransportBroadcaster.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e9ee381994838d4ebbd7734a0fd979a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI.meta new file mode 100644 index 00000000..95281884 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9867c1202e24fee4d82f658231a65f5b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs new file mode 100644 index 00000000..9a497017 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs @@ -0,0 +1,37 @@ +using System; +using MetaMask.Unity; +using TMPro; +using UnityEngine; + +namespace MetaMask.Transports.Unity.UI +{ + public class MetaMaskOTPPanel : MonoBehaviour + { + public TextMeshProUGUI codeText; + + public GameObject otpCodeDisplay; + public GameObject simpleTextDisplay; + + public bool ShouldShowOTP => DateTime.Now - MetaMaskUnity.Instance.Wallet.LastActive >= TimeSpan.FromHours(1); + + public void OnDisconnect() + { + MetaMaskUnity.Instance.EndSession(); + + gameObject.SetActive(false); + } + + public void ShowOTP(int code) + { + codeText.text = code.ToString(); + + if (!gameObject.activeSelf) + { + gameObject.SetActive(true); + } + + otpCodeDisplay.SetActive(ShouldShowOTP); + simpleTextDisplay.SetActive(!ShouldShowOTP); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs.meta new file mode 100644 index 00000000..52c15f2a --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskOTPPanel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4478478a417d48d3b21628f5a664e86e +timeCreated: 1682973562 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs new file mode 100644 index 00000000..257e1067 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs @@ -0,0 +1,275 @@ +using System; +using System.Collections; +using MetaMask.Models; +using MetaMask.Unity; +using TMPro; +using UnityEngine; +using UnityEngine.Serialization; +using UnityEngine.UI; + +namespace MetaMask.Transports.Unity.UI +{ + + public class MetaMaskUnityUIHandler : MonoBehaviour, IMetaMaskUnityTransportListener + { + #region Events + + /// Occurs when the application's open state changes. + public event EventHandler OpenStateChanged; + + #endregion + + #region Fields + + /// The CanvasGroup component attached to the root GameObject. + [SerializeField] + protected CanvasGroup canvasGroup; + + [SerializeField] + protected GameObject qrCodePanel; + /// Gets or sets a value indicating whether the dropdown is open. + /// true if the dropdown is open; otherwise, false. + [SerializeField] + protected bool isOpen = false; + + /// The QR image. + [SerializeField] + protected MetaMaskUnityUIQRImage qrImage; + + [SerializeField] + protected MetaMaskOTPPanel otpPanel; + + [SerializeField] + protected GameObject background; + + [SerializeField] + protected float fadeDuration = 0.5f; + + [SerializeField] + protected TextMeshProUGUI description; + + private bool isFading; + + #endregion + + #region Properties + + /// Gets a value indicating whether the UI is open. + /// true if the UI is open; otherwise, false. + public virtual bool IsOpen => this.isOpen; + + #endregion + + #region Protected Methods + /// Returns whether a UI is opened. + protected virtual void OnQRCodeOpenStateChanged() + { + this.qrCodePanel.SetActive(this.isOpen); + if (MetaMaskUnity.Instance.Wallet.Transport.ConnectionMode == TransportMode.External) + { + ShowExternalModeUI(); + } + + this.canvasGroup.interactable = this.isOpen; + this.canvasGroup.blocksRaycasts = this.isOpen; + this.canvasGroup.alpha = this.isOpen ? 1f : 0f; + StartCoroutine(FadeBackground(this.canvasGroup.alpha)); + + OpenStateChanged?.Invoke(this, null); + } + + protected virtual void ShowExternalModeUI() + { + this.canvasGroup.gameObject.SetActive(false); + description.text = "Please check the external modal window"; + } + + #endregion + + #region Public Methods + + /// Opens the clipboard. + public virtual void OpenQRCode() + { + SetOpenQRCode(true); + } + + /// Closes the window. + public virtual void CloseQRCode() + { + SetOpenQRCode(false); + } + + /// Toggles the open state of the menu. + public virtual void ToggleOpenQRCode() + { + SetOpenQRCode(!this.isOpen); + } + + /// Sets the open state of the menu. + /// Whether the menu is open. + public void SetOpenQRCode(bool open) + { + if (this.isOpen == open) + { + return; + } + this.isOpen = open; + OnQRCodeOpenStateChanged(); + } + + /// Called when the MetaMask client wants to connect to the application. + /// The URL to connect to. + public void OnMetaMaskConnectRequest(string universalLink, string deepLink) + { + this.qrImage.ShowQR(universalLink); + } + + /// Handles a MetaMask request. + /// The request ID. + /// The request. + public void OnMetaMaskRequest(string id, MetaMaskEthereumRequest request) + { + } + + /// Called when the MetaMask client encounters an error. + /// The error that occurred. + public void OnMetaMaskFailure(Exception error) + { + } + + /// Called when the MetaMask login was successful. + public void OnMetaMaskSuccess() + { + CloseQRCode(); + if (otpPanel != null) + { + otpPanel.gameObject.SetActive(false); + + var image = background.GetComponent(); + if (!this.isOpen && BackgroundAlpha > 0f && !this.isFading) + { + // If we have a background visible, and + // CloseQRCode did not trigger the background to + // begin fading, lets fade it now + StartCoroutine(FadeBackground(0f)); + } + } + } + + public void OnMetaMaskOTP(int otp) + { + if (otpPanel != null) + { + otpPanel.gameObject.SetActive(true); + otpPanel.ShowOTP(otp); + qrCodePanel.SetActive(false); + + StartCoroutine(FadeBackground(1f)); + } + else + { + throw new Exception("No OTP UI Panel found"); + } + } + + public void OnMetaMaskDisconnected() + { + CloseQRCode(); + if (otpPanel != null) + { + otpPanel.gameObject.SetActive(false); + StartCoroutine(FadeBackground(0f)); + } + } + + #endregion + + #region Private Methods + + private float BackgroundAlpha + { + get + { + var image = background.GetComponent(); + var canvasGroup = background.GetComponent(); + + if (image) + return image.color.a; + else if (canvasGroup) + return canvasGroup.alpha; + else + return 0f; + } + } + + private IEnumerator FadeBackground(float targetAlpha) + { + this.isFading = true; + if (targetAlpha == 1f) + { + targetAlpha = 0.75f; + } + + var image = background.GetComponent(); + var canvasGroup = background.GetComponent(); + + if (image) + yield return FadeBackgroundImage(targetAlpha, image); + else if (canvasGroup) + yield return FadeBackgroundCanvasGroup(targetAlpha, canvasGroup); + else + throw new Exception("Supplied background gameObject " + background.name + + " has no Image or CanvasGroup component"); + + this.isFading = false; + } + + private IEnumerator FadeBackgroundCanvasGroup(float targetAlpha, CanvasGroup backgroundCanvasGroup) + { + float startAlpha = backgroundCanvasGroup.alpha; + float startTime = Time.time; + + while (backgroundCanvasGroup.alpha != targetAlpha) + { + float duration = (Time.time - startTime) / fadeDuration; + float a = Mathf.Lerp(startAlpha, targetAlpha, duration); + + if (duration >= fadeDuration) + { + a = targetAlpha; + } + + backgroundCanvasGroup.alpha = a; + + yield return new WaitForEndOfFrame(); + } + } + + private IEnumerator FadeBackgroundImage(float targetAlpha, Image backgroundImage) + { + float startAlpha = backgroundImage.color.a; + float startTime = Time.time; + + while (backgroundImage.color.a != targetAlpha) + { + float duration = (Time.time - startTime) / fadeDuration; + float a = Mathf.Lerp(startAlpha, targetAlpha, duration); + + if (duration >= fadeDuration) + { + a = targetAlpha; + } + + backgroundImage.color = new Color(backgroundImage.color.r, backgroundImage.color.g, + backgroundImage.color.b, a); + + yield return new WaitForEndOfFrame(); + } + } + + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs.meta new file mode 100644 index 00000000..e476b76d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 395050cd8374dbf4f8c3a0932f61ff05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs new file mode 100644 index 00000000..70dab2e7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections; +using MetaMask.Models; +using UnityEngine; +using UnityEngine.UI; +using ZXing; +using ZXing.QrCode; + +namespace MetaMask.Transports.Unity.UI +{ + + public class MetaMaskUnityUIQRImage : MonoBehaviour, IMetaMaskUnityTransportListener + { + #region Fields + /// The raw image to display. + [SerializeField] + protected RawImage rawImage; + /// Should we show the QR code if the deeplink is enabled. + [SerializeField] + private bool showQrCodeOnDeeplink = true; + /// The texture to use for deep links. + [SerializeField] + private Sprite[] deepLinkTexture; + /// Gets or sets the index of the current sprite. + private int _currentSpriteIndex = 0; + /// Gets a value indicating whether the application is currently animating. + /// true if the application is currently animating; otherwise, false. + private bool _isAnimating = false; + /// Gets the last URL that was copied to the script. + /// The last URL that was copied to the script. + private string _lastUrl = string.Empty; + #endregion + + #region Unity Methods + + /// Starts the deeplink Animation if it should be on. + private void OnEnable() + { + if (this._isAnimating) + { + StartCoroutine(Animate(this.rawImage)); + } + + } + /// Stops all currently active Coroutines. + private void OnDisable() + { + StopAllCoroutines(); + } + + #endregion + + #region Private Methods + /// Resets the image to its original state. + private void Reset() + { + this.rawImage = GetComponent(); + } + + /// Encodes the given text into a QR code. + /// The text to encode. + /// The width of the QR code. + /// The height of the QR code. + /// The QR code as a 2D array of colors. + private static Color32[] EncodeToQR(string textForEncoding, int width, int height) + { + var writer = new BarcodeWriter + { + Format = BarcodeFormat.QR_CODE, + Options = new QrCodeEncodingOptions + { + Height = height, + Width = width + } + }; + return writer.Write(textForEncoding); + } + + /// Generates a QR code texture. + /// The text to encode. + /// The QR code texture. + private static Texture2D GenerateQRTexture(string text) + { + Texture2D encoded = new Texture2D(256, 256); + var color32 = EncodeToQR(text, encoded.width, encoded.height); + encoded.SetPixels32(color32); + encoded.Apply(); + return encoded; + } + + #endregion + + #region Public Methods + /// Shows a QR code for the specified URL. + /// The URL to show in the QR code. + public void ShowQR(string url) + { + // make sure to add t=q to end of url + var tq = "&t=q"; + if (!url.EndsWith(tq)) + url += tq; + + StopAllCoroutines(); + this._lastUrl = url; + if (MetaMaskUnityUITransport.DefaultInstance.IsDeeplinkAvailable() && !showQrCodeOnDeeplink && Application.isMobilePlatform) + { + if (gameObject.activeInHierarchy) + { + this._isAnimating = true; + StartCoroutine(Animate(this.rawImage)); + } + else + { + this._isAnimating = true; + } + + return; + } + + this.rawImage.texture = GenerateQRTexture(url); + } + + /// Called when the MetaMask client wants to connect to the application. + /// The URL to connect to. + public void OnMetaMaskConnectRequest(string universalLink, string deepLink) + { + ShowQR(universalLink); + } + + /// Called when a MetaMask request is received. + /// The request ID. + /// The request. + public void OnMetaMaskRequest(string id, MetaMaskEthereumRequest request) + { + } + + /// Called when MetaMask fails to connect. + /// The error that occurred. + public void OnMetaMaskFailure(Exception error) + { + } + + /// Called when the MetaMask login was successful. + public void OnMetaMaskSuccess() + { + } + + public void OnMetaMaskOTP(int otp) + { + } + + public void OnMetaMaskDisconnected() + { + } + + #endregion + + #region Coroutine + /// Animates the image. + /// The image to animate. + /// The speed of the animation. + /// An enumerator that can be used to animate the image. + IEnumerator Animate(RawImage image,float animationSpeed = 0.1f) { + while (true) { + image.texture = this.deepLinkTexture[_currentSpriteIndex].texture; + _currentSpriteIndex = (_currentSpriteIndex + 1) % this.deepLinkTexture.Length; + yield return new WaitForSeconds(animationSpeed); + } + } + + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs.meta new file mode 100644 index 00000000..f7b3c5ad --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUIQRImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b56c620f6012af6429dc1ce97ea5aeb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs new file mode 100644 index 00000000..94bb4752 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs @@ -0,0 +1,229 @@ +using System; +using MetaMask.Models; +using MetaMask.SocketIOClient; +using MetaMask.Unity; +using UnityEngine; +using UnityEngine.Serialization; + +namespace MetaMask.Transports.Unity.UI +{ + + [CreateAssetMenu(menuName = "MetaMask/Transports/Unity UI")] + public class MetaMaskUnityUITransport : MetaMaskUnityScriptableObjectTransport + { + + #region Events + /// Raised when the application is disconnecting to the wallet. + public override event EventHandler Requesting; + + #endregion + + #region Constants + + /// The path to the transports resource folder. + protected const string ResourcePath = "MetaMask/Transports"; + /// The default resource path for Unity UI resources. + /// This is the default resource path for Unity UI resources. It is used when the property is not set. + protected const string DefaultResourcePath = ResourcePath + "/UnityUI"; + + #endregion + + #region Fields + + /// The default instance. + protected static MetaMaskUnityUITransport defaultInstance; + + /// Whether to use the deeplink to open the app. + /// This is only used when the app is launched from a deeplink. + //[FormerlySerializedAs("useDeeplink")] [SerializeField] + //protected bool _useDeeplink = false; + /// Whether to spawn a canvas on startup. + [SerializeField] + protected bool spawnCanvas = false; + /// The canvas that contains the MetaMask UI. + [SerializeField] + protected GameObject metaMaskCanvas; + + [SerializeField] + protected bool useUniversalLinks = false; + + /// The instance of the MetaMask canvas. + protected GameObject metaMaskCanvasInstance; + /// The UI handler for the MetaMask Unity plugin. + protected MetaMaskUnityUIHandler uiHandler; + + protected string connectionDeepLinkUrl; + protected string connectionUniversalLinkUrl; + + #endregion + + #region Properties + + /// The default instance of the class. + public static MetaMaskUnityUITransport DefaultInstance + { + get + { + if (defaultInstance == null) + { + defaultInstance = Resources.Load(DefaultResourcePath); + } + return defaultInstance; + } + } + + public bool UseDeeplink => IsMobile; + + #endregion + + #region Public Methods + + /// Initializes the transport manager. + public override void DoInitialize() + { + if (this.spawnCanvas) + { + this.metaMaskCanvasInstance = Instantiate(this.metaMaskCanvas); + this.uiHandler = this.metaMaskCanvasInstance.GetComponent(); + } + + MetaMaskUnity.Instance.Events.StartConnecting += WalletOnStartConnecting; + } + + private void WalletOnStartConnecting(object sender, MetaMaskConnectEventArgs e) + { + var universalLink = this.connectionUniversalLinkUrl; + var deepLink = this.connectionDeepLinkUrl; + + + if (this.uiHandler != null) + { + this.uiHandler.OpenQRCode(); + } + + EmitListenerEvent(l => l.OnMetaMaskConnectRequest(universalLink, deepLink)); + + AlertBroadcasterIfInUse(mmutb => mmutb.OnMetaMaskConnectRequest(universalLink, deepLink)); + } + + /// Connects to the specified URL. + /// The URL to connect to. + public override void UpdateUrls(string universalLink, string deepLink) + { + this.connectionDeepLinkUrl = deepLink; + this.connectionUniversalLinkUrl = universalLink; + } + + public override void OnConnectRequest() + { + if (UseDeeplink) + { + OpenConnectionDeepLink(); + } + } + + public void OpenConnectionDeepLink() + { + var url = useUniversalLinks ? this.connectionUniversalLinkUrl : this.connectionDeepLinkUrl; + Debug.Log("Opening Connection URL: " + url); + OpenDeeplinkURL(url); + } + + /// Called when the application fails to retrieve the content of the request. + /// The exception that occurred. + public override void OnFailure(Exception error) + { + Debug.LogError("On Failure: " + error); + + EmitListenerEvent(l => l.OnMetaMaskFailure(error)); + + AlertBroadcasterIfInUse(mmutb => mmutb.OnMetaMaskFailure(error)); + } + + /// Called when a request is received. + /// The request ID. + /// The request. + public override void OnRequest(string id, MetaMaskEthereumRequest request) + { + Requesting?.Invoke(this, new MetaMaskUnityRequestEventArgs(request)); + + if (UseDeeplink) + { + // Use otp to re-enable host approval + OpenConnectionDeepLink(); + //OpenDeeplinkURL(MetaMaskWallet.MetaMaskUniversalLinkUrl); + } + + EmitListenerEvent(l => l.OnMetaMaskRequest(id, request)); + + AlertBroadcasterIfInUse(mmutb => mmutb.OnMetaMaskRequest(id, request)); + } + + public override void OnOTPCode(int code) + { + if (this.uiHandler != null) + { + this.uiHandler.OnMetaMaskOTP(code); + } + + EmitListenerEvent(l => l.OnMetaMaskOTP(code)); + AlertBroadcasterIfInUse(mmutb => mmutb.OnMetaMaskOTPCode(code)); + } + + /// Notifies the application that a new session has been created. + /// The session that has been created. + public override void OnSessionRequest(MetaMaskSessionData session) + { + } + + /// Called when the MetaMask client has successfully connected to the Ethereum network. + public override void OnSuccess() + { + EmitListenerEvent(l => l.OnMetaMaskSuccess()); + + AlertBroadcasterIfInUse(mmutb => mmutb.OnMetaMaskSuccess()); + } + + public override void OnDisconnect() + { + EmitListenerEvent(l => l.OnMetaMaskDisconnected()); + } + + /// Returns wheter deeplinking is available on the client. + public bool IsDeeplinkAvailable() + { + return UseDeeplink; + } + + private void AlertBroadcasterIfInUse(Action action) + { + if (MetaMaskUnityTransportBroadcaster.Instance == null) + return; + + action(MetaMaskUnityTransportBroadcaster.Instance); + } + + #endregion + + #region Private Methods + + private void EmitListenerEvent(Action callback) + { + if (this.metaMaskCanvasInstance) + { + UnityThread.executeInUpdate(() => + { + var listeners = + this.metaMaskCanvasInstance.GetComponentsInChildren(); + for (int i = 0; i < listeners.Length; i++) + { + callback(listeners[i]); + } + }); + } + } + + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs.meta new file mode 100644 index 00000000..c419ced0 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Transports/Unity/UGUI/MetaMaskUnityUITransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20df40b080d9d4749ba22a363ec31ab8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities.meta new file mode 100644 index 00000000..8dc35443 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 291a4c356dc73e743bd6058468ac56e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs new file mode 100644 index 00000000..2495e5ac --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; +using UnityEngine; +using UnityEngine.Scripting; + +namespace MetaMask.Scripts.Utilities +{ + public class JSCallback : MonoBehaviour + { + private Dictionary callbackCache = new Dictionary(); + private Dictionary> callbackJsonCache = new Dictionary>(); + + public static JSCallback Instance + { + get + { + var instance = GameObject.FindObjectOfType(); + if (instance == null) + { + var obj = new GameObject("__JSCallback_Manager__"); + instance = obj.AddComponent(); + } + + return instance; + } + } + + public static string Using(Action callback) + { + return Instance.QueueAction(callback); + } + + public static string Using(Action callback) + { + return Instance.QueueActionWithJson(json => + { + var obj = JsonConvert.DeserializeObject(json); + callback(obj); + }); + } + + public static string UsingJson(Action callback) + { + return Instance.QueueActionWithJson(callback); + } + + public string QueueAction(Action callback) + { + // find a new guid for callback + string guid; + do + { + guid = Guid.NewGuid().ToString(); + } while (callbackCache.ContainsKey(guid)); + + callbackCache.Add(guid, callback); + + return $"{gameObject.name}:DoCallback:{guid}"; + } + + public string QueueActionWithJson(Action callback) + { + // find a new guid for callback + string guid; + do + { + guid = Guid.NewGuid().ToString(); + } while (callbackJsonCache.ContainsKey(guid)); + + callbackJsonCache.Add(guid, callback); + + return $"{gameObject.name}:DoJsonCallback:{guid}"; + } + + [Preserve] + public void DoCallback(string json) + { + var data = JsonConvert.DeserializeObject(json); + var guid = data[0]; + + if (!callbackCache.ContainsKey(guid)) + return; + + callbackCache[guid](); + } + + [Preserve] + public void DoJsonCallback(string json) + { + var data = JsonConvert.DeserializeObject(json); + var guid = data[0]; + + if (!callbackJsonCache.ContainsKey(guid)) + return; + + callbackJsonCache[guid](data[1]); + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs.meta new file mode 100644 index 00000000..5529e3e7 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/JSCallback.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d5552f132f284bf8b52bd360219a2dbd +timeCreated: 1700849808 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs new file mode 100644 index 00000000..407672e8 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs @@ -0,0 +1,67 @@ +using UnityEngine; + +namespace MetaMask.Unity +{ + /// + /// Inherit from this base class to create a singleton. + /// e.g. public class MyClassName : Singleton {} + /// + public class Singleton : MonoBehaviour where T : MonoBehaviour + { + // Check to see if we're about to be destroyed. + private static bool m_ShuttingDown = false; + private static object m_Lock = new object(); + private static T m_Instance; + + /// + /// Access singleton instance through this propriety. + /// + public static T Instance + { + get + { + if (m_ShuttingDown) + { + Debug.LogWarning("[Singleton] Instance '" + typeof(T) + + "' already destroyed. Returning null."); + return null; + } + + lock (m_Lock) + { + if (m_Instance == null) + { + // Search for existing instance. + m_Instance = (T)FindObjectOfType(typeof(T)); + + // Create new instance if one doesn't already exist. + if (m_Instance == null) + { + // Need to create a new GameObject to attach the singleton to. + var singletonObject = new GameObject(); + m_Instance = singletonObject.AddComponent(); + singletonObject.name = typeof(T).ToString() + " (Singleton)"; + + // Make instance persistent. + DontDestroyOnLoad(singletonObject); + } + } + + return m_Instance; + } + } + } + + + private void OnApplicationQuit() + { + m_ShuttingDown = true; + } + + + private void OnDestroy() + { + m_ShuttingDown = true; + } + } +} \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs.meta new file mode 100644 index 00000000..08c6b12e --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/Singleton.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ce334f07c70b45d2a20c69a2b530df10 +timeCreated: 1688526198 \ No newline at end of file diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs new file mode 100644 index 00000000..043f3070 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs @@ -0,0 +1,36 @@ +using MetaMask.Unity; +using MetaMask.Unity.Contracts; +using TMPro; +using UnityEngine; + +public class TokenDisplay : MonoBehaviour +{ + private MetaMaskUnity _metaMask; + private TextMeshProUGUI _balanceText; + + public ScriptableERC20 contract; + + // Start is called before the first frame update + void Start() + { + _metaMask = MetaMaskUnity.Instance; + _balanceText = GetComponent(); + + if (_metaMask.Wallet.IsConnected) + { + DisplayBalance(); + } + + _metaMask.Wallet.Events.AccountChanged += (_, __) => DisplayBalance(); + } + + private async void DisplayBalance() + { + var address = _metaMask.Wallet.SelectedAddress; + + var tokenSymbol = await contract.Symbol(); + var tokenBalance = await contract.BalanceOf(address); + + _balanceText.text = $"{tokenSymbol}: {tokenBalance}"; + } +} diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs.meta b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs.meta new file mode 100644 index 00000000..07ade13d --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/TokenDisplay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cea0323a9e17644e816a168c8bd7f41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/UnityBinder.cs b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/UnityBinder.cs new file mode 100644 index 00000000..396bd6d5 --- /dev/null +++ b/Assets/Thirdweb/Core/Plugins/MetaMask/Scripts/Utilities/UnityBinder.cs @@ -0,0 +1,822 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.UI; +using Object = UnityEngine.Object; + +namespace MetaMask.Unity.Utils +{ + /// + /// UnityBinder entry class. Use this class to setup any Unity Object that has any + /// Binder Attributes + /// + public static class UnityBinder + { + /// + /// Inject an Object's field that have attributes. + /// + /// The object to inject + public static void Inject(Object obj) + { + var bindingFlags = BindingFlags.Instance | + BindingFlags.NonPublic | + BindingFlags.Public; + + var fields = obj.GetType().GetFields(bindingFlags); + + foreach (var field in fields) + { + var injections = (Binder[]) field.GetCustomAttributes(typeof(Binder), true); + + if (injections.Length > 0) + { + foreach (var inject in injections) + { + inject.InjectInto(obj, field); + } + } + } + + var methods = obj.GetType().GetMethods(bindingFlags); + foreach (var method in methods) + { + var injections = (BindOnClick[]) method.GetCustomAttributes(typeof(BindOnClick), true); + + if (injections.Length > 0) + { + foreach (var inject in injections) + { + inject.InjectInto(obj, method); + } + } + } + } + + private static GameObject DeepFind(string name) + { + if (name.StartsWith("/")) + { + string[] temp = name.Split('/'); + + GameObject current = null; + for (int i = 1; i < temp.Length; i++) + { + string n = temp[i]; + if (current == null) + { + current = GameObject.Find(n); + if (current == null) + { + current = FindInActiveObjectByName(n); + } + } + else + { + current = current.transform.Find(n).gameObject; + } + } + + return current; + } + + return GameObject.Find(name); + } + + internal static GameObject FindInActiveObjectByName(string name) + { + if (name.StartsWith("/")) + return DeepFind(name); + + Transform[] objs = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < objs.Length; i++) + { + if (objs[i].hideFlags == HideFlags.None) + { + if (objs[i].name == name) + { + return objs[i].gameObject; + } + } + } + + return null; + } + } + + /// + /// Abstract resource to represent any kind of Bind + /// + public abstract class Binder : Attribute + { + public abstract void InjectInto(Object obj, FieldInfo field); + } + + /// + /// Bind a method to an OnClick event that is triggered by a Button. + /// + /// By default, the Button is searched on the gameObject attached to the script being bound + /// You may specify a GameObject to search in by supplying the Editor path in the constructor + /// + [AttributeUsage(AttributeTargets.Method)] + public class BindOnClick : Attribute + { + private string buttonPath; + + public BindOnClick(string buttonPath = "") + { + this.buttonPath = buttonPath; + } + + public void InjectInto(Object obj, MethodInfo method) + { + GameObject fromObj; + if (string.IsNullOrEmpty(buttonPath)) + { + var component = obj as Component; + if (component != null) + { + fromObj = component.gameObject; + } + else + { + Debug.LogError("fromObject empty for field " + method.Name + + ", and no default gameObject could be found!"); + return; + } + } + else + { + fromObj = GameObject.Find(buttonPath); + + if (fromObj == null) + { + fromObj = UnityBinder.FindInActiveObjectByName(buttonPath); + + if (fromObj == null) + { + Debug.LogError( + "Could not find GameObject with name " + buttonPath + " for field " + method.Name); + + return; + } + } + } + + var button = fromObj.GetComponent